如何从iPhone应用程序安全地同步远程数据库上的数据?

如何从iPhone应用程序安全地同步远程数据库上的数据?,iphone,core-data,Iphone,Core Data,我有一个旧的JavaEEWeb应用程序,它使用数据库存储用户从应用程序输入的数据。我现在正在设计一个iPhone应用程序,允许用户在iPhone上输入相同的信息,并通过Restful web服务将数据提交到现有数据库 在iPhone上,我希望允许用户即使未连接到网络也能输入数据,并在网络连接可用时自动将数据同步到服务器。为了实现这一点,我计划使用CoreData在手机上本地存储记录 我正在努力解决的用例是:;如果用户在脱机模式下输入数据,然后进入联机(web app)并在手机上载脱机数据之前输入

我有一个旧的JavaEEWeb应用程序,它使用数据库存储用户从应用程序输入的数据。我现在正在设计一个iPhone应用程序,允许用户在iPhone上输入相同的信息,并通过Restful web服务将数据提交到现有数据库

在iPhone上,我希望允许用户即使未连接到网络也能输入数据,并在网络连接可用时自动将数据同步到服务器。为了实现这一点,我计划使用CoreData在手机上本地存储记录

我正在努力解决的用例是:;如果用户在脱机模式下输入数据,然后进入联机(web app)并在手机上载脱机数据之前输入数据,我如何防止手机盲目覆盖在web上输入的数据。我希望能够向用户显示一个错误,说明发生了在线编辑,在推送离线更改之前,他们需要进行拉式编辑

我相信这是一个很常见的用例。是否有人知道任何处理此问题的设计模式


谢谢。

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

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

似乎,您有多个具有读/写访问权限的用户/设备和一个分布式数据库,其中特定设备的内存和CPU能力受到限制,在不同的操作系统上运行,并且脱机时间不确定

这可能是最糟糕的情况;)

除非您能够通过严格限制用例来降低复杂性,否则同步数据库和保持数据逻辑正确的要求是一个非常复杂的挑战

有关更多信息,您可以查看、、-以获得解决方案


请注意,并非所有解决方案都在设备上提供(分布式)数据库。TouchDB会的,RIAK至少谈到了这一点。

看起来,您有多个具有读/写访问权限的用户/设备和一个分布式数据库,其中特定设备的内存和CPU能力受到限制,在不同的操作系统上运行,并且离线时间不确定

这可能是最糟糕的情况;)

除非您能够通过严格限制用例来降低复杂性,否则同步数据库和保持数据逻辑正确的要求是一个非常复杂的挑战

有关更多信息,您可以查看、、-以获得解决方案

请注意,并非所有解决方案都在设备上提供(分布式)数据库。TouchDB会的,RIAK至少谈到了这一点