摘 要: 提出一個(gè)應(yīng)用于移動(dòng)網(wǎng)絡(luò)的Web服務(wù)交互通信體系架構(gòu),,其將基于XML的系統(tǒng)通信的負(fù)擔(dān)從移動(dòng)客戶轉(zhuǎn)移到外部中間件上,,該中間件像網(wǎng)關(guān)一樣,使用快速的二進(jìn)制協(xié)議以客戶/服務(wù)器方式與移動(dòng)設(shè)備進(jìn)行輕量級(jí)通信,,并同時(shí)負(fù)責(zé)解析對(duì)Web服務(wù)的請(qǐng)求,。
關(guān)鍵詞: Web服務(wù);面向服務(wù)的體系結(jié)構(gòu),;移動(dòng)計(jì)算,;移動(dòng)設(shè)備
面向服務(wù)的體系結(jié)構(gòu)(SOA)技術(shù)包含了一個(gè)靈活的應(yīng)用組件集合,,這些組件相互獨(dú)立并可以互操作,,公開訪問接口,提供特定功能服務(wù),,更好地滿足了大企業(yè)系統(tǒng)的業(yè)務(wù)需求,。由于基于SOA構(gòu)建的系統(tǒng)能更靈活地隨業(yè)務(wù)需求而變化,有效解決了傳統(tǒng)大規(guī)模系統(tǒng)中任何子系統(tǒng)的細(xì)微需求變化及系統(tǒng)反應(yīng)極度敏感的問題,。
將SOA方法引入到Web,,產(chǎn)生了Web服務(wù)技術(shù)。該技術(shù)通過Web為運(yùn)行在不同平臺(tái)上的應(yīng)用之間提供了互操作和信息交換,。由于建立在XML和HTTP標(biāo)準(zhǔn)協(xié)議上,,因此Web服務(wù)容易開發(fā)并通過Web在任何地方訪問。
Web服務(wù)技術(shù)優(yōu)勢(shì)明顯,,引領(lǐng)企業(yè)業(yè)務(wù)主導(dǎo)權(quán),,具有高度互操作性、服務(wù)組件可發(fā)布性及易集成等特點(diǎn),。它也存在不足,,即Web服務(wù)用戶面對(duì)通信性能弱、需處理基于XML的額外負(fù)擔(dān),。近年來,,移動(dòng)應(yīng)用開發(fā)領(lǐng)域已出現(xiàn)過量的可用Web服務(wù),雖然移動(dòng)設(shè)備硬件能力已大大增強(qiáng),,但由于性能問題和移動(dòng)平臺(tái)缺乏本地化開發(fā)支持,,易使用的Web服務(wù)卻漸漸偏離大多數(shù)移動(dòng)平臺(tái)標(biāo)準(zhǔn)特征。
1 Web服務(wù)概述
Web服務(wù)主要使用HTTP和XML技術(shù),,為不同硬件及平臺(tái)上的應(yīng)用系統(tǒng)提供標(biāo)準(zhǔn)方式的交互操作,,它像自包含的部件,可以在Web上發(fā)布,、定位和調(diào)用,,為應(yīng)用在Web上提供一個(gè)獨(dú)立于硬件平臺(tái)和操作系統(tǒng)的標(biāo)準(zhǔn)通信機(jī)制。
由W3組織提出的Web服務(wù)構(gòu)架,,依據(jù)一些Web標(biāo)準(zhǔn),,如XML,、SOAP、WSDL和UDDI,,允許服務(wù)可以被任何應(yīng)用描述,、查找和集成。Web服務(wù)的實(shí)現(xiàn)分成SOAP Web服務(wù)和REST Web服務(wù)兩類,?;赟OAP的Web服務(wù)適合在復(fù)雜的多層計(jì)算環(huán)境中實(shí)現(xiàn)SOA,具有更大的靈活性和較低的集成成本,,但在與輕量級(jí)信息系統(tǒng)通信時(shí)比REST Web服務(wù)要求更大的性能,。
基于SOAP的Web服務(wù)主要有額外處理XML的性能問題和通信中缺乏事務(wù)支持兩種不足。在繁忙和不穩(wěn)定的網(wǎng)絡(luò)上,,相對(duì)于傳統(tǒng)方法的分布式計(jì)算(如CORBA或DCOM),,與Web服務(wù)通信必須忍受低性能,這是因?yàn)榛赬ML的信息系統(tǒng)追求簡(jiǎn)單而不是效率,。而且,,當(dāng)對(duì)XML請(qǐng)求/響應(yīng)編碼/解碼的額外負(fù)擔(dān)時(shí),肯定影響整個(gè)Web應(yīng)用的性能,。與Web服務(wù)通信中缺乏事務(wù)支持,,致使這種數(shù)據(jù)交換協(xié)議沒有狀態(tài),正如Web服務(wù)提供者和Web服務(wù)用戶彼此不知相互狀態(tài),。
當(dāng)今移動(dòng)設(shè)備中無線網(wǎng)接入已成為其標(biāo)準(zhǔn)特征,,移動(dòng)Web服務(wù)應(yīng)用的挑戰(zhàn)可歸結(jié)為兩點(diǎn):移動(dòng)硬件的能力(包括處理能力和網(wǎng)絡(luò)能力)和對(duì)移動(dòng)平臺(tái)的本地化支持。另外,,對(duì)資源約束限制的移動(dòng)設(shè)備應(yīng)考慮采用已有的標(biāo)準(zhǔn),。
2 移動(dòng)設(shè)備及平臺(tái)現(xiàn)狀
2.1 移動(dòng)設(shè)備及其局限性
移動(dòng)設(shè)備的能力不斷增長,并滿足移動(dòng)性和連接性等靈活性上的相關(guān)需求,。未來幾年內(nèi),,蜂窩式無線通信網(wǎng)絡(luò)的數(shù)據(jù)流量有望保持幾十倍增長,數(shù)據(jù)流量通常來自Web瀏覽,,尤其是觀看視頻,。
現(xiàn)在的智能手機(jī)具有最新式的硬件特征,從移動(dòng)性的角度講,,智能手機(jī)是市場(chǎng)上最吸引人的移動(dòng)設(shè)備,。智能手機(jī)的計(jì)算能力有顯著的提高,如快速的處理器,、更大容量的ROM和RAM,,它的發(fā)展趨勢(shì)是增強(qiáng)的無線網(wǎng)絡(luò)通信能力和高度聯(lián)接性等。移動(dòng)設(shè)備的主要硬件限制且必須解決的是巨大的電池消耗問題,,它導(dǎo)致了電池壽命縮短,、無線網(wǎng)絡(luò)帶寬低和無線連接不穩(wěn)定等問題,。只要有電池自主性,就可以達(dá)到相當(dāng)好的移動(dòng)性和連接性,,穩(wěn)定地與無線接入點(diǎn)連接,,很少或沒有延遲地使用Web服務(wù)。
2.2 移動(dòng)平臺(tái)的支持
為在移動(dòng)平臺(tái)上開發(fā)Web服務(wù)客戶程序,,現(xiàn)討論它們提供的現(xiàn)有支持,。
Sun公司將Java技術(shù)用于移動(dòng)設(shè)備,用標(biāo)準(zhǔn)模板訪問現(xiàn)有的Web服務(wù),,通過擴(kuò)展J2ME平臺(tái)帶有的JSR 172[1],,被命名為J2ME WSS(Web Services Specification)的請(qǐng)求,使J2ME轉(zhuǎn)成為標(biāo)準(zhǔn)的Java Web服務(wù)平臺(tái),,這些讓開發(fā)者容易創(chuàng)建客戶程序,,用于支持Java的移動(dòng)設(shè)備,。WSS是移動(dòng)服務(wù)架構(gòu)平臺(tái)的一部分,,設(shè)計(jì)它面向移動(dòng)設(shè)備的新技術(shù)和服務(wù),為所有支持Java的移動(dòng)設(shè)備提供標(biāo)準(zhǔn)應(yīng)用環(huán)境,,用于滿足市場(chǎng)發(fā)展,。
在支持Web服務(wù)應(yīng)用方面,Apple公司在移動(dòng)iPhone平臺(tái)上幾乎沒做努力,。SDK沒公開其內(nèi)置的C對(duì)象庫,,無法創(chuàng)建簡(jiǎn)單的Web服務(wù)客戶程序。而且,,當(dāng)實(shí)現(xiàn)必需的基于XML的消息機(jī)制時(shí),,很少用到Cocoa構(gòu)架的NSXML庫。當(dāng)需解析XML時(shí),,libxml2或KissXML庫肯定優(yōu)先使用,。iPhone平臺(tái)的工作區(qū)包括現(xiàn)有的應(yīng)用功能程序的使用,如wsdl2objc[2],,它派生出代理類,,以訪問源自WSDL規(guī)格的服務(wù)。派生類包含Web服務(wù)公開的所有方法,。不過,,開源社區(qū)作了明顯的努力,用于創(chuàng)建易于使用的框架,,以訪問Web服務(wù),。
事實(shí)也證明,Google公司沒使SOAP Web服務(wù)應(yīng)用對(duì)Android平臺(tái)開發(fā)者社區(qū)是一個(gè)容易的任務(wù),。SDK甚至沒打包成工具包為Web服務(wù)接口產(chǎn)生派生類,。在開發(fā)社區(qū)中,,Android平臺(tái)被認(rèn)為是最適合在移動(dòng)空間中作為Google服務(wù)的發(fā)布者。
在Windows Mobile平臺(tái)上應(yīng)用Web服務(wù)是容易的工作,,因?yàn)?NET框架適合同步和異步訪問,。與Windows Phone 7平臺(tái)類似,通過簡(jiǎn)單引用Web服務(wù)生成服務(wù)接口開放的代理類,。
Nokia從Symbian系列60平臺(tái)提供Serene框架,,容易創(chuàng)建訪問Web服務(wù)的客戶程序應(yīng)用。該框架依賴J2ME JSR 172規(guī)格,,提供創(chuàng)建相關(guān)豐富Web應(yīng)用的全部支持,。
除了Windows和Nokia平臺(tái)提供支持,允許開發(fā)人員專注于設(shè)計(jì)和創(chuàng)造,,其他平臺(tái)缺少本地化支持,,開發(fā)SOAP Web服務(wù)客戶程序要求更多的額外努力。而且要在所有移動(dòng)平臺(tái)上實(shí)現(xiàn)Web應(yīng)用既麻煩又耗費(fèi)資源,,特定的平臺(tái)需要特定的工作環(huán)境,。
3 相關(guān)工作介紹
目前,開源社區(qū)提出的兩類解決辦法是解決問題的基礎(chǔ),,據(jù)此進(jìn)行簡(jiǎn)單改編,,針對(duì)基于SOAP的Web服務(wù)的局限性,為大多數(shù)移動(dòng)平臺(tái)能應(yīng)用,。
3.1 支持RESTFul架構(gòu)
參考文獻(xiàn)[3]提出的Web服務(wù)架構(gòu)通過修改現(xiàn)有的SOAP Web服務(wù)解決通常SOAP消息系統(tǒng)的兩個(gè)資源耗費(fèi)問題,,即由于密集的SOAP請(qǐng)求封裝機(jī)制帶來HTTP通信負(fù)擔(dān)、移動(dòng)設(shè)備端SOAP響應(yīng)的解析,,以適應(yīng)移動(dòng)設(shè)備的低資源特點(diǎn),。參考文獻(xiàn)[4]的方法依據(jù)的是RESTful架構(gòu),也因SOAP協(xié)議的傳輸中立性而帶來一系列的問題,。通過為每類交互活動(dòng)明確地分配另一個(gè)截然不同的URL,,現(xiàn)有的SOAP接口甚至優(yōu)化在RESTful架構(gòu)中。對(duì)同步和異步RESTful實(shí)現(xiàn)都進(jìn)行了性能測(cè)試,,結(jié)果很樂觀,,隨著HTTP負(fù)載的減輕,從同步調(diào)用高達(dá)96%負(fù)載,,減至異步調(diào)用的75%,。
3.2 使用移動(dòng)Web服務(wù)代理
另一解決辦法是在移動(dòng)網(wǎng)絡(luò)中引入Web服務(wù)代理,它像移動(dòng)設(shè)備和Web服務(wù)之間的網(wǎng)關(guān)一樣[5],。代理從移動(dòng)設(shè)備接收輸入?yún)?shù),,調(diào)用請(qǐng)求的服務(wù),并向移動(dòng)設(shè)備返回結(jié)果。結(jié)果令人滿意,,因?yàn)橄艘苿?dòng)設(shè)備端的XML處理,,獲得了改進(jìn)性能。性能測(cè)試顯示,,響應(yīng)時(shí)間很少且數(shù)據(jù)負(fù)荷低,。
目前,研究領(lǐng)域存在以上兩種辦法的主要原因是有個(gè)通用理念,,即移動(dòng)設(shè)備上任何可行的通信架構(gòu)必須包括中間件,,它存在于設(shè)備之外,負(fù)責(zé)與Web服務(wù)通信且必須處理XML的重?fù)?dān),。那些中間件像網(wǎng)關(guān)服務(wù)器一樣工作,,與移動(dòng)設(shè)備輕量級(jí)通信,,并承擔(dān)檢索來自Web服務(wù)的響應(yīng),。這種類型架構(gòu)對(duì)確保與Web服務(wù)更可靠的通信會(huì)有更大的機(jī)會(huì)。無線通信是移動(dòng)設(shè)備上易于波動(dòng)的行為,,會(huì)造成無線訪問出錯(cuò),。網(wǎng)關(guān)將最大可能地運(yùn)行在專用硬件上,將證明確保去查找一些與Web服務(wù)的通信狀態(tài),。連接錯(cuò)誤時(shí),,會(huì)啟用重試機(jī)制。
4 基于中間件的Web服務(wù)應(yīng)用構(gòu)架
在提出的通信架構(gòu)中引入中間件,,它像SOAP和瘦客戶之間的網(wǎng)關(guān),而瘦客戶剝離了處理XML的重?fù)?dān),。網(wǎng)關(guān)是移動(dòng)客戶的服務(wù)器,,承擔(dān)著移動(dòng)客戶請(qǐng)求響應(yīng)的任務(wù)。通用的通信系統(tǒng)架構(gòu)如圖1所示,,移動(dòng)客戶將必須使用二進(jìn)制協(xié)議維持與網(wǎng)關(guān)的輕量級(jí)C/S通信,。當(dāng)然,任何比SOAP協(xié)議更輕量級(jí)的協(xié)議都可以使用(如REST),,但眾所周知二進(jìn)制協(xié)議大致與SOAP協(xié)議功能相當(dāng),。二進(jìn)制協(xié)議簡(jiǎn)單,不如XML或SOAP標(biāo)準(zhǔn),,但它們能提供同樣層次的擴(kuò)展性和低通信腳本上的安全性,。而且,從開發(fā)者支持的角度,,成功的協(xié)議會(huì)為所有重要的編程語言和開發(fā)平臺(tái)提供客戶端口,。
該架構(gòu)的優(yōu)點(diǎn)如下:
(1)移動(dòng)客戶必須維持輕量級(jí)通信,即較小帶寬和較低處理能力要求,。
?。?)可以開發(fā)出高級(jí)的安全措施,因?yàn)榫W(wǎng)關(guān)中間件將代表移動(dòng)客戶工作,。
?。?)為防止任何通信錯(cuò)誤(移動(dòng)設(shè)備到網(wǎng)關(guān)或網(wǎng)關(guān)到Web服務(wù)),存儲(chǔ)一些狀態(tài)用于保證透明地與移動(dòng)客戶通信,,網(wǎng)關(guān)保持全部的通信狀態(tài),,當(dāng)斷線后的所有方重回線上時(shí),繼續(xù)重試通信連接,。
?。?)從實(shí)現(xiàn)架構(gòu)的角度看,容易設(shè)計(jì)出軟件工具,,幾乎自動(dòng)地從WSDL文檔開始,,創(chuàng)建完全網(wǎng)關(guān)和移動(dòng)客戶部件;系統(tǒng)架構(gòu)容易生成和測(cè)試,,優(yōu)于任何的現(xiàn)有實(shí)現(xiàn),。
唯一不足的是這種構(gòu)架可能增加總的請(qǐng)求應(yīng)答時(shí)間。系統(tǒng)或許贏得些時(shí)間,,如果網(wǎng)關(guān)上執(zhí)行的XML處理量巨大,,但是這并不準(zhǔn)確,因?yàn)閮赏ㄐ啪€路必須建立并維護(hù),,因此這早于任何實(shí)際實(shí)現(xiàn)的測(cè)量,該方向上沒有明確的結(jié)論,。
使用大量Web服務(wù)的Web應(yīng)用實(shí)現(xiàn)是接下來應(yīng)用領(lǐng)域里的工作,。移動(dòng)應(yīng)用市場(chǎng)正尋找解決授權(quán)移動(dòng)設(shè)備與Web服務(wù)集成的辦法,并盡可能降低當(dāng)前的性能問題,。Web服務(wù)的研究者[5]證明并不存在實(shí)際的工作區(qū),,將嘗試通過更快的XML解析器、全面協(xié)議優(yōu)化和數(shù)據(jù)壓縮等來消費(fèi)Web服務(wù),,提高移動(dòng)客戶的性能。參考文獻(xiàn)[3],、[5]的研究者證實(shí)了設(shè)計(jì)通信架構(gòu)的努力,,包括存在于外部設(shè)備的中間件部件,,負(fù)責(zé)與Web服務(wù)通信時(shí)的XML處理,。
下一步工作包括創(chuàng)建一個(gè)更加詳細(xì)的原型,,支持在主流移動(dòng)平臺(tái)上的Web應(yīng)用現(xiàn)存的開發(fā),主要是為實(shí)現(xiàn)新的Windows Phone 8平臺(tái)而提出的架構(gòu),。該平臺(tái)確定容易創(chuàng)建Web服務(wù)的客戶應(yīng)用,,相比之下,,基于網(wǎng)關(guān)的體系架構(gòu)的性能試驗(yàn)還不如它重要,。在基于網(wǎng)關(guān)的構(gòu)架實(shí)現(xiàn)中,,主要將對(duì)Windows Phone客戶程序的封裝帶寬進(jìn)行測(cè)量,,并與容易創(chuàng)建的.NET Framework下的SOAP Web服務(wù)客戶程序的數(shù)據(jù)結(jié)果進(jìn)行比較,兩個(gè)方案的系統(tǒng)性能和可靠性也將進(jìn)行測(cè)試和對(duì)比,。
參考文獻(xiàn)
[1] JSR 172: J2METM Web services specification[EB/OL].http://jcp.org/en/jsr/detail?id=172,, 2012-01-20.
[2] wsdl2objc library homepage[EB/OL]. http://code.google.com/p/wsdl2objc/,2012-01-20.
[3] AIJAZ F,, ZAHID S A,, CHAUDHARY M, et al. Enabling high performance mobile Web services provisioning[C].Vehicular Technology Conference Fall(VTC 2009-Fall),,2009:1-6.
[4] 劉振海,,姜利群,殷兆麟,,等.移動(dòng)Web服務(wù)的研究與應(yīng)用[J].計(jì)算機(jī)工程與設(shè)計(jì),,2009,30(11):2711-2713.
[5] ADA?觭AL M,, BENER A B. Mobile Web services: a new agent-based framework[J]. Internet Computing,, 2006,,10(3):58-65.