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