2010-10-22 75 views
3

我需要同步「一個客戶端」更新的數據,並且需要在同一應用程序的「其他客戶端」(另一個房間)上刷新數據。如何在多客戶端應用程序之間同步數據

1 - 哪種做法最好? 我在思考SqlDependency,但應用程序也可以在其他數據庫引擎上運行(我忽略它) 我也想到定時器輪詢更新,但我真的不想定期檢查更改。

有沒有人有這個問題?你是怎麼解決它的?

2 - 另外。何時必須在UI中更新數據而不妨礙其他PC中的人員的工作?

場景: 3 PC使用相同的數據。創建/更新需要同步的記錄(以獲取每臺PC所做的最後更改)。

我希望我清楚自己的情況。

提前致謝。

回答

0

如果你知道你只有2個應用程序實例,那麼你可以使用WCF來完成。當他們想發送更新時,每個客戶端充當另一個客戶端的服務器。

如何處理兩個客戶端正在編輯的數據的更新......這可能會非常棘手。這取決於你的數據類型,如果GUI開發來處理更新和這樣的事情。

+0

對不起,但我認爲你完全不瞭解我。我在幾臺電腦上有相同的應用程序。在同一個應用程序中工作我希望如果operator1更改「用戶的名稱」,更改將反映在operator2和operator3正在工作的應用程序上。我需要將一臺計算機所做的更改與其他計算機同步。 – Andres 2010-10-22 21:11:17

+0

它與跨線程通信相同,例如「gui with worker thread」。您有「服務器通知客戶端」或「客戶端池服務器」。如果您不想池服務器,請使用remoting/wcf/sockets通知客戶端。無論如何,您需要爲您的數據提供某種鎖定(樂觀或悲觀)。基於事件的同步不足以維護數據的完整性。 – 2010-10-23 17:46:20

+0

因此,您正在提出一種模型,在該模型中,需要更改/刷新PC2,PC3和「其他」上的更新數據的變更數據(在PC1中)的通信將使用套接字。我的3個選擇是:1 - 你說的客戶之間的套接字(可能是我會聚集一個小型服務器,向其他客戶端廣播,只是一個想法),2 - 使用sqldependency或類似的東西,3 - 定期輪詢使用一個定時器(不好的選擇)... – Andres 2010-10-24 03:22:48

相關問題