angularjs – 在PhoneGap中与服务器同步数据的策略
我开始我的第一个PhoneGap项目,使用AngularJS。它是一个数据库驱动的应用程序,使用REST API作为后端。首先,我不会在本地存储数据,所以它不会做很多没有互联网。
但是,我最终希望它在本地存储数据,并在互联网可用时进行同步,因为我知道我个人禁用在我的手机上的Internet连接(飞机,低电量)或没有酒吧。我想知道,如果你能指向我这种类型的同步的一些好的资源。一些推荐的图书馆?或者也许有一些讨论的陷阱和如何环游它们。我有谷歌,但我想现在,我不知道的问题要问。 此外,我的意图,建立它依赖互联网,然后添加同步….这是一个好主意,还是我在脚射击自己?我需要从一开始就构建它的同步吗? 我有人建议将应用程序构建为本地首先,而不是只有Internet的部分第一,它有一定的逻辑。远程存储对我来说很重要。我知道决定有很多关于我的应用程序的目标,但从建立这一点,最终的目标是本地存储互联网存储和双向同步,什么会更容易?还是甚至有所作为? 首先,我想使用UUID,而不是连续整数主键。我还想到了为每个设备分配一个ID,它在它生成的任何键上加上前缀,但这似乎很微妙。任何人使用这两种技术?想法? 我想我需要一个好的系统来告诉哪些数据已同步。在客户端,我想任何创建/编辑的记录,可以标记为同步。但在服务器端,你有多个客户端,所以这不会工作。我想你可以有一个last_updated时间戳,并同步所有更新同步上次成功同步。 在多个地方编辑的记录怎么样?如果两个客户端编辑,然后想要同步,你对合并有一些歧义,就像在git或其他版本控制系统中合并分支时。你如何处理呢?我想git它通过存储每个提交的diffs。我想你可以存储diffs?我越想这个,它更复杂的声音。我是过度思考还是不足的思考? 客户端存储怎么样?我想过SQLite,或PhoneGap本地存储的东西(http://docs.phonegap.com/en/1.2.0/phonegap_storage_storage.md.html)。建议?同步将通过一个REST API,交换JSON,所以我想一些实际存储数据为JSON,或者一些类似JSON的,很容易转换,会很好。另一方面,如果我要交换某种数据差异格式,也许这是我需要存储?
让我根据我对同步部分的经验提供您的问题的答案,因为我没有PhoneGap的足够的经验,所以将跳过有关PhoneGap本地存储和SQLite的问题。
有许多开源项目用于将PhoneGap应用程序与远程服务器同步。但是你可能需要根据自己的需要调整它们,或者实现自己的同步功能。下面我列出了一些开源项目。你必须知道他们,如果你搜索网。 > PhoneGap sync plugin 此外,您可以考虑其他选项,但这取决于您的服务器端: > Microsoft Sync Framework Toolkit(Html5示例可用)
我相信同步功能更像是一个额外的模块,不应该紧紧地与其余的业务逻辑耦合。一旦你开始考虑测试同步的策略,你会发现,如果你的同步工具与主代码是分离的,测试会更容易。 我认为您可以使用所需的最低功能尽快启动您的应用,而无需同步。但你最好考虑你的架构和你提前添加同步设施的方式。
这取决于您的项目规格,特别是您的服务器端。例如,Azure移动服务仅允许主键的整数类型。虽然唯一标识符作为主键在分布式系统中非常方便(也有一些缺点)。 与分配设备ID相关 – 我不知道我理解这一点,虽然我不知道你的项目细节。看看我们的系统中使用的同步算法(bidirectional sync using REST between multiple Android clients and central SQL Server)。
这是您需要考虑如何处理您的系统中的冲突解决方案的地方。 如果您的系统中的冲突概率很高,例如用户将经常更改相同的记录。然后,您最好跟踪记录的哪些字段(列)已在同步中修改,然后一旦检测到冲突: >迭代通过服务器端记录的每个修改字段冲突>将服务器记录的每个修改字段与客户机的相关字段进行比较。>如果客户端字段未被修改,则没有冲突,因此只需使用服务器字段覆盖它。>否则会出现冲突,请将两个字段的内容保存到报表的临时位置>在同步结束时产生冲突中的记录的报告。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |