我正在創建一個Windows服務上託管的WCF服務,如此處所述:https://msdn.microsoft.com/en-us/library/ms733069(v=vs.110).aspx。在託管Windows服務中託管的WCF服務上的依賴注入(使用簡單注入器)
我的服務有一些依賴關係。
這將是正確的方式來應用DI在這裏使用簡單Inyector。
我在這裏閱讀了SimpleInjectorServiceHostFactory類https://simpleinjector.readthedocs.org/en/latest/wcfintegration.html,但它似乎只適用於IIS託管服務。
在第一個示例中,我假設我在Main()方法上註冊了類型,但應如何創建ServiceBase?
更重要的是,我應該如何調用(或創建)服務主機實例。我應該從哪裏獲取容器,並直接使用它創建實際服務的實例。這似乎是對我
protected override void OnStart(string[] args)
{
if (serviceHost != null)
{
serviceHost.Close();
}
// Create a ServiceHost for the CalculatorService type using the
// container directly
serviceHost = serviceHost = new ServiceHost(container.GetInstance<ICalculatorService>());
serviceHost.Open();
}
我建議你看看這本書[.NET中的依賴注入](https://www.manning.com/books/dependency-injection-in-dot-net)。第7.3節詳細介紹瞭如何爲DI配置WCF(這不是我所做的,所以我只是留下評論)。我發現構建自己的DI集成組件非常有用,因爲通常(和你的情況一樣)來自第三方的股票不適合你的應用程序的用例,本書告訴你如何與WCF建立這樣的集成。 – NightOwl888
我同意NightOwl。我從來沒有WCF的任何問題,因爲我使用WCF服務類作爲謙虛的對象,並將其視爲我的作文根的一部分。這意味着我的WCF服務不包含應用程序邏輯,只需從包含邏輯的容器中解析服務即可。 – Steven
[此帖子](https://cuttingedge.it/blogs/steven/pivot/entry.php?id=95)可能對您有用...... – qujck