次の方法で共有


Windows サービス ホスト

WindowsService サンプルは、マネージド Windows サービスでホストされている Windows Communication Foundation (WCF) サービスを示しています。 Windows サービスは 、コントロール パネル の [サービス] アプレットを使用して制御され、システムの再起動後に自動的に起動するように構成できます。 このサンプルは、クライアント プログラムと Windows サービス プログラムで構成されています。 サービスは .exe プログラムとして実装され、独自のホスティング コードが含まれています。 Windows プロセス ライセンス認証サービス (WAS) やインターネット インフォメーション サービス (IIS) などの他のホスティング環境では、ホスティング コードを記述する必要はありません。

このサンプルのセットアップ手順とビルド手順は、このトピックの最後にあります。

このサービスをビルドした後は、他の Windows サービスと同様に、Installutil.exe ユーティリティを使用してインストールする必要があります。 サービスに変更を加える場合は、最初に installutil /uを使用してアンインストールする必要があります。 このサンプルに含まれる Setup.bat ファイルと Cleanup.bat ファイルは、Windows サービスのインストールと起動、および 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[])では、WcfCalculatorService型のServiceHost オブジェクトが作成され、開かれます。 OnStop()では、ServiceHost は、ServiceHost オブジェクトのClose(TimeSpan) メソッドを呼び出すことによって閉じられます。 ホストのベース アドレスは、<<service> 要素の子である <host> 要素の子である <baseAddresses> の子である add> 要素を使用して構成されます。

定義されているエンドポイントは、ベース アドレスと <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 キーを押して、サービスとクライアントをシャットダウンします。

サンプルを設定、ビルド、実行するには

  1. Windows Communication Foundation サンプル One-Time セットアップ手順を実行していることを確認します。

  2. ソリューションの C# または Visual Basic .NET エディションをビルドするには、「Windows Communication Foundation サンプルのビルド」の手順に従います。

  3. ソリューションがビルドされたら、管理者特権の Visual Studio コマンド プロンプトから Setup.bat を実行し、Installutil.exe ツールを使用して Windows サービスをインストールします。 サービスはサービスに表示されます。

  4. シングル コンピューター構成またはクロスコンピューター構成でサンプルを実行するには、「 Windows Communication Foundation サンプルの実行」の手順に従います。

こちらも参照ください