这个问题有点笼统,所以为了帮助缩小焦点,我将分享我目前激发这个问题的设置。我有一个运行 RESTful API 的 LAMP Web 服务。我们有两种客户端实现:一种基于浏览器的 javascript 客户端(本地存储存储)和一种基于 iOS 的客户端(核心数据存储)。显然这两个客户端存储数据的方式非常不同,但数据本身需要尽可能多地与远程服务器保持双向同步。
目前,我们的“同步”过程有点愚蠢(例如,非智能)。从概念上讲,它看起来像:
- 客户端定期向服务器询问所有最新数据。
- 服务器发送远程数据,这会覆盖客户端存储中的当前本地数据集。
- 在此之后的任何本地创建/更新/删除都被视为黄金,并立即发送到服务器。
数据本身以相关方式存储,并由客户端用户偶尔更新。在我的具体案例中,客户端并不太关心关系本身(这就是我们现在可以在浏览器客户端中使用本地存储的原因)。
显然这不是真正的同步。我想转移到一个系统,从概念上讲,最近更改的“差异”会定期发送到服务器,服务器会发回它知道的最新更改的“差异”。似乎很难达到这一点,但也许我只是不太了解这个问题。
REST感觉是一个好的开始,但 REST 只讨论两个数据存储相互通信的方式,而不是数据本身如何在它们之间同步。(这个同步过程由每个商店的实现者决定。)实现这个过程的最佳方式是什么?是否有一套现代的编程设计模式适用于为这个问题提供特定的解决方案?如果可能的话,我最感兴趣的是一种通用的(与技术无关的)方法......但是如果存在特定的框架,它们也会很有用。