【问题标题】:How to sync data between Azure Mobile Services (ZUMO) and SQLlite on Hybrid mobile apps?如何在混合移动应用程序上的 Azure 移动服务 (ZUMO) 和 SQLite 之间同步数据?
【发布时间】:2014-07-17 23:28:46
【问题描述】:

我正在开发一个混合移动应用程序,部分要求是允许应用程序将数据离线存储在 SQLLite 中,并稍后通过 SQL Moblile 服务与 SQL Azure 同步。为此,我研究了 MS Sync Framework,JayData现在看看 BreezeJs

对于 MS Sync 框架,我意识到更改架构需要做大量工作,而且它已经过时了。 JayData 的问题是它接受 oData,但标准 AMS 端点是 JSON 提要......我有人可以帮助我以一种很好的方式工作......

现在通过 SO 问题,我意识到很多人正在使用带有 AMS/ZUMO 的轻量级。我还检查了样本http://www.breezejs.com/samples/todo-zumo 我想知道是否可以从 AMS 下载数据,将其存储在本地的 SQLLite DB 中,然后使用微风js 将其与 AMD 托管的 SQL Azure 表同步。

提前感谢所有帮助。

PS:我愿意接受任何其他更好的替代/建议。

请记住,该场景是 HTML/JS SPA 混合移动应用程序

【问题讨论】:

    标签: breeze sync azure-mobile-services hybrid-mobile-app


    【解决方案1】:

    简短版是的,这是可能的。

    不幸的是,更长的答案是,在这种情况下,您将自己做很多工作。

    此时,我将创建一个连接到后端数据库的 Azure 移动应用(Azure 应用服务 Web 应用的扩展)。创建一个表,然后将 JSON 对象发布到该表 URI(类似于 http://blah.azurewebsites.net/tables/yourtable)。当您使用 GET http://blah.azurewebsites.net/tables/yourtable 检索同一个表时,您会注意到 Azure 移动应用程序(或服务)添加了一些额外的字段 - 明确地,它们称为 __updatedAt、__version 和 __deleted。如果您请求一个特定的 Id,那么您还可以获得一个 ETag 来确定有效性。

    这些字段允许您进行离线同步。由于您知道上次同步的时间,因此您可以修补每条更新的记录(并发布每条新记录) - 对于 PATCH,包括您上次下载的 __version - 服务器会告诉您是否有其他冲突。完成此操作后,您可以获取自上次同步以来的所有记录(这是一个标准的 oData 查询),然后更新您的 SQLLite 数据库。

    这是需要做的快速浏览。 BreezyJS 上的 todo-zumo 示例没有执行此逻辑 - 如果您查看代码,您会注意到它只是利用本地存储进行简单的缓存 - 对于更复杂的模型几乎没有好处。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-24
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多