如何安全地同步来自iPhone应用程序的远程数据库上的数据?
我有一个旧的Java EE Web应用程序,它使用数据库来存储用户从应用程序输入的数据。 我现在正在设计一个iPhone应用程序,它将允许用户在iPhone上输入相同的信息,并通过Restful Web服务将数据提交到现有数据库。
在iPhone上,我希望用户能够输入数据,即使它们没有连接到网络,并在网络连接可用时自动同步到服务器。 为了达到这个目的,我计划使用CoreData在手机上本地存储记录。
我正在努力的用例是这样的; 如果用户在离线模式下输入数据,然后上线(网络应用程序)并在手机上传离线数据前输入数据,如何防止手机盲目覆盖网络上输入的数据。 我希望能够向用户显示一条错误消息,指出在线编辑发生之前,他们需要提前进行脱机更改。
我确信这是一个用例,可能很常见。 有谁知道处理这个问题的任何设计模式?
谢谢。
您可以让您的Web服务提供iOS应用程序跟踪的“版本”。 例如,行数的md5sum或联机数据库中的最后一行。 它基本上是一个版本控制系统,因此您的移动应用程序可以检查并查看其数据版本是否与Web服务相匹配。 您的移动应用连接到互联网,检查Web应用中的数据版本,并将其与最新的已知版本进行比较。 然后合并成为一个问题,但这似乎超出了你的问题的范围。
看起来,您有多个具有读/写访问权限和分布式数据库的用户/设备,其中特定设备具有有限的内存和CPU功率,在不同的操作系统上运行,并且也处于脱机状态,并且时间不确定。
这可能是你可以得到的最糟糕的场景;)
除非通过严格限制用例来降低复杂性,否则同步数据库和保持数据在逻辑上正确的要求是一项非常复杂的挑战。
有关更多信息,你可以看看CouchDB,TouchDB,RIAK,RIAK移动,simperium,apigee,cloudant(移动) - 这可能会提供解决方案。
请注意,并非所有解决方案实际上都在设备上提供(分布式)数据库。 TouchDB会和RIAK至少谈论它。
链接地址: http://www.djcxy.com/p/62129.html上一篇: How do I safely synchronize data on a remote database from an iPhone app?
下一篇: Prevent maven module from being built with no activated profile