首页 文章

如何在混合移动应用程序上的Azure移动服务(ZUMO)和SQLlite之间同步数据?

提问于
浏览
3

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

对于MS Sync框架,我已经意识到改变架构需要大量的工作,而且它已经过时了 . 使用JayData问题是它接受oData但标准的AMS endpoints 是JSON提要...我有人可以帮助我以一种方式来实现那将是伟大的工作 .

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

提前感谢所有帮助 .

PS:我对任何其他更好的替代/建议持开放态度 .

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

1 回答

  • 0

    简短版本是肯定的,这是可能的 .

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

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

    这些字段允许您执行脱机同步 . 由于您知道上次同步的时间,然后您可以修补每个更新的记录(并POST每个新记录) - 对于PATCH,包括您上次下载的__version - 服务器将告诉您是否有其他冲突 . 完成后,您可以获取自上次同步以来的所有记录(这是标准的oData查询),然后更新SQLLite数据库 .

    这是对需要完成的工作的快速了解 . BreezyJS上的todo-zumo样本没有这样的逻辑 - 如果你看一下代码,你会注意到它只是利用本地存储进行简单的缓存 - 对于更复杂的模型来说几乎没有用 .

相关问题