私は現在WCFサービスの使用方法を学んでいるので、WCFサービスを使用するときにServiceHost
を使用することについて言及しているインターネット上のチュートリアルに頻繁に遭遇しています。
これは正確には何ですかServiceHost
?
現在のプロジェクトでは、WCFサービスを使用していて、アプリからの参照を持っています。アプリからそれを利用したいときはいつでも、そのようなServiceClient
をインスタンス化するだけです。
new MusicRepo_DBAccess_ServiceClient(new InstanceContext(instanceContext), customBinding, endpointAddress);
次に、そのインスタンスからWebメソッド(OperationContract
s)にアクセスします(明らかに、メソッドを使用する前に開き、後でOpen
とClose
で閉じます)。
私のWCFサービスはHost in my IISで、アプリから.svc
にアクセスしてServiceClient
をインスタンス化するだけです。
では、なぜ、どこでServiceHost
を使用するのでしょうか。
ServiceHostは基本的に、IISまたはWAS以外の設定でWCFサービスをホストするために必要なすべてのものを提供します。 ServiceHostの一般的な場所は、コンソールアプリまたはWindowsサービスです。 コンソールアプリでServiceHostを設定する方法 については、MSDNのサンプルコードを参照してください。
サービスの実装は.NETクラスにすぎません。なんらかの方法で実行できるように、ランタイム環境が必要です。これがServiceHostの目的です。サービスクラスをロードし、エンドポイントとチャネルリスナーなどをセットアップして、サービスクラスに「エコシステム」を提供し、そこで動作させます。
ServiceHostクラスをコンソールアプリ、Windowsサービス、またはWinformsアプリでインスタンス化して、WCFサービスクラスを外の世界で利用できるようにするか、その作業をIISまたはWAS。でもIISまたはWASはServiceHostを使用してWCFサービスをホストします-彼らは自動的に舞台裏で自動的にそれを行い、「オンデマンド」-WCFの要求があったときはいつでもサービスが入ってくる。
マーク