我创建了一个简单的WCF服务,该服务托管在Windows服务中。 WCF服务会在Windows服务启动时自动启动,但是当我第一次从客户端连接到WCF服务时,它会花费几秒钟的时间(与其他WCF服务一样)。

我知道如何在IIS上托管服务时避免这种延迟,但在其他任何地方托管时却无法避免。

确切地说:

有没有一种方法可以唤醒Windows服务中托管的WCF服务,而无需客户端请求? 可能来自Windows服务代码?

#1楼 票数:3

使用IIS托管,延迟不是因为WCF服务需要“唤醒”。 在IIS托管中发生这种情况的原因是,一段时间不活动(或由于某些其他内部状态)后,IIS将从内存中卸载应用程序池。 这不适用于Windows服务托管。

您遇到的延迟很可能是因为您的客户端在首次呼叫该服务时必须旋转一个wcf频道才能进行呼叫。 然后可以使用相同的通道进行后续呼叫,因此没有提前期。

为避免这种情况,您必须始终保持通道打开。 有几种方法可以做到这一点,但最简单的方法是使用会话。 有关更多信息,请参见Erik Funkenbusch的出色答案 但是,您应该考虑是否绝对需要此功能,因为会话是一项开销,并且扩展性不好。

  ask by Miljenko Barbir translate from so

未解决问题?本站智能推荐:

1回复

如何将数据推送到正在运行的Windows服务

我的问题是,有没有一种好的方法可以将整数值推送到正在运行的Windows服务而无需重新启动它,也无需写入磁盘或让它轮询某些数据库? 这是我的场景和一些想法:我需要将数据实时传递到Windows服务,我不希望延迟。 我需要给它的是整数,其余的都可以做。 我的前任已将其设置为每10分钟轮询一
1回复

WindowService,WCF服务应用程序和ASP.NETWeb服务应用程序之间的区别?

我不知道这是一个适合我的问题的论坛吗? 我是Web Services的新手。 今天我只是打开VS2008,发现了3种类型的SERVICE项目 请帮我看看这三个项目的区别? 我们什么时候应该决定哪种类型的项目?
3回复

如何实现在一定时间间隔后轮询或检查数据库的WCF服务

我有一个要求,我想要实现一个WCF服务,它在一定的时间间隔之后检查数据库列的状态,比如说20分钟,如果这个状态为真,我想执行一些其他操作。 那么是否可以使用WCF服务实现所需的功能,如果是,请指导我应该如何实现,因为我不知道如何做到这一点。 如果它不可能,那么请建议我一些很好的选择,如(W
1回复

通讯Windows服务器:代理DLL,Web服务或Windows服务+WCF?

我有一个相当大的.NET代码块,现在需要通过ASP网页进行访问。 交易需要定期发送到此“服务器”进行处理。 处理时间不到一秒钟,每天可能有100-1000次此类交易 我以前确实只使用过COM和Windows服务,所以我的常规方法是让Windows服务运行内存中所有必需的数据,并且客户端G
1回复

如何从Windows服务调用Webservice?

如何从Windows服务调用Webservice? 我在我的Web服务器上有一个web服务。 我有一个Windows服务来触发该Web服务。 所以我只想从我的Windows服务中集成并调用我的web服务。 我怎样才能做到这一点? 编辑: TempWindowService
1回复

无法调用托管Windows服务中托管的WCF服务

因此,关于托管Windows服务中托管的WCF服务,我有一些问题。 基本上我所做的是以下几点: 我使用一个简单的测试创建了一个WCF服务库(WCF服务模板),就像这样 我还创建了一个与此对应的app.config 之后,我添加了一个Win Service项目(同样是Win Ser
3回复

创建Windows服务的准则?

我正在开发一个具有Windows服务的Asp.Net MVC应用程序。 Windows服务基本上调用基于外部Soap的Web服务,该服务接收一些参数并返回数据,Windows服务将该数据存储到SQL服务器中。 此Windows服务将定期自动调用外部Web服务。 由于我没有详细了解服务。
1回复

本地计算机上的服务已启动然后停止,如果其他服务或程序未使用某些服务,则会自动停止

我创建了一个示例Windows服务并成功安装了我的服务。 但是在开始服务的同时。 我收到了以下错误。 本地计算机上的此服务已启动然后停止。 如果其他服务或程序未使用某些服务,则会自动停止 我的配置文件代码: 任何人都可以建议我......谢谢你。