使用Azure脱机同步时的注意事项

时间:2016-10-06 09:53:54

标签: asp.net-mvc xamarin.forms azure-mobile-services offline

以下是我当前设置中的一些细节,请记住此讨论有意义。

客户端应用:Xamarin Forms应用,使用Azure离线同步

Web访问:基于Asp.Net的Web前端也访问移动服务以读取/写入基础表的数据

后端:Azure上托管的基于受管网点的应用服务

我的问题:截至目前,我将空值传递给Incremental Sync参数,以忽略任何增量同步(使用PullAsync方法时)&从服务器获取所有数据。然而,这是低效的,因为随着数据量的增加它增加了加载时间。

如果我对正在考虑的表使用增量同步参数的常量值,这就是它的作用

  

每次pull操作返回一组结果时,该结果集中的最新updatedAt时间戳存储在SDK本地系统表中。后续的pull操作只会在该时间戳之后检索记录。

阅读here

问题是,我的网络访问还会更新来自网络和网络的数据。它还使用Azure App服务框架来实现这一点。在这种情况下,如果我使用增量同步参数执行数据拉取,那么来自网络应用程序和数据的数据会发生变化。如果移动应用程序再次执行Push,Pull ..它是否也会从Web获取最新更改?

我的理解是增量同步仅适用于上下文知道的数据,但在这种情况下,因为Web应用程序也在编写上下文不知道的数据,然后它错过了一些数据和放大器;移动应用程序永远不会下载它。

有没有办法解决这个问题?所以我可以开始使用增量同步&仍然能够确保应用程序始终从服务器获取所有数据而不会丢失任何位?

更新:

@Adrian它不适合我。可能是因为我的表的结构方式,或者我处理它们的方式不正确。

我有一个用户表&一个部门表,我也有一个UserDepartment表。

当我同步应用时,此UserDepartment Table中的数据会在应用上重复显示。

原因可能是因为,当我在网上编辑用户为他们分配部门时,我从UD表中删除所有以前的用户部门条目&根据当前选择重新创建新的。你认为这可能会导致azure客户端SDK&从而为我复制一些数据?

1 个答案:

答案 0 :(得分:0)

如果您的网络应用和移动应用通过相同的移动应用API进行更新(分别使用.NET SDK和JS SDK),则针对两次推送都会适当地设置updatedAt,而另一方应该接受更改。我已经多次自己完成了这项工作并且有效。

一个Web端(使用JS sdk),您只需使用在线表。在移动端(使用.NET SDK),您使用增量同步。