一、底層實(shí)現(xiàn)
1两芳、AFN的底層實(shí)現(xiàn)基于OC的NSURLConnection和NSURLSession
2逢唤、ASI的底層實(shí)現(xiàn)基于純C語(yǔ)言的CFNetwork框架
3、因?yàn)镹SURLConnection和NSURLSession是在CFNetwork之上的一層封裝竿拆,因此ASI的運(yùn)行性能高于AFN
AFNetworking地址: https://github.com/AFNetworking/AFNetworking
二、對(duì)服務(wù)器返回的數(shù)據(jù)處理
1宾尚、ASI沒(méi)有直接提供對(duì)服務(wù)器數(shù)據(jù)處理的方式丙笋,直接返回的是NSData/NSString
2谢澈、AFN提供了多種對(duì)服務(wù)器數(shù)據(jù)處理的方式
(1)JSON處理-直接返回NSDictionary或者NSArray
(2)XML處理-返回的是xml類型數(shù)據(jù),需對(duì)其進(jìn)行解析
(3)其他類型數(shù)據(jù)處理
三御板、監(jiān)聽(tīng)請(qǐng)求過(guò)程
1锥忿、AFN提供了success和failure兩個(gè)block來(lái)監(jiān)聽(tīng)請(qǐng)求的過(guò)程(只能監(jiān)聽(tīng)成功和失敗)
- success : 請(qǐng)求成功后調(diào)用
- failure : 請(qǐng)求失敗后調(diào)用
2怠肋、ASI提供了3套方案缎谷,每一套方案都能監(jiān)聽(tīng)請(qǐng)求的完整過(guò)程
(監(jiān)聽(tīng)請(qǐng)求開(kāi)始、接收到響應(yīng)頭信息灶似、接受到具體數(shù)據(jù)、接受完畢瑞你、請(qǐng)求失斃也选)
- 成為代理,遵守協(xié)議者甲,實(shí)現(xiàn)協(xié)議中的代理方法
- 成為代理春感,不遵守協(xié)議,自定義代理方法
- 設(shè)置block
四虏缸、在文件下載和文件上傳的使用難易度
1鲫懒、AFN
*不容易實(shí)現(xiàn)監(jiān)聽(tīng)下載進(jìn)度和上傳進(jìn)度 】
*不容易實(shí)現(xiàn)斷點(diǎn)續(xù)傳 、
*一般只用來(lái)下載不大的文件
2刽辙、ASI
*非常容易實(shí)現(xiàn)下載和上傳
*非常容易監(jiān)聽(tīng)下載進(jìn)度和上傳進(jìn)度
*非常容易實(shí)現(xiàn)斷點(diǎn)續(xù)傳
*下載大文件或小文件均可
3窥岩、實(shí)現(xiàn)下載上傳推薦使用ASI
五、網(wǎng)絡(luò)監(jiān)控
1宰缤、AFN自己封裝了網(wǎng)絡(luò)監(jiān)控類颂翼,易使用
2、ASI使用的是Reachability慨灭,因?yàn)槭褂肅ocoaPods下載ASI時(shí)朦乏,會(huì)同步下載Reachability,但Reachability作為網(wǎng)絡(luò)監(jiān)控使用較為復(fù)雜(相對(duì)于AFN的網(wǎng)絡(luò)監(jiān)控類來(lái)說(shuō))
3氧骤、推薦使用AFN做網(wǎng)絡(luò)監(jiān)控-AFNetworkReachabilityManager
六呻疹、ASI提供的其他實(shí)用功能
1、控制信號(hào)旁邊的圈圈要不要在請(qǐng)求過(guò)程中轉(zhuǎn)
2筹陵、可以輕松地設(shè)置請(qǐng)求之間的依賴:每一個(gè)請(qǐng)求都是一個(gè)NSOperation對(duì)象
3刽锤、可以統(tǒng)一管理所有請(qǐng)求(還專門(mén)提供了一個(gè)叫做ASINetworkQueue來(lái)管理所有的請(qǐng)求對(duì)象)
- 暫停/恢復(fù)/取消所有的請(qǐng)求
- 監(jiān)聽(tīng)整個(gè)隊(duì)列中所有請(qǐng)求的下載進(jìn)度和上傳進(jìn)度