所以,我有2种类型的数据,有些需要保留,有些则不需要。iPhone - 视图控制器和网络请求的体系结构
我在想在哪里把我所有的网络相关的代码放在我的UIViewControllers里面,所有的网络请求都从其他层开始。
我脑子里想的是这样的:
有一个名为NetworkManager
层。 NetworkManager
是singerlton我所有的网络服务电话。
对于需要持久,并且可以在列表中呈现,我会网管数据发出请求,保存在我的本地核心数据DB的响应,并有我UIViewController
听使用FetchResultsController
数据。
但是,还有很多其他类型的请求。例如:登录请求,用户信息请求,friendsNearBy等等......有些不必在我的数据库中持久化,有些不适合FRC体系结构。
对于这些类型的请求,据我看到的,有处理它2种方式:
1.具有与ViewControllers和网络管理器之间分离的另一层。 我们称之为Mediator
。 Mediator
从网络管理器获取字典(JSON)请求,根据应用逻辑决定是否还有其他需要完成的操作,然后发布具有适当名称和数据的通知。如果中介保存发出请求的UIViewController,它可以直接将响应委派给他,而不是发布通知。
流会是这样:
MyUiViewController - > Mediator -> NetworkManger->Mediator-> PostNotification (or directly back to MyUiViewController)
Pros:
Decoupling
Nice structure and separation of concerns
Cons:
Harder to code
Sometimes harder to understand and debug.
2.不具有本3分层架构,而是具有MyUiViewControllers,发出带有区块的网络请求。含义不是Mediator在MyUiViewController之前拦截响应,只是让MyUiViewController使用块处理响应,因为他是发出响应的响应。
Pros:
Simple and quick to code
Easy to understand
Cons:
Coupling of network code inside your controllers
我希望能得到关于什么是最好的从人们的经验,或者这样做的其他/更好的方式提出建议和意见。