【问题标题】:BreezeJS offline/online managementBreezeJS 离线/在线管理
【发布时间】:2014-08-30 09:09:10
【问题描述】:

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

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

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

【问题讨论】:

    标签: angularjs breeze


    【解决方案1】:

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

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

    【讨论】:

    • 主要问题是该应用程序将被人们在电池突然或意外耗尽的领域使用。我需要确保在电池耗尽之前输入的所有信息都已保存。计时器是一个不错的选择,但我认为每次更改后我都必须更新本地存储,以确保所有数据都在那里。
    • 所以先添加到localstorage,然后保存,如果保存成功从存储中删除
    猜你喜欢
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多