美文网首页
AFNetworking3.0源码分析-(1)概述

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

作者: Don_He | 来源:发表于2018-04-23 21:06 被阅读21次

    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)概述

          本文链接:https://www.haomeiwen.com/subject/htcklftx.html