iOS网络编程(AFNetworking 2.x)_2

说AF比NSURLSession好,要分析它的结构,与NSURLSession的继承关系和改进之处。只能说看完2.0的迁移指南,我瞬间觉得自己好SX,前面看了好几个教程,也分析好几个小例子才总结出的东西和这个类似,而且必然没有这个讲的好。这给我带来了深深的思考,学习方法很重要啊。。。

AF 2.x 


AFNetworking 包括了所有你需要与在线资源交互的内容,从web services到文件下载。当你的程序在下载一个大文件期间,AFNetworking还能确保你的UI是可以响应的。


模块化

AFNetworking 1.0 在类的层次上很具有模块化,但文件封装的不够方便,没办法单独分离出某个功能模块。随着时间的推移,特别是像 AFHTTPClient 这样的类,会变得很臃肿(创建请求,序列化请求参数,响应和解析,创建和管理各种操作,监控网络的可用性等都堆在一起)。在 2.0 中,你可以只挑选你需要的模块。


实现

NSURLConnection (iOS 6 & 7)

- AFURLConnectionOperation - 它继承于 NSOperation,负责管理 NSURLConnection,实现它的 delegate 方法。

- AFHTTPRequestOperation  - 它继承于 AFURLConnectionOperation,专门用于创建 HTTP 请求。2.0 的主要区别就是可以直接使用它,而不用再继承它。

- AFHTTPRequestOperationManager - 封装 HTTP 请求的常见方式,GET / POST / PUT / DELETE / PATCH

NSURLSession (iOS 7)

- AFURLSessionManager - 创建和管理 NSURLSession 对象,以及此对象的数据和下载/上传等任务,实现对象和任务的代理方法。NSURLSession API 本身有一些局限,AFURLSessionManager 能使其变得更好用。 

- AFHTTPSessionManager - 它继承于 AFURLSessionManager,封装了 HTTP 请求的常见方式,GET / POST / PUT / DELETE / PATCH


结论:

总的来说:为了支持最新的 NSURLSession 接口,同时兼容旧的 NSURLConnection,2.0 的核心组件将 “网络请求”“任务处理” 分离。 AFHTTPRequestOperationManager 和 AFHTTPSessionManager 提供相似的功能,切换很方便,所以从 iOS 6 移植到 iOS 7 会很容易。之前绑在 AFHTTPClient 里的 serialization、security 和 reachability 模型都被分离了出来,基于 NSURLSession 和 NSURLConnection 的 API 都可复用这些模型。


安全

AFNetworking 支持SSL pinning。这对涉及敏感数据的 App 很重要。

AFSecurityPolicy  –  这个类通过特定证书和公共密钥评估链接的安全性和可信任度。在你的 App bundle 中添加服务器证书有助于防止 “中间人攻击” 。


可达性

另一个从 AFHTTPClient 中分离的功能是网络的可达性。现在你可以单独使用它,或者作为 AFHTTPRequestOperationManager / AFHTTPSessionManager 的一个属性。

AFNetworkReachabilityManager – 负责监控当前的网络可达性,当网络的可达性发生改变时,提供相应的 callback 和通知。


实时

AFEventSource – 用 Objective-C 实现的EventSource DOM API。客户端和服务器建立一个长链接,服务器会把新的 Event 实时推给客户端。客户端收到的信息格式是JSON Patch,然后 JSON Patch 被转化为 AFJSONPatchOperation 对象。


UIKit 扩展

2.0 的中所有 UIKit 扩展都被分离出来并进行了增强。

1) AFNetworkActivityIndicatorManager: 新增自动开始或结束状态栏上的网络指示器。

2) UIImageView+AFNetworking: 新增显示图片前剪裁或者加滤镜的功能。

3) UIButton+AFNetworking(新增): 类似 UIImageView+AFNetworking,按钮的背景图从线上下载。

4) UIActivityIndicatorView+AFNetworking(新增): 根据网络请求的状态自动开始或结束。

5) UIProgressView+AFNetworking(新增): 自动跟踪某个请求的上传下载的进度。

6) UIWebView+AFNetworking(新增): 支持网络请求的进度和内容转换。


引文:

AFNetworking 2.0 Migration Guide  ---  好东西

你可能感兴趣的:(iOS网络编程(AFNetworking 2.x)_2)