- Android開(kāi)發(fā)精要
- 范懷宇
- 872字
- 2018-12-31 16:21:55
3.1.3 基于Mashup的應(yīng)用架構(gòu)特征
基于Mashup的應(yīng)用,其核心是組件,應(yīng)用邊界、進(jìn)程邊界和網(wǎng)絡(luò)邊界在Android中都變得模糊而且不那么重要了。在Android中,組件執(zhí)行時(shí)的聚合單元是任務(wù)(Task),每個(gè)任務(wù)都由若干個(gè)界面組件對(duì)象構(gòu)成,這些組件可能來(lái)自不同的應(yīng)用,運(yùn)行在不同的進(jìn)程中,它們彼此獨(dú)立,就像黑盒子一樣,無(wú)須關(guān)注具體調(diào)用者或被調(diào)用者的實(shí)現(xiàn)細(xì)節(jié)。
組件間的數(shù)據(jù)傳輸,都是通過(guò)消息、進(jìn)程間的通信模型等序列化數(shù)據(jù)傳輸?shù)姆绞絹?lái)進(jìn)行,而不是通過(guò)對(duì)象指針的直接傳遞,這就使得Android的應(yīng)用天生具有了良好的跨進(jìn)程特征。在實(shí)際的Android開(kāi)發(fā)中,開(kāi)發(fā)者通常不需要關(guān)注應(yīng)用進(jìn)程的問(wèn)題,而只需要把精力放在組件的管理和控制上即可。
基于組件的設(shè)計(jì),不僅使得應(yīng)用具有跨進(jìn)程性,而且還具有跨網(wǎng)絡(luò)的特性。當(dāng)調(diào)用方組件發(fā)起請(qǐng)求,希望第三方組件幫助提供所需的功能或數(shù)據(jù)時(shí),能夠響應(yīng)該請(qǐng)求的,不僅可以是一個(gè)本地已安裝應(yīng)用的組件,還可以是符合該請(qǐng)求的Web頁(yè)面,C/S和B/S的差別在Android上也變得模糊了。
實(shí)現(xiàn)從跨進(jìn)程到跨網(wǎng)絡(luò)的升級(jí),有兩處關(guān)鍵的設(shè)計(jì)。首先是內(nèi)置瀏覽器的支持。Android中搭載了移動(dòng)平臺(tái)史上最彪悍的瀏覽器Chrome Lite,它不僅可以完美地支持當(dāng)前的各種HTML、JS和CSS,還提供對(duì)HTML 5和CSS3的支持。瀏覽器應(yīng)用中的界面組件,能夠處理不同的Web請(qǐng)求,從而使得Web頁(yè)面的展示能夠并入Android的組件體系中。
而另一個(gè)關(guān)鍵點(diǎn)在于Android沿用了Web中的服務(wù)定位等標(biāo)準(zhǔn)。Web頁(yè)面是通過(guò)URL進(jìn)行定位的,通過(guò)MIME type對(duì)其類型進(jìn)行描述。而在Android中,采取了同樣的標(biāo)準(zhǔn),這就使得每一個(gè)Web頁(yè)面都可以歸納到Android的識(shí)別范圍之內(nèi)。
舉一個(gè)示例,如圖3-2所示,一個(gè)帶有地圖信息的鏈接,不僅可以通過(guò)瀏覽器請(qǐng)求Web服務(wù)來(lái)進(jìn)行展示,而且還可以通過(guò)本地安裝的Google地圖之類應(yīng)用的組件進(jìn)行展示和處理。相比之下,Web服務(wù)的使用門檻更低,而本地服務(wù)能夠提供更豐富的處理功能。用戶可以根據(jù)需求,選擇最適合的方式。

圖3-2 通過(guò)不同的組件展示同樣的地圖信息
基于Mashup的這種應(yīng)用架構(gòu)模式,可以將整個(gè)Android設(shè)備中安裝的應(yīng)用以及各種Web應(yīng)用糅合在一起,以幫助用戶更好地完成相關(guān)事務(wù)。對(duì)于開(kāi)發(fā)者而言,這樣不僅降低了開(kāi)發(fā)成本,還提供了最好的用戶體驗(yàn),真可謂一舉多得、互惠互利的應(yīng)用模型。
- C及C++程序設(shè)計(jì)(第4版)
- JavaScript前端開(kāi)發(fā)模塊化教程
- Learning Selenium Testing Tools with Python
- 數(shù)據(jù)結(jié)構(gòu)和算法基礎(chǔ)(Java語(yǔ)言實(shí)現(xiàn))
- Java開(kāi)發(fā)入行真功夫
- Podman實(shí)戰(zhàn)
- PhoneGap:Beginner's Guide(Third Edition)
- 精通Linux(第2版)
- Clojure for Machine Learning
- Android應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)
- INSTANT Apache ServiceMix How-to
- Node.js 6.x Blueprints
- UI動(dòng)效設(shè)計(jì)從入門到精通
- INSTANT LESS CSS Preprocessor How-to
- Processing開(kāi)發(fā)實(shí)戰(zhàn)