一、底層實現(xiàn)
1价认、AFN的底層實現(xiàn)基于OC的NSURLConnection和NSURLSession
2油挥、ASI的底層實現(xiàn)基于純C語言的CFNetwork框架
3、因為NSURLConnection和NSURLSession是在CFNetwork之上的一層封裝暇检,因此ASI的運行性能高于AFN
二产阱、對服務(wù)器返回的數(shù)據(jù)處理
1、ASI沒有直接提供對服務(wù)器數(shù)據(jù)處理的方式块仆,直接返回的是NSData/NSString
2构蹬、AFN提供了多種對服務(wù)器數(shù)據(jù)處理的方式
(1)JSON處理-直接返回NSDictionary或者NSArray
(2)XML處理-返回的是xml類型數(shù)據(jù),需對其進行解析
(3)其他類型數(shù)據(jù)處理
三悔据、監(jiān)聽請求過程
1庄敛、AFN提供了success和failure兩個block來監(jiān)聽請求的過程(只能監(jiān)聽成功和失敗)
- success : 請求成功后調(diào)用
- failure : 請求失敗后調(diào)用
2科汗、ASI提供了3套方案藻烤,每一套方案都能監(jiān)聽請求的完整過程
(監(jiān)聽請求開始、接收到響應(yīng)頭信息头滔、接受到具體數(shù)據(jù)怖亭、接受完畢、請求失斪竞痢) - 成為代理依许,遵守協(xié)議,實現(xiàn)協(xié)議中的代理方法
- 成為代理缀蹄,不遵守協(xié)議峭跳,自定義代理方法
- 設(shè)置block
四、在文件下載和文件上傳的使用難易度
1缺前、AFN
*不容易實現(xiàn)監(jiān)聽下載進度和上傳進度
*不容易實現(xiàn)斷點續(xù)傳
*一般只用來下載不大的文件
2蛀醉、ASI
*非常容易實現(xiàn)下載和上傳
*非常容易監(jiān)聽下載進度和上傳進度
*非常容易實現(xiàn)斷點續(xù)傳
*下載大文件或小文件均可
3、實現(xiàn)下載上傳推薦使用ASI
五衅码、網(wǎng)絡(luò)監(jiān)控
1拯刁、AFN自己封裝了網(wǎng)絡(luò)監(jiān)控類,易使用
2逝段、ASI使用的是Reachability垛玻,因為使用CocoaPods下載ASI時,會同步下載Reachability奶躯,但Reachability作為網(wǎng)絡(luò)監(jiān)控使用較為復(fù)雜(相對于AFN的網(wǎng)絡(luò)監(jiān)控類來說)
3帚桩、推薦使用AFN做網(wǎng)絡(luò)監(jiān)控-AFNetworkReachabilityManager
六、ASI提供的其他實用功能
1嘹黔、控制信號旁邊的圈圈要不要在請求過程中轉(zhuǎn)
2账嚎、可以輕松地設(shè)置請求之間的依賴:每一個請求都是一個NSOperation對象
3、可以統(tǒng)一管理所有請求(還專門提供了一個叫做ASINetworkQueue來管理所有的請求對象)
- 暫停/恢復(fù)/取消所有的請求
- 監(jiān)聽整個隊列中所有請求的下載進度和上傳進度