代码之家  ›  专栏  ›  技术社区  ›  reflog

保持iPhone应用程序与GWT应用程序同步

  •  5
  • reflog  · 技术社区  · 16 年前

    我正在开发一款iPhone应用程序,它可以在离线和在线模式下工作。
    在在线模式下,它应该将用户输入的所有信息提供给GWT/GAE支持的Web服务。 在离线模式下,它应该在本地存储信息,当连接可用时,将其同步到Web服务。

    目前我的计划如下:

    1. 使用ProtoBuffers在应用程序和WebService之间提供连接,以实现高效的有线通信
    2. 使用核心数据处理本地数据库
    3. 轮询网络状态,并在可用时同步数据库,并保持某种本地DB到远程DB密钥同步。

    问题是-我的方向对吗?实现这一点的标准模式是什么?也许有人能给我指出一个以类似方式工作的开源应用程序?

    我对iPhone编码很陌生,很高兴听到任何建议。

    谢谢

    3 回复  |  直到 14 年前
        1
  •  0
  •   Boris Daich    16 年前

    关于系统设计方向: 首先,如果没有真正的需求,不要创建两个不同的应用程序,一个是GWT,另一个是iPhone。 创建一个写得很好的GWT应用程序。它将离线工作,没有问题,并将管理您的数据使用 HTML feature -- offline application cache 如果必须创建两个单独的应用程序 至少要省力,不要把服务器写两次,就好像你用标准的GWT软件一样,你几乎无法从独立的应用程序与服务器对话(它是通过HTTP压缩JSON的,有一些棘手的头…)或者写一些twise的东西,所以请看 RestLet library 它得到了GAE的大力支持。

    关于与脱机/联机切换保持同步的方法: 有几条围裙需要考虑,它们都不完美。所以当你同意你的要求时,想想你的期望…不要做微软的Word。不要试图胜过用户。 如果在用例中至少有一个场景需要用户干预来合并更改(并且会有——把它带到银行)——那么您将为此拥有实现UI——而不是经常使用它——那么用户将习惯它。从他开始使用这个应用程序后不久,它会更好地看到它,因为很少需要它,因为您实现了一个超级duper合并逻辑,只在非常特殊的情况下要求用户……不要这样做。 平衡努力。因为这样的代码中的一个bug将给用户带来的混乱比所有的好处都要痛苦得多。

    所以如何: 一种方法是执行撤消操作。 离线时-记录用户对数据所做的操作,并按时间顺序记录用户所做的操作。 一旦连接-发送到服务器并执行它们。从服务器到客户端相同。 在大多数情况下,只要你不是在编写一种每项操作都有大量数据的photoshop软件,就可以很好地工作。也被称为神经节的动作模式。

    另一种方法是源代码管理方法。-版本,甚至可能是锁。非常依赖于应用程序。DBMS内部有时将其用于事务实现。

    并且始终有一个只读选项,当OFline:-)

        2
  •  2
  •   Steve Armstrong    16 年前

    我想你把问题弄得模糊不清了。

    • 如果您有关于制作GWT Web界面的问题,那是一个问题。
    • 关于如何将iPhone同步到Web服务的问题是另一个问题。为此,您不想使用GWT的RPC进行同步,因为您必须在iPhone代码中伪造出序列化系统的“浏览器端”,GWT通常为您提供这些代码。
        3
  •  0
  •   openmobster    14 年前

    想知道您是否考虑过使用同步框架来管理同步。如果你感兴趣的话,可以看看开源项目OpenMobster的同步服务。您可以执行以下同步操作

    • 双向的
    • 单向客户机
    • 单向装置
    • 启动

    此外,所有修改都会自动跟踪并与云同步。当网络连接断开时,您可以使应用程序脱机。它将跟踪任何更改,并在后台在连接返回时自动与云端同步。它还跨多个设备提供类似iCloud的同步

    此外,云中的修改是使用推送通知同步的,因此即使数据存储在本地,数据也始终是最新的。

    以下是到开源项目的链接: http://openmobster.googlecode.com

    以下是iPhone应用程序同步的链接: http://code.google.com/p/openmobster/wiki/iPhoneSyncApp

    推荐文章