Benutzerdefinierte NachrichtenformatierungCustom Message Formatters

Der Inhalt einer Nachricht weist häufig das XML-Format auf, also kein gängiges Format für eine Anwendung.The content in a message is often in the form of XML, which is usually not a convenient format for an application. Anwendungen bearbeiten Objekte, indem sie ihre Eigenschaften abrufen und festlegen.Applications manipulate objects, getting and setting their properties. Windows Communication Foundation (WCF) verwendet die Datenvertrag Konvertieren einer Message Objekt in ein Objekt, das von einer Anwendung problemlos bewältigt.Windows Communication Foundation (WCF) uses the Data Contract to convert a Message object into an object easily handled by an application. Diese Prozesse werden als Serialisierung und Deserialisierung bezeichnet.These processes are called serialization and deserialization. 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.Note that these same terms are used to describe the serialization and deserialization done by the transport layer to and from the message wire format, which is an unrelated process.

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.You can use a custom message formatter if you need to implement a specialized conversion between messages and objects that you cannot accomplish by means of a Data Contract. Ändern bzw. erweitern Sie dazu das Ausführungsverhalten eines bestimmten Vertragsvorgangs auf einem Client oder für einen Dienst.Do this by modifying or extending the execution behavior of a specific contract operation on a client or a service.

Benutzerdefinierte Nachrichtenformatierungen auf dem ClientCustom Message Formatters on the 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.The IClientMessageFormatter interface defines methods that are used to control the conversion of messages into objects and objects into messages for client applications.

Sie müssen diese Schnittstelle implementieren.You must implement this interface. Überschreiben Sie zuerst die DeserializeReply-Methode, um eine Nachricht zu deserialisieren.First override the DeserializeReply method to deserialize a message. Diese Methode wird aufgerufen, nachdem eine eingehende Nachricht empfangen wurde, aber bevor sie an den Clientvorgang gesendet wurde.This method is called after an incoming message is received, but before it is dispatched to the client operation.

Überschreiben Sie im nächsten Schritt die SerializeRequest-Methode, um ein Objekt zu serialisieren.Next, override the SerializeRequest method to serialize an object. Diese Methode wird vor dem Senden einer ausgehenden Nachricht aufgerufen.This method is called prior to sending an outgoing message.

Um die benutzerdefinierte Formatierung in die Dienstanwendung einzufügen, müssen Sie das IClientMessageFormatter-Objekt der Formatter-Eigenschaft zuweisen, indem Sie ein Vorgangsverhalten verwenden.To insert the custom formatter into the service application, assign the IClientMessageFormatter object to the Formatter property using an operation behavior. Informationen zum Verhalten finden Sie unter konfigurieren und Erweitern der Laufzeit mit Verhalten.For information about behaviors, see Configuring and Extending the Runtime with Behaviors.

Benutzerdefinierte Nachrichtenformatierungen für den DienstCustom Message Formatters on the Service

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.The IDispatchMessageFormatter interface defines methods that convert a Message object into parameters for an operation and from parameters into a Message object in a service application.

Sie müssen diese Schnittstelle implementieren.You must implement this interface. Überschreiben Sie zuerst die DeserializeReply-Methode, um eine Nachricht zu deserialisieren.First override the DeserializeReply method to deserialize a message. Diese Methode wird aufgerufen, nachdem eine eingehende Nachricht empfangen wurde, aber bevor sie an den Clientvorgang gesendet wurde.This method is called after an incoming message is received, but before it is dispatched to the client operation.

Überschreiben Sie im nächsten Schritt die SerializeRequest-Methode, um ein Objekt zu serialisieren.Next, override the SerializeRequest method to serialize an object. Diese Methode wird vor dem Senden einer ausgehenden Nachricht aufgerufen.This method is called prior to sending an outgoing message.

Um die benutzerdefinierte Formatierung in die Dienstanwendung einzufügen, müssen Sie das IDispatchMessageFormatter-Objekt der Formatter-Eigenschaft zuweisen, indem Sie ein Vorgangsverhalten verwenden.To insert the custom formatter into the service application, assign the IDispatchMessageFormatter object to the Formatter property using an operation behavior. Informationen zum Verhalten finden Sie unter konfigurieren und Erweitern der Laufzeit mit Verhalten.For information about behaviors, see Configuring and Extending the Runtime with Behaviors.

Siehe auchSee Also

IClientMessageFormatter
IDispatchMessageFormatter
Konfigurieren und Erweitern der Laufzeit mit VerhaltenConfiguring and Extending the Runtime with Behaviors