web-dev-qa-db-ja.com

WCF:ServiceHostとは何ですか?

私は現在WCFサービスの使用方法を学んでいるので、WCFサービスを使用するときにServiceHostを使用することについて言及しているインターネット上のチュートリアルに頻繁に遭遇しています。

これは正確には何ですかServiceHost


現在のプロジェクトでは、WCFサービスを使用していて、アプリからの参照を持っています。アプリからそれを利用したいときはいつでも、そのようなServiceClientをインスタンス化するだけです。

new MusicRepo_DBAccess_ServiceClient(new InstanceContext(instanceContext), customBinding, endpointAddress);

次に、そのインスタンスからWebメソッド(OperationContracts)にアクセスします(明らかに、メソッドを使用する前に開き、後でOpenCloseで閉じます)。

私のWCFサービスはHost in my IISで、アプリから.svcにアクセスしてServiceClientをインスタンス化するだけです。

では、なぜ、どこでServiceHostを使用するのでしょうか。

38
Andreas Grech

ServiceHostは基本的に、IISまたはWAS以外の設定でWCFサービスをホストするために必要なすべてのものを提供します。 ServiceHostの一般的な場所は、コンソールアプリまたはWindowsサービスです。 コンソールアプリでServiceHostを設定する方法 については、MSDNのサンプルコードを参照してください。

32
Andy White

サービスの実装は.NETクラスにすぎません。なんらかの方法で実行できるように、ランタイム環境が必要です。これがServiceHostの目的です。サービスクラスをロードし、エンドポイントとチャネルリスナーなどをセットアップして、サービスクラスに「エコシステム」を提供し、そこで動作させます。

ServiceHostクラスをコンソールアプリ、Windowsサービス、またはWinformsアプリでインスタンス化して、WCFサービスクラスを外の世界で利用できるようにするか、その作業をIISまたはWAS。でもIISまたはWASはServiceHostを使用してWCFサービスをホストします-彼らは自動的に舞台裏で自動的にそれを行い、「オンデマンド」-WCFの要求があったときはいつでもサービスが入ってくる。

マーク

26
marc_s