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

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

问题:
我想我的问题很简单,是否有一种方法可以迫使BreezeJS不使用工作内存而是改为使用localStorage?如果不是,是否应该将每次更改都将EntryEntities导出到本地存储,还是有更好的方法来处理此特定用例?

最佳答案

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

您确实需要区分服务器不可用的情况,在这种情况下,将EntityManager存储到localStorage是很有意义的,这样在服务器恢复时您可以保留所有更改。相对于担心浏览器/客户端计算机崩溃,在这种情况下,我认为最好不处理这种情况。复杂性和性能影响非常大,如果真的对此感到担心,则只需在每次更改后执行(保存到服务器)保存(同样不一定是推荐的方法,但是可以使用)。

关于angularjs - BreezeJS离线/在线管理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25575088/

10-10 17:07