AFNetworking3.0源码分析-(1)概述

AFNetworking作为现在iOS开发最常用的开源网络框架,其代码有很多值得我们分析学习的地方。本篇是对AFNetworking3.1.0的总体结构进行分析。

类结构

AFNetworking主要组成如图1,文章不会针对UIKit部分进行分析。


AFNetworking结构.png
  • AFURLSessionManager - 创建、管理基于 NSURLSessionConfiguration 对象的 NSURLSession 对象的类,也可以管理 session 的数据、下载/上传任务,实现 session 和其相关联的任务的 delegate 方法。因为 NSURLSession API 设计中奇怪的空缺,任何和 NSURLSession 相关的代码都可以用 AFURLSessionManager 改善。
  • AFHTTPSessionManager - AFURLSessionManager 的子类,包装常见的 HTTP web 服务操作,通过 AFURLSessionManager 由 NSURLSession 支持。
  • AFURLRequestSerializer协议 - 符合这个协议的对象用于处理请求,它将请求参数转换为 query string 或是 entity body 的形式,并设置必要的 header。
  • AFURLResponseSerializer协议 - 符合这个协议的对象用于验证、序列化响应及相关数据,转换为有用的形式,比如 JSON 对象、图像、甚至基于 Mantle 的模型对象。
  • AFSecurityPolicy - 评估服务器对安全连接针对指定的固定证书或公共密钥的信任。将你的服务器证书添加到 app bundle,防止中间人攻击。
  • AFNetworkReachabilityManager - 这个类监控当前网络的可达性,提供回调 block 和 notificaiton,在可达性变化时调用。

图1 AFNetworking UML类图


AFNetworking.png

图2 AFRequestSerrialization UML类图


AFRequestSerrialization.png

图3 AFResponseSerialization UML类图


AFResponseSerialization.png

优势

易用

系统的 Foundation 框架提供了一整套与网络操作网络相关的类(URL Loading System),当我们调用系统API实现网络操作的过程中,往往需要配合使用多个类和编写配置相关的代码,AFNetworking封装了这个过程中的绝大部分细节,如果项目只需要使用简单的网络操作,使用AFNetworking将非常便利。

可读性强

AFNetworking 针对URL Loading System中的绝大部分 delegate 方法都使用 block 来实现,相对于在应用中用 delegate 零散的逻辑实现, block 可以将相关的功能放在一起,使代码逻辑更紧凑,增强可读性。

你可能感兴趣的:(AFNetworking3.0源码分析-(1)概述)