Wcf-architecture

提供:Dev Guides
移動先:案内検索

WCF-アーキテクチャ

WCFには、さまざまな分散アプリケーションの開発を十分にサポートする階層化アーキテクチャがあります。 アーキテクチャについては、以下で詳しく説明します。

WCFアーキテクチャ

契約

コントラクトレイヤーは、アプリケーションレイヤーのすぐ隣にあり、サービスの操作と作成するアクセス可能な情報の種類を指定する実際のコントラクトの情報と同様の情報を含みます。 契約は基本的に以下で簡単に説明する4つのタイプです-

  • サービス契約-この契約は、エンドポイントの提供、および通信プロセスで使用されるプロトコルに関する情報をクライアントだけでなく外部にも提供します。
  • データ契約-サービスによって交換されるデータは、データ契約によって定義されます。 クライアントとサービスの両方がデータ契約に同意する必要があります。
  • メッセージコントラクト-データコントラクトはメッセージコントラクトによって制御されます。 主に、SOAPメッセージパラメータの型フォーマットのカスタマイズを行います。 ここで、WCFは通信を目的としてSOAP形式を採用していることに注意してください。 SOAPはSimple Object Access Protocolの略です。
  • ポリシーとバインディング-サービスとの通信には特定の前提条件があり、そのような条件はポリシーとバインディング契約によって定義されます。 クライアントはこの契約に従う必要があります。

サービスランタイム

サービスランタイムレイヤーは、コントラクトレイヤーのすぐ下にあります。 実行時に発生するさまざまなサービスの動作を指定します。 構成を実行し、サービスランタイムの下で実行できる動作には多くの種類があります。

  • スロットル動作-処理されるメッセージの数を管理します。
  • エラー動作-内部サービスエラー発生の結果を定義します。
  • メタデータの動作-メタデータの外部への可用性を指定します。
  • インスタンスの動作-クライアントが使用できるようにするために作成する必要があるインスタンスの数を定義します。
  • トランザクション動作-障害が発生した場合のトランザクション状態の変更を有効にします。
  • ディスパッチ動作-メッセージがWCFのインフラストラクチャによって処理される方法を制御します。
  • 同時動作-クライアント/サーバー通信中に並行して実行される機能を制御します。
  • Parameter Filtering -メソッドが呼び出される前にメソッドのパラメーターを検証するプロセスを特徴としています。

メッセージング

複数のチャネルで構成されるこのレイヤーは、主に2つのエンドポイント間で通信されるメッセージコンテンツを処理します。 一連のチャネルはチャネルスタックを形成し、チャネルスタックを構成する2つの主要なチャネルは次のとおりです-

  • トランスポートチャネル-これらのチャネルはスタックの下部にあり、HTTP、TCP、ピアツーピア、名前付きパイプ、MSMQなどのトランスポートプロトコルを使用してメッセージを送受信する責任があります。
  • プロトコルチャネル-スタックの最上部に存在するこれらのチャネルは、階層化チャネルとも呼ばれ、メッセージを変更することでワイヤレベルのプロトコルを実装します。

アクティベーションとホスティング

WCFアーキテクチャの最後の層は、サービスが実際にホストされる場所、またはクライアントが簡単にアクセスできるように実行できる場所です。 これは、以下で簡単に説明するさまざまなメカニズムによって行われます。

  • IIS -IISはインターネットインフォメーションサービスの略です。 サービスによってHTTPプロトコルを使用することにより、無数の利点が提供されます。 ここでは、サービスコードをアクティブにするためのホストコードは必要ありません。代わりに、サービスコードが自動的にアクティブになります。
  • Windows Activation Service -これは一般にWASとして知られており、IIS 7.0に付属しています。 ここでは、TCPプロトコルまたはNamedpipeプロトコルを使用して、HTTPベースの通信と非HTTPベースの通信の両方が可能です。
  • セルフホスティング-これは、WCFサービスがコンソールアプリケーションとしてセルフホストされるメカニズムです。 このメカニズムは、目的のプロトコルの選択と独自のアドレッシングスキームの設定に関して驚くべき柔軟性を提供します。
  • * Windowsサービス*-このメカニズムを使用してWCFサービスをホストすると、実行時のアクティブ化が行われないため、サービスがアクティブ化されたままで、クライアントからアクセスできるため、有利です。