2014-08-29 162 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