我的WCF服务器需要定期上下移动,客户端有时会使用服务器,但如果它关闭,客户端就会忽略它.所以每次我需要使用服务器服务时,我会检查连接状态,如果它没有打开,我打开它.问题是,如果我在服务器关闭时尝试打开,则会出现性能下降的延迟.我的问题是,有没有办法做某种事myClient.CanOpen()?所以我知道是否有任何意义打开与服务器的连接.
我有一个客户端 - 服务器系统,双方都是我编写的,当服务器断开/死机时我想让客户端处于"离线"状态,然后当服务器再次可用时自动将它们"恢复"为"在线"状态.
对于第一部分,我通过将客户端设置为脱机来监听通道故障事件并进行处理.然后我开始在服务器上调用"ping"服务(每30秒),如果它还活着,它就会返回一个bool.一旦它活着,客户端就会获得bool并重新上线.
这一切都有效,我遇到的问题是,当客户端调用ping服务并且服务器关闭时,没有响应(显然),最终,大约2分钟后,我得到一个端点未找到异常.到这个时候,我已经尝试了3-4次ping,因此有3-4个异常酿造.
我的问题是,如何更优雅地处理ping服务?理想情况下,我想定期拨打一个服务,让我知道它是否在线,并立即让我知道它是否在线.