我正在制作一个小型的点对点应用程序,它包含一个共同的对象集合。这不是关于传输对象的套接字通信的问题,因为我已对其进行了排序。
首先,我不必担心冲突,因为客户端只能添加到对象集合中。但我正在努力解决这些提示如何协商他们需要相互转移的对象。
我猜这之前已经做了很多次了,并且某处必须有某种同步算法......
有什么想法吗?
更新
我想我问是否有一种方法可以同步而不必遍历每个对等体上的所有对象并检查它们是否存在于另一端
答案 0 :(得分:1)
如果使用实现ObservableCollection
的{{1}}可序列化对象,则可以在对象进行更改时对其进行排队。如果在INotifyPropertyChanged
中保留需要同步的对象,则可以避免队列中的双重条目,但会牺牲线性排序。如果您仔细覆盖HashSet
,或者甚至更好地创建一个返回更强哈希的方法,您可以过滤掉两端均等变化的项目。
编辑:对于初始同步,构建一个数据包,将所有当前对象的生成哈希值列为二进制块。这样交换很快。
答案 1 :(得分:0)
为每个对象分配一个guid,当你合并它们时,你没有区别它们的问题。或者我误解了你的问题?