バインディングは、エンドポイントへの接続に必要な通信の詳細を指定するオブジェクトです。 具体的には、バインディングには、トランスポート、ワイヤ形式 (メッセージ エンコード)、およびそれぞれのエンドポイントまたはクライアント チャネルに使用するプロトコルの詳細を定義することによって、クライアントまたはサービス ランタイムを作成するために使用される構成情報が含まれます。 機能する Windows Communication Foundation (WCF) サービスを作成するには、サービス内の各エンドポイントにバインドが必要です。 このトピックでは、バインドの概要、バインドの定義方法、およびエンドポイントに対して特定のバインドを指定する方法について説明します。
バインドで定義される内容
バインディング内の情報は、非常に基本的なものでも、非常に複雑なものでもかまいません。 最も基本的なバインディングでは、エンドポイントへの接続に使用する必要があるトランスポート プロトコル (HTTP など) のみを指定します。 より一般的には、バインディングに含まれるエンドポイントへの接続方法に関する情報は、次の表のいずれかのカテゴリに分類されます。
プロトコル
信頼性の高いメッセージング機能またはトランザクション コンテキスト フローの設定を使用するセキュリティ メカニズムを決定します。
トランスポート
使用する基になるトランスポート プロトコル (TCP や HTTP など) を決定します。
[エンコード]
テキスト/XML、バイナリ、メッセージ転送最適化メカニズム (MTOM) などのメッセージ エンコードを決定します。このメカニズムにより、メッセージがネットワーク上のバイト ストリームとしてどのように表されるかが決まります。
システム標準のバインディング
WCF には、ほとんどのアプリケーション要件とシナリオに対応するように設計された、システム提供のバインドのセットが含まれています。 次のクラスは、システム提供のバインディングの例をいくつか表しています。
BasicHttpBinding: WS-I Basic Profile 1.1 仕様 (たとえば、ASP.NET Web サービス [ASMX]ベースのサービス) に準拠する Web サービスへの接続に適した HTTP プロトコル バインド。
WSHttpBinding: Web サービス仕様プロトコルに準拠するエンドポイントへの接続に適した HTTP プロトコル バインディング。
NetNamedPipeBinding: .NET バイナリ エンコードおよびフレーム テクノロジを Windows 名前付きパイプ トランスポートと組み合わせて使用して、同じコンピューター上の他の WCF エンドポイントに接続します。
NetMsmqBinding: .NET バイナリ エンコードおよびフレーム テクノロジをメッセージ キュー (MSMQ とも呼ばれます) と組み合わせて使用して、他の WCF エンドポイントとのキューに登録されたメッセージ接続を作成します。
システム提供のバインディングの完全な一覧と説明については、「 System-Provided バインド」を参照してください。
カスタム バインド
システム提供のバインディング コレクションに、サービス アプリケーションに必要な機能の正しい組み合わせがない場合は、 CustomBinding バインドを作成できます。 CustomBinding バインドの要素の詳細については、「<customBinding> およびカスタム バインド」を参照してください。
バインディングの使用
バインディングの使用には、次の 2 つの基本的な手順が必要です。
バインドを選択または定義します。 最も簡単な方法は、システムによって提供されるバインディングのいずれかを選択し、その既定の設定を使用することです。 システム提供のバインディングを選択し、要件に合わせてプロパティ値をリセットすることもできます。 または、カスタム バインドを作成し、必要に応じてすべてのプロパティを設定することもできます。
このバインディングを使用するエンドポイントを作成します。
コードと構成
コードまたは構成を使用してバインディングを定義または構成できます。 これら 2 つの方法は、使用されるバインディングの種類に依存しません。たとえば、システム提供のバインドを使用しているか、 CustomBinding バインドを使用しているかなどです。 一般に、コードを使用すると、コンパイル時にバインディングの定義を完全に制御できます。 一方、構成を使用すると、システム管理者または WCF サービスまたはクライアントのユーザーがバインディングのパラメーターを変更できます。 WCF アプリケーションの展開先となる特定のマシン要件とネットワーク条件を予測する方法がないため、この柔軟性が望ましいことがよくあります。 バインディング (およびアドレス指定) 情報をコードから分離すると、管理者はアプリケーションを再コンパイルまたは再デプロイすることなく、バインディングの詳細を変更できます。 バインドがコードで定義されている場合は、構成ファイルで行われた構成ベースの定義が上書きされることに注意してください。 これらの方法の例については、次のトピックを参照してください。
方法: マネージド アプリケーションで WCF サービスをホスト するコードでバインディングを作成する例を示します。
チュートリアル: Windows Communication Foundation クライアントの作成 では、構成を使用してクライアントを作成する例を示します。