使用Azure移动服务MobileServiceSyncTable的可怕性能

时间:2017-06-30 17:20:32

标签: xamarin.forms azure-mobile-services

我有一个移动服务同步表,它给了我绝对非常可怕的性能。 该表声明为:

IMobileServiceSyncTable<Myclass> myclassTable;

this.client = new MobileServiceClient("my url here");

var store = new MobileServiceSQLiteStore(“localdb.db”);
store.DefineTable<Myclass>();
this.client.SyncContext.InitializeAsync(store);

this.myclassTable = client.GetSyncTable<Myclass>();

稍后在我正在调用的按钮处理程序中:

this.myclassTable.ToCollectionAsync();

问题是,表现可怕。这需要最好的时间,大部分时间都会无限期地坐在那里。

上面有什么我做过的,可以解释为什么表现如此绝对可怕?

1 个答案:

答案 0 :(得分:1)

  

this.myclassTable.ToCollectionAsync();

对于IMobileServiceSyncTable表,上面的方法将针对本地sqlite db执行SELECT * FROM [Myclass] sql语句。

  

问题是,表现可怕。这需要最好的时间,大部分时间都会无限期地坐在那里。

AFAIK,在使用脱机同步时,我们可以调用pull operation来检索服务器数据的子集,然后将检索到的数据插入到本地存储表中。对于await this.myclassTable.PullAsync(),它将发送请求并使用50中的MaxPageSize检索服务器数据,客户端SDK将发送另一个请求以确认是否有更多数据并自动提取它们。

总之,我建议您检查一下代码,找到导致性能不佳的特定代码。此外,您可以利用添加诊断日志记录,通过Fiddler捕获网络跟踪来解决此问题。