我应该使用不同的类/方法/模式来处理数据的本地云同步吗?

时间:2016-02-18 06:09:28

标签: azure mobile azure-mobile-services

我是Azure移动服务以及移动开发的新手。

根据我在Web开发方面的经验,当用户请求更多数据时,从数据库中检索数据是部分完成的,即网站不会一次性加载所有数据。

我正在移动应用程序中实现此原则,其中在用户向下滚动时加载数据(如果已经在本地数据库中)或下载(如果尚未在本地数据库中)。

我正在使用Azure移动服务同步表来处理应用中的数据加载。但是,我无法对数据下载进行分页。根据此post,PullAsync方法会下载自上次同步以来已更改/添加的所有数据,并且不允许使用take / skip方法。这是因为PullAsync使用增量同步。

这意味着在第一次启动应用程序期间会有大量数据下载,或者即使用户没有请求上述数据,应用程序还没有在线一段时间(即滚动到它)。

这是处理移动应用中数据的好方法吗?我喜欢使用SyncTable,它可以处理很多重要的数据上传/下载内容,例如:数据上传排队,下载/上传数据变化。我只关心下载用户不需要的数据。

或者我可以做些什么来限制PullAsync下载的项目? (除了deleted = false和UserId =当前用户的UserId)

目前,我限制了用户登录后以及用户拉动刷新时将PullAsync调用到加载屏幕的时间。

1 个答案:

答案 0 :(得分:1)

移动开发与Web开发截然不同。虽然将大量数据加载到无状态网页是一件坏事,但将相同数据加载到移动应用程序可能实际上是一件好事。它可以帮助应用程序的性能和可用性。

使用类似离线数据存储的主要目的是偶尔断开连接的场景。总是需要考虑架构权衡。 “多少太多”是这些权衡之一。到服务器的往返次数是多少?多少数据传输太多了?您能找到传递给移动设备的数据的正确平衡吗?当载波信号丢失时,与服务器“聊天”的移动应用程序可能无法使用。

在你的问题中,你建议“我可以做些什么来限制PullAsync下载的项目”。为了避免大量下载,您可以设计应用程序以允许用户设置下载标准。如果UserId没有意义,可能是服务日期或计划中前进或后退的天数。找到要加载到设备的数据的正确“分区”将是您的应用程序在线和离线的可用性的关键考虑因素。

您的解决方案没有正确答案。但是,关键考虑因素应该是带宽,数据计划限制,运营商覆盖范围以及连接和断开连接的用户体验。请记住......您的移动应用程序是“有状态的”,您不仅限于往返服务器获取数据。这意味着您可以在网页上做一些自己没有的事情。