2011-02-22 141 views
0

我有以下问题。有一个窗口服务中承载这样一个WCF服务:坚持在Windows服务中托管的WCF服务? (即仅实例化一次)

sHost = new ServiceHost(typeof(DataService)); 
_thread = new Thread(new ThreadStart(sHost.Open)); 
_thread.Start(); 

DataService的地方是一个WCF服务合同的解决方案。

WCF服务下面的几层是一个独立程序集中的缓存。但是,每次创建WCF服务的新连接/代理时,都会创建一个新的服务实例。这会导致在DAL中创建一个新的缓存实例。所以我想要做的就是拥有WCF服务,因此所有的类只能实例化一次(由于多重性的要求,有一些例外)。因此,应该实例化WCF服务并监听新连接,而不是每次创建新连接时都要创建DataService实例。

我希望这是有道理的。我该怎么做呢?

非常感谢, 府谷

回答

2

实例化的DataService自己和实例传递给ServiceHost的构造函数:

sHost = new ServiceHost(new DataService()); 
+0

我得到的“System.NullReferenceException:未将对象引用设置到对象的实例”这样做时出错。但是我明天将会看到它(它很难从WindowsService运行)。 – Fugu 2011-02-22 17:38:54

1

我觉得alexdej答案是正确的,但没有看到你的代码不能,为什么你发表评论一个空引用异常。

但是,我可以指出你看这些视频',我仅在两天前完成了这些视频以帮助学习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/

相关问题