2009-07-22 51 views
1

我正在製作一個小對等應用程序,它包含一個通用的對象集合。這不是一個關於傳輸對象的套接字通信的問題,因爲我已經對它進行了排序。多個客戶端之間的對象同步算法

首先我不必擔心衝突,因爲客戶端只能添加到對象集合中。但是我正在努力解決我的問題,如何通過談判來確定他們需要向對方轉移哪些對象。

我猜想這之前已經做過很多次,而且必須有某種同步算法有某處的......

任何想法?

UPDATE:

我想我詢問是否有一種方法,而無需通過每個對等點的所有對象具有周期同步,並檢查它們的存在,在另一端

回答

1

如果您使用ObservableCollection可執行INotifyPropertyChanged的可序列化對象,則可以對對象進行排隊,以便在更改對象時進行傳輸。如果您將需要同步的對象保留在HashSet中,則可以避免線性排序爲代價的隊列中的重複條目。如果您仔細覆蓋GetHashCode(),或者甚至更好地創建一個返回較強散列的方法,則可以篩選出兩端均等更改的項目。

編輯:對於初始同步,構建一個數據包,將所有當前對象的生成散列列​​爲二進制塊。這樣交換很快。

0

分配一個GUID給每個對象,當你合併它們時,你不會將它們區分開來。還是我誤解你的問題?

+0

主要問題是,當我連接到另一個同伴時,是否必須遍歷每一個對象以檢查它們是否存在於兩個對象上? – Tim 2009-07-23 00:04:46

+0

是的,你必須通過較小的集合。 如果你可以把你正在搜索的字典收集,檢查可以從O(n)到O(1)。 – 2009-07-23 00:29:36

相關問題