BreezeJS离线/在线管理

时间:2014-08-29 19:35:52

标签: angularjs breeze

背景 我正准备开始一个首先需要移动设备的项目。我在客户端使用AngularJS,DB使用SQL,在通信时使用.net WEBApi2。我读过有关BreezeJS的内容,并希望将其用作我的离线数据管理部分,主要是因为我在.NET方面使用EF6,我喜欢Breeze能够通过EF元数据管理和创建实体的想法。

在设计应用程序时,我不知道如何正确管理突然的网络丢失。据我所知,BreezeJS将它的EntityManager存储在正在使用的工作内存中。如果用户在线工作,然后浏览器崩溃或计算机关闭,然后在脱机设置中重新打开webapp,Breeze会正常恢复还是我需要处理的用例?

问题: 我想我的问题很简单,是否有一种方法可以强迫BreezeJS不使用工作记忆而是使用localStorage?如果没有,我应该在每次更改时将实体导出到本地存储,还是有更好的方法来处理这个特定的用例?

1 个答案:

答案 0 :(得分:2)

Breeze无法自动使用localStorage,但是您可以创建一个定期将EntityManager状态存储到localStorage的计时器。但不确定这是个好主意。

您需要区分服务器不可用的情况,在这种情况下,将EntityManager存储到localStorage是完全合理的,这样您可以在服务器恢复时保留任何更改。与担心浏览器/客户端计算机崩溃相反,在这种情况下,我认为不处理这种情况会更好。复杂性和性能影响相当大,如果您真的担心这一点,那么只需在每次更改后执行保存(到服务器)(同样不一定是推荐的方法,但它可用)。