次の方法で共有


ホスティング サービス

アクティブにするには、サービスを作成し、そのコンテキストと有効期間を制御するランタイム環境内でサービスをホストする必要があります。 Windows Communication Foundation (WCF) サービスは、マネージド コードをサポートするすべての Windows プロセスで実行するように設計されています。

WCF には、サービス指向アプリケーションを構築するための統合プログラミング モデルが用意されています。 このプログラミング モデルは一貫性を保ち、サービスがデプロイされるランタイム環境とは無関係です。 実際には、これは、サービスのコードがホスティング オプションとほとんど同じように見えるということです。

これらのホスティング オプションは、コンソール アプリケーション内での実行から、インターネット インフォメーション サービス (IIS) または Windows プロセス アクティブ化サービス (WAS) によって管理されるワーカー プロセス内で実行される Windows サービスなど、サーバー環境まで多岐にわたる。 開発者は、サービスのデプロイ要件を満たすホスティング環境を選択します。 これらの要件は、アプリケーションがデプロイされるプラットフォーム、メッセージの送受信が必要なトランスポート、適切な可用性を確保するために必要なプロセス リサイクルやその他のプロセス管理の種類、またはその他の管理または信頼性の要件から派生する場合があります。 次のセクションでは、ホスティング オプションに関する情報とガイダンスを提供します。

ホスティング オプション

マネージド アプリケーションでの Self-Host

WCF サービスは、任意のマネージド アプリケーションでホストできます。 これは、デプロイに最小限のインフラストラクチャが必要なため、最も柔軟なオプションです。 マネージド アプリケーション コード内にサービスのコードを埋め込み、 ServiceHost のインスタンスを作成して開き、サービスを使用できるようにします。 詳細については、「 方法: マネージド アプリケーションで WCF サービスをホストする」を参照してください。

このオプションを使用すると、コンソール アプリケーション内で実行される WCF サービスと、Windows Presentation Foundation (WPF) または Windows フォーム (WinForms) に基づくリッチ クライアント アプリケーションの 2 つの一般的なシナリオが可能になります。 コンソール アプリケーション内での WCF サービスのホストは、通常、アプリケーションの開発フェーズで役立ちます。 これにより、デバッグが容易になり、トレース情報を取得してアプリケーション内で何が起こっているかを簡単に確認でき、新しい場所にコピーすることで簡単に移動できます。 このホスティング オプションを使用すると、WPF や WinForms アプリケーションなどのリッチ クライアント アプリケーションが外部と簡単に通信できるようになります。 たとえば、ユーザー インターフェイスに WPF を使用し、他のクライアントが接続して情報を共有できる WCF サービスもホストするピアツーピア コラボレーション クライアントです。

マネージド Windows サービス

このホスティング オプションは、WCF サービスをホストするアプリケーション ドメイン (AppDomain) をマネージド Windows サービス (旧称 NT サービス) として登録して、サービスのプロセスの有効期間が Windows サービスのサービス コントロール マネージャー (SCM) によって制御されるようにすることで構成されます。 セルフホスティング オプションと同様に、この種類のホスティング環境では、一部のホスティング コードがアプリケーションの一部として記述されている必要があります。 このサービスは、Windows サービスと WCF サービスの両方として実装されます。このサービスは、 ServiceBase クラスと WCF サービス コントラクト インターフェイスから継承します。 その後、 ServiceHost が作成され、オーバーライドされた OnStart(String[]) メソッド内で開き、オーバーライドされた OnStop() メソッド内で閉じられます。 Installerから継承するインストーラー クラスも実装して、Installutil.exe ツールによってプログラムを Windows サービスとしてインストールできるようにする必要があります。 詳細については、「 方法: マネージド Windows サービスで WCF サービスをホストする」を参照してください。 マネージド Windows サービス ホスティング オプションによって有効になるシナリオは、メッセージがアクティブ化されていないセキュリティで保護された環境で IIS の外部でホストされている実行時間の長い WCF サービスのシナリオです。 サービスの有効期間は、代わりにオペレーティング システムによって制御されます。 このホスティング オプションは、すべてのバージョンの Windows で使用できます。

インターネット インフォメーション サービス (IIS)

IIS ホスティング オプションは、ASP.NET と統合され、プロセスのリサイクル、アイドル状態のシャットダウン、プロセスの正常性の監視、メッセージ ベースのアクティブ化など、これらのテクノロジによって提供される機能を使用します。 Windows XP および Windows Server 2003 オペレーティング システムでは、これは高可用性と拡張性が必要な Web サービス アプリケーションをホストするための推奨ソリューションです。 IIS では、エンタープライズ クラスのサーバー製品に期待される統合された管理性も提供されます。 このホスト オプションでは、IIS が正しく構成されている必要がありますが、アプリケーションの一部としてホスト コードを書く必要はありません。 WCF サービスの IIS ホスティングを構成する方法の詳細については、「 方法: IIS で WCF サービスをホストする」を参照してください。

IIS でホストされるサービスは、HTTP トランスポートのみを使用できます。 IIS 5.1 での実装では、Windows XP にいくつかの制限が導入されています。 Windows XP 上の IIS 5.1 によって WCF サービスに提供されるメッセージ ベースのアクティブ化により、同じコンピューター上の他のセルフホステッド WCF サービスがポート 80 を使用して通信できなくなります。 WCF サービスは、Windows Server 2003 上の IIS 6.0 でホストされている場合、他のアプリケーションと同じ AppDomain/アプリケーション プール/ワーカー プロセスで実行できます。 ただし、WCF と IIS 6.0 はどちらもカーネル モードの HTTP スタック (HTTP.sys) を使用するため、IIS 6.0 では、IIS 5.1 とは異なり、同じコンピューター上で実行されている他のセルフホステッド WCF サービスとポート 80 を共有できます。

Windows プロセス アクティベーションサービス (WAS)

Windows プロセス ライセンス認証サービス (WAS) は、Windows Vista でも使用できる Windows Server 2008 の新しいプロセス アクティブ化メカニズムです。 使い慣れた IIS 6.0 プロセス モデル (アプリケーション プールとメッセージ ベースのプロセスのアクティブ化) とホスティング機能 (迅速な障害保護、正常性の監視、リサイクルなど) が保持されますが、アクティブ化アーキテクチャから HTTP への依存関係が削除されます。 IIS 7.0 では、WAS を使用して HTTP 経由でメッセージ ベースのアクティブ化を実行します。 追加の WCF コンポーネントも WAS に接続して、TCP、MSMQ、名前付きパイプなど、WCF がサポートする他のプロトコルに対してメッセージ ベースのアクティブ化を提供します。 これにより、通信プロトコルを使用するアプリケーションでは、プロセスのリサイクル、迅速な障害保護、HTTP ベースのアプリケーションでのみ使用できる一般的な構成システムなどの IIS 機能を使用できます。

このホスティング オプションでは、WAS を適切に構成する必要がありますが、アプリケーションの一部としてホスティング コードを記述する必要はありません。 WAS ホスティングを構成する方法の詳細については、「 方法: WAS で WCF サービスをホストする」を参照してください。

ホスティング環境を選択する

次の表は、各ホスティング オプションに関連する主な利点とシナリオの一部をまとめたものです。

ホスティング環境 一般的なシナリオ 主な利点と制限事項
マネージド アプリケーション ("セルフホステッド") - 開発中に使用されるコンソール アプリケーション。
- サービスにアクセスするリッチ WinForm および WPF クライアント アプリケーション。
-フレキシブル。
- 簡単にデプロイできます。
- サービス用のエンタープライズ ソリューションではありません。
Windows サービス (旧称 NT サービス) - IIS の外部でホストされている実行時間の長い WCF サービス。 - メッセージがアクティブ化されるのではなく、オペレーティング システムによって制御されるサービス プロセスの有効期間。
- すべてのバージョンの Windows でサポートされています。
- セキュリティで保護された環境。
IIS 5.1、IIS 6.0 - HTTP プロトコルを使用して、インターネット上の ASP.NET コンテンツと共に WCF サービスをサイド バイ サイドで実行する。 - プロセスリサイクル。
- アイドル状態のシャットダウン。
- プロセスの正常性の監視。
- メッセージ ベースのアクティブ化。
- HTTP のみ。
Windows プロセス アクティベーションサービス (WAS) - さまざまなトランスポート プロトコルを使用してインターネットに IIS をインストールせずに WCF サービスを実行する。 - IIS は必要ありません。
- プロセスリサイクル。
- アイドル状態のシャットダウン。
- プロセスの正常性の監視。
- メッセージ ベースのアクティブ化。
- HTTP、TCP、名前付きパイプ、および MSMQ で動作します。
IIS 7.0 - ASP.NET コンテンツを使用して WCF サービスを実行する。
- さまざまなトランスポート プロトコルを使用してインターネット上で WCF サービスを実行する。
- WAS の利点。
- ASP.NET および IIS コンテンツと統合されています。

ホスティング環境の選択は、展開する Windows のバージョン、メッセージの送信に必要なトランスポート、必要なプロセスとアプリケーション ドメインのリサイクルの種類によって異なります。 次の表は、これらの要件に関連するデータをまとめたものです。

ホスティング環境 プラットフォームの可用性 サポートされているトランスポート プロセスと AppDomain のリサイクル
マネージド アプリケーション ("セルフホステッド") Windows XP、Windows Server 2003、Windows Vista、

Windows Server 2008
HTTP、

net.tcp,

net.pipe,

net.msmq
いいえ
Windows サービス (旧称 NT サービス) Windows XP、Windows Server 2003、Windows Vista、

Windows Server 2008
HTTP、

net.tcp,

net.pipe,

net.msmq
いいえ
IIS 5.1 Windows XP HTTP イエス
IIS 6.0 Windows Server 2003 HTTP イエス
Windows プロセス アクティベーションサービス (WAS) Windows Vista、Windows Server 2008 HTTP、

net.tcp,

net.pipe,

net.msmq
イエス

信頼されていないホストからサービスまたは拡張機能を実行すると、セキュリティが侵害されることに注意してください。 また、偽装の下で ServiceHost を開く場合、アプリケーションでは、ユーザーの WindowsIdentity をキャッシュするなどして、ユーザーがログオフしないようにする必要があります。

こちらも参照ください