■2-1-3. クライアント・サイド・コンフィグレーションの定義
最後にクライアント側のコンフィグレーション・ファイル(App.config)を用意する。下記のようなコンフィグレーションの内容を記述する。サービス・サイドとの違いは、クライアントでは<client>タグ内にエンドポイントを定義する点である。そのほかはほぼサービス・サイドと同様の内容を記述する。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<!-- サービス側の Endpoint 定義-->
<!-- wsHTTPBindig 用-->
<endpoint
name="Endpoint1"
address="http://localhost:2314/WinFxService1/Service.svc"
binding="wsHttpBinding"
contract="IMyService">
</endpoint>
</client>
</system.serviceModel>
</configuration>
この段階でクライアントの準備が完了した。
それではサービスを実行させた後にクライアントを実行してみよう。すると下記のようにサービスからメッセージが送信され、それがフォーム上にバインドされて表示されるのが分かる*。
* テスト実行時は先に作成したサービス・サイドも起動しておく必要がある
ちなみにここでは、wsHttpBindingを使用しているため、メッセージ・レベル・セキュリティがデフォルトでONとなっており、メッセージは署名暗号化されていることがトレースを取れば確認できる。
さて、今度は開発環境上でWCFのサービスを参照し、サービス・プロキシやクライアント・サイド・コンフィグレーションを自動作成して作業手順を短縮する方法をざっと見ていこう。自動生成の場合の具体的な手順は以下のとおりとなる。
■2-2-1. WCFサービスを参照設定
Visual Studio 2005 Extensions for WinFXがインストールされていると、次の画面のように、Visual Studio 2005の参照設定にWCFサービスを参照してプロキシやコンフィグレーション・ファイルを自動生成する機能が追加される。
参照設定で[Add Service Reference]を実際に選択すると次の画面のダイアログが表示される。
[Add Service Reference]からWCFサービスへの参照を設定すると(当然ながらサービス側のWSDLを取得するため、サービス自体が事前に起動している必要がある)、サービスにアクセスするためのプロキシ・コードが次の画面のように生成される。
自動生成されたプロキシのコード中にサービス・コントラクト、オペレーション・コントラクト、データ・コントラクト(あるいはメッセージ・コントラクトなど)の定義が生成されているのが確認できる。
また、次の画面のように、クライアント・サイドのコンフィグレーションも自動生成されているのが確認できる。
■2-2-2. クライアント・サイドのサービス利用コードの実装
最後にクライアント・サイドの実装コードであるが、ここでは先ほどのチャネル・ファクトリ(ChannelFactory)を使用したサービス呼び出しが単純化されている。なお、オブジェクトへのデータバインドはプロキシ内のProductオブジェクトをバインドするように作成しておく。
また、下記usingディレクティブも追加しておく。
using WindowsClient.localhost;
private void button1_Click(object sender, EventArgs e)
{
// 自動生成された(Svcutil.exeによる)プロキシを使用した場合
MyServiceProxy proxy = new MyServiceProxy();
Product product = proxy.GetData();
productBindingSource.DataSource = product;
proxy.Close();
}
【コラム】Svcutilとは WCFサービスを参照してプロキシやコンフィグレーション・ファイルを自動生成する機能の実体は、Svcutil.exeという名のコマンドである。
このコマンドは単独で使用することも可能で、例えば下記のようなコマンドを実行すると、MyProxy.csという名前でプロキシとクライアント・サイドのコンフィグレーション・ファイルが指定したWSDLを基に生成される。
svcutil /out:MyProxy.cs /config:app.config http://localhost:2314/WinFxService1/Service.svc?wsdl
【コラム】SvcConfigEditorとは
WCFのコンフィグレーション・ファイルを、テキスト・エディタでダイレクトにメンテナンスするのは大変である。そこで、SvcConfigEditorというGUIツールが提供されている。
このツールを使用することでコンフィグレーション・ファイルの内容を比較的容易にメンテナンスすることが可能である。
さて、今回は実際のWCFプログラミングの手順を見てきた。WCFのプログラミングあるいはコンフィグレーションに必要なA/B/Cといった概念がある程度具体的にご理解いただけたのではないだろうか。
さて次回以降では、WCFのアーキテクチャを概観し、WS-*を使用したセキュアでリライアブルでトランザクティッドな分散アプリケーションの構築に関して見ていく予定である。
Copyright© Digital Advantage Corp. All Rights Reserved.