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