AFNetworking
AFNetworking是Alamofire组织提供的iOS第三方网络库,Alamo/ˈæləˌmo/ 这个单词是白杨和阿拉莫组织的意思,Alamo是个传教组织,这个名字起得逼格满满,有OC版本和Swift版本
最开始我接触的是AFNetworking 2.6版本,在使用中更新了AFNetworking 3.0版本,两个版本在基本实现方法上有一定区别.在写文章网络模块的思考的时候,进行了一点学习由于AFNetworking 3.0没有实战,可能理解有偏差
AFNetworking 2.0和3.0的区别
苹果源生提供的网络模块分为两个类,一个是03年的NSURLConnection,另一个是13的的NSURLSession.
- AFNetworking 2.X其根本实现是调用了iOS的NSURLConnection
- AFNetworking 3.0其根本实现是调用了iOS的NSURLSession
由于NSURLConnection和NSURLSession的基本思想不同,所以AFNetworking所处的位置也不同
- NSURLConnection是以HTTP基本方法为核心,分为GET POST等
- NSURLSession是以TASK为核心分为Data,Upload,Download
AFNetworking 2.0
AFNetworking 2.0的核心是一个AFHTTPRequestOperationManager的单例类,使用者只需要创建了单例类,给出了URL,就可以完成网络请求,单例内部完成了以下工作:
- AFNetworking内部自动构造NSURLRequest
- 使用基于NSOperation的类AFURLConnectionOperation自动管理请求队列
- AFURLConnectionOperation中使用NSURLConnection发起网络请求
AFNetworking 3.0
由于3.0改为了NSURLSession,其核心变为了AFURLSessionManager的类,这个类包含了返回值为不同Task的类方法,完成网络请求的流程变为以下
- 用户自己初始化NSURLSessionConfiguration
- 通过NSURLSessionConfiguration初始化AFNetworking的AFURLSessionManager
- 用户自己构造NSURLRequest
- 用户通过AFURLSessionManager的类方法初始化NSURLSessionTask完成网络请求
AFNetworking 2.0和3.0的职能
通过以上比较可以发现:
- AFNetworking 2.0是封装了NSURLRequest和NSURLConnection,用户不用关心苹果源生代码
- AFNetworking 3.0则是变成苹果源生代码中,用来初始化Task的一个工具
- 最大的不同是3.0用户需要自己初始化NSURLRequest和NSURLSessionConfiguration