有哪些用于配置同步的设计模式?

6

我想知道是否有任何设计模式、文章或其他信息,用于解决在多个设备之间同步设置的问题。

比如一个网站、一个iPhone应用和一个iPad应用;未来可能还会有更多设备。

如果您需要更多信息才能正确回答,请告诉我,我可以详细说明问题。非常感谢您提供的任何信息。


你是指既可以在线使用,也可以在各种设备上作为本地应用程序使用的应用程序设置吗?如果不是,请问你所说的“设置”是什么类型的?如果是这样,那么它是什么类型的应用程序,你只想同步“设置”(假定是一些简单数据对象的少量)还是更复杂的应用程序数据? - Ergwun
是的,应用程序设置,如多个不同事物的“喜欢”和“不喜欢”,都是相当简单的对象字符串。这是一款消费者应用程序,可在各种在线和离线设备上使用。有点像MobileMe或甚至Google Sync。无法保证任何一个设备每天都在线并同步,而且每个设备上都会添加和删除内容。 - Dan
2个回答

2
您可以点击这个 链接 了解Sync ML标准。这可以为您提供一个模板,以扩展框架,以适应更多尚未处理的数据和设置。这个 - 给出了一个开源同步框架的详细信息。

OpenSync虽然是为更具体的角色而设计的,但在概念上足够通用,可以验证我的想法。谢谢。由于复杂性和依赖关系,我不确定是否可以使用代码本身,但阅读它是一个理想的事情。谢谢,你是赢家 :-) - Dan

1

如果以下内容过于普遍,请原谅,我试图保持高层次以便符合您的问题。我不确定您正在寻找的是否可以称为“设计模式”。听起来您正在寻找一种同步范例/系统。请注意,我在此回复中的假设是您需要应用程序具备在线和离线功能(因为您明确提到了同步)。如果我错了,请告诉我。

特别是,您可能正在寻找的通常使用两个东西来实现:1)“分布式”数据库(适用于客户端应用程序(如移动应用程序)的离线工作,以及任何服务器上),2)同步和冲突解决机制。

这方面非常好的一个例子就是源代码管理工具Git。Git具备以上两种特征。首先,它使用一个可分发的数据库(例如一个git项目的文件系统),该项目可以从一个开发人员的工作站克隆到另一个工作站并进行独立操作。其次,它有一种同步和冲突解决机制。也就是说,如果我尝试与同事的工作站同步(例如拉取更改),她的代码与我的代码之间的差异可能会被合并(自动或手动)。

另一个例子,也许与您的应用程序更相关的是Evernote。如果我没有弄错,Evernote使用同样的模式(平面文件数据库)来同步文档,并拥有桌面客户端、网站和移动客户端。

这并不是说您需要使用平面文件数据库。您也可以轻松地使用关系数据库或其他数据库。而且,根据您尝试存储和同步的数据类型,您可能可以采用非常简单的冲突解决方法。(例如,如果您只是存储状态更新、投票计数等,也许您只需选择数据库中最新的条目。)

简而言之,我提到的工具似乎遵循以下工作流程:

  1. 在客户端应用程序上启动会话时,通过在线方式同步或“更新”客户端,获取新数据。这是您识别和解决客户端上的数据与服务器或“云”上的数据之间冲突的地方。
  2. 在客户端上“离线”编辑或创建数据,无论是网站、移动应用程序等。
  3. 通过在线方式同步或“更新”云,将您更改的数据推送到云端。

完全正确。但我正在寻找一个系统设计,以实现您所提到的内容;无论是“模式”还是链接到讨论实现此类系统的各种方法及其相关优缺点的文章。您知道有什么信息或任何地方可以找到这些信息吗? - Dan
我应该补充一下,我已经花了一些时间在这个问题上,并且在网上搜索了一番,但是没有找到任何答案。不过,我有几个可能的解决方案,但希望在这个领域拥有更多经验并已经解决了这个问题的人能够验证我的学习成果或者提出我还没有想到的方法。 - Dan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接