方法 : 構成でクライアント バインディングを指定する
この例では、電卓サービスを使用するためのクライアント コンソール アプリケーションを作成し、そのクライアントのバインディングを構成で宣言によって指定します。クライアントは CalculatorService にアクセスします。これにより、ICalculator インターフェイスが実装され、サービスとクライアントの両方で BasicHttpBinding クラスが使用されます。
ここで説明する手順は、電卓サービスが実行されていることを前提とします。サービスをビルドする方法については、「方法 : 構成でサービス バインディングを指定する」を参照してください。クライアント コンポーネントを自動的に生成するために、Windows Communication Foundation (WCF) に付属する ServiceModel Metadata Utility Tool (Svcutil.exe) も使用します。このツールにより、サービスにアクセスするためのクライアント コードと構成が生成されます。
クライアントは 2 つの部分で構成されます。Svcutil.exe によって、ICalculator インターフェイスを実装する ClientCalculator が生成されます。次に、ClientCalculator のインスタンスを作成することで、クライアント アプリケーションを作成します。
通常、ベスト プラクティスは、コードで命令として記述するよりも、構成でバインディングを指定して情報を明示的にアドレス指定することです。設置済みサービスのバインディングおよびアドレスは一般的に、サービスの開発中に使用されるものとは異なるので、コード内でエンドポイントを定義することは通常、実用的ではありません。一般に、バインディング情報とアドレス情報をコードに含めないようにすると、変更時にアプリケーションの再コンパイルや再展開を行う必要がなくなります。
次のすべての構成手順は、Configuration Editor Tool (SvcConfigEditor.exe) を使用して実行できます。
この例のソースのコピーについては、「Basic Binding」のサンプルを参照してください。
構成を使用したクライアント バインディングの指定
コマンド ラインから Svcutil.exe を実行して、サービス メタデータからコードを生成します。
Svcutil.exe <service's Metadata Exchange (MEX) address or HTTP GET address>
生成されたクライアントには、クライアントの実装時に満たされなければならないサービス コントラクトを定義する ICalculator インターフェイスが含まれます。
生成されたクライアントは ClientCalculator も実装します。
BasicHttpBinding クラスを使用するクライアントの構成も、Svcutil.exe により生成されます。Visual Studio を使用する場合、このファイルに App.config という名前を付けます。このサービスの実装では、アドレス情報とバインディング情報が指定されないことに注意してください。同様に、コードは構成ファイルから情報を取得する必要はありません。
アプリケーションで ClientCalculator のインスタンスを作成し、サービス操作を呼び出します。
クライアントをコンパイルして実行します。