次の方法で共有


Windows サービス ホスト

Download sample

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

Noteメモ :

このサンプルのセットアップ手順とビルド手順については、このトピックの最後を参照してください。

このサービスをビルドしたら、他の Windows サービスと同様、Installutil.exe ユーティリティを使用してインストールする必要があります。サービスを変更する場合は、installutil /u を使用して、まずそのサービスをアンインストールする必要があります。このサンプルに含まれている Setup.bat ファイルは Windows Service をインストールして起動するコマンド ファイルです。同様にこのサンプルに含まれている Cleanup.bat ファイルは、Windows サービスをシャットダウンしてアンインストールするコマンド ファイルです。Windows サービスが実行されている場合、クライアントに応答できるサービスは WCF サービスのみです。[コントロール パネル] のサービス アプレットを使用して Windows サービスを停止し、クライアントを実行した場合、クライアントがこのサービスにアクセスしようとすると、EndpointNotFoundException 例外が発生します。Windows サービスを再起動してクライアントを再実行した場合は、通信が正常に行われます。

サービス コードにはインストーラ クラス、ICalculator コントラクトを実装する WCF サービス実装クラス、およびランタイム ホストとして機能する Windows サービス クラスが含まれています。インストーラ クラスは Installer を継承します。このクラスを使用すると、Installutil.exe ツールにより、プログラムを NT サービスとしてインストールできます。サービス実装クラス WcfCalculatorService は、基本的なサービス コントラクトを実装する WCF サービスです。この WCF サービスは、WindowsCalculatorService と呼ばれる Windows サービス クラス内でホストされます。Windows サービスとして限定するため、このクラスは ServiceBase を継承し、OnStart メソッドと OnStop メソッドを実装しています。OnStart では、WcfCalculatorService 型の ServiceHost オブジェクトが作成され、開かれます。OnStop では、ServiceHost オブジェクトの Close メソッドが呼び出されて ServiceHost が閉じられます。このホストのベース アドレスは、<add> of <baseAddress> 要素を使用して構成されます。この要素は <baseAddresses> の子で、これは <host> 要素の子です。さらに、その親は <service> 要素です。

定義されるエンドポイントは、ベース アドレスおよび wsHttpBinding Element を使用します。ベース アドレスの構成と CalculatorService を公開するエンドポイントのサンプルを次に示します。

<services>
  <service name="Microsoft.ServiceModel.Samples.WcfCalculatorService"
           behaviorConfiguration="CalculatorServiceBehavior">
    <host>
      <baseAddresses>
        <add baseAddress="https://localhost:8000/ServiceModelSamples/service"/>
      </baseAddresses>
    </host>
    <!-- This endpoint is exposed at the base address provided by host: https://localhost:8000/ServiceModelSamples/service.  -->
    <endpoint address=""
              binding="wsHttpBinding"
              contract="Microsoft.ServiceModel.Samples.ICalculator" />
    ...
  </service>
</services>

このサンプルを実行すると、操作要求と応答がサービスとクライアントの両方のコンソール ウィンドウに表示されます。どちらかのコンソールで Enter キーを押すと、サービスとクライアントがどちらもシャットダウンされます。

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

  1. Windows Communication Foundation サンプルの 1 回限りのセットアップの手順」が実行済みであることを確認します。

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

  3. ソリューションがビルドされたら、Setup.bat を実行し、Installutil.exe ツールを使用して Windows サービスをインストールしてください。このサービスは、[サービス] に表示されます。

  4. 単一コンピュータ構成か複数コンピュータ構成かに応じて、「Windows Communication Foundation サンプルの実行」の手順に従います。

Footer image

Copyright © 2007 by Microsoft Corporation.All rights reserved.