繁体   English   中英

坚持在Windows服务中托管的WCF服务吗? (即一次实例化一次)

[英]Persisting a WCF service hosted within a windows service? (i.e. instantiating once and only once)

我有以下问题。 Windows服务中托管有一个WCF服务,如下所示:

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

其中DataService是解决方案中的WCF服务合同。

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

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

非常感谢,河豚

自己实例化DataService并将实例传递给ServiceHost构造函数:

sHost = new ServiceHost(new DataService());

我认为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/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM