繁体   English   中英

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

[英]What is the best way to check clients connection in 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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM