Visual Studio での Windows Communication Foundation サービスと WCF データ サービス
Visual Studio 2008 には、分散アプリケーションを作成するための Microsoft のテクノロジである、Windows Communication Foundation (WCF) および WCF Data Servicesを扱うためのツールが用意されています。 ここでは、サービスの概要を Visual Studio の観点から説明します。
WCF とは
Windows Communication Foundation (WCF) は、セキュリティで保護され、信頼性が高く、トランザクション処理の対象となり、相互運用が可能な分散アプリケーションを作成するための統一されたフレームワークです。 以前のバージョンの Visual Studio では、アプリケーション間の通信に使用できる複数のテクノロジがありました。
どのプラットフォームからでもアクセスできるような仕方で情報を共有したい場合は、Web サービス (ASMX Web サービスとも呼ばれる) を使用しました。 クライアントと、Windows オペレーティング システム上で実行されるサーバーとの間で単にデータを移動したい場合は、.NET リモート処理を使用しました。 トランザクション通信を行いたい場合は、Enterprise Services (DCOM) を使用し、キュー モデルを使用したい場合はメッセージ キュー (MSMQ とも呼ばれる) を使用しました。
WCF では、これらすべてのテクノロジの機能を、1 つのプログラミング モデルに統一しています。 これにより、分散アプリケーションの開発作業が簡略化されます。
WCF データ サービスとは
WCF Data Servicesはデータベースと直接対話するサービスで、標準的な HTTP 動詞 (GET、POST、PUT、DELETE など) を使用してデータを返すことができます。 一般に、WCF Data Servicesはデータベースでのレコードの作成、更新、または変更に使用されるアプリケーションに適しています。 詳細については、「ADO.NET Data Services フレームワーク」を参照してください。
WCF のプログラミング モデル
WCF プログラミング モデルは、WCF サービスと WCF クライアントとの間の通信に基づいています。 このプログラミング モデルは、.NET Framework の System.ServiceModel 名前空間にカプセル化されています。
WCF サービス
WCF サービスは、サービスとクライアントの間のコントラクトを定義するインターフェイスに基づいています。 次のコードに示すように、ServiceContractAttribute 属性で指定されます。
<ServiceContract()>
Public Interface IService1
[ServiceContract]
public interface IService1
<OperationContract()>
Function GetData(ByVal value As String) As String
[OperationContract]
string GetData(string value);
WCF サービスによって公開される関数またはメソッドを定義するには、それらに OperationContractAttribute 属性を付けます。 また、DataContractAttribute 属性で複合型を指定することにより、シリアル化されたデータを公開できます。 これにより、クライアントでデータ バインディングを使用できるようになります。
インターフェイスとメソッドを定義すると、それらはインターフェイスを実装するクラスにカプセル化されます。 単一の WCF サービス クラスは、複数のサービス コントラクトを実装できます。
WCF サービスは、エンドポイントと呼ばれるものを使用して利用するように公開されます。 エンドポイントは、サービスと通信するための唯一の方法となります。つまり、他のクラスの場合のように直接参照を使用してサービスにアクセスすることはできません。
エンドポイントは、アドレス、バインディング、コントラクトで構成されます。 アドレスは、サービスのロケーションを定義します。ロケーションは、URL、FTP アドレス、ネットワーク パス、またはローカル パスで指定することができます。 バインディングは、サービスと通信する方法を定義します。 WCF バインディングは、HTTP や FTP といったプロトコル、Windows 認証やユーザー名とパスワードといったセキュリティ機構などを指定するための汎用的なモデルを提供します。 コントラクトには、WCF サービス クラスによって公開される操作が含まれます。
複数のエンドポイントを単一の WCF サービスに対して公開することができます。 これにより、さまざまなクライアントが同一のサービスとさまざまな方法で通信することができます。 たとえば、銀行のサービスでは、従業員用に 1 つのエンドポイントを用意し、外部の顧客用に別のエンドポイントを用意するかもしれません。それぞれのエンドポイントでは、使用するアドレス、バインディング、コントラクトのいずれか (あるいはすべて) が異なります。
WCF クライアント
WCF クライアントは、アプリケーションが WCF サービスと通信できるようにするプロキシと、サービスに対して定義されているエンドポイントと対応するエンドポイントで構成されます。 プロキシは、クライアント側の app.config ファイルで生成されます。プロキシには、サービスによって公開される型とメソッドに関する情報が含まれます。 複数のエンドポイントを公開するサービスの場合は、クライアントがその必要に合った最適なものを選択することができます。たとえば、HTTP 経由で通信し Windows 認証を使用するというような必要に合わせて選択できます。
WCF クライアントの作成後は、他のオブジェクトの場合と同じように、コード内でサービスを参照します。 たとえば、前の例で示した GetData メソッドを呼び出すには、次のようなコードを記述できます。
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click
Dim client As New ServiceReference1.Service1Client
Dim returnString As String
returnString = client.GetData(TextBox1.Text)
Label1.Text = returnString
End Sub
private void button1_Click(System.Object sender, System.EventArgs e)
{
ServiceReference1.Service1Client client = new
ServiceReference1.Service1Client();
string returnString;
returnString = client.GetData(textBox1.Text);
label1.Text = 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 Templates」を参照してください。
WCF Service Host
WCF サービス プロジェクトに対して Visual Studio デバッガーを開始すると (F5 を押す)、WCF Service Host ツールがローカルでのサービスのホストを自動的に開始します。 WCF Service Host は、WCF サービス プロジェクト内のサービスを列挙し、プロジェクトの構成をロードし、検出された各サービスに対するホストをインスタンス化します。
WCF Service Host を使用することにより、開発中に追加のコードを記述したり、特定のホストにコミットしたりすることなく、WCF サービスをテストできます。
WCF Service Host の詳細については、「WCF Service Host (WcfSvcHost.exe)」を参照してください。
WCF テスト クライアント
WCF Test Client ツールによって、テスト パラメーターを入力し、その入力を WCF サービスに送信し、サービスが送り返す応答を表示することができます。 WCF Service Host と組み合わせて使用すると、サービスのテスト作業が簡単になります。
F5 を押して WCF サービス プロジェクトをデバッグすると、WCF Test Client が開き、構成ファイルで定義されているサービス エンドポイントの一覧が表示されます。 パラメーターをテストしてサービスを開始し、このプロセスを繰り返すことによって、サービスのテストと検証を継続的に行えます。
WCF Test Client の詳細については、「WCF Test Client (WcfTestClient.exe)」を参照してください。
Visual Studio での WCF サービスへのアクセス
Visual Studio 2008 では、[サービス参照の追加] ダイアログ ボックスを使用して、追加するサービスのプロキシとエンドポイントを自動的に生成できるので、WCF クライアントの作成タスクが簡単になります。 必要な構成情報はすべて app.config ファイルに追加されます。ほとんどの場合、必要な作業は、サービスを使用するためにインスタンス化することだけです。
[サービス参照の追加] ダイアログ ボックスでは、サービスのアドレスを入力するか、ソリューション内で定義されているサービスを検索することができます。 このダイアログ ボックスでは、サービスの一覧と、それらのサービスによって提供される操作の一覧が表示されます。 また、コード内でサービスを参照する際に使用する名前空間を定義することもできます。
[サービス参照の構成] ダイアログ ボックスでは、サービスの構成をカスタマイズできます。 サービスのアドレスの変更や、アクセス レベル、非同期動作、メッセージ コントラクト タイプの指定、型の再利用の構成を行うことができます。
関連トピック
タイトル |
説明 |
---|---|
Visual Studio での WCF サービスの作成と使用について順を追って説明します。 |
|
Visual Studio における WCF Data Servicesの作成と使用の手順を説明します。 |
|
Visual Studio で WCF サービスを作成してテストする方法について説明します。 |
|
プロジェクトに対して WCF サービスの追加、更新、および削除を行う方法について説明します。 |
|
Visual Studio で WCF Data Servicesを参照して使用する方法について説明します。 |
|
XML (ASMX) Web サービスへの参照をプロジェクトに追加する方法について説明します。 |
|
複数のエンドポイントを公開する WCF サービスに対してエンドポイントを選択する方法について説明します。 |
|
WCF サービスを非同期で呼び出す方法を説明します。 |
|
WCF サービスへのデータ バインディングを有効にする方法について説明します。 |
|
WCF サービスでの型の共有を有効または無効にする方法について説明します。 |
|
サービス参照で発生することの多いエラーと、その回避方法を示します。 |
|
WCF サービスのデバッグ時に発生する一般的な問題、およびデバッグの手法について説明します。 |
|
WCF を使用して Web サイトのロール サービスを提供する方法について説明します。 |
|
.NET Compact Framework の WCF メッセージング層のサポートについて説明します。 |
|
型指定されたデータセットを作成し、TableAdapter とデータセット コードを複数のプロジェクトに分離する方法の詳細な手順について説明します。 |
|
[サービス参照の追加] ダイアログ ボックスのユーザー インターフェイス要素を説明します。 |
|
[サービス参照の構成] ダイアログ ボックスのユーザー インターフェイス要素を説明します。 |