システムが提供するバインディングの構成

バインディングにより、エンドポイントとの通信で使用する通信メカニズムが指定され、エンドポイントへの接続方法が示されます。 バインディングは、必要な通信機能を提供するために Windows Communication Foundation (WCF) チャネルを階層化する方法を定義する要素で構成されています。 バインディングには次の 3 種類の要素が含まれます。

  • プロトコル チャネル バインド要素 : エンドポイントに送信されるメッセージで使用するセキュリティ、信頼性、コンテキスト フローの設定、またはユーザー定義のプロトコルを指定します。

  • トランスポート チャネル バインド要素 : エンドポイントにメッセージを送信するときに使用する基礎トランスポート プロトコル (TCP や HTTP など) を指定します。

  • メッセージ エンコーディング バインド要素 : エンドポイントに送信されるメッセージに使用するネットワーク エンコード (text/XML、バイナリ、MTOM (Message Transmission Optimization Mechanism) など) を指定します。

ここでは、すべてのシステム指定の Windows Communication Foundation (WCF) バインディングについて説明します。 このバインディングがいずれもアプリケーションの要件を満たさない場合は、CustomBinding クラスを使用してバインディングを作成できます。 カスタム バインドを作成する方法の詳細については、「カスタム バインディング」を参照してください。

重要

セキュリティが有効になっているバインディングを選択します。 既定では、BasicHttpBinding バインディング以外のバインディングではセキュリティが有効になっています。 セキュリティで保護されたバインディングを選択しない場合、またはセキュリティを無効にする場合は、セキュリティで保護されたデータ センターや隔離されたネットワークを使用するなど、他の方法でネットワーク交換が保護されていることを確認してください。

重要

他の方法によってネットワーク交換がセキュリティ保護されない限り、セキュリティをサポートしないバインディングやセキュリティが無効になっているバインディングでは、双方向コントラクトを使用しないでください。

システム標準のバインディング

WCF には、次のバインディングが付属しています。

バインド Configuration 要素 説明
BasicHttpBinding <basicHttpBinding> ASP.NET Web サービス (ASMX) ベースのサービスなど、WS-Basic Profile に適合する Web サービスとの通信に適したバインディング。 このバインディングはトランスポートとして HTTP を、既定のメッセージ エンコーディングとして text/XML を使用します。
WSHttpBinding <wsHttpBinding> 二重のサービス コントラクト以外に適した、セキュリティで保護された相互操作可能なバインディング。
WS2007HttpBinding <ws2007HttpBinding> SecurityReliableSession、および TransactionFlow の各バインド要素の適切なバージョンをサポートする、セキュリティで保護された相互運用可能なバインディング。
WSDualHttpBinding <wsDualHttpBinding> 二重のサービス コントラクト、または SOAP 中継局を介しての通信に適した、セキュリティで保護された相互操作可能なバインディング。
WSFederationHttpBinding <wsFederationHttpBinding> WS-Federation プロトコルをサポートする、セキュリティで保護された相互操作可能なバインディングで、フェデレーションに属す組織のユーザーを効率的に認証、および承認することができます。
WS2007FederationHttpBinding <ws2007FederationHttpBinding> WS2007HttpBindingから派生し、フェデレーション セキュリティをサポートする、セキュリティで保護された相互運用可能なバインディングです。
NetTcpBinding <netTcpBinding> WCF アプリケーション間でのコンピューター間通信に適した、セキュリティで保護され、最適化されたバインド。
NetNamedPipeBinding <netNamedPipeBinding> WCF アプリケーション間でのコンピューター上の通信に適した、セキュリティで保護され、信頼できる最適化されたバインド。
NetMsmqBinding <netMsmqBinding> WCF アプリケーション間でのコンピューター間通信に適した、キューに置かれたバインド。
NetPeerTcpBinding <netPeerTcpBinding> セキュリティで保護された、複数のコンピューター通信を可能にするバインディング。
WebHttpBinding <webHttpBinding> SOAP メッセージではなく、HTTP 要求を介して公開される WCF Web サービスのエンドポイントを構成するために使用されるバインド。
MsmqIntegrationBinding <msmqIntegrationBinding> WCF アプリケーションと既存のメッセージ キュー (MSMQ: Message Queuing) アプリケーションとの間のコンピューター間通信に適したバインディング。

バインディング機能

システム指定の各バインディングで提供される主要機能の一部を次の表に示します。 各バインディングを 1 列目に示します。機能に関する情報については表で説明します。 次の表に、使用されるバインディングの省略形のキーを示します。 バインディングを選択するには、必要な行の機能がすべて含まれる列を調べます。

バインド 相互運用性 セキュリティ モード (既定) Session

(既定値)。
トランザクション 二重
BasicHttpBinding Basic Profile 1.1 (なし)、トランスポート、メッセージ、混在 なし、(なし) (なし) N/A
WSHttpBinding WS なし、トランスポート、(メッセージ)、混在 (なし)、トランスポート、信頼できるセッション (なし)、あり N/A
WS2007HttpBinding WS-Security、WS-Trust、WS-SecureConversation、WS-SecurityPolicy なし、トランスポート、(メッセージ)、混在 (なし)、トランスポート、信頼できるセッション (なし)、あり N/A
WSDualHttpBinding WS なし、(メッセージ) (信頼できるセッション) (なし)、あり はい
WSFederationHttpBinding WS-Federation なし、(メッセージ)、混在 (なし)、信頼できるセッション (なし)、あり いいえ
WS2007FederationHttpBinding WS-Federation なし、(メッセージ)、混在 (なし)、信頼できるセッション (なし)、あり いいえ
NetTcpBinding .NET なし、(トランスポート)、メッセージ、

混在
信頼できるセッション、(トランスポート) (なし)、あり はい
NetNamedPipeBinding .NET なし、

(トランスポート)
なし、(トランスポート) (なし)、あり はい
NetMsmqBinding .NET なし、メッセージ、(トランスポート)、両方 (なし) (なし)、あり いいえ
NetPeerTcpBinding ピア なし、メッセージ、(トランスポート)、混在 (なし) (なし) はい
WebHttpBinding .NET なし、トランスポート、TransportCredentialOnly (なし) (なし) N/A
MsmqIntegrationBinding MSMQ なし、(トランスポート) (なし) (なし)、あり N/A

次の表では、前の表内の機能について説明します。

機能 説明
相互運用性の種類 バインディングによる相互操作を可能にするプロトコルまたはテクノロジに名前を付けます。
セキュリティ チャネルをセキュリティで保護する方法を指定します。

- なし: SOAP メッセージはセキュリティで保護されず、クライアントは認証されません。
- トランスポート: セキュリティ要件はトランスポート層で満たされます。
- メッセージ: セキュリティ要件はメッセージ層で満たされます。
- 混在: このセキュリティ モードは TransportWithMessageCredentials と呼ばれます。 メッセージ レベルで資格情報を処理し、整合性と機密性の要件がトランスポート層で満たされます。
- 両方: メッセージ レベルとトランスポート レベルの両方のセキュリティが使用されます。 この機能は、NetMsmqBinding に特有の機能です。
Session このバインディングでセッション コントラクトをサポートするかどうかを指定します。
トランザクション トランザクションが有効かどうかを指定します。
二重 二重のコントラクトがサポートされているかどうかを指定します。 この機能はバインディングでセッションをサポートする必要があることに注意してください。
ストリーム メッセージ ストリーミングをサポートするかどうかを指定します。

関連項目