ASP.NET 入門

ホーム > WCF サービス > クライアントの作成 ~ データコントラクト の利用

クライアントの作成 ~ データコントラクト の利用

データコントラクトを定義してもしなくても、クライアントの作り方・使い方は変わりません。 基本的なところは「WCF サービスを利用する簡単な方法」をみてください。

ここでは念のため、DataContract を定義した場合の例としてクライアントを作る手順をしめします。

ちなみに毎度のことですが、このサイトでは特に断りがない限り、あくまで .NET Framework + SDK での開発にこだわってます。 つまり Visual Studio はなるべく使わないで突き進みます(ブラックボックスが嫌なんです)。なので、Visual Studio を使う人はこんな手間かけなくてももっと簡単にできちゃいます。 ( Visual Studio を使う場合はまた別の記事で・・・)

プロキシーコードの生成

プロキシーコードは、svcutil.exe に WSDL の URL を渡して作ります。

こんな感じです。

>svcutil.exe http://keisukeo-hp:8889/aspnetsamples/EmployeeInfo.svc?wsdl
Microsoft (R) Service Model Metadata Tool
[Microsoft (R) Windows (R) Communication Foundation, Version 4.0.30319.1]
Copyright (c) Microsoft Corporation.  All rights reserved.

Attempting to download metadata from 
'http://keisukeo-hp:8889/aspnetsamples/EmployeeInfo.svc?wsdl' using 
WS-Metadata Exchange or DISCO.
Generating files...
C:\src\test\EmployeeInfo.cs
C:\src\test\output.config

この例では、このコマンドの結果として EmployeeInfo.cs と output.config が生成されました。

ちなみに、私の環境では svcutil.exe のバージョンは 4.x を利用しています。 もし結果が違ったらご自身の開発環境をチェックしてみてください。

バージョン 4.x の開発ツールは、SDK ディレクトリ bin の下の NETFX 4.0 Tools にあります。 例えば、 C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\svcutil.exe です。

クライアントの実装

もともとこの例で作った EmployeeInfo サービス自体が空っぽの実装なので、何もできないんですけど・・・(苦笑) ま、とりあえず、クライアントのひな形はこんな感じになります。

using MyHRService;

public class EmployeeInfoTest
{
     public static void Main()
     {
         EmployeeInfoClient client = new EmployeeInfoClient();
         Employee[] empList = client.GetAllEmployees();

         //...

         client.Close();
     }

}

クライアントコードはここでは EmployeeInfoTest.cs とします。

強いてポイントを挙げれば、まずは using で MyHRService 名前空間を指定しているところです。 これはサービス側の定義時にこの名前空間を指定したからです。

二つ目のポイントは、もとのサービス定義では、GetAllEmployees メソッドは List<Employee> 型でしたが、 これに対してプロキシーコードは、Employee[] (Employee 型の配列) 型として作成されます。 (これは別に WCF からおきたことでもなく、asmx ベースのときもそうだったんですけどね)

クライアントの構築

それではクライアントをビルドしましょう。EmployeeInfo.cs は svcutil で出力されたプロキシーコード、 EmployeeInfoTest.cs は上で作ったテストクライアントコードとして、次のようにします。

> csc.exe EmployeeInfo.cs EmployeeInfoTest.cs

うまくいけば、これで EmployeeInfoTest.exe が出力されます。 上で生成された output.config を EmployeeInfoTest.exe.config にリネームしてから、 EmployeeInfoTest.exe を実行すれば OK です。

ちなみに、 csc は C# コンパイラ (C Sharp Compiler) ですが、 私はバージョン 4.x を使いました。

コンパイラはフレームワークのディレクトリにありますので、それを使うのも良いでしょう。 ( C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe とか) 念のため、バージョンの確認方法をいうと、次のようにして csc を実行して・・・

> csc /help
Microsoft (R) Visual C# 2008 Compiler version 3.5.30729.4926
for Microsoft (R) .NET Framework version 3.5
Copyright (C) Microsoft Corporation. All rights reserved.

...

ヘッダのところにバージョン情報が出てきますので、そこを確認するのが簡単です。

ホーム > WCF サービス > データコントラクト ~ データコントラクト の利用