2016-12-05 121 views
0

我有一个WCF服务和检索有关凭证的信息的客户端数量。 我想监视这些客户端的列表,并检测是否有一些客户端突然死亡(由于连接丢失或应用程序崩溃等) 这样做的最佳方式是什么?什么是检查WCF客户端连接的最佳方法

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

+1

您的客户如何“连接”?由于可能有TCP,命名管道,WCF有点“广泛”... 不是最具可扩展性的解决方案,但轮询应始终有效。 – ChrFin

回答

2

做到这一点的一种方法是实施“心跳”。为此,请保留一组客户端。让客户以最少的信息发送简单的消息(心跳消息)。

在服务器端,放置一个驱逐进程,定期查看客户端列表,看看是否有任何已经“陈旧”(即你有一段时间没有收到心跳)。

1

除了抓到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; 
相关问题