我喜欢在可以的时候使用WCF回调,因为对我而言,它比轮询服务器的客户端更好,而且比轮询更实时。我的问题是,当我订阅WCF服务事件时,是否存在任何心跳,使客户端和服务器之间的连接保持活动状态。我开始认为没有,因为当服务器消失时,订阅丢失并且客户端不会抛出异常(可能是WCF运行时吞下了异常)。对于服务器也是如此,当客户端消失并且服务器尝试调用回调并且抛出异常时。有什么想法吗?
由于
答案 0 :(得分:3)
此link中有一个关于双工合约(WCF回调)的简短描述。双工合同基本上是两个单向通道,没有隐含的消息相关性。你是对的,没有涉及“心跳”消息,只有正常的wsHTTP握手流量才能进行双工呼叫。
我启动了名为Fiddler2的HTTP流量嗅探器(一种不受支持的Microsoft工具)来验证会话流量。在服务调用期间和之后没有看到任何引擎盖下的HTTP“心跳”通信。我离开了客户端运行了一段时间。好问题,它让我有点挖掘。
答案 1 :(得分:0)
我继续为订阅的客户创建了一个经常性的心跳(基本上是对他们正在托管的功能的调用)。
我已经运行了几个小时并且它可以工作,这有助于确保连接。