Windows サービス ホスト
WindowsService サンプルでは、マネージド Windows サービスでホストされている Windows Communication Foundation (WCF) サービスを示します。 Windows サービスは、 [コントロール パネル] のサービス アプレットを使用して制御し、システムの再起動後に自動的に開始するように構成できます。 このサンプルは、クライアント プログラムと Windows サービス プログラムで構成されています。 サービスは .exe プログラムとして実装され、独自のホスティング コードが指定されます。 Windows プロセス アクティブ化サービス (WAS) やインターネット インフォメーション サービス (IIS) などの他のホスト環境では、ホスティング コードを記述する必要はありません。
Note
このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。
このサービスをビルドしたら、他の Windows サービスと同様、Installutil.exe ユーティリティを使用してインストールする必要があります。 サービスを変更する場合は、installutil /u
を使用して、まずそのサービスをアンインストールする必要があります。 このサンプルに含まれている Setup.bat ファイルは Windows Service をインストールして起動するコマンド ファイルです。同様にこのサンプルに含まれている Cleanup.bat ファイルは、Windows サービスをシャットダウンしてアンインストールするコマンド ファイルです。 この WCF サービスでは、Windows サービスが実行されている場合にのみ、クライアントに応答できます。 [コントロール パネル] のサービス アプレットを使用して Windows サービスを停止し、クライアントを実行した場合、クライアントがこのサービスにアクセスしようとすると、EndpointNotFoundException 例外が発生します。 Windows サービスを再起動してクライアントを再実行した場合は、通信が正常に行われます。
サービス コードにはインストーラー クラス、ICalculator コントラクトを実装する WCF サービス実装クラス、ランタイム ホストとして機能する Windows サービス クラスが含まれています。 インストーラー クラスは Installer を継承します。このクラスを使用すると、Installutil.exe ツールにより、プログラムを NT サービスとしてインストールできます。 サービス実装クラス WcfCalculatorService
は、基本的なサービス コントラクトを実装する WCF サービスです。 この WCF サービスは、WindowsCalculatorService
と呼ばれる Windows サービス クラス内でホストされます。 Windows サービスとして限定するため、このクラスは ServiceBase を継承し、OnStart(String[]) メソッドと OnStop() メソッドを実装しています。 OnStart(String[]) では、ServiceHost 型の WcfCalculatorService
オブジェクトが作成され、開かれます。 OnStop() では、Close(TimeSpan) オブジェクトの ServiceHost メソッドが呼び出されて ServiceHost が閉じられます。 このホストのベース アドレスは、<add> 要素を使用して構成されます。この要素の親は <baseAddresses> であり、その親は <host> 要素であり、その親は <service> 要素です。
定義されるエンドポイントでは、ベース アドレスと <wsHttpBinding> が使用されます。 ベース アドレスの構成と CalculatorService を公開するエンドポイントのサンプルを次に示します。
<services>
<service name="Microsoft.ServiceModel.Samples.WcfCalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000/ServiceModelSamples/service"/>
</baseAddresses>
</host>
<!-- This endpoint is exposed at the base address provided by host: http://localhost:8000/ServiceModelSamples/service. -->
<endpoint address=""
binding="wsHttpBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
...
</service>
</services>
このサンプルを実行すると、操作要求と応答がサービスとクライアントの両方のコンソール ウィンドウに表示されます。 どちらかのコンソールで Enter キーを押すと、サービスとクライアントがどちらもシャットダウンされます。
サンプルをセットアップ、ビルド、および実行するには
Windows Communication Foundation サンプルの 1 回限りのセットアップの手順を実行したことを確認します。
ソリューションの C# 版または Visual Basic .NET 版をビルドするには、「 Building the Windows Communication Foundation Samples」の手順に従います。
ソリューションがビルドされたら、権限のレベルが高い Visual Studio コマンド プロンプトから Setup.bat を実行し、Installutil.exe ツールを使用して Windows サービスをインストールしてください。 このサービスは、[サービス] に表示されます。
単一または複数コンピューター構成でサンプルを実行するには、「Windows Communication Foundation サンプルの実行」の手順に従います。