【问题标题】:Syncing Problems with Xamarin Forms and Azure Easy TablesXamarin Forms 和 Azure Easy Tables 的同步问题
【发布时间】:2017-11-27 03:43:22
【问题描述】:

我在 Visual Studio 中使用 Azure 作为后端开发 Xamarin.Forms 应用程序已有一段时间了,但遇到了一个非常奇怪的问题。

请注意,我正在遵循blog中提到的方法

由于某些奇怪的原因,PullAsync() 方法似乎有一些奇怪的问题。我创建和同步的任何数据都只能由 PullAsync() 从该解决方案中提取。我的意思是,如果我创建另一个访问完全相同的后端的解决方案,它可以执行它自己的创建/同步数据,但不会带来另一个解决方案生成的数据,即使它们似乎都有完全相同的访问。这似乎是某种安全功能/问题,但我不太明白。

有没有其他人遇到过这种情况?有没有变通办法?如果我想要创建另一个解决方案来访问相同的系统/数据,无论出于何种原因,这可能会导致问题。

【问题讨论】:

  • 您解决了这个问题吗,需要进一步的帮助吗?
  • 感谢您的回复。我有点忙,所以我还没有机会尝试这个。我今晚应该有时间。我一定会通知你的。
  • 不,将值设置为 null 并没有改变任何东西。这个周末我应该可以花一些时间来查看您提供的更详细地详细说明增量同步的链接。感谢您的好评!

标签: azure xamarin xamarin.forms azure-mobile-services


【解决方案1】:

由于某些奇怪的原因,PullAsync() 方法似乎有一些奇怪的问题。我创建和同步的任何数据都只能由 PullAsync() 从该解决方案中提取。

根据您提供的教程,我发现相关的PullAsync 正在使用增量同步

await coffeeTable.PullAsync("allCoffees", coffeeTable.CreateQuery());

增量同步

拉取操作的第一个参数是一个仅在客户端使用的查询名称。如果使用非空查询名称,Azure 移动 SDK 会执行增量同步。 每次拉取操作返回一组结果时,该结果集中的最新 updatedAt 时间戳都会存储在 SDK 本地系统表中。随后的拉取操作仅检索该时间戳之后的记录。

这是我的测试,您可以参考它以更好地了解增量同步:

客户:await todoTable.PullAsync("todoItems-02", todoTable.CreateQuery());

客户端 SDK 将检查 SQLite 本地存储的 __config 表中是否有 id 等于 deltaToken|{table-name}|{query-id} 的记录。

如果没有记录,那么SDK会发送如下请求来拉取你的记录:

https://{your-mobileapp-name}.azurewebsites.net/tables/TodoItem?$filter=(updatedAt%20ge%20datetimeoffset'1970-01-01T00%3A00%3A00.0000000%2B00%3A00')&$orderby=updatedAt&$skip=0&$top=50&__includeDeleted=true

注意:$filter 将被设置为(updatedAt ge datetimeoffset'1970-01-01T00:00:00.0000000+00:00')

当有记录时,SDK 会选取value 作为最新的 updatedAt 时间戳,并按如下方式发送请求:

https://{your-mobileapp-name}.azurewebsites.net/tables/TodoItem?$filter=(updatedAt%20ge%20datetimeoffset'2017-06-26T02%3A44%3A25.3940000%2B00%3A00')&$orderby=updatedAt&$skip=0&$top=50&__includeDeleted=true

根据我的理解,如果您在不同的移动客户端处理具有相同查询 id(非空)的相同逻辑查询,则需要确保每个客户端新创建本地数据库。此外,如果您想退出增量同步,请将 null 作为查询 ID 传递。在这种情况下,每次调用PullAsync 时都会检索所有记录,这可能是低效的。更多详情可以参考How offline synchronization works

此外,您可以在调用PullAsync 时利用fiddler 捕获网络跟踪,以便解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    相关资源
    最近更新 更多