Share via


方法 : マネージ アプリケーションで WCF サービスをホストする

マネージ アプリケーションでサービスをホストするには、マネージ アプリケーション コード内にサービスのコードを埋め込み、サービスのエンドポイントをコードで強制的に定義するか、構成を使用して宣言により定義してから、ServiceHost のインスタンスを作成します。

メッセージの受信を開始するには、ServiceHostOpen を呼び出します。これにより、サービスのリスナが作成されて開きます。この方法によるサービスのホストは、マネージ アプリケーション自体がホスト作業を行うため、"自己ホスト" と呼ばれることがあります。サービスを閉じるには、ServiceHostSystem.ServiceModel.Channels.CommunicationObject.Close を呼び出します。

サービスは、マネージ Windows サービス、インターネット インフォメーション サービス (IIS)、または Windows プロセス アクティブ化サービス (WAS) でホストすることもできます。サービスのホスティング詳細については、 、「ホスティング サービス」を参照してください。

マネージ アプリケーションでのサービスのホストは、展開するインフラストラクチャが最小限で済むため、最も柔軟性があります。マネージ アプリケーションでのホスティング サービス詳細については、 、「マネージ アプリケーションのホスト」を参照してください。

次の手順では、自己ホスト型サービスをコンソール アプリケーションに実装する方法を示します。この手順の基となる実際の例については、「Self Host Sample」を参照してください。

自己ホスト型サービスを作成するには

  1. 構成を使用してサービスのエンドポイントを定義します。

  2. サービス用のインターフェイスを作成します。「方法 : Windows Communication Foundation サービス コントラクトを定義する」を参照してください。

  3. サービス型を作成するためのインターフェイスを実装します。「方法 : Windows Communication Foundation サービス コントラクトを実装する」を参照してください。次の例の実装は、MathService と呼ばれます。

  4. サービスを開始するためのメソッドを作成します。この例では、Main メソッドが使用されます。

  5. サービスのベース アドレスを持つ Uri クラスのインスタンスを作成します。この例では、ConfigurationManager クラスの静的プロパティ AppSettings を使用して、ベース アドレスを選択します。System.Configuration.dll への参照をプロジェクトに追加してください。これにより、ホスト アプリケーションの構成ファイルの <appSettings> 要素の下にベース アドレスが設定されます。

  6. アプリケーションの構成ファイルに <appSettings> 要素を追加します。次に、適切な key 属性が設定された <add> 要素を使用します。この場合、key 値は、前の手順で AppSettings プロパティに渡されるパラメータと一致します。

  7. ServiceHost クラスのインスタンスを作成して、サービス型を表す Type とベース アドレス URI (Uniform Resource Identifier) を ServiceHost に渡します。

  8. ServiceHost オブジェクトで Open メソッドを呼び出します。

構成にエンドポイントを作成するには

  1. サービスのアセンブリと同じディレクトリに構成ファイルを追加します。構成詳細については、 、「Windows Communication Foundation サービスのバインディングの構成」を参照してください。

CalculatorService 型のサービスをホストする ServiceHost オブジェクトを作成し、ServiceHostOpen メソッドを呼び出す例を、次に示します。ベース アドレスはコードで提供され、相対パスは構成で提供されます。

ServiceMetadata Utility Tool (svcutil.exe) を使用してサービスのクライアントを作成するには、エンドポイントのバインディングで HTTP プロトコルを使用する必要があります。バインディング詳細については、 、「サービスとクライアントを構成するためのバインディングの使用」および「システム標準のバインディング」を参照してください。このトピックの基となるサンプル全体については、「Self-Host」のサンプルを参照してください。

関連項目

タスク

方法 : IIS で WCF サービスをホストする
方法 : Windows Communication Foundation サービス コントラクトを定義する
方法 : Windows Communication Foundation サービス コントラクトを実装する

リファレンス

Uri
AppSettings
ConfigurationManager

概念

ホスティング サービス
サービスとクライアントを構成するためのバインディングの使用
システム標準のバインディング

その他の技術情報

Self Host
Service Metadata Utility Tool (svcutil.exe)