是否有任何配置同步的设计模式

时间:2010-12-22 14:24:08

标签: design-patterns application-settings

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

说一个网站,一个iPhone应用程序和一个iPad应用程序;随着未来设备的出现。

任何信息都将不胜感激。如果您需要更多信息,请正确回答,请说明,我可以详细说明问题。

2 个答案:

答案 0 :(得分:2)

您可以按照此link进行Sync ML标准。这可以为您提供扩展框架的模板,以容纳更多尚未处理的数据和设置This - 详细介绍开源同步框架

答案 1 :(得分:1)

请原谅我,如果以下内容看起来过于笼统,但我试图保持高水平,以使其符合您的问题。我不知道你所寻找的东西本身是否会被称为“设计模式”。听起来你正在寻找同步范例/系统。请注意,我在此回复中的假设是您需要为您的应用程序提供在线和离线功能(因为您明确提到同步。)如果我弄错了,请告诉我。

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

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

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

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

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

  1. 在客户端应用程序上启动会话时,通过联机并提取新数据来同步或“更新”客户端。您可以在此处识别和解决客户端上的数据与服务器或“云”上的数据之间的冲突。
  2. 在客户端上“离线”编辑或创建数据,无论是网站,移动应用程序等。
  3. 通过联机并推送您更改的数据来同步或“更新”云