在这个有着激烈竞争的社会中,我们必须时刻准备着,在网上我看了很多关于AFN的帖子,大致有了些理解,我们的理解从模块到架构组成。
AFNetWorking是基于NSURLSession,在生成配置的时候有三种配置选择
+ (NSURLSessionConfiguration *)defaultSessionConfiguration;
//默认会话模式(default):工作模式类似于原来的NSURLConnection,使用的是基于磁盘缓存的持久化策略,使用用户keychain中保存的证书进行认证授权。
+ (NSURLSessionConfiguration *)ephemeralSessionConfiguration;
//瞬时会话模式(ephemeral):该模式不使用磁盘保存任何数据。所有和会话相关的caches,证书,cookies等都被保存在RAM中,因此当程序使会话无效,这些缓存的数据就会被自动清空。
+ (NSURLSessionConfiguration *)backgroundSessionConfiguration:(NSString *)identifier;
//后台会话模式(background):该模式在后台完成上传和下载,在创建Configuration对象的时候需要提供一个NSString类型的ID用于标识完成工作的后台会话。
也就是说default同时实现了内存缓存和硬盘缓存,ephemeral实现了内存缓存,对于图片下载我们当然选择default。我们还可以对缓存的大小进行设置,只需要对NSURLCache进行初始化就可以了
也可以单独对NSURLSession的configuration进行设置,在AFNetWorking中对于图片网络请求设置了20M的内存缓存和150M的硬盘缓存:
+ (NSURLCache *)defaultURLCache {
return [[NSURLCache alloc] initWithMemoryCapacity:20 * 1024 * 1024
diskCapacity:150 * 1024 * 1024
diskPath:@"com.alamofire.imagedownloader"];
}
分为5大模块
分别由NSURLSession,Security,Reachability,Serialization,UIKit五部分组成
NSURLSession:网络通信模块(核心模块) 对应 AFNetworking中的 AFURLSessionManager和对HTTP协议进行特化处理的AFHTTPSessionManager,AFHTTPSessionManager是继承于AFURLSessionmanager的
以下三个是被AFURLSessionManager所引用;
Security:网络通讯安全策略模块 对应 AFSecurityPolicy
Reachability:网络状态监听模块 对应AFNetworkReachabilityManager
Serialization:网络通信信息序列化、反序列化模块 对应 AFURLResponseSerialization
UIKit:对于IOSUIKit的扩展库------这个UIKIt库中有网络下载图片的框架等;
下面是详细介绍。
1:AFURLConnectionOperation
可以说是AFN最基础的类。继承自NSOperation类,将网络请求依附到一个operation上。从而让我们能够有效的控制并观察一个网络请求的创建、进行、取消、完成、暂停恢复、异常等问题及状态。【第三部分详细分析实现以及功能】
2:AFHTTPRequestOperation
HTTP或HTTPS协议请求的AFURLConnectionOperation的子类。它封装的可接受状态码和内容的类型,判定一个请求结果是成功或失败。
实际上对系统的HTTP网络请求增加了几个HTTP需要用到的参数。
3:AFHTTPRequestOperationManager
这个类是AFN类库的核心类。它封装完成了一种通用的模式,可以帮助我们轻松友好的完成请求的创建、响应的系列化,网络状态的监控以及安全策略以及每一个请求operation的管理(operation的相互依赖或状态改变)。
【第三部分详细分析实现以及功能】
4:AFURLSessionManager
iOS7 之后,苹果增加了新的网络请求类--NSURLSession。AFN官方推荐iOS 7 或者 Mac OS X 10.9以上的,最好使用该类发起网络请求,取代AFHTTPRequestOperationManager。不过基于目前国内app大都最低适配的 iOS6,该类的用途还不是太广泛。NSURLSession的说明或者使用不再赘述。自行查看API文档。以后有时间再加上该类的使用。
5: AFURLSessionManager
继承自AFURLSessionManager。类似于1和2的关系。也是方便HTTP以及https请求的使用,增加了一些接口,方便调用。
6:AFNetworkReachabilityManager
网络的连通状态监控以及网络的类型。实际是将苹果官方提供的Reachability的类名和通知名更换了一下,防止和系统提供的类的通知名以及类名的冲突。
7:AFSecurityPolicy
这个我不太懂,安全策略的类。一般貌似用不到,有需要自行google。。
8:AFURLRequestSerialization
①:符合这个协议的对象用于处理请求,它将请求参数转换为 query string 或是 entity body 的形式,并设置必要的 header。
②:构建multipart请求。
9:AFURLResponseSerialization
遵循AFURLResponseSerialization协议的对象,用于验证、序列化响应及相关数据,转换为有用的形式,比如 JSON 对象、图像、甚至基于mantle的模型对象。
网友评论