Visual Studio での Windows Communication Foundation サービスの概要
更新 : 2007 年 11 月
Visual Studio 2008 には、分散アプリケーションを作成するための Microsoft のテクノロジである、Windows Communication Foundation (WCF) を扱うためのツールが用意されています。ここでは、WCF の概要を Visual Studio の観点から説明します。
WCF とは
Windows Communication Foundation (WCF) は、セキュリティで保護され、信頼性が高く、トランザクション処理の対象となり、相互運用が可能な分散アプリケーションを作成するための統一されたフレームワークです。以前のバージョンの Visual Studio では、アプリケーション間の通信に使用できる複数のテクノロジがありました。
どのプラットフォームからでもアクセスできるような仕方で情報を共有したい場合は、Web サービス (ASMX Web サービスとも呼ばれる) を使用しました。クライアントと、Windows オペレーティング システム上で実行されるサーバーとの間で単にデータを移動したい場合は、.NET リモート処理を使用しました。トランザクション通信を行いたい場合は、Enterprise Services (DCOM) を使用し、キュー モデルを使用したい場合はメッセージ キュー (MSMQ とも呼ばれる) を使用しました。
WCF では、これらすべてのテクノロジの機能を、1 つのプログラミング モデルに統一しています。これにより、分散アプリケーションの開発作業が簡略化されます。
WCF のプログラミング モデル
WCF プログラミング モデルは、WCF サービスと WCF クライアントとの間の通信に基づいています。このプログラミング モデルは、.NET Framework の System.ServiceModel 名前空間にカプセル化されています。
WCF サービス
WCF サービスは、サービスとクライアントの間のコントラクトを定義するインターフェイスに基づいています。次のコードに示すように、ServiceContractAttribute 属性で指定されます。
<ServiceContract()> _
Public Interface IService1
<OperationContract()> _
Function GetData(ByVal Value As String) As String
End Interface
WCF サービスによって公開される関数またはメソッドを定義するには、それらに OperationContractAttribute 属性を付けます。また、DataContractAttribute 属性で複合型を指定することにより、シリアル化されたデータを公開できます。これにより、クライアントでデータ バインディングを使用できるようになります。
インターフェイスとメソッドを定義すると、それらはインターフェイスを実装するクラスにカプセル化されます。単一の WCF サービス クラスは、複数のサービス コントラクトを実装できます。
WCF サービスは、エンドポイントと呼ばれるものを使用して利用するように公開されます。エンドポイントは、サービスと通信するための唯一の方法となります。つまり、他のクラスの場合のように直接参照を使用してサービスにアクセスすることはできません。
エンドポイントは、アドレス、バインディング、コントラクトで構成されます。アドレスは、サービスのロケーションを定義します。ロケーションは、URL、FTP アドレス、ネットワーク パス、またはローカル パスで指定することができます。バインディングは、サービスと通信する方法を定義します。WCF バインディングは、HTTP や FTP といったプロトコル、Windows 認証やユーザー名とパスワードといったセキュリティ機構などを指定するための汎用的なモデルを提供します。コントラクトには、WCF サービス クラスによって公開される操作が含まれます。
複数のエンドポイントを単一の WCF サービスに対して公開することができます。これにより、さまざまなクライアントが同一のサービスとさまざまな方法で通信することができます。たとえば、銀行のサービスでは、従業員用に 1 つのエンドポイントを用意し、外部の顧客用に別のエンドポイントを用意するかもしれません。それぞれのエンドポイントでは、使用するアドレス、バインディング、コントラクトのいずれか (あるいはすべて) が異なります。
WCF クライアント
WCF クライアントは、アプリケーションが WCF サービスと通信できるようにするプロキシと、サービスに対して定義されているエンドポイントと対応するエンドポイントで構成されます。プロキシは、クライアント側の app.config ファイルで生成されます。プロキシには、サービスによって公開される型とメソッドに関する情報が含まれます。複数のエンドポイントを公開するサービスの場合は、クライアントがその必要に合った最適なものを選択することができます。たとえば、HTTP 経由で通信し Windows 認証を使用するというような必要に合わせて選択できます。
WCF クライアントの作成後は、他のオブジェクトの場合と同じように、コード内でサービスを参照します。たとえば、前の例で示した GetData メソッドを呼び出すには、次のようなコードを記述できます。
Dim client As New ServiceReference.Service1Client
Dim returnString As String
returnString = client.GetData("Hello")
MsgBox(returnString)
Visual Studio の WCF ツール
Visual Studio 2008 には、WCF サービスと WCF クライアントの両方を作成するのに役立つツールが用意されています。ツールを紹介するチュートリアルについては、「チュートリアル : WCF サービスの作成とアクセス」を参照してください。
WCF サービスの作成とテスト
WCF Visual Studio テンプレートを基にして、独自のサービスを短時間で作成できます。その後、WCF Service Auto Host と WCF Test Client を使用してサービスをデバッグおよびテストできます。これらのツールにより、迅速で簡単なデバッグおよびテスト サイクルが実現し、早い段階でホスト モデルにコミットする必要がなくなります。
WCF テンプレート
WCF Visual Studio テンプレートには、サービス開発のための基本的なクラス構造が用意されています。いくつかの WCF テンプレートが [新しいプロジェクトの追加] ダイアログ ボックスで選択できます。使用できるテンプレートには、WCF Service Library プロジェクト、WCF Service Web Sites、および WCF Service Item テンプレートがあります。
テンプレートを選択すると、サービス コントラクト、サービス実装、サービス構成用にファイルが追加されます。必要な属性は既に追加されており、コードを一切記述しなくても、単純な "Hello World" タイプのサービスが作成されます。実際のサービス用には、関数とメソッドを提供するコードを追加する必要がありますが、テンプレートによって基本的な基盤が提供されます。
WCF テンプレートの詳細については、「WCF Visual Studio テンプレート」を参照してください。
WCF Service Host
WCF サービス プロジェクトに対して Visual Studio デバッガを開始すると (F5 を押す)、WCF Service Host ツールがローカルでのサービスのホストを自動的に開始します。WCF Service Host は、WCF サービス プロジェクト内のサービスを列挙し、プロジェクトの構成をロードし、検出された各サービスに対するホストをインスタンス化します。
WCF Service Host を使用することにより、開発中に追加のコードを記述したり、特定のホストにコミットしたりすることなく、WCF サービスをテストできます。
WCF Service Host の詳細については、「WCF サービス ホスト (WcfSvcHost.exe)」を参照してください。
WCF テスト クライアント
WCF Test Client ツールによって、テスト パラメータを入力し、その入力を WCF サービスに送信し、サービスが送り返す応答を表示することができます。WCF Service Host と組み合わせて使用すると、サービスのテスト作業が簡単になります。
F5 を押して WCF サービス プロジェクトをデバッグすると、WCF Test Client が開き、構成ファイルで定義されているサービス エンドポイントの一覧が表示されます。パラメータをテストしてサービスを開始し、このプロセスを繰り返すことによって、サービスのテストと検証を継続的に行えます。
WCF Test Client の詳細については、「WCF のテスト用クライアント (WcfTestClient.exe)」を参照してください。
Visual Studio での WCF サービスへのアクセス
Visual Studio 2008 では、[サービス参照の追加] ダイアログ ボックスを使用して、追加するサービスのプロキシとエンドポイントを自動的に生成できるので、WCF クライアントの作成タスクが簡単になります。必要な構成情報はすべて app.config ファイルに追加されます。ほとんどの場合、必要な作業は、サービスを使用するためにインスタンス化することだけです。
[サービス参照の追加] ダイアログ ボックスでは、サービスのアドレスを入力するか、ソリューション内で定義されているサービスを検索することができます。このダイアログ ボックスでは、サービスの一覧と、それらのサービスによって提供される操作の一覧が表示されます。また、コード内でサービスを参照する際に使用する名前空間を定義することもできます。
[サービス参照の構成] ダイアログ ボックスでは、サービスの構成をカスタマイズできます。サービスのアドレスの変更や、アクセス レベル、非同期動作、メッセージ コントラクト タイプの指定、型の再利用の構成を行うことができます。
WCF サービスを使用する方法の詳細については、「Visual Studio での WCF サービスの使用」を参照してください。