eim*_*hat 31 synchronization angularjs cordova
我正在使用AngularJS开始我的第一个PhoneGap项目.它是一个数据库驱动的应用程序,使用REST API作为后端.首先,我根本不打算在本地存储数据,因此没有Internet就不会有太大的作用.
但是,我最终希望它能在本地存储数据,并在互联网可用时同步,因为我知道我个人有时会禁用手机上的互联网连接(飞机,电池电量不足),或者没有酒吧.我想知道你是否可以指出我为这种类型的同步提供一些好的资源.一些推荐的库?或者也许是对陷阱的讨论以及如何环绕它们.我用谷歌搜索了一下,但我想现在,我不知道要问的问题.
此外,我打算先建立互联网依赖,然后添加同步....这是一个好主意,还是我在脚下拍摄自己?我是否需要从一开始就建立同步?
我有人建议首先将应用程序构建为仅限本地的应用程序,而不是仅限于Internet的部分,它具有一定的逻辑性.远程存储对我来说很重要.我知道决定与我的应用目标有很大关系,但从建立这个目标的角度来看,最终的目标是本地存储+互联网存储,以及双向同步,哪些更容易?或者它甚至有所作为?
首先,我正在考虑使用UUID,而不是顺序整数主键.我还想过为每个设备分配一个ID,该ID在它生成的任何键上都有前缀,但这看起来很精致.有人使用过哪种技术?思考?
我想我需要一个好的系统来判断哪些数据已被同步.在客户端,我猜任何创建/编辑的记录都可以标记为同步.但是在服务器端,您有多个客户端,因此不起作用.我想你可以有一个last_updated时间戳,并同步所有更新同步上次成功同步.
在多个地方编辑的记录怎么样?如果两个客户端编辑,然后想要同步,则有一些关于合并的歧义,比如在git或其他版本控制系统中合并分支时.你怎么处理?我想git通过存储每个提交的差异来做到这一点.我想你可以存储差异?我想的越多,听起来就越复杂.我是在过度思考还是在思考它?
客户端存储怎么样?我已经考虑过SQLite或PhoneGap本地存储(http://docs.phonegap.com/en/1.2.0/phonegap_storage_storage.md.html).建议?同步将通过REST API,交换JSON,所以我在想一些实际上将数据存储为JSON的东西,或者类似JSON的东西,它很容易转换,会很好.另一方面,如果我不得不交换某种数据差异格式,也许这就是我需要存储的东西?
Hav*_*vrl 26
让我根据我与同步部分相关的经验提供您的问题的答案,因为我没有足够的PhoneGap经验,所以将跳过有关PhoneGap本地存储v SQLite的问题.
我想知道你是否可以指出我为这种类型的同步提供一些好的资源.一些推荐的库?
有许多用于将PhoneGap应用程序与远程服务器同步的开源项目.但您可能需要根据自己的需要调整它们或实现自己的同步功能.下面我列出了一些开源项目.如果你在网上搜索,你一定已经知道了.
此外,您可能会考虑其他选项,但这取决于您的服务器端:
此外,我打算先建立互联网依赖,然后添加同步....这是一个好主意,还是我在脚下拍摄自己?我是否需要从一开始就建立同步?
我相信同步功能更像是一个额外的模块,不应该与其他业务逻辑紧密结合.一旦开始考虑测试同步策略,您就会发现如果您的同步工具与主代码分离,将更容易测试.
我认为您可以使用最低要求的功能尽快启动您的应用程序而无需同步.但您最好考虑一下您的体系结构以及提前添加同步工具的方式.
首先,我正在考虑使用UUID,而不是顺序整数主键.我还想过为每个设备分配一个ID,该ID在它生成的任何键上都有前缀,但这看起来很精致.有人使用过哪种技术?思考?
这取决于您的项目规范,特别是您的服务器端.例如,Azure移动服务仅允许主键的整数类型.虽然作为主键的唯一标识符在分布式系统中非常方便(但也有一些缺点).
与分配设备ID相关 - 虽然我不了解您的项目细节,但我不确定这一点.看看我们系统中使用的同步算法(在多个Android客户端和中央SQL Server之间使用REST进行双向同步).
在多个地方编辑的记录怎么样?如果两个客户端编辑,然后想要同步,则有一些关于合并的歧义,比如在git或其他版本控制系统中合并分支时.你怎么处理?我想git通过存储每个提交的差异来做到这一点.我想你可以存储差异?我想的越多,听起来就越复杂.我是在过度思考还是在思考它?
您需要考虑如何处理系统中的冲突解决方案.
如果系统中的冲突概率很高,例如用户将经常更改相同的记录.然后,您最好跟踪同步中已修改记录的哪些字段(列),然后在检测到冲突后:
归档时间: |
|
查看次数: |
21027 次 |
最近记录: |