2016-04-05 69 views
1

我有一個wcf服務主機(控制檯應用程序)和客戶端通過netTCPBinding。 在我的要求中,主持人經常出現並且頻繁出現。我的客戶端應該處理主機並檢查主機是否每隔1分鐘運行一次。當我嘗試理解並實施時,我遇到了很多解決方案。 1. WS-發現 2.服務器的IsAlive 3平法等 4.投票WCF客戶端檢查WCF主機是否啓動並運行?

private static bool IsConnectionUp() 
     { 
      _logClient = new LogClient(); 

       try 
       { 
        _logClient.Open(); 
        return true; 
       } 
       catch (FaultException exception) 
       { 
        if (_logClient.State == CommunicationState.Faulted) 
        { 

         _logClient = new LogClient(); 
        } 
        return false; 
       } 


     } 

    Main() 
    { 
    while (IsConnectionUp()!=true) 
       { 
        IsConnectionUp(); 
       } 
    } 

上面這段代碼的好辦法嗎,如果沒有,請建議。

我想繼續從客戶端進行輪詢,這是我可以採用的最佳方法。 謝謝

回答

0

現有的代碼泄漏危險的連接。您需要實現WCF配置模式(由於WCF團隊發生API設計錯誤,這不是正常模式)。

打開連接並不一定會測試可用性。我不知道你的裝訂在打開時會做什麼。我懷疑基於HTTP的綁定什麼也不做。我不認爲有可能要求底層的HttpWebRequest基礎設施在不發出請求的情況下打開連接。

做到這一點的最好方法是實施測試方法(例如void Ping() { })。使用短暫的超時並處理資源。

未節流環路也很危險。這基本上是拒絕服務攻擊。