2009-05-03 58 views
36

由於我目前正在學習使用WCF服務,因此在使用WCF服務時,我經常遇到在互聯網上提到使用ServiceHost的教程。WCF:什麼是ServiceHost?

這究竟是什麼ServiceHost


在我目前的項目我使用的是WCF服務,並具有從我的應用程序引用它,每當我想從我的應用程序佔用了,我只是實例其ServiceClient像這樣:

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

,然後從實例(食用方法前明顯打開它,並與OpenClose後關閉它)

我的訪問我的網站的方法(OperationContract S) WCF服務是我的IIS中的主機,我只需從我的應用程序訪問.svc即可實例化ServiceClient

那麼爲什麼和在哪裏使用ServiceHost

回答

29

ServiceHost基本上爲您提供了在非IIS或WAS設置中託管WCF服務所需的一切。 ServiceHost的常見位置是控制檯應用程序或Windows服務。請參閱來自MSDN的示例代碼how to setup a ServiceHost in a console app

+18

幾乎是正確的。 - 即使IIS和WAS也會使用ServiceHost來託管您的WCF服務 - 他們只是創建它並將其自動撕下。 – 2009-05-03 08:15:42

+4

是的,我只是想描述一下當你在自己的代碼中看到一個ServiceHost。 IIS/WAS ServiceHost通常不由開發人員直接訪問。 – 2009-05-03 09:43:50

23

你的服務實現只是一個.NET類 - 你需要有一個運行時環境,所以它可以以某種方式執行。這就是ServiceHost的用處 - 它將加載你的服務級別,設置端點和通道監聽器以及所有這些東西,從而爲你的服務級別提供一個「生態系統」來生存和運行。

你可以實例化您可以在控制檯應用程序,Windows服務甚至Winforms應用程序中使用ServiceHost類,從而使您的WCF服務類可用於外部世界 - 或者可以將該工作委託給IIS或WAS。即使IIS或WAS將使用ServiceHost的託管WCF服務 - 他們只是做自動的在幕後,並「按需」 - 每當你的WCF服務的請求進來

馬克