カスタム メッセージ フォーマッタ
メッセージの内容は、XML 形式で表されることが多く、この形式は通常、アプリケーションにとって処理しやすい形式ではありません。 アプリケーションでは、オブジェクトのプロパティを取得および設定することによってオブジェクトを操作します。 Windows Communication Foundation (WCF) はデータ コントラクト を使用して、Message オブジェクトを、アプリケーションで処理しやすいオブジェクトに変換します。 このプロセスは、シリアル化および逆シリアル化と呼ばれます。 これと同じ用語が、トランスポート層によって行われるメッセージ ワイヤ形式へのシリアル化とその形式からの逆シリアル化を説明するときに使用されますが、これは関連のないプロセスです。
データ コントラクトによって実現できないメッセージとオブジェクト間の特殊な変換を実装する必要がある場合、カスタム メッセージ フォーマッタを使用できます。 これを使用するには、クライアントまたはサービス上で特定のコントラクト操作の実行動作を変更または拡張します。
クライアントのカスタム メッセージ フォーマッタ
IClientMessageFormatter インターフェイスは、メッセージからオブジェクトへの変換およびオブジェクトからクライアント アプリケーション用のメッセージへの変換を制御するためのメソッドを定義します。
このインターフェイスを実装する必要があります。 まず、メッセージを逆シリアル化するための DeserializeReply メソッドをオーバーライドします。 このメソッドは、受信メッセージを受信した後でそのメッセージがクライアント操作にディスパッチされる前に呼び出されます。
次に、オブジェクトをシリアル化するための SerializeRequest メソッドをオーバーライドします。 このメソッドは、送信メッセージを送信する前に呼び出されます。
カスタム フォーマッタをサービス アプリケーションに挿入するには、操作の動作を使用して、IClientMessageFormatter オブジェクトを Formatter プロパティに割り当てます。 動作の詳細については、「動作を使用したランタイムの構成と拡張」を参照してください。
サービスのカスタム メッセージ フォーマッタ
IDispatchMessageFormatter インターフェイスは、Message オブジェクトを操作用のパラメーターに変換し、これらのパラメーターをサービス アプリケーション用の Message オブジェクトに変換するためのメソッドを定義します。
このインターフェイスを実装する必要があります。 まず、メッセージを逆シリアル化するための DeserializeReply メソッドをオーバーライドします。 このメソッドは、受信メッセージを受信した後でそのメッセージがクライアント操作にディスパッチされる前に呼び出されます。
次に、オブジェクトをシリアル化するための SerializeRequest メソッドをオーバーライドします。 このメソッドは、送信メッセージを送信する前に呼び出されます。
カスタム フォーマッタをサービス アプリケーションに挿入するには、操作の動作を使用して、IDispatchMessageFormatter オブジェクトを Formatter プロパティに割り当てます。 動作の詳細については、「動作を使用したランタイムの構成と拡張」を参照してください。