我正在使用WCF在.Net 3.5中开发客户端/服务器应用程序.基本上,长时间运行的客户端服务(在多台计算机上)通过netTcpBinding建立到服务器的双工连接.然后,服务器使用客户端的回调契约来执行某些按需操作,客户端以异步方式响应(我认为这是相当标准的东西).我将DuplexClientBase类子类化以处理大部分通信.
不幸的是,当两端出现问题时(例如网络故障,意外异常等),通道出现故障/中止,所有后续操作都会失败.我通过创建一个RecoveringClientBase类来解决非双工通道中的这种限制,该类在客户端出现故障并重试操作时自动获取.
所以我的问题是,有没有一种既定的方法来确定双工通道何时出现故障?我应该在服务器或客户端上检查这个位置?如果做不到这一点,我有什么选择来确保连接重新建立?
更新:我正在寻找一些特定于双工通道的建议,其中服务器可能会尝试使用出现故障的回调通道.因此,当频道发生某些事情时,我需要立即重新连接/重新订阅的内容.目前,我正在收听频道的Closing事件,如果状态不是已关闭,则重新创建它.它有点工作,但它感觉hacky ......