在WCF中检查客户连接的最佳方法是什么?



我有一个WCF服务和检索有关凭据信息的客户次数。我想监视这些客户端的列表,并检测一些客户是否突然死亡(由于连接损失或应用程序崩溃或某些内容)最好的方法是什么?

我知道双工通信合同将不是最好的解决方案。

做到这一点的一种方法是实现"心跳"。为此,请保留客户集合。让客户发送一条简单的消息,其中包含最小信息(心跳消息)。

在服务器端,进行一个驱逐过程,该过程定期浏览客户列表,以查看是否有"陈旧"(即您一段时间没有收到心跳)。

除了抓住CommunicationException之外,确实没有很好的方法。您还可以查看iClientChannel事件以监视连接发生的情况。

client.InnerChannel.Closed += OnChannelClosed;
client.InnerChannel.Opening += OnChannelOpening;
client.InnerChannel.Opened += OnChannelOpened;
client.InnerChannel.Closing += OnChannelClosing;
client.InnerChannel.Faulted += OnChannelFaulted;
client.InnerChannel.UnknownMessageReceived += OnChannelUnknownMessageReceived;

相关内容

最新更新