我不是C#或.NET专家。 但是,我必须使用它。 我正在运行InstallUtil.exe MyService.exe以安装本质上运行WCF服务的Windows服务。 我已经定义并实现了WFC接口。 下面是界面。 我还定义了Windows服务,如下所示: 当我运行In ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我创建了一个简单的WCF服务,该服务托管在Windows服务中。 WCF服务会在Windows服务启动时自动启动,但是当我第一次从客户端连接到WCF服务时,它会花费几秒钟的时间(与其他WCF服务一样)。
我知道如何在IIS上托管服务时避免这种延迟,但在其他任何地方托管时却无法避免。
确切地说:
有没有一种方法可以唤醒Windows服务中托管的WCF服务,而无需客户端请求? 可能来自Windows服务代码?
使用IIS托管,延迟不是因为WCF服务需要“唤醒”。 在IIS托管中发生这种情况的原因是,一段时间不活动(或由于某些其他内部状态)后,IIS将从内存中卸载应用程序池。 这不适用于Windows服务托管。
您遇到的延迟很可能是因为您的客户端在首次呼叫该服务时必须旋转一个wcf频道才能进行呼叫。 然后可以使用相同的通道进行后续呼叫,因此没有提前期。
为避免这种情况,您必须始终保持通道打开。 有几种方法可以做到这一点,但最简单的方法是使用会话。 有关更多信息,请参见Erik Funkenbusch的出色答案 。 但是,您应该考虑是否绝对需要此功能,因为会话是一项开销,并且扩展性不好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.