响应式设计:缓慢的网络通信vs.高频率的用户交互



有时操作是相互依赖的,用户在插入记录之前无法更新记录。如果用户交互比互联网通信更频繁,如何在不阻塞GUI的情况下将客户端更改同步/上传到服务器?

在我最近的应用程序版本中,我将更改存储在Core Data中,同时将更改发送到后端,直到成功消息返回,我阻止GUI以保持客户端和服务器存储在一致的状态。但我知道这不是一个好方法,特别是如果在同一个GUI中有很多控件,用户可以在短时间内快速操作它们。因为它很烦人,你必须等待。

你推荐什么一般的方法来构建一个响应的应用程序,这是不依赖的,能够隐藏相对缓慢的互联网通信。有什么好的教程吗?

这是一个理论性的问题,需要一个理论性的答案。

一个好方法是在父和子管理对象上下文中设置此设置:

SavingContext (background, saves to persistent store)
MainContext (main thread, child context of saving context)
WorkerContext (background, child context of main context) 

谢谢Marcus Zarra。

模型中UI初始化的更改会立即保存在主上下文中。然后将它们发送到生成的worker上下文中的后端。你可以毫无问题地吃几个。

一旦响应来自服务器,你就把更改保存在工作上下文中,它把它们"推"到主上下文中。在这里,您可以定义一个合并策略来解决任何冲突(有关详细信息,请询问新的问题)。

主上下文现在可以用新信息(如果有的话)更新UI。

最新更新