gpt4 book ai didi

WCF - 如何检测服务器是否存在?

转载 作者:行者123 更新时间:2023-12-04 21:43:31 24 4
gpt4 key购买 nike

我正在开发一个带有 net tcp 绑定(bind)的客户端/服务器应用程序,如果我与服务器的连接断开,我需要得到通知。

如果客户端断开连接,我可以从服务器端使用 CommunicationObject 立即检测到它。故障事件(可靠 session 关闭)。但是,从客户端来看,我似乎无法知道服务器是否出现故障。相同的事件不会触发。顺便说一下,我将 receiveTimeout 设置为无限。有些人建议使用心跳或 ping 功能来检查服务器是否处于事件状态。但我认为在 WCF 层面,这种方法有很大的影响。毕竟这不是您发送的简单数据包,而是整个 WCF 请求。我该怎么办?

最佳答案

似乎有一个常见的误解,即为了在客户端查明 WCF session 是否仍然存在,必须在服务上实现某种自定义 ping 或心跳操作。但是,如果配置正确,WCF 框架已经在后台为您执行此操作。

诀窍是将 ReliableSession.InactivityTimeout 设置为足够短的时间段。例如,如果您将其设置为 30 秒,则 ICommunicationObject.Faulted 事件将在 30 秒(最小值)后在客户端代理上引发。服务中断后 45(最大)秒。确切的延迟取决于 WCF 内部 session 保持事件控制计时器的节奏和崩溃的具体时间。

当然,这只适用于具有可靠 session 能力的 bindings ,结合正确的 session 属性(ServiceContractAttribute.SessionMode、ServiceBehaviorAttribute.InstanceContextMode、OperationContractAttribute.IsInitiating 和 OperationContractAttribute.IsTerminating)。

关于WCF - 如何检测服务器是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1747341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com