我目前正在建立我的核心数据模型,该模型我想之间的同步Mac和版本的我应用程序。

我将使用Bonjour对发现的设备,等等,但我有一个问题有关的数据同步问题的一部分。

到目前为止,我已经增加了一个UID和修改时间戳到每个物体,将参与同步,这样我应该可以匹配对象和检测哪些有改变。

是否有任何良好的联系、资源有关于编写同步码对于这类情况,即同步的记录之间的两个实例中的一个模式?

同步的问题有好几个边缘案例已经解决了许多次人们在过去,所以我希望找到一些信息上的问题,但所有我能找到的链接苹果的SyncServices(其中不存在iPhone上)以及一些MS同步的技术。

我真的在寻找一般理论上这样我就可以实现它自己,不一定有现成的解决方案。

有帮助吗?

解决方案

本编说明书可能会有帮助,但它很难阅读,显然偏向该.

我不得不执行这一任务教练,所以这几个想法:

修改标志是不够的,时间戳并没有真正提供更多的信息。通常,我的对象是在一些国家:

  • 没有
  • 新的
  • 已删除
  • 修改

下面的过渡发生时的目的是修改:

  • 没有->的修改
  • 新>新的
  • 删除->(不应该发生)
  • 修改->的修改

和下面的当删除:

  • 没有->删除
  • 新>实际上删除(它可以从存储)
  • 删除->(不应该发生)
  • 修改->删除

在同步的时候,该装置第发送到桌面上的所有对象有状况不同于没有。桌面用户询问为解决冲突,如果这些状态!= 没有在其一侧。在任何情况下,对象进入状态,没有对该设备,或者是删除储存,如果它的国家已被删除。

然后,桌面发其自己的改变的装置。有没有冲突可能的,因为所有对象都是在国家没有关的设备。目的在桌面上进入状态没有或是删除储存,以及同步。

有两种类型的可能的冲突,取决于设备/桌面上的各国:

  • 修改/删除。如果用户选择信任的装置,桌面上的对象是替换装置中的一个;其他桌面什么也不做,并保持删除的状态中,使对象将是从设备中删除在第2阶段。
  • 删除/修改:如果设备的胜利,对象是实际上删除从桌面上。否则,目的进入状态的新的桌面上,以使它恢复对该设备在第2阶段。
  • 删除/删除:咄.只要删除它从储存。
  • 修/修改:用户决定哪些值,以保持,也许在场的基础。该国停留的修改,在桌面上,以使这些选择的传播回该设备在第2阶段。

一些冲突可以避免的,如果修改后的国家保持为每个领域,因此,例如象与修改问题上的设备和修改摘要在桌面上不会触发冲突。

你可以看看码的任务教练的一个例子(SVN库SourceForge,它既有的桌面应用程序在Python和iPhone应用程序).实际上,在这种情况下,我决定使用更简单的方法;我不要跟踪国家在桌面上。后阶段1(装置的桌面上),我只是做一个完整的替代物上的设备与那些在桌面上。因此,没有任何冲突(设备总是获胜).

显然,这只是工作之间的两个固定装置;如果你想要同步与几个电话/桌面应用程序,你必须指定一个独特的ID每和保持不同的国家对不同的设备/应用程序。这可能开始变得毛。

禾田

其他提示

马库斯Zarra创建了一个名为 ZSync 以简化synching iPhone / iPad应用到Mac对应框架。看看它,它可以帮助解决这个问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top