WCFプログラミングの基礎Windows Communication Foundation概説(3/3 ページ)

» 2006年05月27日 00時00分 公開
[伊藤英豪マイクロソフト株式会社]
前のページへ 1|2|3       

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>

クライアント側のコンフィグレーション・ファイル(App.config)

 この段階でクライアントの準備が完了した。

 それではサービスを実行させた後にクライアントを実行してみよう。すると下記のようにサービスからメッセージが送信され、それがフォーム上にバインドされて表示されるのが分かる*

* テスト実行時は先に作成したサービス・サイドも起動しておく必要がある


 

クライアント側サンプル・プログラムの実行画面

 ちなみにここでは、wsHttpBindingを使用しているため、メッセージ・レベル・セキュリティがデフォルトでONとなっており、メッセージは署名暗号化されていることがトレースを取れば確認できる。

 さて、今度は開発環境上でWCFのサービスを参照し、サービス・プロキシやクライアント・サイド・コンフィグレーションを自動作成して作業手順を短縮する方法をざっと見ていこう。自動生成の場合の具体的な手順は以下のとおりとなる。

  1. WCFサービスを参照設定
  2. クライアント・サイドのサービス利用コードの実装

2-2-1. WCFサービスを参照設定

 Visual Studio 2005 Extensions for WinFXがインストールされていると、次の画面のように、Visual Studio 2005の参照設定にWCFサービスを参照してプロキシやコンフィグレーション・ファイルを自動生成する機能が追加される。

Visual Studio 2005に追加されたWCFサービスの参照機能
具体的には[Add Service Reference]というメニュー項目が参照設定に追加される。

 参照設定で[Add Service Reference]を実際に選択すると次の画面のダイアログが表示される。

[Add Service Reference]ダイアログによるWCFサービスの参照設定

 [Add Service Reference]からWCFサービスへの参照を設定すると(当然ながらサービス側のWSDLを取得するため、サービス自体が事前に起動している必要がある)、サービスにアクセスするためのプロキシ・コードが次の画面のように生成される。

WCFサービスへの参照設定により自動生成されたプロキシの例

 自動生成されたプロキシのコード中にサービス・コントラクト、オペレーション・コントラクト、データ・コントラクト(あるいはメッセージ・コントラクトなど)の定義が生成されているのが確認できる。

 また、次の画面のように、クライアント・サイドのコンフィグレーションも自動生成されているのが確認できる。

自動生成されたクライアント・サイドのコンフィグレーション・ファイル

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


 なおこのコマンドはデフォルトでは、「C:\Program Files\Microsoft SDKs\Windows\v1.0\Bin」に格納されている。

 

【コラム】SvcConfigEditorとは

 WCFのコンフィグレーション・ファイルを、テキスト・エディタでダイレクトにメンテナンスするのは大変である。そこで、SvcConfigEditorというGUIツールが提供されている。

SvcConfigEditorの画面

 このツールを使用することでコンフィグレーション・ファイルの内容を比較的容易にメンテナンスすることが可能である。



 さて、今回は実際のWCFプログラミングの手順を見てきた。WCFのプログラミングあるいはコンフィグレーションに必要なA/B/Cといった概念がある程度具体的にご理解いただけたのではないだろうか。

 さて次回以降では、WCFのアーキテクチャを概観し、WS-*を使用したセキュアでリライアブルでトランザクティッドな分散アプリケーションの構築に関して見ていく予定である。

「Windows Communication Foundation概説」のインデックス

Windows Communication Foundation概説

前のページへ 1|2|3       

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。