WCF を 拡張する

MSDN マガジンのこの記事がよくできているのです。WCF を拡張する時に知りたいことが全て書いてあります。
でも、元記事の訳し方に問題があるのか、元記事が悪いのか、今ひとつわかりにくいです。自分なりの理解を残しておきます。

  • クライアント側のプロキシに相当するサーバー側のコンポーネントは、Dispatcher(ディスパッチャ)と呼ぶ。
  • 拡張は、プロキシとディスパッチャに対して行う。
    ※この記事は、プロキシとディスパッチャに対しての拡張についてのみ扱う、という意味。WCF はメッセージ、トランスポート、エンコーダ、などその気になったらなんでも作ることができる
  • プロキシはメソッドごとに ClientOperation オブジェクトを持つ。またプロキシ全体で1つ、 ClientRuntime オブジェクトを持つ。
  • ディスパッチャはメソッドごとに DispatchOperation オブジェクトを持つ。またディスパッチャ全体で1つ、DispatchRuntime オブジェクトを持つ。
  • プロキシ(クライアント)内の拡張ポイント
    • メソッドごとに持つ、ClientOperation オブジェクトが行う次の2つの動作
      1. パラメータの検査(IParameterInspector)
      2. メッセージの書式設定(シリアライズ、IClientFormatter)
    • プロキシ全体で1つ持つ、ClientRuntime オブジェクトが行う次の1つの動作
      1. メッセージの検査(IClientMessageInspector)
  • ディスパッチャ(サーバー)内の拡張ポイント
    • ディスパッチャ全体で1つ持つ、DispatchRuntime オブジェクトが行う次の2つの動作
      1. メッセージの検査(IDispatchMessageInspector)
      2. 操作の選択(IDispatchOperationSelector)
    • メソッドごとに持つ、DispatchOperation オブジェクトが行う次の3つの動作
      1. メッセージの書式設定(デシリアライズ、IDispatchMessageFormatter)
      2. パラメータの検査(IParameterInspector)
      3. 操作呼び出し元(IOperationInvoker)
  • プロキシとディスパッチャの拡張ポイント(Interface)の実装クラスは、独自に作成する Behavior に登録する。
  • 独自に作成する Behavior は、次の4つ。
    1. サービススコープの Behavior ・・・ IServiceBehavior
    2. エンドポイントスコープの Behavior ・・・ IEndpointBehavior
    3. コントラクトスコープの Behavior ・・・ IContractBehavior
    4. メソッドスコープの Behavior ・・・ IOperationBehavior
  • 独自に作成した Behavior は、属性または構成ファイル(config ファイル)を使って WCF へ登録する。
  • 属性、構成ファイルのそれぞれで、設定できる Behavior のスコープが異なる。
    1. 属性の場合
      • 1.サービス、3.コントラクト、4.メソッドスコープの Behavior は設定可能
      • 2.エンドポイントスコープの Behavior は設定できない
    2. 構成ファイルの場合
      • 1.サービス、2.エンドポイントスコープの Behavior は設定可能
      • 3.コントラクト、4.メソッドスコープの Behavior は設定できない
カテゴリー: WCF パーマリンク

コメントを残す