最後に、まだ不明なもの
WebHttpBindingを用いた一連の処理の流れは、以上の通りになるが、僕がまだ解いていないパズルがある。
- WebOperationContextのOutgoingRequest / IncomingResponseがどの場面で使用できるのだろうか。
- WebHttpBehaviorにはGetRequestDispatchFormatter()と GetReplyDispatchFormatter()があるが、DispatchOperationに設定できる IDispatchOperationFormatterは1つだけである(Formatterプロパティ)。これらはどう使い分けられているのか。 IClientMessageFormatterも同様である。
他にもあったかもしれないがとりあえず思い出せない。分かったらここに追記することにする。
2009-09-27追記: 前者は、サービス側ではなくクライアント側からHTTPリクエスト等のプロパティを操作したりHTTPレスポンス等のプロパティを参照したりするために存在している。後者は、単純に、それぞれのformatterをマージしたIDispatchMessageFormatterやIClientMessageFormatterを作って、それらのSerializeRequest/DeserializeRequest/SerializeReply/DeserializeReplyの各メソッドで、それらを使い分けていると考えれば解決だ。