iOS网络框架封装支持Rest(AFNetworking)以及RPC

最近在找工作期间,梳理了下过往对于App网络数据层的实现框架,从初期实现到后来基于高性能组件化开发设计,有着深刻的变化。在对网上部分网络层架构最佳实践的对比分析后,决定重新开发一套iOS端高性能网络数据层处理框架PYNetworking放到GitHub
以下将对实现流程做大概分析


主要问题:
1.降低耦合、增强可扩展的最佳实践
2.网络任务管理
3.数据组合、封装、格式化的合理性
4.多线程队列管理
5.Socket数据包处理
6.AFNetworking,以及SPDY(HTTP2)的集成
7.基于Socket方式的Category+UIView扩展
8.OOP、AOP、IOP的合理运用


核心处理:
1.API设计
1.1 静态API接口与实例化API对象
1.2 传参设计
1.3 API与外界的交互方式,block\delegate
1.4 数据校验与解析的时机
1.5 数据formatter设计
1.6 数据缓存与更新策略
1.7 网络任务缓存与控制


2.数据模型设计与交互
2.1 对象模型与字典
2.2 数据存取
2.3 数据格式(binary、json)
2.4 数据时效性
2.5 Sqlite,NSUserDefualt


3.网络任务管理
3.1 网络任务对象封装
3.2 NSOperationQueue任务队列管理
3.3 任务对象取消、超时、重启、缓存、排重处理
3.4 网络访问优化策略+SPDY


4.Socket消息处理
4.1 组包、分包、断包、拼包、粘包
4.2 进度处理
4.3 security

4.4 长连接策略

4.5 数据协议(json、protocolBuffers)


框架流程图如下

iOS网络框架封装支持Rest(AFNetworking)以及RPC


由于是一边整理一边实践开发,此文将会不断完善,后面讲针对以上各点进行最佳实践的补充