Web 服務(wù)架構(gòu)
web service是一種服務(wù)(一種中間件技術(shù)),采用HTTP協(xié)議通信。通過web service可以將不同操作系統(tǒng)平臺(tái)、不同語言、不同技術(shù)整合到一起。
RESTful Web 服務(wù)使用標(biāo)準(zhǔn)的 HTTP 方法 (GET/PUT/POST/DELETE) 來抽象所有 Web 系統(tǒng)的服務(wù)能力,而不同的是,SOAP 應(yīng)用都通過定義自己個(gè)性化的接口方法來抽象 Web 服務(wù),這更像我們經(jīng)常談到的 RPC。
- 基于SOAP協(xié)議的遠(yuǎn)程調(diào)用標(biāo)準(zhǔn)- soap web service
PC版本的web service客戶端庫非常豐富,例如XFile,Axis2,CXF等,但這些開發(fā)包對(duì)于Android系統(tǒng)過于龐大,也未必很容易移植到Android系統(tǒng)中。
適合手機(jī)的web service客戶端的第三方的類庫有一些,比較常用的有Ksoap2。Ksoap2是一個(gè)SOAP web service客戶端開發(fā)包,主要用于資源受限制的Java環(huán)境,如Applets或J2ME應(yīng)用程序(CLDC/ CDC/MIDP)。在Android平臺(tái)中我們并不會(huì)直接使用ksoap2,而是使用ksoap2 android。KSoap2 Android 是Android平臺(tái)上一個(gè)高效、輕量級(jí)的SOAP開發(fā)包,等同于Android平臺(tái)上的KSoap2的移植版本。
- RESTful Web service
APP使用HTTP來收發(fā)數(shù)據(jù)。
Java的一個(gè)輕量級(jí)的REST框架,可用于調(diào)用一個(gè)RESTful Web服務(wù),并轉(zhuǎn)換響應(yīng)成客戶端應(yīng)用程序定制的值對(duì)象。由于它的簡單,resting適合Android等手持設(shè)備。
?暴露簡單的get(),post(),put()和delete()方法來消費(fèi)REST服務(wù)
?支持像JSON,XML,ATOM和YAML所有常用的MIME類型
?啟用的REST風(fēng)格的Web服務(wù)HTTP和HTTPS(SSL)調(diào)用
?支持basic authentication(基本身份驗(yàn)證)
?支持代理
?支持轉(zhuǎn)型過程中任意復(fù)雜的編組數(shù)據(jù)和解組
?支持在REST請(qǐng)求集合定制代表性
?輕量級(jí),操作簡單,快捷。非常適用于Android系統(tǒng)。
Android HTTP客戶端
Android官方提供了2個(gè)客戶端開發(fā)包,都均支持HTTPS、流媒體上傳和下載、配置超時(shí)、支持IPv6、連接池。
- HttpURLConnection
優(yōu)點(diǎn):
更加通用、輕量級(jí)的客戶端,適合大多數(shù)應(yīng)用
API比較集中
缺點(diǎn):
較少的API使得維護(hù)起來比較容易
Froyo之前,有不少bug,尤其是嘗試關(guān)閉一個(gè)正在讀取的InputStream 時(shí)會(huì)污染連接池。解決方案是禁用連接池。
在Gingerbread時(shí),通過增加transparent response compression頭【Accept-Encoding: gzip】對(duì)響應(yīng)進(jìn)行壓縮解決該問題。但導(dǎo)致HTTP頭 Content-Length不能真實(shí)反映響應(yīng)數(shù)據(jù)大小。
同時(shí)對(duì)HTTPS進(jìn)行了改進(jìn)。
Server Name Indication (SNI)
session tickets
在Ice Cream Sandwich時(shí),增加response cache。使用時(shí)web服務(wù)器需要在響應(yīng)里增加HTTP頭cache headers。
Fully cached responses are served directly from local storage
Conditionally cached responses must have their freshness validated by the webserver.
Uncached responses are served from the web.
- Apache HTTP Client
核心類:DefaultHttpClient、AndroidHttpClient
優(yōu)點(diǎn):
適合web瀏覽器
可伸縮
海量、靈活的API
穩(wěn)定的實(shí)現(xiàn),有很少的bug
更加貼近 Web 本身的工作方式
缺點(diǎn):
海量的API使其改進(jìn)起來而且不破壞兼容性變得困難,Android團(tuán)隊(duì)不太積極。
對(duì)比:在Froyo之前,Apache HTTP client有更少的bug,是最好的選擇。
在Gingerbread 及以后,HttpURLConnection 是最好的選擇。因?yàn)锳PI簡單,更小,Transparent compression和response caching減少了網(wǎng)絡(luò)請(qǐng)求次數(shù)、加快了速度、省電。新的應(yīng)用應(yīng)該使用HttpURLConnection 。
浙公網(wǎng)安備 33010602011771號(hào)