2016-12-05 142 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; 
相關問題