Freigeben über


Benutzerdefinierte Nachrichtenformatierung

Der Inhalt einer Nachricht weist häufig das XML-Format auf, also kein gängiges Format für eine Anwendung. Anwendungen bearbeiten Objekte, indem sie ihre Eigenschaften abrufen und festlegen. Windows Communication Foundation (WCF) verwendet den Datenvertrag, um ein Message-Objekt in ein Objekt zu konvertieren, das von einer Anwendung leicht verarbeitet werden kann. Diese Prozesse werden als Serialisierung und Deserialisierung bezeichnet. Beachten Sie, dass diese Begriffe auch verwendet werden, um die Serialisierung und Deserialisierung einer Transportebene in das bzw. aus dem Nachrichtensendeformat zu beschreiben. Dabei handelt es sich um einen nicht verwandten Prozess.

Sie können eine benutzerdefinierte Nachrichtenformatierung verwenden, wenn Sie eine spezielle Konvertierung zwischen Nachrichten und Objekten implementieren müssen, die Sie mithilfe eines Datenvertrags nicht durchführen können. Ändern bzw. erweitern Sie dazu das Ausführungsverhalten eines bestimmten Vertragsvorgangs auf einem Client oder für einen Dienst.

Benutzerdefinierte Nachrichtenformatierungen auf dem Client

Die IClientMessageFormatter-Schnittstelle definiert Methoden, die verwendet werden, um für Clientanwendungen die Konvertierung von Nachrichten in Objekte und von Objekten in Nachrichten zu steuern.

Sie müssen diese Schnittstelle implementieren. Überschreiben Sie zuerst die DeserializeReply-Methode, um eine Nachricht zu deserialisieren. Diese Methode wird aufgerufen, nachdem eine eingehende Nachricht empfangen wurde, aber bevor sie an den Clientvorgang gesendet wurde.

Überschreiben Sie im nächsten Schritt die SerializeRequest-Methode, um ein Objekt zu serialisieren. Diese Methode wird vor dem Senden einer ausgehenden Nachricht aufgerufen.

Um die benutzerdefinierte Formatierung in die Dienstanwendung einzufügen, müssen Sie das IClientMessageFormatter-Objekt der Formatter-Eigenschaft zuweisen, indem Sie ein Vorgangsverhalten verwenden. Informationen zu Verhaltensweisen finden Sie unter Konfigurieren und Erweitern der Laufzeit mit Verhalten.

Benutzerdefinierte Nachrichtenformatierungen für den Dienst

Die IDispatchMessageFormatter-Schnittstelle definiert Methoden, die ein Message-Objekt in Parameter für einen Vorgang bzw. aus Parametern in ein Message-Objekt in einer Dienstanwendung konvertieren.

Sie müssen diese Schnittstelle implementieren. Überschreiben Sie zuerst die DeserializeReply-Methode, um eine Nachricht zu deserialisieren. Diese Methode wird aufgerufen, nachdem eine eingehende Nachricht empfangen wurde, aber bevor sie an den Clientvorgang gesendet wurde.

Überschreiben Sie im nächsten Schritt die SerializeRequest-Methode, um ein Objekt zu serialisieren. Diese Methode wird vor dem Senden einer ausgehenden Nachricht aufgerufen.

Um die benutzerdefinierte Formatierung in die Dienstanwendung einzufügen, müssen Sie das IDispatchMessageFormatter-Objekt der Formatter-Eigenschaft zuweisen, indem Sie ein Vorgangsverhalten verwenden. Informationen zu Verhaltensweisen finden Sie unter Konfigurieren und Erweitern der Laufzeit mit Verhalten.

Siehe auch