我有以下问题。在这样的Windows服务中托管了一个WCF服务:
sHost = new ServiceHost(typeof(DataService));
_thread = new Thread(new ThreadStart(sHost.Open));
_thread.Start();
DataService是解决方案中的WCF服务合同。
WCF服务下面的几个层是单独程序集中的缓存。但是,每次创建到WCF服务的新连接/代理时,都会创建一个新的服务实例。这导致在DAL中创建缓存的新实例。所以我想要做的是拥有WCF服务,因此堆栈中的所有类只实例一次(由于多重性要求而有一些例外)。因此,应该实例化WCF服务并侦听新连接,而不是每次都建立新连接时都要实例化DataService。
我希望这是有道理的。我该怎么做?
非常感谢, 河豚
答案 0 :(得分:2)
自己实例化DataService并将实例传递给ServiceHost构造函数:
sHost = new ServiceHost(new DataService());
答案 1 :(得分:1)
我认为alexdej答案是正确的,但是没有看到你的代码无法评论为什么你得到Null引用异常。
我可以指出这些视频',我在2天前完成了这些视频以帮助学习WCF,我相信他们会回答你的问题。
自托管WCF - http://channel9.msdn.com/shows/Endpoint/Endpoint-Screencasts-Self-hosting-WCF-Services/
将WCF托管为Windows服务 - http://channel9.msdn.com/shows/Endpoint/endpointtv-Screencast-Hosting-WCF-Services-in-Windows-Services/