2014-07-17 24 views
3

我正在研究混合移動應用程序,其中一部分要求是允許應用程序在SQLLite中脫機存儲數據,並通過SQL Moblile服務與SQL Azure稍後同步。爲此,我已經研究了MS Sync Framework,JayData和現在看BreezeJs如何在混合移動應用上的Azure移動服務(ZUMO)和SQLlite之間同步數據?

對於MS同步框架,我已經意識到,改變架構和其相當過時所需的大量工作。 JayData的問題是,它接受oData,但標準的AMS端點是JSON訂閱...我有人可以幫助我獲得那種工作,這將是偉大的..

現在通過SO問題,我有意識到有很多人使用AMS/ZUMO使用breezejs。我也檢出了示例http://www.breezejs.com/samples/todo-zumo 我想知道是否可以從AMS存儲中將數據從本地下載到SQLLite數據庫中,然後使用breezejs將其與AMD託管的SQL Azure表同步回來。

欣賞提前所有幫助。 PS:我接受任何其他更好的替代/建議。

記住的場景是HTML/JS SPA混合移動應用

回答

0

簡短的版本是肯定的,這是可能的。

不幸的是,較長的答案是,在這種情況下你會自己做很多工作。

此時,我將創建一個連接到後端數據庫的Azure移動應用程序(對Azure應用程序服務Web應用程序的擴展)。創建一個表,然後對該表的URI進行JSON對象的後置處理(這將類似http://blah.azurewebsites.net/tables/yourtable)。當您使用GET http://blah.azurewebsites.net/tables/yourtable檢索同一個表格時,您會注意到Azure移動應用程序(或服務)已添加了一些額外字段 - 顯式地,它們被稱爲__updatedAt,__version和__deleted。如果你要求一個特定的ID,那麼你也可以得到一個ETag來確定有效性。

這些字段允許您執行脫機同步。由於您知道上次同步的時間,因此可以對每個更新的記錄進行PATCH(併爲每個新記錄POST) - 對於PATCH,請包括上次下載時的__version - 服務器會告訴您是否有其他衝突。完成之後,您可以獲取自上次同步以來的所有記錄(這是標準的oData查詢),然後更新SQLLite數據庫。

這是快速瀏覽需要做的事情。 BreezyJS上的todo-zumo示例並不執行此邏輯 - 如果您查看代碼,您會注意到它只是使用本地存儲的簡單緩存 - 對於更復雜的模型來說很難。

相關問題