2010-02-11 58 views

回答

3

服務類(一個實現服務接口)有一個屬性

OperationContext.Current.Host 

,讓你訪問到ServiceHost實例,它是託管服務。您可以非常輕鬆地訪問該服務主機。

有能夠超越服務主機和操縱或查詢包含服務主機的NT服務沒有內置的方式。但是你總是可以創建你自己定製的ServiceHost後代類,它可以爲你提供對NT服務本身的必要訪問,然後使用這個定製服務主機來實現你的服務。

通過自定義服務主機,你基本上可以做任何你覺得是必要和有益的 - 只是創建ServiceHost後代,做任何你需要做的!

+0

不知道我能做到這一點。相當漂亮。 – InTheFlatField 2010-02-11 17:27:41

+0

需要將OperationContext.Current.Host返回的引用強制轉換爲MyCustomServiceHost類。由於我的wcf服務項目被windows服務項目引用,所以這個自定義的ServiceHost類必須在wcf項目中。所以它變得棘手,除非我失去了一些東西。 – maulik13 2014-02-24 14:43:09

+0

@ Maulik13:如果你想使用自己的'MyCustomServiceHost'的*定製*功能 - 那麼是的,你必須轉換參考該類型的變量。和** NO **,自定義服務主機類不必在WCF項目內部 - 它基本上可以在任何地方生活(當然,它需要**參考WCF項目 - 知道它託管什麼) – 2014-02-24 14:45:39

1

如果「訪問」你的意思是問你是否可以調用服務,那麼,該服務可以爲自身的客戶端。

什麼可能是更好的將是您的服務分爲兩類,一特定的事實,這是一個Web服務,和所有做實際工作的其他部分零件。讓Windows Service調用後面的部分。

0

我這樣做的方法是通過使用自定義InstanceProvider(這允許您使用WCF服務的非默認構造函數)將共享對象傳遞到WCF服務的構造函數中。

然後,共享對象允許WCF服務與Windows服務(或任何其他可訪問共享對象的對象)「交談」。

相關問題