同步的核心数据模型之间的Mac和iPhone
-
18-09-2019 - |
题
我目前正在建立我的核心数据模型,该模型我想之间的同步Mac和版本的我应用程序。
我将使用Bonjour对发现的设备,等等,但我有一个问题有关的数据同步问题的一部分。
到目前为止,我已经增加了一个UID和修改时间戳到每个物体,将参与同步,这样我应该可以匹配对象和检测哪些有改变。
是否有任何良好的联系、资源有关于编写同步码对于这类情况,即同步的记录之间的两个实例中的一个模式?
同步的问题有好几个边缘案例已经解决了许多次人们在过去,所以我希望找到一些信息上的问题,但所有我能找到的链接苹果的SyncServices(其中不存在iPhone上)以及一些MS同步的技术。
我真的在寻找一般理论上这样我就可以实现它自己,不一定有现成的解决方案。
解决方案
本编说明书可能会有帮助,但它很难阅读,显然偏向该.
我不得不执行这一任务教练,所以这几个想法:
修改标志是不够的,时间戳并没有真正提供更多的信息。通常,我的对象是在一些国家:
- 没有
- 新的
- 已删除
- 修改
下面的过渡发生时的目的是修改:
- 没有->的修改
- 新>新的
- 删除->(不应该发生)
- 修改->的修改
和下面的当删除:
- 没有->删除
- 新>实际上删除(它可以从存储)
- 删除->(不应该发生)
- 修改->删除
在同步的时候,该装置第发送到桌面上的所有对象有状况不同于没有。桌面用户询问为解决冲突,如果这些状态!= 没有在其一侧。在任何情况下,对象进入状态,没有对该设备,或者是删除储存,如果它的国家已被删除。
然后,桌面发其自己的改变的装置。有没有冲突可能的,因为所有对象都是在国家没有关的设备。目的在桌面上进入状态没有或是删除储存,以及同步。
有两种类型的可能的冲突,取决于设备/桌面上的各国:
- 修改/删除。如果用户选择信任的装置,桌面上的对象是替换装置中的一个;其他桌面什么也不做,并保持删除的状态中,使对象将是从设备中删除在第2阶段。
- 删除/修改:如果设备的胜利,对象是实际上删除从桌面上。否则,目的进入状态的新的桌面上,以使它恢复对该设备在第2阶段。
- 删除/删除:咄.只要删除它从储存。
- 修/修改:用户决定哪些值,以保持,也许在场的基础。该国停留的修改,在桌面上,以使这些选择的传播回该设备在第2阶段。
一些冲突可以避免的,如果修改后的国家保持为每个领域,因此,例如象与修改问题上的设备和修改摘要在桌面上不会触发冲突。
你可以看看码的任务教练的一个例子(SVN库SourceForge,它既有的桌面应用程序在Python和iPhone应用程序).实际上,在这种情况下,我决定使用更简单的方法;我不要跟踪国家在桌面上。后阶段1(装置的桌面上),我只是做一个完整的替代物上的设备与那些在桌面上。因此,没有任何冲突(设备总是获胜).
显然,这只是工作之间的两个固定装置;如果你想要同步与几个电话/桌面应用程序,你必须指定一个独特的ID每和保持不同的国家对不同的设备/应用程序。这可能开始变得毛。
禾田
其他提示
马库斯Zarra创建了一个名为 ZSync 以简化synching iPhone / iPad应用到Mac对应框架。看看它,它可以帮助解决这个问题。