システム指定のバインド
バインディングにより、エンドポイントとの通信で使用する通信メカニズムが指定され、エンドポイントへの接続方法が示されます。 バインディングには次の要素が含まれます。
プロトコル スタックは、エンドポイントに送信されるメッセージで使用するセキュリティ、信頼性、およびコンテキスト フローの設定を決定します。
トランスポートは、エンドポイントにメッセージを送信するときに使用する基礎トランスポート プロトコル (TCP または HTTP など) を決定します。
エンコードでは、エンドポイントに送信されるメッセージに使用するネットワーク エンコードを決定します。 たとえば、テキスト/XML、バイナリ、Message Transmission Optimization Mechanism (MTOM) などです。
この記事では、すべてのシステム指定の Windows Communication Foundation (WCF) バインドについて説明します。 このバインドがいずれもアプリケーションの条件に適合しない場合は、カスタム バインドを作成できます。 カスタム バインドを作成する方法の詳細については、「カスタム バインディング」を参照してください。
WS-Federation プロトコルをサポートする、セキュリティで保護された相互操作可能なバインディングを使用すると、フェデレーションに属す組織のユーザーを効率的に認証および承認できます。
重要
常にセキュリティを備えたバインディングを選択します。 既定では、<basicHttpBinding> 要素以外のすべてのバインドでセキュリティが有効になっています。 セキュリティで保護されたバインディングを選択しない場合、またはセキュリティを無効にする場合は、セキュリティで保護されたデータ センターや隔離されたネットワークにデータを保存するなど、他の方法でデータを保護してください。
重要
他の方法によってデータをセキュリティ保護している場合を除き、セキュリティをサポートしないバインディングやセキュリティが無効になっているバインディングでは、双方向コントラクトを使用しないでください。
次のバインドは WCF に付属します。
バインド | Configuration 要素 | 説明 |
---|---|---|
BasicHttpBinding | basicHttpBinding> | ASP.NET Web サービス (ASMX) ベースのサービスなど、WS-Basic Profile に適合する Web サービスとの通信に適したバインド。 このバインディングはトランスポートとして HTTP を、既定のメッセージ エンコーディングとして text/XML を使用します。 |
WSHttpBinding | wsHttpBinding> | 二重のサービス コントラクト以外に適した、セキュリティで保護された相互操作可能なバインディング。 |
WSDualHttpBinding | wsDualHttpBinding> | 二重のサービス コントラクト、または SOAP 中継局を介しての通信に適した、セキュリティで保護された相互操作可能なバインディング。 |
WSFederationHttpBinding | wsFederationHttpBinding> | フェデレーションに属している組織のユーザーを効率的に認証および承認できる、WS-Federation プロトコルをサポートする、セキュリティで保護された相互操作可能なバインド。 |
NetHttpBinding | netHttpBinding> | HTTP や WebSocket のサービスを使用するように設計され、既定ではバイナリ エンコードを使用するバインディング。 |
NetHttpsBinding | netHttpsBinding> | HTTP や WebSocket のサービスを使用するように設計され、既定ではバイナリ エンコードを使用するセキュリティで保護されたバインディング。 |
NetTcpBinding | netTcpBinding> | WCF アプリケーション間でのコンピューター間通信に適した、セキュリティで保護され、最適化されたバインド。 |
NetNamedPipeBinding | netNamedPipeBinding> | WCF アプリケーション間でのコンピューター上の通信に適した、セキュリティで保護され、信頼できる最適化されたバインド。 |
NetMsmqBinding | netMsmqBinding> | WCF アプリケーション間でのコンピューター間通信に適した、キューに置かれたバインド。 |
NetPeerTcpBinding | netPeerTcpBinding> | セキュリティで保護された、複数のコンピューター通信を可能にするバインディング。 |
MsmqIntegrationBinding | msmqIntegrationBinding> | WCF アプリケーションと既存のメッセージ キュー アプリケーション間のコンピューター間通信に適したバインド。 |
BasicHttpContextBinding | basicHttpContextBinding> | WS-Basic Profile に適合する Web サービスとの通信に適したバインド。HTTP Cookie を使用して、コンテキストをやり取りできるようにします。 |
NetTcpContextBinding | netTcpContextBinding> | WCF アプリケーション間でのコンピューター間通信に適した、セキュリティで保護され、最適化されたバインド。SOAP ヘッダーを使用して、コンテキストを交換できるようにします。 |
WebHttpBinding | webHttpBinding> | SOAP メッセージではなく、HTTP 要求を介して公開される WCF Web サービスのエンドポイントを構成するために使用されるバインド。 |
WSHttpContextBinding | wsHttpContextBinding> | 非双方向サービス コントラクトに適した、セキュリティで保護された相互操作可能なバインド。SOAP ヘッダーを使用して、コンテキストを交換できるようにします。 |
UdpBinding | udpBinding> | 単純なメッセージを複数のクライアントに同時に送信するために使用されるバインディング。 |
各システム指定のバインディングの機能を次の表に示します。 各バインディングをこの表の列に示します。機能とその説明は 2 番目の表の行に示します。 次の表に、使用されるバインディングの省略形のキーを示します。 バインディングを選択するには、必要な行の機能がすべて含まれる列を調べます。
バインド | 相互運用性 | セキュリティ (既定) | Session (既定値)。 |
トランザクション | 二重 | エンコード (かっこ内は既定値) | ストリーム (既定値)。 |
---|---|---|---|---|---|---|---|
BasicHttpBinding | Basic Profile 1.1 | (なし)、トランスポート、メッセージ、混在 | (なし) | (なし) | N/A | テキスト、(MTOM) | はい (buffered) |
WSHttpBinding | WS | トランスポート、(メッセージ)、混在 | (なし)、信頼できるセッション、セキュリティ保護されたセッション | (なし)、あり | N/A | (テキスト)、MTOM | いいえ |
WSDualHttpBinding | WS | (メッセージ)、なし | (信頼できるセッション)、セキュリティ保護されたセッション | (なし)、あり | はい | (テキスト)、MTOM | いいえ |
WSFederationHttpBinding | WS-Federation | (メッセージ)、混在、なし | (なし)、信頼できるセッション、セキュリティ保護されたセッション | (なし)、あり | いいえ | (テキスト)、MTOM | いいえ |
NetHttpBinding | .NET | (なし)、トランスポート、メッセージ、TransportWithMessageCredential、TransportCredentialOnly | 下記のメモを参照 | なし | 下記のメモを参照 | (バイナリ)、テキスト、MTOM | 〇 (バッファリング) |
NetHttpsBinding | .NET | (トランスポート)、TransportWithMessageCredential | 下記のメモを参照 | なし | 下記のメモを参照 | (バイナリ)、テキスト、MTOM | はい (buffered) |
NetTcpBinding | .NET | (トランスポート)、メッセージ、なし、混在 | (トランスポート)、信頼できるセッション、セキュリティ保護されたセッション | (なし)、あり | はい | Binary | はい (buffered) |
NetNamedPipeBinding | .NET | (トランスポート)、なし | なし、(トランスポート) | (なし)、あり | はい | Binary | はい (buffered) |
NetMsmqBinding | .NET | メッセージ、(トランスポート)、なし | (なし)、トランスポート | なし、(あり) | いいえ | Binary | いいえ |
NetPeerTcpBinding | ピア | (トランスポート) | (なし) | (なし) | はい | いいえ | |
MsmqIntegrationBinding | MSMQ | (トランスポート) | (なし) | なし、(あり) | N/A | N/A | いいえ |
BasicHttpContextBinding | Basic Profile 1.1 | (なし)、トランスポート、メッセージ、混在 | (なし) | (なし) | N/A | テキスト、(MTOM) | はい (buffered) |
NetTcpContextBinding | .NET | (トランスポート)、メッセージ、なし、混在 | (トランスポート)、信頼できるセッション、セキュリティ保護されたセッション | (なし)、あり | はい | Binary | はい (buffered) |
WSHttpContextBinding | WS | トランスポート、(メッセージ)、混在 | (なし)、信頼できるセッション、セキュリティ保護されたセッション | (なし)、あり | N/A | テキスト、(MTOM) | いいえ |
UdpBinding 注: 相互運用性は、このバインドで実装される標準の UDP 上の SOAP 仕様を実装することによって実現できます。 |
.NET | (なし) | (なし) | (なし) | N/A | (テキスト) | いいえ |
重要
NetHttpBinding は、HTTP や WebSocket のサービスを使用するために設計されたバインドで、既定ではバイナリ エンコードを使用します。 NetHttpBinding は、要求/応答コントラクトと二重コントラクトのどちらで使用されているかを検出し、一致するように動作を変更します。要求/応答には HTTP、二重には WebSocket を使用します。 この動作は、次の WebSocketTransportUsage バインド設定を使用してオーバーライドできます。WhenDuplex - これが既定値であり、上述のように動作します。 Never - Websocket が使用されないようにします。 この設定で二重コントラクトを使用しようとすると、例外が発生します。 Always - 要求-応答コントラクトでも Websocket が使用されるようにします。 NetHttpBinding では、HTTP モードと WebSocket モードの両方で信頼できるセッションがサポートされます。 WebSocket モードでは、セッションがトランスポートによって提供されます。
次の表では、前の表に示された機能について説明します。
機能 | 説明 |
---|---|
相互運用性の種類 | バインディングによる相互操作を可能にするプロトコルまたはテクノロジに名前を付けます。 |
セキュリティ | チャネルをセキュリティで保護する方法を指定します。 - なし: SOAP メッセージはセキュリティで保護されず、クライアントは認証されません。 - トランスポート: セキュリティ要件はトランスポート層で満たされます。 - メッセージ: セキュリティ要件はメッセージ層で満たされます。 - 混在: クレームはメッセージに含まれ、整合性と機密性の要件がトランスポート層で満たされます。 |
Session | このバインディングでセッション コントラクトをサポートするかどうかを指定します。 |
トランザクション | トランザクションが有効かどうかを指定します。 |
二重 | 二重のコントラクトがサポートされているかどうかを指定します。 この機能はバインディングでセッションをサポートする必要があることに注意してください。 |
Encoding | メッセージのネットワーク上での形式を指定します。 次の値を使用できます。 - テキスト: UTF-8 など。 - バイナリ - Message Transmission Optimization Mechanism (MTOM): SOAP エンベロープのコンテキスト内でバイナリ XML 要素を効率的にエンコードするためのメソッドです。 |
ストリーム | 受信メッセージおよび送信メッセージに対してストリーミングをサポートするかどうかを指定します。 バインディングで TransferMode プロパティを使用して値を設定します。 次の値を使用できます。- Buffered: 要求メッセージと応答メッセージの両方がバッファリングされます。 - Streamed: 要求メッセージと応答メッセージの両方がストリーミングされます。 - StreamedRequest: 要求メッセージがストリーミングされ、応答メッセージがバッファリングされます。 - StreamedResponse: 要求メッセージがバッファリングされ、応答メッセージがストリーミングされます。 |