エンドポイント : アドレス、バインディング、およびコントラクト
Windows Communication Foundation (WCF) サービスを使用して行われるすべての通信では、サービスのエンドポイントが使用されます。エンドポイントは、クライアントが WCF サービスによって提供される機能にアクセスできるようにします。
各エンドポイントは、次の 4 つのプロパティで構成されます。
- そのエンドポイントの場所を示すアドレス。
- クライアントがエンドポイントと通信する方法を指定するバインディング。
- 利用可能な操作を識別するためのコントラクト。
- エンドポイントのローカル実装の詳細を指定する一連の動作。
ここでは、エンドポイントの構造と WCF オブジェクト モデルでの表現方法について説明します。
エンドポイントの構造
各エンドポイントの構造は次のとおりです。
- アドレス : アドレスは、エンドポイントを一意に識別し、サービスの潜在的ユーザーにそのエンドポイントの場所を示します。WCF オブジェクト モデルでは、EndpointAddress クラスで表されます。EndpointAddress クラスには次のものが含まれます。
- Uri プロパティは、サービスのアドレスを表します。
- Identity プロパティは、サービスのセキュリティ ID とオプションのメッセージ ヘッダーのコレクションを表します。オプションのメッセージ ヘッダーは、エンドポイントの識別またはエンドポイントとの対話のための、より詳細なアドレス指定情報を追加するために使用されます。
詳細な情報については、次のページを参照してください。 「エンドポイント アドレスの指定」を参照してください。
- バインディング : バインディングは、エンドポイントとの通信方法を指定します。バインディングには、以下の項目が含まれます。
- 使用するトランスポート プロトコル (例 : TCP や HTTP)。
- メッセージに使用するエンコーディング (例 : テキストやバイナリ)。
- 必要なセキュリティ要件 (例 : SSL メッセージ セキュリティや SOAP メッセージ セキュリティ)。
詳細な情報については、次のページを参照してください。 「Windows Communication Foundation のバインディングの概要」を参照してください。WCF オブジェクト モデルでは、バインディングは抽象基本クラス Binding で表されます。ほとんどのシナリオでは、システム指定のバインディングを使用できます。詳細については、「システム標準のバインディング」を参照してください。
- コントラクト : コントラクトは、エンドポイントがクライアントに公開する機能を示します。コントラクトは、以下の項目を指定します。
- クライアントから呼び出すことができる操作。
- メッセージの形式。
- 操作を呼び出すために必要な入力パラメータまたはデータの型。
- クライアントが予期できる処理メッセージまたは応答メッセージの種類。
コントラクトの定義の詳細については、「サービス コントラクトの設計」を参照してください。
- 動作 : エンドポイントの動作を使用すると、サービス エンドポイントのローカル動作をカスタマイズできます。これを実現するため、エンドポイントの動作は WCF ランタイムのビルド プロセスに参加します。エンドポイントの動作の一例は、ListenUri プロパティです。この動作は、SOAP アドレスまたは Web サービス記述言語 (WSLD) アドレスとは異なるリッスン アドレスを指定できるようにします。詳細な情報については、次のページを参照してください。 「ClientViaBehavior」を参照してください。
エンドポイントの定義
サービスのエンドポイントはコードを使用して強制的に指定するか、構成を介して宣言として指定できます。詳細な情報については、次のページを参照してください。 「方法 : 構成にサービス エンドポイントを作成する」および「方法 : コード内にサービス エンドポイントを作成する」を参照してください。
このセクションの内容
このセクションでは、バインディング、エンドポイント、およびアドレスの目的を説明し、バインディングとエンドポイントの構成方法および ClientVia 動作と ListenUri プロパティの使用方法を示します。
- エンドポイントのアドレス
WCF でのエンドポイントのアドレス指定の方法について説明します。
- Windows Communication Foundation バインディング
バインディングを使用して、クライアントとサービスが相互に通信するために必要なトランスポート、エンコーディング、およびプロトコルの詳細を指定する方法について説明します。
- コントラクト
コントラクトでサービスのメソッドが定義されるしくみについて説明します。
- 方法 : 構成にサービス エンドポイントを作成する
構成にサービス エンドポイントを作成する方法について説明します。
- 方法 : コード内にサービス エンドポイントを作成する
コード内にサービス エンドポイントを作成する方法について説明します。
- 方法 : Svcutil.exe を使用してコンパイル済みサービス コードを検証する
ServiceModel Metadata Utility Tool (Svcutil.exe) を使用して、サービスをホストせずにサービスの実装と構成でエラーを検出する方法について説明します。