2008-08-25 61 views
-1

假設我有一個需要持久連接到服務器的應用程序。如何實現連接/重新連接邏輯,以便我不浪費資源(功率/帶寬),並在連接出現/改善時快速重新連接時間?如果我只使用連接通知,則可能會遇到與本地網絡無關的問題。通過連接通知重新連接邏輯

獎勵如果你能告訴我C#版本。

回答

1

這是一個非常「巨大」的問題。我可以說我們使用O/R映射器,並且每個對數據庫的「查詢」都需要一個名爲PersistenceBroker的對象。此類負責所有與連接,身份驗證等相關的數據庫工作。

我們編寫了一個PersistenceBrokerFactory.GetCurrentBroker(),它返回「工作」代理。如果數據庫突然失敗(無論出於何種原因),CONN對象將在30secs(或您定義的任何內容)之後「timeout()」。如果發生這種情況,我們會向用戶顯示他/她已脫機並顯示重新連接按鈕。

另一方面,爲了提供用戶連接的可視指示,我們有一個線程在後臺運行,每隔15秒檢查一次Internet連接。我們做1 ping到google.com。 ;)如果失敗了,我們認爲互聯網不知何故中斷,我們更新狀態欄。

如果您願意,我可以向您顯示網絡健康狀況監視器的所有代碼。我從谷歌和其他一些我自己做了一些:)