2009-05-03 21 views
36

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

正確にはServiceHostとは何ですか?

new MusicRepo_DBAccess_ServiceClient(new InstanceContext(instanceContext), customBinding, endpointAddress); 
:私はWCFサービスを使用して、私のアプリからそれを参照したと私は私のアプリからそれを消費したい時はいつでも、私はちょうどそのようなのようなそのServiceClientをインスタンス化しています私の現在のプロジェクトで


そして、そのインスタンス(明らかメソッドを消費する前にそれを開いてOpenCloseで、その後、それを閉じる)

私から私のWebメソッド(OperationContract複数可)にアクセスWCFサービスは私のIISのホストであり、ServiceClientをインスタンス化するために私のアプリケーションから.svcにアクセスするだけです。

なぜ、ServiceHostが使用されますか?

答えて

29

ServiceHostは基本的に、非IISまたはWAS設定でWCFサービスをホストするために必要なものすべてを提供します。 ServiceHostの一般的な場所は、コンソールアプリケーションまたはWindowsサービスになります。 how to setup a ServiceHost in a console appのMSDNのサンプルコードを参照してください。

+18

ほぼ正しいです。 - IISとWASでさえ、ServiceHostを使用してWCFサービスをホストします。ただ作成して背中の裏に自動的に引き裂きます。 –

+4

ええと、自分のコードでServiceHostがいつ表示されるかを記述しようとしていました。 IIS/WAS ServiceHostは通常、開発者が直接アクセスすることはありません。 –

+0

ええ、そうです - IIS/WASのシナリオではServiceHostはほとんど見えません:) –

23

サービスの実装は.NETクラスに過ぎません。実行時環境が必要なので、何とか実行できます。 ServiceHostはサービスクラスをロードし、エンドポイントとチャンネルリスナーとそのすべてのものを設定します。したがって、サービスクラスには生きて操作する "生態系"を与えます。

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

マルク・

+1

HTTP要求(WebOperationContext)からwcfサービスメソッドに特定のヘッダーやデータを送信するなどの呼び出しをテストするTDDテストでは、これを使用しますか? – PositiveGuy

関連する問題