王鵬飛
摘 要: 研究了移動(dòng)應(yīng)用開發(fā)架構(gòu)和基于JSON-REST的移動(dòng)客戶端平臺(tái),以及連接后臺(tái)終端的相關(guān)Web服務(wù)應(yīng)用程序接口。為了減少企業(yè)中移動(dòng)平臺(tái)應(yīng)用開發(fā)成本,通過(guò)重用已有的桌面或基于Web的應(yīng)用程序后臺(tái)服務(wù),實(shí)現(xiàn)移動(dòng)瘦客戶端服務(wù)架構(gòu),為開發(fā)多平臺(tái)移動(dòng)應(yīng)用增強(qiáng)服務(wù)。在企業(yè)開發(fā)中,利用客戶端的JQuery Ajax實(shí)現(xiàn)從REST應(yīng)用程序接口中加載動(dòng)態(tài)數(shù)據(jù),而用JSON(JavaScript對(duì)象符號(hào))實(shí)現(xiàn)數(shù)據(jù)格式的傳輸。
關(guān)鍵詞: 移動(dòng)應(yīng)用; PhoneGap; 具象狀態(tài)傳輸協(xié)議; JSON
中圖分類號(hào):TP302.1 文獻(xiàn)標(biāo)志碼:A 文章編號(hào):1006-8228(2016)03-27-04
Research and implementation of the application of mobile thin client architecture in enterprise
Wang Pengfei
(School of Economics and Management, Zhejiang Sci-Tech University, Hangzhou, Zhejiang 310018, China)
Abstract: This paper discusses about mobile application development architecture and JSON-REST Web API used by mobile client to connect backend. To reduce the development cost of mobile applications, by reusing the backend services of existing desktop or Web-based applications and enhancing some services for developing multiplatform mobile application, the mobile thin client-server architecture is realized. JQuery Ajax is used as client side scripting to load dynamic data from rest API while JSON is used as data-transferring format.
Key words: mobile application; PhoneGap; REST; JSON
0 引言
移動(dòng)應(yīng)用是多層次的應(yīng)用,主要用于客戶端/服務(wù)器架構(gòu)的開發(fā)。目前開發(fā)現(xiàn)有桌面移動(dòng)應(yīng)用或Web應(yīng)用程序通常面臨諸多挑戰(zhàn):
⑴ 選擇合適的體系結(jié)構(gòu);
⑵ 考慮應(yīng)用程序開發(fā)過(guò)程、開發(fā)成本、整體性能和運(yùn)行速度;
⑶ 考慮重用現(xiàn)有的Web服務(wù)并且集成移動(dòng)客戶端到應(yīng)用層;
⑷ 設(shè)計(jì)移動(dòng)客戶端表現(xiàn)層;
⑸ 滿足終端用戶的需求及兼容性問(wèn)題。
移動(dòng)用戶希望通過(guò)智能手機(jī)來(lái)訪問(wèn)數(shù)據(jù),并獲得網(wǎng)絡(luò)上安全的服務(wù),同時(shí),在任務(wù)執(zhí)行時(shí)可以監(jiān)控資源,并將提示反饋到手機(jī)上。所以,手機(jī)的移動(dòng)性、適用性,與Web應(yīng)用程序有相同的功能等是關(guān)鍵。
1 移動(dòng)應(yīng)用開發(fā)平臺(tái)概述
移動(dòng)應(yīng)用軟件開發(fā)主要用于小型平板和特殊用途的移動(dòng)設(shè)備開發(fā)。移動(dòng)Web服務(wù)用于服務(wù)請(qǐng)求程序和服務(wù)供應(yīng)商之間的通信。開發(fā)任何移動(dòng)應(yīng)用都可以選擇三種架構(gòu)中其中的一個(gè):Native apps, Mobile Webapps和Hybridapps。它們每個(gè)結(jié)構(gòu)都有各自的特點(diǎn),選擇合適的開發(fā)結(jié)構(gòu)取決于需求和應(yīng)用程序以及軟件服務(wù)供應(yīng)商。
1.1 Native App
目前市場(chǎng)上移動(dòng)設(shè)備從低端手持到高端移動(dòng)設(shè)備都有各自的操作系統(tǒng),每種不同類型的操作系統(tǒng)如安卓、Symbian、IOS和微軟等其編程語(yǔ)言不同。Android應(yīng)用程序運(yùn)行基于Android SDK和API,僅適用于Android設(shè)備,不支持任何其他操作系統(tǒng)。所有的本機(jī)應(yīng)用程序從設(shè)備供應(yīng)商處下載并安裝在本機(jī)上。因此升級(jí)之前版本的應(yīng)用程序也增加了復(fù)雜性。
1.2 Mobile WebApp
Mobile WebApp是運(yùn)行在移動(dòng)網(wǎng)絡(luò)瀏覽器的Web應(yīng)用程序,可以用于實(shí)現(xiàn)延長(zhǎng)現(xiàn)有的獨(dú)立應(yīng)用程序的功能。相比Native App,WebApp更易維護(hù),開發(fā)成本更低。移動(dòng)客戶端UI、表示層和后端應(yīng)用層可以通過(guò)移動(dòng)Web服務(wù)相互之間進(jìn)行通信。移動(dòng)應(yīng)用程序不提供完全的類似攝像頭和全球衛(wèi)星定位(GPS)的設(shè)備訪問(wèn)功能。因此可廣泛使用HTML5進(jìn)行Web應(yīng)用程序開發(fā),以此提升服務(wù)和功能更新,而不會(huì)影響移動(dòng)Web應(yīng)用程序發(fā)送請(qǐng)求并通過(guò)HTTP進(jìn)行通信和服務(wù)器執(zhí)行,并將響應(yīng)發(fā)送到移動(dòng)瀏覽器上。
1.3 Hybrid WebApp
Hybrid WebApp可用于復(fù)雜的應(yīng)用程序開發(fā),是移動(dòng)網(wǎng)絡(luò)應(yīng)用和本機(jī)應(yīng)用混合開發(fā)模式的結(jié)合。它提供移動(dòng)Web應(yīng)用程序訪問(wèn)設(shè)備的功能,如攝像頭,GPS,并支持跨平臺(tái)和安裝在應(yīng)用程序上,但相比較以上兩種結(jié)構(gòu),顯得更復(fù)雜和難以維護(hù)。圖1是三種移動(dòng)APP技術(shù)比較[1]。
綜上,NativeApp和WebApp有各自的優(yōu)劣勢(shì)??偨Y(jié)如下。
⑴ NativeAPP運(yùn)行速度更快,更省帶寬,支持離線操作,訪問(wèn)本地資源和去中心化。
⑵ NativeAPP偏交互,而WebApp偏瀏覽查詢。且NativeAPP部署和學(xué)習(xí)成本低,跨平臺(tái)和終端操作。例如機(jī)票查詢和航班動(dòng)態(tài),主要采用NativeAPP開發(fā),可以保證速度和穩(wěn)定性,因?yàn)橛脩魧?duì)執(zhí)行效率要求更高。
⑶ 硬件訪問(wèn)偏NativeAPP,信息展示偏WebApp。例如手機(jī)各種傳感器可以使用NativeAPP;而機(jī)場(chǎng)登機(jī)口導(dǎo)航、機(jī)場(chǎng)商家地圖、服務(wù)以及酒店查詢等功能,采用內(nèi)嵌WebApp方式來(lái)實(shí)現(xiàn)。
⑷ 核心功能使用NativeAPP,輔助服務(wù)采用WebApp。HTML5在體驗(yàn)上接近NativeAPP,開發(fā)上具備更多的靈活性和跨平臺(tái)性。
目前NativeAPP仍然是高端應(yīng)用開發(fā)的首選。App除了能做Web能做的事即C/S+B/S兩層架構(gòu)外,還支持離線應(yīng)用,WebKit或者HTML5引入了數(shù)據(jù)庫(kù)機(jī)制允許離線操作,因此未來(lái)兩者可能會(huì)進(jìn)行融合,部署一起開發(fā)[2]。
2 面向企業(yè)應(yīng)用的移動(dòng)平臺(tái)開發(fā)特點(diǎn)分析
2.1 移動(dòng)瘦客戶端架構(gòu)
移動(dòng)應(yīng)用包括用戶界面,表示層和業(yè)務(wù)層、數(shù)據(jù)層與移動(dòng)Web服務(wù)層之間的通信。通常移動(dòng)客戶端是基于客戶端和胖客戶端的兩種類型Web應(yīng)用。瘦客戶端體系結(jié)構(gòu)比較容易實(shí)現(xiàn),它可以集成后臺(tái)服務(wù),并支持后臺(tái)服務(wù)集成的應(yīng)用程序。同時(shí)胖客戶端具有一些優(yōu)勢(shì),因?yàn)榕挚蛻舳擞砂惭b在復(fù)雜移動(dòng)設(shè)備上的一層或兩層組成,難以維護(hù)?;谑菘蛻舳说腤eb主要有如下特點(diǎn):
⑴ 表示層位于移動(dòng)設(shè)備上,而業(yè)務(wù)層和數(shù)據(jù)層在服務(wù)器端;
⑵ 易于開發(fā)和維護(hù);
⑶ 在服務(wù)器端進(jìn)行安全設(shè)置,允許經(jīng)授權(quán)的用戶和域訪問(wèn);
⑷ 發(fā)送請(qǐng)求到REST/ JSON API,應(yīng)用程序?qū)⒄?qǐng)求轉(zhuǎn)發(fā)給Web服務(wù)并進(jìn)行處理,同時(shí)將響應(yīng)反饋到設(shè)備上;
⑸ 客戶端腳本實(shí)現(xiàn)動(dòng)態(tài)內(nèi)容加載。
移動(dòng)Web應(yīng)用層如圖2所示。
2.2 主流移動(dòng)平臺(tái)特點(diǎn)分析
Hybrid App兼具了Native App與Web App兩者諸多優(yōu)點(diǎn)。在開發(fā)層面主要以JS結(jié)合Native相互調(diào)用為主,實(shí)現(xiàn)了“一次開發(fā),多處運(yùn)行”的機(jī)制,成為真正適合跨平臺(tái)的開發(fā)。經(jīng)過(guò)眾多開發(fā)者與成功案例證明Hybrid App兼具Native App的良好用戶體驗(yàn)的優(yōu)勢(shì),也兼具Web App使用HTML5跨平臺(tái)開發(fā)的低成本優(yōu)勢(shì)。
Hybrid App開發(fā),現(xiàn)階段主流的平臺(tái)包括PhoneGap,AppCan,appMobi,Titanium等,它們基于webkit開源內(nèi)核,使用HTML5標(biāo)準(zhǔn)開發(fā),適配機(jī)型簡(jiǎn)單,支持開發(fā)者自定義插件,并能很好的應(yīng)用于商業(yè)、教育、娛樂(lè)等行業(yè),成為移動(dòng)開發(fā)者的首選開發(fā)平臺(tái)。表1闡述了當(dāng)前主流移動(dòng)平臺(tái)特點(diǎn)分析。
3 移動(dòng)Web應(yīng)用開發(fā)過(guò)程
SOAP、REST是廣泛應(yīng)用于網(wǎng)絡(luò)通信的Web應(yīng)用程序協(xié)議。大多數(shù)開發(fā)商開發(fā)的應(yīng)用程序是基于Web服務(wù)的SOAP/XML,其目的主要是考慮安全性,但是他們不支持移動(dòng)應(yīng)用開發(fā)。而且本文闡述的實(shí)施移動(dòng)應(yīng)用開發(fā)是基于API的REST/JSON。圖3是移動(dòng)Web應(yīng)用程序的傳輸過(guò)程。
Rest被廣泛用于網(wǎng)絡(luò)資源的訪問(wèn)。它是輕量級(jí)的,容易實(shí)現(xiàn)Get、Put、Post、Delete等操作,而且也容易進(jìn)行調(diào)試,可以提高應(yīng)用程序的性能。在圖3中,REST API應(yīng)用程序流是作為移動(dòng)客戶端和后臺(tái)服務(wù)之間的接口。
具體實(shí)現(xiàn)過(guò)程是:客戶端通過(guò)URL向應(yīng)用層發(fā)送資源訪問(wèn)請(qǐng)求,服務(wù)器接收請(qǐng)求進(jìn)行驗(yàn)證并反饋?lái)憫?yīng)。用戶通過(guò)Post和Put方法向服務(wù)器加載數(shù)據(jù),同時(shí)使用資源過(guò)濾器來(lái)進(jìn)行安全性檢查。通過(guò)在服務(wù)器端設(shè)置域,來(lái)控制只允許訪問(wèn)數(shù)據(jù)資源。大多數(shù)應(yīng)用程序都有類似跨站漏洞,腳本能克服大部分瀏覽器不支持不同域的調(diào)用。其被稱之為交叉的原始域,是在服務(wù)器端添加域名來(lái)獲得移動(dòng)設(shè)備安全的響應(yīng),內(nèi)容包含允許訪問(wèn)的請(qǐng)求類型信息[4]。
3.1 移動(dòng)前臺(tái)開發(fā)
JQuery移動(dòng)框架可以用于多種途徑,常被用作網(wǎng)站和移動(dòng)應(yīng)用的用戶界面。易于開發(fā)并且可以運(yùn)行在不同的操作系統(tǒng)上。它有如下優(yōu)點(diǎn):
⑴ 觸摸優(yōu)化,讓用戶輕松瀏覽;
⑵ 減少HTTP請(qǐng)求,加速性能,支持多頁(yè)面訪問(wèn);
⑶ 優(yōu)化代碼,提高效率;
⑷ 提供轉(zhuǎn)換。
上面介紹的混合移動(dòng)應(yīng)用程序支持jQuery Mobile框架,它是一種類似于Phone Gap的移動(dòng)應(yīng)用,也是最常用的框架之一。
JQuery Ajax用于客戶端腳本開發(fā),移動(dòng)客戶端發(fā)送請(qǐng)求到后臺(tái)服務(wù),應(yīng)用程序接口執(zhí)行請(qǐng)求并響應(yīng)。通過(guò)Java腳本來(lái)實(shí)現(xiàn)將數(shù)據(jù)加載到移動(dòng)設(shè)備。對(duì)于移動(dòng)設(shè)備,JQuery Ajax用于優(yōu)化代碼和運(yùn)行DOM內(nèi)容。Ajax調(diào)用動(dòng)態(tài)加載數(shù)據(jù),而不需要刷新頁(yè)面。從而減少網(wǎng)絡(luò)的HTTP請(qǐng)求,提高了性能。JQuery Ajax使用URL訪問(wèn)Web服務(wù)器和資源,以及有關(guān)響應(yīng)格式所需的信息并支持交叉原始域。因此JQuery可以請(qǐng)求訪問(wèn)不同的數(shù)據(jù)格式,如XML,HTML,JSON等。
3.2 JSON數(shù)據(jù)交換
JSON作為數(shù)據(jù)交換格式發(fā)送移動(dòng)客戶端消息到后臺(tái)服務(wù),大多數(shù)企業(yè)應(yīng)用比較復(fù)雜,需要頻繁地訪問(wèn)應(yīng)用層和數(shù)據(jù)層之間的數(shù)據(jù)。為了開發(fā)高性能的移動(dòng)應(yīng)用程序,速度被認(rèn)為是用戶獲得快速訪問(wèn)的主要因素。由于數(shù)據(jù)能快速的在網(wǎng)絡(luò)上進(jìn)行編碼和解碼,所以手機(jī)客戶端可以輕松的使用JSON應(yīng)用程序接口。通過(guò)使用JSON數(shù)組,可以把數(shù)據(jù)作為有序集合和無(wú)序集合進(jìn)行發(fā)送,而無(wú)序集為JSON對(duì)象。要通過(guò)網(wǎng)絡(luò)發(fā)送數(shù)據(jù),可以將數(shù)據(jù)轉(zhuǎn)換成字節(jié)這個(gè)被稱為序列化的過(guò)程,從字節(jié)轉(zhuǎn)換為數(shù)據(jù)的過(guò)程被稱為反序列化。它有如下特點(diǎn)[5]:
⑴ 相比XML,JSON是作為輕量級(jí)的數(shù)據(jù)交換格式;
⑵ 易于讀寫,減少網(wǎng)絡(luò)負(fù)載和帶寬;
⑶ 提供解析、編碼和解碼技術(shù);
⑷ 最廣泛的應(yīng)用于移動(dòng)設(shè)備。
4 結(jié)束語(yǔ)
本文闡述通過(guò)企業(yè)開發(fā)應(yīng)用多平臺(tái)的移動(dòng)框架,允許用戶進(jìn)行安全方便的設(shè)備數(shù)據(jù)的訪問(wèn)。在移動(dòng)瘦客戶端架構(gòu)開發(fā)中,討論用于開發(fā)當(dāng)前移動(dòng)應(yīng)用的平臺(tái)體系和提高現(xiàn)有系統(tǒng)功能的方法。實(shí)現(xiàn)移動(dòng)應(yīng)用接口的擴(kuò)展和Web應(yīng)用程序功能服務(wù)的兼容性。相比于SOAP/XML開發(fā)模式,REST/JSON應(yīng)用程序接口更適合當(dāng)前的移動(dòng)開發(fā)體系,因此成為未來(lái)企業(yè)移動(dòng)瘦客戶端平臺(tái)開發(fā)的首選。
參考文獻(xiàn)(References):
[1] 張頎寅,鄭燕林.大學(xué)生移動(dòng)學(xué)習(xí)需求調(diào)查與分析[J]. 軟件導(dǎo)
刊(教育技術(shù)),2011.5:76-78
[2] 宋恩梅,袁琳.移動(dòng)的書海:國(guó)內(nèi)移動(dòng)圖書館現(xiàn)狀及發(fā)展趨勢(shì)[J].
中國(guó)圖書館學(xué)報(bào),2010.5:27-29
[3] 羅志平,蘇錦鈿,李榮華,張星明,肖哲.基于WAP 2.0的校園
門戶設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2009.2:23-27
[4] 錢能,王華,趙志斌,蔡冬玲.基于3G移動(dòng)應(yīng)用開發(fā)人才培養(yǎng)
的課程體系構(gòu)建與研究[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2013.16:36-40
[5] Gengui Zhou,Mitsuo Gen.Genetic Algorithm Approach on
Multi-Criteria Minimum Spanning Tree Problem[J]. European Journal of Operational Research,1999.4(1):141-152