幾個主流網(wǎng)絡(luò)框架的比較

聲明:私用,技術(shù)交流使用,大部分摘抄

HttpURLConnection:

HttpURLConnection是java的標(biāo)準(zhǔn)類矛市,什么都沒封裝,用起來太原始诲祸,不方便尘盼,比如重訪問的自定義,以及一些高級功能等烦绳。

HttpClient:

在Android中,androidSDK中集成了Apache的HttpClient模塊配紫,HttpClient就是一個增強(qiáng)版的HttpURLConnection径密,它只是關(guān)注于如何發(fā)送請求、接收響應(yīng)躺孝,以及管理HTTP連接享扔。如果做好封裝或者使用android-async-http底桂,Afinal,Xutils也能挺簡單的完成http請求惧眠,但是Android6.0谷歌因為和Apache更新難以同步等原因吧已經(jīng)放棄了HttpClient籽懦,HttpClient是不是系統(tǒng)自帶的了,不過它在最近的更新中將HttpClient的所有代碼copy了一份進(jìn)來氛魁,所以還能使用暮顺。

AsyncHttpClient:

android-async-http內(nèi)部實現(xiàn)是基于HttpClient, 我想可能也是因為目前 HttpClient 已經(jīng)被廢棄所以作者放棄維護(hù)了。

Volley:

是谷歌官方13年I/O大會推出的秀存,volley在設(shè)計的時候是將具體的請求客戶端做了下封裝:HurlStack捶码,也就是說可以支持HttpUrlConnection, HttpClient, OkHttp,我理解的就是說它是在應(yīng)用層或链,做了封裝惫恼,使用起來比較方便,直接用澳盐,還可以擴(kuò)展HttpUrlConnection, HttpClient, OkHttp祈纯。相當(dāng)于模版模式。這樣解耦還是非常方便的叼耙,可以隨意切換腕窥。
而且 Volley 里面也封裝了 ImageLoader ,所以如果圖片處理需求簡單我們可以不需要專門再去使用圖片加載框架旬蟋。
而且Volley 也有缺陷油昂,比如不支持 post 大數(shù)據(jù),所以不適合上傳文件倾贰。不過 Volley 設(shè)計的初衷本身也就是為頻繁的冕碟、數(shù)據(jù)量小的網(wǎng)絡(luò)請求而生!

okHttp:

OkHttp 是 Square 公司開源的針對 Java 和 Android 程序匆浙,封裝的一個高性能 http 請求庫安寺。

我們來先說一個常識性的錯誤:volley, retrofit, android-async-http 幫你封裝了具體的請求,線程切換以及數(shù)據(jù)轉(zhuǎn)換首尼。而OkHttp 是基于http協(xié)議封裝的一套請求客戶端挑庶,雖然它也可以開線程,但根本上它更偏向真正的請求软能,跟HttpClient, HttpUrlConnection的職責(zé)是一樣的迎捺。

OKHttp 類似于 HttpUrlConnection, 是基于傳輸層實現(xiàn)應(yīng)用層協(xié)議的網(wǎng)絡(luò)框架查排。 而不止是一個 Http 請求應(yīng)用的庫凳枝。

  • ok的優(yōu)勢:
    鏈接復(fù)用
    Response 緩存和 Cookie
    默認(rèn) GZIP
    請求失敗自動重連
    DNS 擴(kuò)展
    Http2/SPDY/WebSocket 協(xié)議支持
    默認(rèn)情況下,OKHttp會自動處理常見的網(wǎng)絡(luò)問題:像二次連接、SSL的握手問題岖瑰。
    從Android4.4開始HttpURLConnection的底層實現(xiàn)采用的是okHttp.
    需要注意的是:okHttp的回調(diào)方法叛买,并不處于UI 線程中,對網(wǎng)絡(luò)請求結(jié)果如果涉及UI 線程的操作蹋订,需要使用Handler率挣。可以把它理解成是一個封裝之后的類似 HttpUrlConnection 的一個東西露戒,但是你在使用的時候仍然需要自己再做一層封裝椒功,這樣才能像使用一個框架一樣更加順手。

Retrofit:

Retrofit 是 Square 公司出品的默認(rèn)基于 OkHttp 封裝的一套 RESTful 網(wǎng)絡(luò)請求框架玫锋,蛾茉,RESTful 可以說是目前流行的一套 api 設(shè)計的風(fēng)格,并不是標(biāo)準(zhǔn)撩鹿。Retrofit 的封裝可以說是很強(qiáng)大谦炬,里面涉及到一堆的設(shè)計模式,你可以通過注解直接配置請求节沦,你可以使用不同的 http 客戶端键思,雖然默認(rèn)是用 OKhttp ,可以使用不同 Json Converter 來序列化數(shù)據(jù)甫贯,同時提供對 RxJava 的支持吼鳞,使用 Retrofit + OkHttp + RxJava + Dagger2 可以說是目前比較潮的一套框架,但是需要有比較高的門檻叫搁。

OK VS Volley

毫無疑問 Volley 的優(yōu)勢在于封裝的更好赔桌,而使用 OkHttp 你需要有足夠的能力再進(jìn)行一次封裝。而 OkHttp 的優(yōu)勢在于性能更高渴逻,因為 OkHttp 基于 NIO 和 Okio 疾党,所以性能上要比 Volley更快。
IO和NIO區(qū)別惨奕,NIO 要比 IO 的性能要好雪位,阻塞方面(IO阻塞),NIO面向緩沖區(qū)梨撞,需要時可在緩沖區(qū)中前后移動雹洗。這就增加了處理過程中的靈活性。而 Okio 是 Square 公司基于 IO 和 NIO 基礎(chǔ)上做的一個更簡單卧波、高效處理數(shù)據(jù)流的一個庫时肿。

OkHttp VS Retrofit :

毫無疑問,Retrofit 默認(rèn)是基于 OkHttp 而做的封裝港粱,這點來說沒有可比性嗜侮,肯定首選 Retrofit。retrofit,結(jié)合okhttp以及gson锈颗,再加上Rxjava,簡直神器咪惠!但是實際到后臺數(shù)據(jù)風(fēng)格(RESTful)我覺得击吱,這是我們下一次改進(jìn)的方向。

Volley VS Retrofit:

這兩個庫都做了非常不錯的封裝遥昧,但是 Retrofit 解耦的更徹底覆醇,尤其 Retrofit 2.0 出來,Jake 對之前 1.0 設(shè)計不合理的地方做了大量重構(gòu)炭臭,職責(zé)更細(xì)分永脓,而且 Retrofit 默認(rèn)使用 OkHttp ,性能上也要比 Volley 占優(yōu)勢鞋仍,再有如果你的項目如果采用了 RxJava 常摧,那更該使用 Retrofit 。

所以總結(jié)下來:

Retrofit > Volley+OK > OK ,
Retrofit > 封裝OK > Volley威创。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末落午,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子肚豺,更是在濱河造成了極大的恐慌溃斋,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吸申,死亡現(xiàn)場離奇詭異梗劫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)截碴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門梳侨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人隐岛,你說我怎么就攤上這事猫妙。” “怎么了聚凹?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵割坠,是天一觀的道長。 經(jīng)常有香客問我妒牙,道長彼哼,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任湘今,我火速辦了婚禮敢朱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己拴签,他們只是感情好孝常,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚓哩,像睡著了一般构灸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上岸梨,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天喜颁,我揣著相機(jī)與錄音,去河邊找鬼曹阔。 笑死半开,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的赃份。 我是一名探鬼主播寂拆,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼芥炭!你這毒婦竟也來了漓库?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤园蝠,失蹤者是張志新(化名)和其女友劉穎渺蒿,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體彪薛,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡茂装,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了善延。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片少态。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖易遣,靈堂內(nèi)的尸體忽然破棺而出彼妻,到底是詐尸還是另有隱情,我是刑警寧澤豆茫,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布侨歉,位于F島的核電站,受9級特大地震影響揩魂,放射性物質(zhì)發(fā)生泄漏幽邓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一火脉、第九天 我趴在偏房一處隱蔽的房頂上張望牵舵。 院中可真熱鬧柒啤,春花似錦、人聲如沸畸颅。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽重斑。三九已至兵睛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間窥浪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工笛丙, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留漾脂,地道東北人。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓胚鸯,卻偏偏與公主長得像骨稿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子姜钳,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容