我正在开发一款应该可以在离线和在线模式下工作的iPhone应用程序 在它的在线模式中,它应该将用户输入的所有信息提供给由GWT / GAE支持的Web服务。 在它的离线模式下,它应该在本地存储信息,当连接可用时,将它同步到Web服务。
目前我的计划如下:
问题是 - 我正朝着正确的方向前进吗?实现这个的标准模式是什么?也许有人可以指向一个以类似方式工作的开源应用程序?
我对iPhone编码很陌生,很高兴听到任何建议。
由于
答案 0 :(得分:2)
我认为你们一起模糊了这些问题。
答案 1 :(得分:0)
关于系统设计方向: 首先,如果没有真正的需要,不要创建2个不同的应用程序,一个GWT和其他iPhone 创建一个但写得很好的GWT应用程序。它将脱机工作没问题,并将使用HTML feature -- offline application cache管理您的数据 如果必须创建2个单独的应用程序 至少可以节省你自己的努力而且不要写两次服务器,就好像你使用标准的GWT方法一样,你几乎无法通过独立应用程序与服务器交谈(它是通过HTTP压缩JSON与一些棘手的标题...)或将写东西twise所以请查看GAE支持的RestLet library。
关于与离线/在线切换保持同步的方式: 有几种方法需要考虑,而且所有方法都不完美。因此,当你奉献自己的想法时,你会想到你所期望的......不要成为Microsoft Word,不要试图超越用户。 如果在用例中至少有一个场景需要用户干预来合并更改(并且会有 - 将它带到银行) - 而不是你将为此实现UI - 而不是有充分的理由经常使用它 - 用户会习惯它。因为他开始使用应用程序,所以它会在很短的时间内看到它,因为你需要它来实现一个超级合并逻辑,仅在非常特殊的情况下询问用户......不要这样做。 平衡努力。因为这种代码中的错误会给用户带来的混乱比共同利益要痛苦得多。
所以如何: 一种方式是Do-UnDo方式。 离线时 - 用户按时间顺序保存用户对数据执行操作的日志 一旦连接 - 发送到服务器并执行它们。从服务器到客户端相同。 只要你没有编写每种操作都包含大量数据的Photoshop软件,大多数情况下都能正常工作。 GangOfFour也称为Action Pattern。
另一种方式是源控制方式。 - 版本,甚至可能是锁。非常依赖应用。 DBMS内部有时会将其用于事务实现。
并且总是有一个选项在Ofline时只读: - )
答案 2 :(得分:0)
不知道您是否考虑过使用Sync Framework来管理同步。如果您感兴趣,可以查看开源项目OpenMobster的Sync服务。您可以执行以下同步操作
除此之外,所有修改都会自动跟踪并与云同步。当网络连接断开时,您可以让您的应用离线。它将跟踪任何更改,并在连接返回时自动在后台与云同步。它还提供跨多个设备的iCloud同步
此外,使用推送通知同步云中的修改,因此即使数据存储在本地,数据也始终是最新的。
以下是开源项目的链接:http://openmobster.googlecode.com
以下是iPhone App Sync的链接:http://code.google.com/p/openmobster/wiki/iPhoneSyncApp