我想知道是否有任何设计模式、文章或其他信息,用于解决在多个设备之间同步设置的问题。
比如一个网站、一个iPhone应用和一个iPad应用;未来可能还会有更多设备。
如果您需要更多信息才能正确回答,请告诉我,我可以详细说明问题。非常感谢您提供的任何信息。
我想知道是否有任何设计模式、文章或其他信息,用于解决在多个设备之间同步设置的问题。
比如一个网站、一个iPhone应用和一个iPad应用;未来可能还会有更多设备。
如果您需要更多信息才能正确回答,请告诉我,我可以详细说明问题。非常感谢您提供的任何信息。
如果以下内容过于普遍,请原谅,我试图保持高层次以便符合您的问题。我不确定您正在寻找的是否可以称为“设计模式”。听起来您正在寻找一种同步范例/系统。请注意,我在此回复中的假设是您需要应用程序具备在线和离线功能(因为您明确提到了同步)。如果我错了,请告诉我。
特别是,您可能正在寻找的通常使用两个东西来实现:1)“分布式”数据库(适用于客户端应用程序(如移动应用程序)的离线工作,以及任何服务器上),2)同步和冲突解决机制。
这方面非常好的一个例子就是源代码管理工具Git。Git具备以上两种特征。首先,它使用一个可分发的数据库(例如一个git项目的文件系统),该项目可以从一个开发人员的工作站克隆到另一个工作站并进行独立操作。其次,它有一种同步和冲突解决机制。也就是说,如果我尝试与同事的工作站同步(例如拉取更改),她的代码与我的代码之间的差异可能会被合并(自动或手动)。
另一个例子,也许与您的应用程序更相关的是Evernote。如果我没有弄错,Evernote使用同样的模式(平面文件数据库)来同步文档,并拥有桌面客户端、网站和移动客户端。
这并不是说您需要使用平面文件数据库。您也可以轻松地使用关系数据库或其他数据库。而且,根据您尝试存储和同步的数据类型,您可能可以采用非常简单的冲突解决方法。(例如,如果您只是存储状态更新、投票计数等,也许您只需选择数据库中最新的条目。)
简而言之,我提到的工具似乎遵循以下工作流程: