2014-08-29 110 views
3

背景: 我準備開始一個項目,首先需要移動設備。我使用AngularJS作爲客戶端,SQL使用DB和.net WEBApi2進行通信。我已經閱讀了關於BreezeJS的內容,並且希望將它用作我的離線數據管理部分,主要是因爲我在.NET的一方使用了EF6,我喜歡Breeze能夠通過EF元數據管理和創建實體。BreezeJS離線/在線管理

在設計應用程序時,我陷入瞭如何正確管理突發網絡丟失的想法。這是我的理解,BreezeJS將EntityManager存儲在正在使用的工作內存中。如果用戶在線工作,然後瀏覽器崩潰或計算機關閉,然後web應用程序在離線設置中重新打開,那麼Breeze是否能夠正常恢復,還是我需要處理的用例?

問題: 我想我的問題很簡單,是有辦法,我可以強制BreezeJS不使用工作記憶,但對工作,而不是關閉localStorage的?如果沒有,我是否應該每次更改都將本地存儲導出到本地存儲,還是有更好的方法來處理這個特定的用例?

回答

2

Breeze不能自動使用localStorage,但是您可以創建一個定時器,以定期將EntityManager狀態存儲到localStorage。不知道這是一個好主意。

您確實需要區分服務器不可用的情況,在這種情況下,將EntityManager存儲到localStorage是非常有意義的,這樣您可以在服務器恢復時持久保留任何更改。與擔心瀏覽器/客戶端電腦崩潰相反,在這種情況下,我認爲最好不要處理這種情況。複雜度和性能的影響相當大,如果你真的真的擔心這一點,那麼只需在每次更改後(對於服務器)執行一次保存(不一定是推薦的方法,但它是可用的)。

+0

主要問題是應用程序將被電池突然或意外死亡的人員使用。我需要確保輸入的所有信息保存到電池耗盡的那一點。計時器是一個很好的選擇,但我認爲在每次更改後我都必須更新本地存儲,以確保所有數據都在那裏。 – JakeHova 2014-09-02 16:32:53