【发布时间】:2015-08-27 07:33:15
【问题描述】:
我正在开发一个带有 MVVM 模式的 WPF 应用程序(使用 Galasoft MVVMLight 库)。我的应用程序通过将 JSON 数据解析为 DataModels(使用 RestSharp 库和 Newtosnoft Json.NET)从远程 API(服务器)加载数据。我需要允许用户直接从应用程序修改来自 APP 的数据(所有 CRUD 操作),但我的应用程序也需要在离线模式下以及在互联网连接速度较慢的环境中做出响应。
现在我使用我的 DataController 类实现了它,该类注册到由我的 ViewModel 生成的不同消息(对于消息我使用 MVVMLight Messenger)。因此,例如在用户更改实体 A 之后,我发送 RequestToUpdate 消息,DataController 处理它并:1)更新分配给实体 A 的 DataModel, 2) 发送消息 UpdateComplete(因此所有具有此实体 A 的 ViewModel 都会处理此消息并更新分配有此实体 A 的 ViewModel 和 View), 3) DataController 尝试异步更新远程 API 上的实体(每个 DataModel 都有一个 DateTime? 属性 SyncedToServer,所以如果远程请求失败 - 用户处于离线模式,我将此属性设置为 null,否则我将其设置为完成同步的时间)。
应用重新上线后,它会遍历所有 DataModel 并检查它们是否为 SyncedToServer,如果不是,它会尝试重新同步它。
有没有更好的模式/库来实现我的应用在离线和糟糕的互联网环境中响应和可靠?
【问题讨论】:
标签: c# mvvm synchronization mvvm-light offline