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