Windows Communication Foundation のアーキテクチャWindows Communication Foundation Architecture

次の図は、Windows Communication Foundation (WCF) アーキテクチャの主要な層を示しています。The following graphic illustrates the major layers of the Windows Communication Foundation (WCF) architecture.

WCF アーキテクチャWCF Architecture

WCF アーキテクチャThe WCF Architecture

コントラクトと記述Contracts and Descriptions

コントラクトは、メッセージ システムのさまざまな側面を定義します。Contracts define various aspects of the message system. データ コントラクトには、サービスが作成または処理できるすべてのメッセージを構成するすべてのパラメーターが記述されます。The data contract describes every parameter that makes up every message that a service can create or consume. メッセージ パラメーターは、XML を理解できるすべてのシステムがドキュメントを処理できるように XML スキーマ定義言語 (XSD) ドキュメントによって定義されます。The message parameters are defined by XML Schema definition language (XSD) documents, enabling any system that understands XML to process the documents. メッセージ コントラクトは、SOAP プロトコルを使用する特定のメッセージ部分を定義し、相互運用性機能によって正確さが要求される場合に、よりきめ細かな制御を許可します。The message contract defines specific message parts using SOAP protocols, and allows finer-grained control over parts of the message, when interoperability demands such precision. サービス コントラクトは、サービスの実際のメソッド署名を指定し、サポートされているプログラミング言語のいずれか (Visual Basic や Visual C# など) で記述されたインターフェイスとして配布されます。The service contract specifies the actual method signatures of the service, and is distributed as an interface in one of the supported programming languages, such as Visual Basic or Visual C#.

ポリシーとバインディングは、サービスとの通信に必要な条件を規定します。Policies and bindings stipulate the conditions required to communicate with a service. たとえば、バインディングでは、使用するトランスポート (HTTP や TCP など) とエンコーディングを少なくとも指定する必要があります。For example, the binding must (at a minimum) specify the transport used (for example, HTTP or TCP), and an encoding. ポリシーには、セキュリティ要件、およびサービスと通信するために満たす必要があるその他の条件が含まれます。Policies include security requirements and other conditions that must be met to communicate with a service.

サービス ランタイムService Runtime

サービス ランタイム レイヤーには、サービスの実際の操作の実行中にのみ発生する動作 (つまり、サービスのランタイム動作) が含まれます。The service runtime layer contains the behaviors that occur only during the actual operation of the service, that is, the runtime behaviors of the service. 調整コントロールでは、処理されるメッセージの数を制御します。サービスの需要が事前設定した上限に達した場合は、この数を変更できます。Throttling controls how many messages are processed, which can be varied if the demand for the service grows to a preset limit. エラー動作では、サービスで内部エラーが発生した場合の処理方法 (たとえば、クライアントに伝達される情報を制御するなど) を指定します An error behavior specifies what occurs when an internal error occurs on the service, for example, by controlling what information is communicated to the client. (情報が多すぎると、悪意のあるユーザーが攻撃のマウントに利点を与える可能性があります)。メタデータの動作により、メタデータを外部の環境で使用できるようにする方法と方法が決まります。(Too much information can give a malicious user an advantage in mounting an attack.) Metadata behavior governs how and whether metadata is made available to the outside world. インスタンスの動作では、サービスのインスタンスをいくつ実行できるかを指定します (たとえば、シングルトンは、1 つのインスタンスですべてのメッセージを処理するように指定します)。Instance behavior specifies how many instances of the service can be run (for example, a singleton specifies only one instance to process all messages). トランザクションの動作では、エラーが発生した場合にトランザクション操作をロールバックできるようにします。Transaction behavior enables the rollback of transacted operations if a failure occurs. ディスパッチ動作は、WCF インフラストラクチャによってメッセージがどのように処理されるかを制御します。Dispatch behavior is the control of how a message is processed by the WCF infrastructure.

拡張機能を使用すると、ランタイム プロセスをカスタマイズできます。Extensibility enables customization of runtime processes. たとえば、メッセージの検査はメッセージの各部分を検査する機能です。また、パラメーターのフィルター処理を使用すると、メッセージ ヘッダーに作用するフィルターに基づいて、事前設定されたアクションを実行できます。For example, message inspection is the facility to inspect parts of a message, and parameter filtering enables preset actions to occur based on filters acting on message headers.


メッセージング層は、チャネルで構成されます。The messaging layer is composed of channels. チャネルは、何らかの方法 (たとえば、メッセージを認証するなど) によってメッセージを処理するコンポーネントです。A channel is a component that processes a message in some way, for example, by authenticating a message. チャネルのセットは、チャネルスタックとも呼ばれます。A set of channels is also known as a channel stack. チャネルは、メッセージおよびメッセージ ヘッダーに対して作用します。Channels operate on messages and message headers. これは、主にメッセージ本文の内容の処理に関係するサービス ランタイム レイヤーとは異なります。This is different from the service runtime layer, which is primarily concerned about processing the contents of message bodies.

チャネルの種類としては、トランスポート チャネルとプロトコル チャネルの 2 つがあります。There are two types of channels: transport channels and protocol channels.

トランスポート チャネルは、ネットワーク (または外部との通信ポイント) からのメッセージの読み取りと書き込みを行います。Transport channels read and write messages from the network (or some other communication point with the outside world). 一部のトランスポートはエンコーダーを使用して、(XML Infoset として表現される) メッセージを、ネットワークで使用されるバイト ストリーム表現に (またはその逆に) 変換します。Some transports use an encoder to convert messages (which are represented as XML Infosets) to and from the byte stream representation used by the network. トランスポートの例としては、HTTP、名前付きパイプ、TCP、MSMQ などがあります。Examples of transports are HTTP, named pipes, TCP, and MSMQ. エンコーディングの例としては、XML と最適化されたバイナリがあります。Examples of encodings are XML and optimized binary.

プロトコル チャネルは、メッセージ処理プロトコルを実装します。多くの場合、これはメッセージから追加のヘッダーを読み取るまたは書き込むことによって行います。Protocol channels implement message processing protocols, often by reading or writing additional headers to the message. このようなプロトコルの例としては、WS-Security と WS-Reliability があります。Examples of such protocols include WS-Security and WS-Reliability.

メッセージング レイヤーは、データに使用できる形式と交換パターンを示します。The messaging layer illustrates the possible formats and exchange patterns of the data. WS-Security は、メッセージ レイヤーでのセキュリティを有効にする WS-Security 仕様の実装です。WS-Security is an implementation of the WS-Security specification enabling security at the message layer. WS-ReliableMessaging チャネルは、メッセージ配信の保証を有効にします。The WS-Reliable Messaging channel enables the guarantee of message delivery. エンコーダーは、メッセージのニーズに合わせて使用できるさまざまなエンコーディングを提供します。The encoders present a variety of encodings that can be used to suit the needs of the message. HTTP チャネルは、ハイパーテキスト転送プロトコルをメッセージ配信に使用することを指定します。The HTTP channel specifies that the HyperText Transport Protocol is used for message delivery. 同様に、TCP チャネルは TCP プロトコルを指定します。The TCP channel similarly specifies the TCP protocol. トランザクション フロー チャネルは、トランザクション メッセージ パターンを制御します。The Transaction Flow channel governs transacted message patterns. 名前付きパイプ チャネルは、プロセス間通信を有効にします。The Named Pipe channel enables interprocess communication. MSMQ チャネルは、MSMQ アプリケーションとの相互運用を有効にします。The MSMQ channel enables interoperation with MSMQ applications.

ホストとアクティブ化Hosting and Activation

サービスの最終的な形はプログラムです。In its final form, a service is a program. 他のプログラムと同様、サービスは実行可能ファイルで実行される必要があります。Like other programs, a service must be run in an executable. これは、自己ホスト型サービスと呼ばれます。This is known as a self-hosted service.

また、サービスをホストしたり、IIS や Windows Activation SERVICE (WAS) などの外部エージェントで管理される実行可能ファイルで実行したりすることもできます。Services can also be hosted, or run in an executable managed by an external agent, such as IIS or Windows Activation Service (WAS). WAS を実行しているコンピューターに展開すると、WCF アプリケーションを自動的にアクティブにすることができます。WAS enables WCF applications to be activated automatically when deployed on a computer running WAS. サービスは、実行可能ファイル (.exe ファイル) として手動で実行することもできます。Services can also be manually run as executables (.exe files). また、Windows サービスとして自動的に実行することもできます。A service can also be run automatically as a Windows service. COM + コンポーネントは、WCF サービスとしてホストすることもできます。COM+ components can also be hosted as WCF services.

関連項目See also