我正在使用WCF服务来管理在远程计算机上运行的Windows服务。我们有一个管理客户端,用于修改Windows服务配置,以及实时监控服务状态。对于实时监控,我们每秒轮询服务的状态。
目前,我们在监控服务时始终保持客户端连接,但我不断阅读建议连接和断开每个呼叫,就像对数据库一样。
在我们频繁调用服务的情况下会建议使用,还是连接和断开连接会给进程增加太多开销?
由于
答案 0 :(得分:1)
默认情况下,作为推荐的最佳做法,您在WCF中使用每次呼叫激活,例如对WCF服务的每个请求都会获得一个服务类的新实例,该实例处理您的请求,返回结果,然后处理。
在这种情况下,我并没有真正看到不断打破和重新建立通信渠道的任何一点(例如,不断地处置和重新创建代理客户端)。 WCF服务端没有任何东西在内存中“徘徊”并占用资源或类似的东西。此外,与大多数数据库相反,通常没有“每个连接”许可或任何涉及的任何内容。
在这种情况下,您需要能够处理的是您的通信渠道进入“故障状态”的情况,例如:当一些不好的事情发生时 - 服务调用失败并抛出异常,或者网络侥幸导致您的频道中断。在这种情况下,您需要在客户端使用恢复机制来处理此问题并重新建立连接。
如果你有面向会话的WCF服务,情况可能会有所不同 - 但那些肯定是例外,只有在需要的时候才能使用。