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