Wcf-consuming-service
WCF-WCFサービスの利用
WCFサービスにより、他のアプリケーションがそれらにアクセスしたり消費したりできます。 WCFサービスは、ホスティングの種類に応じてさまざまな方法で利用できます。 ここでは、次の一般的なホスティングオプションごとにWCFサービスを使用するための段階的な方法を説明しています-
- IIS 5/6でホストされるWCFサービスを利用する
- 自己ホスト型のWCFサービスを使用する
- Windows Activation ServiceでホストされているWCFサービスの使用
- WindowsサービスでホストされるWCFサービスを使用する
IIS 5/6でホストされているWCFサービスの使用
IIS 5/6でホストされているWCFサービスの消費プロセスについては、以下で詳しく説明します。 さらに、議論には、プロキシおよびコンソールアプリケーションの作成方法が含まれます。
- ステップ1 *-IISでサービスをホストしたら、クライアントアプリケーションで使用する必要があります。 クライアントアプリケーションを作成する前に、サービスのプロキシを作成する必要があります。 このプロキシは、クライアントアプリケーションがサービスと対話するために使用されます。 プロキシを作成するには、Visual Studio 2008コマンドプロンプトを実行します。 サービスユーティリティを使用して、プロキシクラスとその構成情報を作成できます。
svcutilhttp://localhost/IISHostedService/Service.svc
このコマンドを実行すると、2つのファイルがデフォルトの場所に生成されます。
- MyService.cs -WCFサービスのプロキシクラス
- output.config -サービスに関する構成情報
- ステップ2 *-次に、Visual Studio 2008(クライアントアプリケーション)を使用してコンソールアプリケーションの作成を開始します。
- ステップ3 *-参照「System.ServiceModel」を追加します。これは、WCFのコアdllです。
- ステップ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サービスを利用するプロセス全体を、必要に応じて十分なコーディングとスクリーンショットとともに段階的に説明します。
- ステップ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();
}
}
}
- ステップ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>
- ステップ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ホスティングタイプを使用する場合を示しています。
Wcf Consuming Services Windows Service 1
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();
}
}
}
出力は次のように表示されます-