WCF-WCFサービスの利用
WCFサービスを使用すると、他のアプリケーションがそれらにアクセスしたり、それらを利用したりできます。WCFサービスは、ホスティングの種類に応じてさまざまな方法で利用できます。ここでは、次の一般的なホスティングオプションのそれぞれについてWCFサービスを利用するための段階的な方法を説明しています-
- IIS5 / 6でホストされているWCFサービスを使用する
- 自己ホスト型のWCFサービスを使用する
- Windows ActivationServiceでホストされているWCFサービスを使用する
- WindowsサービスでホストされているWCFサービスの使用
IIS5 / 6でホストされているWCFサービスの使用
IIS 5/6でホストされているWCFサービスの利用プロセスについては、以下で詳しく説明します。さらに、プロキシおよびコンソールアプリケーションの作成方法についても説明します。
Step 1−サービスがIISでホストされたら、クライアントアプリケーションでそれを利用する必要があります。クライアントアプリケーションを作成する前に、サービスのプロキシを作成する必要があります。このプロキシは、クライアントアプリケーションがサービスと対話するために使用します。プロキシを作成するには、Visual Studio2008コマンドプロンプトを実行します。サービスユーティリティを使用して、プロキシクラスとその構成情報を作成できます。
svcutilhttp://localhost/IISHostedService/Service.svc
このコマンドを実行すると、デフォルトの場所に2つのファイルが生成されます。
MyService.cs −WCFサービスのプロキシクラス
output.config −サービスに関する構成情報
Step 2 −ここで、Visual Studio 2008(クライアントアプリケーション)を使用してコンソールアプリケーションの作成を開始します。
Step 3−参照 'System.ServiceModel'を追加します。これはWCFのコアdllです。
Step 4 −プロキシクラスを作成します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace MyServiceClient {
Class Program {
Static void Main(string[] args) {
// Creating Proxy for the MyService
ServiceClient Client = newServiceClient();
Console.WriteLine("Client calling the service...");
Console.WriteLine("Hello Ram");
Console.Read();
}
}
}
出力は次のように表示されます-
セルフホストのWCFサービスの利用
ここでは、セルフホストのWCFサービスを利用するプロセス全体を、必要に応じて十分なコーディングとスクリーンショットとともに段階的に説明します。
Step 1−サービスがホストされているので、クライアントのプロキシクラスを実装する必要があります。プロキシを作成するにはさまざまな方法があります。
SvcUtil.exeを使用して、エンドポイントを使用してプロキシクラスとその構成ファイルを作成できます。
クライアントアプリケーションへのサービス参照の追加。
ClientBase <T>クラスの実装
これら3つの方法のうち、ClientBase <T>の実装がベストプラクティスです。他の2つのメソッドを使用している場合は、サービスの実装に変更を加えるたびにプロキシクラスを作成する必要があります。ただし、これはClientBase <T>には当てはまりません。実行時にのみプロキシを作成するため、すべてを処理します。
この目的のために、System.ServiceModelとMyCalculatorServiceの参照を含む1つのプロキシクラスを作成します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using MyCalculatorService;
namespace MyCalculatorServiceProxy {
// WCF create proxy for ISimpleCalculator using ClientBase
Public class MyCalculatorServiceProxy :
ClientBase<ISimpleCalculator>,
ISimpleCalculator {
Public int Add(int num1, int num2) {
//Call base to do funtion
returnbase.Channel.Add(num1, num2);
}
}
}
次に、System.ServiceModelとMyCalculatorServiceProxyの参照を含む1つのコンソールアプリケーションを作成します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using MyCalculatorServiceProxy;
namespace MyCalculatorServiceClient {
classProgram {
Static void Main(string[] args) {
MyCalculatorServiceProxy.MyCalculatorServiceProxy proxy = newMyCalculatorServiceProxy.MyCalculatorServiceProxy();
Console.WriteLine("Client is running at " + DateTime.Now.ToString());
Console.WriteLine("Sum of two numbers. 5 + 5 =" + proxy.Add(5,5));
Console.ReadLine();
}
}
}
Step 2 −エンドポイント(サービスと同じ)情報をクライアントアプリケーションの構成ファイルに追加する必要があります。
<?xmlversion = "1.0"encoding = "utf-8" ?>
<configuration>
<system.serviceModel>
<client>
<endpoint address
="http://localhost:8090/MyCalculatorServiceProxy/ISimpleCalculator"
binding = "wsHttpBinding" contract "MyCalculatorServiceProxy.ISimpleCalculator">
</endpoint>
</client>
</system.serviceModel>
</configuration>
Step 3−クライアントアプリケーションを実行する前に、サービスを実行する必要があります。以下に示すのは、クライアントアプリケーションの出力です。
WASでホストされているWCFサービスの使用
WASでホストされているWCFサービスの使用は、わずか数ステップの単純なプロセスです。手順は次のとおりです-
- プロキシクラスと構成ファイルをクライアントアプリケーションに追加します。
- MathServiceClientのオブジェクトを作成し、メソッドを呼び出します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespaceWASHostedClient {
classProgram {
staticvoid Main(string[] args) {
MathServiceClient client = newMathServiceClient();
Console.WriteLine("Sum of two number 5,6");
Console.WriteLine(client.Add(5, 6));
Console.ReadLine();
}
}
}
以下のような出力が表示されます。
WindowsサービスでホストされているWCFサービスの使用
WindowsサービスでホストされているWCFサービスを利用する方法のステップバイステップのプロセスを、コーディングと手順とともに以下に詳しく説明します。
正常にホストされたら、サービスのプロキシクラスを作成し、クライアントアプリケーションで使用を開始できます。ここでは、IISホスティングタイプが消費されている状態で示されています。
ServiceModelの参照を追加します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespaceWindowServiceClient {
classProgram {
staticvoid Main(string[] args) {
//Creating Proxy for the MyService
MyServiceClient client = newMyServiceClient();
Console.WriteLine("Client calling the service...");
Console.WriteLine("Sum of two numbers 5,6");
Console.WriteLine(client.Add(5, 6));
Console.WriteLine("Subtraction of two numbers 6,5");
Console.WriteLine(client.Sub(6, 5));
Console.WriteLine("Multiplication of two numbers 6,5");
Console.WriteLine(client.Mul(6, 5));
Console.WriteLine("Division of two numbers 6,3");
Console.WriteLine(client.Div(6, 3));
Console.Read();
}
}
}
出力は次のように表示されます-