我有一個WCF服務和檢索有關憑證的信息的客戶端數量。 我想監視這些客戶端的列表,並檢測是否有一些客戶端突然死亡(由於連接丟失或應用程序崩潰等) 這樣做的最佳方式是什麼?什麼是檢查WCF客戶端連接的最佳方法
據我所知雙工通信合同不是最好的解決方案。
我有一個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;
您的客戶如何「連接」?由於可能有TCP,命名管道,WCF有點「廣泛」... 不是最具可擴展性的解決方案,但輪詢應始終有效。 – ChrFin