2010-11-03 31 views
1

我有一个旧的Java EE web应用程序,它使用数据库来存储用户从应用程序输入的数据。我现在正在设计一个iPhone应用程序,它将允许用户在iPhone上输入相同的信息,并通过Restful Web服务将数据提交到现有数据库。如何安全地同步来自iPhone应用程序的远程数据库上的数据?

在iPhone我希望让用户能够输入数据,即使他们没有连接到网络,一旦网络连接可用,系统将自动同步到服务器。为了达到这个目的,我计划使用CoreData在手机上本地存储记录。

用例,我挣扎是这样的;如果用户在离线模式下输入数据,然后上线(网络应用程序)并在手机上传离线数据前输入数据,如何防止手机盲目覆盖网络上输入的数据。我希望能够向用户显示一条错误消息,指出在线编辑发生之前,他们需要提前进行脱机更改。

我敢肯定,这是一个用例这可能是常见的。有谁知道处理这个问题的任何设计模式?

谢谢。

回答

0

你可以有你的Web服务提供了通过iOS应用跟踪的“版本”。例如,行数的md5sum或联机数据库中的最后一行。它基本上是一个版本控制系统,因此您的移动应用程序可以检查并查看其数据版本是否与Web服务相匹配。您的移动应用连接到互联网,检查Web应用中的数据版本,并将其与最新的已知版本进行比较。然后合并成为一个问题,但这似乎超出了你的问题的范围。

0

看来,你有多个用户/具有读/写访问和分布式数据库,其中特定设备有限制的内存和CPU处理能力,在不同的操作系统上运行,也是离线的时间一个不确定量的装置。

这可能是你能得到的最坏的情况;)

除非你能够通过严格限制使用的情况下降低了复杂性,要​​求同步数据库,并保持数据在逻辑上正确的是一个非凡的复杂的挑战。

对于相关的进一步信息,你可以看看CouchDBTouchDBRIAKRIAK for mobilesimperiumapigeecloudant (for mobile) - 这可能提供解决方案。

注意,并不是所有的解决方案实际上提供的设备上(分布式)数据库。 TouchDB会和RIAK至少谈论它。

+0

+1最糟糕的场景:) – Swissdude 2013-07-12 13:18:22

相关问题