ここでは、Windows プロセス アクティブ化サービス (WAS) でホストされる Windows Communication Foundation (WCF) サービスを作成するために必要な基本手順について説明します。WAS は、HTTP 以外のトランスポート プロトコルで動作するインターネット インフォメーション サービス (IIS) 機能を一般化した新しいプロセス アクティブ化サービスです。WCF では、リスナ アダプタ インターフェイスを使用して、WCF でサポートされる HTTP 以外のプロトコル (TCP、名前付きパイプ、メッセージ キューなど) を介して受信されるアクティブ化要求を伝達します。
このホスト オプションでは、WAS アクティブ化コンポーネントのインストールと構成が正しく行われている必要がありますが、アプリケーションの一部としてホスト コードを記述する必要はありません。WAS のインストールと構成詳細については、 、「方法 : WCF アクティブ化コンポーネントをインストールして設定する」を参照してください。
WCF サービスが WAS でホストされている場合、標準バインディングは通常の方法で使用されます。ただし、WAS でホストされるサービスを NetTcpBinding や NetNamedPipeBinding を使用して構成する場合は、制限を遵守する必要があります。つまり、異なるエンドポイントが同じトランスポートを使用する場合、次の 7 つのプロパティでバインディング設定が一致する必要があります。
- ConnectionBufferSize
- ChannelInitializationTimeout
- MaxPendingConnections
- MaxOutputDelay
- MaxPendingAccepts
- ConnectionPoolSettings.IdleTimeout
- ConnectionPoolSettings.MaxOutboundConnectionsPerEndpoint
バインディングの設定が一致しない場合、これらのプロパティの値は常に最初に初期化されたエンドポイントによって決定されるため、後で追加されるエンドポイントは ServiceActivationException をスローします。
この例のソースのコピーについては、「TCP Activation」を参照してください。
WAS でホストされる基本サービスを作成するには
サービスの種類にサービス コントラクトを定義します。
サービス クラスにサービス コントラクトを実装します。アドレス情報とバインディング情報はサービスの実装内では指定されないことに注意してください。同様に、コードは構成ファイルから情報を取得する必要はありません。
NetTcpBinding を使用する CalculatorService のエンドポイントを構成する Web.config ファイルを作成します。
次の行を含む Service.svc ファイルを作成します。
<%@ServiceHost language=c# Service="CalculatorService" %>
IIS 仮想ディレクトリに Service.svc ファイルを配置します。
サービスを使用するクライアントを作成するには
コマンド ラインから ServiceModel Metadata Utility Tool (Svcutil.exe) を実行して、サービス メタデータからコードを生成します。
Svcutil.exe <service's Metadata Exchange (MEX) address or HTTP GET address>
生成されたクライアントには、クライアントの実装時に満たされなければならないサービス コントラクトを定義する ICalculator インターフェイスが含まれます。
生成されたクライアント アプリケーションは ClientCalculator も実装します。アドレス情報とバインディング情報はサービスの実装内では指定されないことに注意してください。同様に、コードは構成ファイルから情報を取得する必要はありません。
NetTcpBinding を使用するクライアントの構成は、Svcutil.exe で生成することもできます。Visual Studio を使用する場合は、このファイルの名前は App.config ファイル内で指定する必要があります。
アプリケーションで ClientCalculator のインスタンスを作成し、サービス操作を呼び出します。
クライアントをコンパイルして実行します。