Erstellen eines benutzerdefinierten Nachrichten-Handlers – Grundlegende Informationen

Bei herkömmlichen Client-Server-Aufrufen sendet der Client eine Webanfrage an den Server, wartet auf das Ergebnis und erhält dann eine Antwort. Es gibt sowohl serverseitige als auch clientseitige Message-Handler, und manchmal müssen Sie benutzerdefinierte Message-Handler konfigurieren. In diesem Artikel befassen wir uns mit dem Konzept des Message Handlers und erstellen einen benutzerdefinierten Message Handler, der eine bestimmte Aufgabe erfüllt.

Was ist ein Message Handler?

Definitionsgemäß ist ein Nachrichten-Handler eine Klasse, die eine Web-Anfrage empfängt und eine Antwort zurückgibt. Mit anderen Worten, ein Message-Handler wird verwendet, um eine Web-Service-Anfrage während der Eingabe und/oder die Antwort während der Ausgabe zu verarbeiten. Die Kette der Handler ist eine Pipeline, die alle die Möglichkeit haben, eine ausgehende Web-Anfrage zu verarbeiten, bevor sie gesendet wird, oder eine Web-Antwort zu verarbeiten.

Das Verhalten der Handler wird durch eine Reihe von Protokollen geregelt, die beschreiben, welche Maßnahmen die Nachrichtenhandler in einer bestimmten Situation ergreifen können. Die Handler, ihre Protokolle und ihr Platz in der Kette können von einem System oder einem Benutzer definiert werden.

Benutzerdefinierter Nachrichten-Handler

Menschen mögen Anpassungen, und manchmal müssen sie eine benutzerdefinierte Logik in einer Anfrage und Antwort ausführen. Sie können der Pipeline benutzerdefinierte Handler hinzufügen. Jeder Handler hat eine Auswahl an Aktionen, die er ausführen kann. Der Handler kann zum Beispiel nur für die Verarbeitung von Anfragen oder nur für die Verarbeitung von Antworten aufgerufen werden.

Es können ein oder mehrere benutzerdefinierte Message-Handler erstellt und in einer Kette von Message-Handlern organisiert werden, die bei jeder Anforderung und Antwort aufgerufen werden. Jede Webanforderung durchläuft eine Message-Handler-Pipeline, und wir können benutzerdefinierte Message-Handler erstellen und das Verhalten einer bestehenden Pipeline erweitern. Grafisch sieht das Ergebnis etwa so aus:

Text “Pipeline mit einem benutzerdefinierten Nachrichtenhandler”

Ein Message-Handler kann sofort eine Antwort zurückgeben. Sie könnten z. B. einen Handler erstellen, der prüft, ob bei ausgehenden Anfragen eine Kopfzeile vorhanden ist. Fehlt der Header, wird die Anforderung nicht an den nächsten Handler weitergeleitet und eine Fehlerantwort erzeugt, die an den Aufrufer zurückgegeben wird.

Text “Benutzerdefinierter Nachrichtenhandler gibt eine Antwort zurück”

Sie können die Handler-Kette als eine Pipeline definieren, die in der Lage ist, die ausgehende Web-Anforderung zu verarbeiten, bevor sie gesendet wird. Diese Handler können z.B. den Body der Anforderung prüfen oder einige Informationen über die Anforderung protokollieren. Betrachten Sie ein Beispiel für die Erstellung eines Message-Handlers, um die wichtigsten Konzepte zu verdeutlichen.

Erstellen eines benutzerdefinierten Nachrichten-Handlers

Aspose.HTML for .NET bietet Funktionen für die Erstellung von benutzerdefinierten Nachrichten-Handlern. Lassen Sie uns einen einfachen benutzerdefinierten Handler entwickeln, der eine Nachricht ausgibt, wenn eine Anfrage beginnt und endet. Führen Sie die folgenden Schritte aus:

  1. Verwenden Sie den erforderlichen Namespace, nämlich Aspose.Html.Net. Dieser Namespace wird durch Klassen und Schnittstellen dargestellt, die für eine einfache Netzwerkverarbeitung verantwortlich sind.

  2. Um einen benutzerdefinierten Message Handler zu erstellen, müssen Sie Ihre eigene Klasse definieren, die von der Klasse MessageHandler abgeleitet wird. Die Klasse MessageHandler stellt einen Basistyp für Message-Handler dar.

1using Aspose.Html.Net;
2...
3
4	public class LogMessageHandler : MessageHandler
5	{
6
7	}

Sie haben also Ihre eigene LogMessageHandler-Klasse definiert, nun müssen Sie einige Operationen darin durchführen.

  1. Überschreiben Sie die Methode Invoke() der Klasse MessageHandler, um das Verhalten des benutzerdefinierten Nachrichten-Handlers zu implementieren.
 1// Implement a message handler that prints a message about starting and finishing processing request
 2
 3public class LogMessageHandler : MessageHandler
 4{
 5    // Override the Invoke() method
 6    public override void Invoke(INetworkOperationContext context)
 7    {
 8        Debug.WriteLine("Start processing request: " + context.Request.RequestUri);
 9
10        // Invoke the next message handler in the chain
11        Next(context);
12
13        Debug.WriteLine("Finish processing request: " + context.Request.RequestUri);
14    }
15}
  1. Fügen Sie den LogMessageHandler in die Pipeline der vorhandenen Nachrichten-Handler ein. Verwenden Sie die Insert()-Methode, um den LogMessageHandler an erster Stelle in der Auflistung der Nachrichten-Handler einzufügen.

Der folgende Codeausschnitt veranschaulicht, wie Sie den LogMessageHandler zur Pipeline hinzufügen und für einen einfachen Vorgang verwenden.

 1// Log network requests for HTML processing in C#
 2
 3// Create an instance of the Configuration class
 4using Configuration configuration = new Configuration();
 5
 6// Add the LogMessageHandler to the chain of existing message handlers
 7INetworkService service = configuration.GetService<INetworkService>();
 8MessageHandlerCollection handlers = service.MessageHandlers;
 9        
10handlers.Insert(0, new LogMessageHandler());
11
12// Prepare path to a source document file
13string documentPath = Path.Combine(DataDir, "input.htm");
14
15// Initialize an HTML document with specified configuration
16using HTMLDocument document = new HTMLDocument(documentPath, configuration);

In diesem Artikel haben Sie also die Idee hinter dem benutzerdefinierten Message Handler kennengelernt und ein einfaches Beispiel für seine Implementierung gesehen.

Im Artikel Beliebte Anwendungsfälle für Nachrichten-Handler erfahren Sie, wie Sie Nachrichten-Handler erstellen, um ein benutzerdefiniertes Schema zu implementieren, mit einem ZIP-Archiv zu arbeiten und die Ausführungszeit einer Webanfrage zu protokollieren.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.