所以,我有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
我希望能得到關於什麼是最好的從人們的經驗,或者這樣做的其他/更好的方式提出建議和意見。