2016-12-14 29 views
0

我打電話給await client.SyncContext.PushAsync();將新創建/更新的對象推送到服務器。但是,並不是每次__operations表中的訂單都被遵守。Azure移動應用程序網絡客戶端PushAsync錯誤的訂單

實施例(簡化的)對於典型__operations表中我的應用程序:

1) Create some record in Project table 
2) Update some record in User table 
3) Create another record in Project table 

然而,當我看服務器輸出,它告訴我,1)和3)發佈,然後2)修補。

我是否會將__operations以相同順序重播到服務器,因爲它們是在客戶端上製作的?

一些額外的信息:

我打電話await itemTable.PullAsync("allItems", itemTable.CreateQuery());PushAsync()而且記錄2)後直接包含了一些數據,服務器不接受和測試HTTP錯誤響應。錯誤消息正確顯示在服務器端,但是在1)和3)後POSTED。

回答

2

操作表摺疊以最小化事務/往返服務器的次數。在你的情況,你會看到什麼是:

1)記錄A更新

2)記錄B更新

3)刪除,因爲我們已經有了記錄中的更新

因此你會看到兩條記錄,而不是三條記錄。記錄A只發送一次。

+0

感謝您的回答。 Sry,恐怕我不明白你的解釋。在我的示例中,數字1),2)和3)代表我的本地sqlite數據庫__operations表中的3個不同的行。 1)是一個新創建的類型爲「Project」的對象,它尚未在服務器上。 2)更新(已在客戶端更新)到前一段時間從服務器下載的「用戶」對象,以及3)是**不同**新創建的「項目」。 1)和3)具有不同的ID並且從未存在過。 – user2415476

0

它告訴我1)和3)張貼,然後2)被PATCH。

PushAsync幫助我們將更改推送到Mobile App後端。據我所知,錯誤的順序可能是由您的移動應用程序API造成的。例如,如果更新用戶表將使用200ms,並且創建一條記錄將使用100ms。順序將是1)/ 3) - > 2)。如果創建記錄將使用300毫秒,則訂單將爲2) - > 1)/ 3)。

+0

感謝您的評論。我做了一些更改,看起來,現在請求的順序與__operations表中的相同。我是否正確,azure-mobile-apps-net-client SDK始終按照與__operations表中相同的順序將事務重放到服務器? – user2415476

相關問題