2010-07-14 44 views
0

我有一個服務使用回調操作來回撥其客戶端。服務關閉時是否有客戶通知客戶?客戶端在回調期間出現故障時會引發異常,但服務中斷時,訂閱將丟失,但不會通知客戶端。檢查WCF回撥服務的可用性

WCF是否支持一些心跳操作來檢查服務的狀態?

感謝

回答

0

沒有,有沒有這樣的事,作爲一個「檢查這個服務電話就會成功」的方法。

您需要調用服務並準備好處理服務調用期間發生的任何異常。

真的沒有可靠或有用的方法來檢查服務的可用性。所有心跳可以檢查的是,你現在可以打電話給你的服務方法 - 但幾分之一秒後,連接可能會消失(電纜已拔掉或切斷,服務器崩潰 - 事情出錯的可能性是無盡......)。它無法檢查是否有所有必要的後臺服務和數據庫等。

所以在現實中,這樣的心跳檢查是毫無意義的。只需撥打服務,希望最好,併爲最壞的情況做好準備!將你的服務調用封裝在良好的異常處理中,然後繼續。

+0

嗯,我想在客戶端維持一個定時器,每個回調都會重置爲0,如果定時器達到極限說2分鐘,然後發送心跳檢查服務器是否仍在運行。 – joblot 2010-07-15 00:19:17

+0

@joblot:是的,當然,你可以做到這一點 - 但這**真的**告訴你? WCF服務通常是「每次調用」 - 每個請求都會獲得處理其請求的新服務對象。做這個心跳只是證明,每2分鐘,你可以達到你的服務,並調用一種方法。它說沒有任何**關於真正的功能是否能夠完成他們的工作,並且它說**沒有任何**關於你的服務是否將在10秒後可用。 WCF服務**不像**一個ADO.NET數據庫連接,這個連接已經打開了很長一段時間。 – 2010-07-15 04:44:41

+0

請檢查這個鏈接http://stackoverflow.com/questions/3255117/instance-session-and-concurrency-for-plex-service 我希望這將清楚我想達到的目標。如果服務不可用,我只需要將錯誤記錄到日誌文件中。 我假設與PerSession實例和SessionMode.Required心跳請求將由相同的insatnce處理,如果沒有答覆然後有什麼錯誤的服務。 至少服務狀態可以在inetrval之後被查詢,而不是客戶端在等待回調,而連接不能被重新建立。 – joblot 2010-07-15 11:47:08