我們正在開發一個Windows Forms應用程序,該應用程序將安裝在約1,000名員工個人電腦上。用戶可以同時運行應用程序的多個實例。客戶端都在一個內部網上。Windows Forms&WCF - 客戶端應用程序通信
應用程序中的更改可能會導致數據庫記錄更改,而這些更改必須傳遞給其他客戶端,以便更新其UI。
我們的團隊已經談到了兩種不同的方法:
1.多播數據包
源客戶端修改記錄,然後與東西已經改變有效載荷發出一個組播數據包。其他客戶端接收並獲取指定的數據。我們需要說明數據包未收到時的情況,並回退到主動檢索數據。
我現在的問題是客戶如何知道它沒有收到數據包? (不知道你不知道的是什麼)這會將我們帶到某種事件日誌中,並在數據庫中添加時間戳,並且UI控件會跟蹤它們上次更新的時間。他們開始關注,檢查他們的時間戳,並根據需要進行更新。
其他人表示,UI元素在每次焦點時都會重新加載(思考Outlook中的模式,將控件帶到CAB的堆棧工作區前端)。多點傳送是爲了更新當前上下文已經改變的客戶端。如果他們錯過了,他們會使用陳舊的數據,直到他們改變模式並回來。
2. WCF和回調
客戶註冊在TCP綁定回調WCF合同。與此有關的主要技術問題是服務器維護許多開放式套接字。我們已經閱讀了它在傳統意義上是如何不公開的,它最多可以休眠90秒,然後在那個時候重新建立。我們還了解了Windows 2003 Server計算機可以處理的最大打開連接數以及如何在註冊表中修改這些連接。
如果我們有1000個打開的套接字連接到服務器,這是否會崩潰?
如果有人遇到過這種情況,並嘗試或評估過WCF方法,我們很樂意聽到它。
您觸及了我們討論過並正在考慮的許多事情,例如批處理更新。您強調我沒有完全描述環境,但它在地理位置相鄰的建築物中的同一物理LAN上大約有1,000個用戶。數據沒有跨越多個垂直區域,所有的用戶都在查看相同的數據,只有一些用戶可以編輯項目,大多數用戶不能,例外是個人組織模塊。我認爲你的答案有幫助,所以+1,但我會看看是否有人試過這個,並知道任何性能/資源問題。謝謝。 – blu 2009-07-17 18:38:07
太好了。事實上,我很想知道這個結果;至少可以做任何概念驗證。博客(提示,提示)對你來說是件好事。 – 2009-07-17 18:50:02