高晶
摘要:近些年,隨著移動(dòng)互聯(lián)網(wǎng)和移動(dòng)終端的迅速發(fā)展,移動(dòng)應(yīng)用越來越受到人們的青睞,很多日常工作都可以通過移動(dòng)應(yīng)用來處理,移動(dòng)應(yīng)用成為基于計(jì)算機(jī)終端應(yīng)用的有力補(bǔ)充,移動(dòng)應(yīng)用技術(shù)也成為當(dāng)前計(jì)算機(jī)技術(shù)領(lǐng)域的研究熱點(diǎn)。本文分析了當(dāng)前移動(dòng)應(yīng)用的發(fā)展和開發(fā)模式,結(jié)合當(dāng)前校園移動(dòng)應(yīng)用發(fā)展現(xiàn)狀,構(gòu)建了校園混合模式移動(dòng)應(yīng)用軟件架構(gòu),力求通過使用該架構(gòu),探索出校園移動(dòng)應(yīng)用開發(fā)的新途徑。
關(guān)鍵詞:移動(dòng)應(yīng)用;混合模式;軟件架構(gòu)
中圖分類號:G434 文獻(xiàn)標(biāo)識(shí)碼:A 論文編號:1674-2117(2015)15/16-0119-03
移動(dòng)應(yīng)用的發(fā)展和開發(fā)模式
2000年,中國移動(dòng)互聯(lián)網(wǎng)誕生,2010年已被業(yè)界普遍認(rèn)為是移動(dòng)互聯(lián)網(wǎng)的元年。從2000到2010的十年時(shí)間里,中國移動(dòng)互聯(lián)網(wǎng)呈爆發(fā)式發(fā)展,使得在移動(dòng)終端上使用各種互聯(lián)網(wǎng)應(yīng)用漸漸成為一種習(xí)慣。移動(dòng)應(yīng)用的發(fā)展激發(fā)了廣大開發(fā)者進(jìn)行移動(dòng)應(yīng)用創(chuàng)作的極大熱情。目前,移動(dòng)應(yīng)用開發(fā)方式主要分為三種類型:原生開發(fā)模式、移動(dòng)Web開發(fā)模式和混合開發(fā)模式。
原生開發(fā)模式使用移動(dòng)終端操作系統(tǒng)所支持的程序語言來編寫移動(dòng)應(yīng)用。目前市場上移動(dòng)終端操作系統(tǒng)有很多種。因此,要使用原生開發(fā)模式開發(fā)出一款能夠適用于各種操作系統(tǒng)的原生應(yīng)用,開發(fā)者需要花費(fèi)大量的時(shí)間和精力來進(jìn)行平臺(tái)間的移植工作,這就決定了采用原生開發(fā)模式進(jìn)行移動(dòng)應(yīng)用開發(fā)具有周期長、開發(fā)門檻高、開發(fā)成本高、不跨平臺(tái)等缺點(diǎn)。當(dāng)然,原生開發(fā)模式也有優(yōu)點(diǎn),它可以訪問移動(dòng)終端的所有功能,速度更快、性能更高、用戶體驗(yàn)更好,等等。
移動(dòng)Web開發(fā)模式使用傳統(tǒng)的Web開發(fā)技術(shù)進(jìn)行開發(fā),通過移動(dòng)終端瀏覽器進(jìn)行訪問。較原生開發(fā)模式,它具有開發(fā)周期短、開發(fā)門檻低、開發(fā)成本低、跨平臺(tái)等優(yōu)點(diǎn),但是移動(dòng)Web應(yīng)用是基于瀏覽器的,無法調(diào)用移動(dòng)終端系統(tǒng)API來實(shí)現(xiàn)一些高級功能,用戶體驗(yàn)差。
混合開發(fā)模式采用Web開發(fā)技術(shù),通過中間件包裝成各平臺(tái)的應(yīng)用程序,可以通過中間件的集成,調(diào)用大部分常用的移動(dòng)終端系統(tǒng)API。因此,混合開發(fā)模式同時(shí)具有原生開發(fā)模式和移動(dòng)Web開發(fā)模式的優(yōu)點(diǎn),即具有跨平臺(tái)、開發(fā)門檻低、開發(fā)成本低等優(yōu)點(diǎn)。
校園移動(dòng)應(yīng)用發(fā)展現(xiàn)狀
目前國內(nèi)各大高?;就瓿闪诵@無線網(wǎng)的基礎(chǔ)設(shè)施覆蓋,為移動(dòng)終端開展各項(xiàng)應(yīng)用打開了方便之門。但就目前的情況看,校園的移動(dòng)應(yīng)用還存在一些問題,成熟的校園移動(dòng)應(yīng)用很少,部分校園移動(dòng)應(yīng)用是由學(xué)生團(tuán)體自發(fā)組織進(jìn)行研發(fā),研發(fā)過程缺乏統(tǒng)一的規(guī)劃和科學(xué)的工程性管理,可維護(hù)性比較差,難以實(shí)現(xiàn)可持續(xù)發(fā)展。要想使校園移動(dòng)應(yīng)用更好地、持久地服務(wù)于廣大師生,就需要構(gòu)建一個(gè)校園移動(dòng)應(yīng)用軟件架構(gòu),學(xué)生通過簡單的學(xué)習(xí)就可以進(jìn)行校園移動(dòng)應(yīng)用的開發(fā)和維護(hù)工作,這樣就可以保持移動(dòng)應(yīng)用的研發(fā)團(tuán)體相對穩(wěn)定,也可以保證校園移動(dòng)應(yīng)用的可持續(xù)發(fā)展。
校園混合模式移動(dòng)應(yīng)用軟件架構(gòu)的構(gòu)建
混合開發(fā)模式具有開發(fā)門檻低、跨平臺(tái)開發(fā)的優(yōu)點(diǎn),是今后移動(dòng)應(yīng)用開發(fā)的主流,也是進(jìn)行校園移動(dòng)應(yīng)用開發(fā)的首選。但目前采用混合開發(fā)模式的校園移動(dòng)應(yīng)用較少,大部分應(yīng)用仍處于摸索階段,并沒有形成成熟的技術(shù)體系。因此,在對基于HTML5的混合開發(fā)模式研究的基礎(chǔ)上,我們構(gòu)建了混合模式移動(dòng)應(yīng)用軟件架構(gòu),并應(yīng)用此架構(gòu)進(jìn)行校園移動(dòng)應(yīng)用的開發(fā),力求通過使用該架構(gòu),探索出校園移動(dòng)終端應(yīng)用開發(fā)的新途徑。
基于混合開發(fā)模式的混合移動(dòng)應(yīng)用軟件架構(gòu)分為服務(wù)器端業(yè)務(wù)邏輯處理和移動(dòng)應(yīng)用UI設(shè)計(jì)兩個(gè)部分,如下圖所示。
1.服務(wù)器端業(yè)務(wù)邏輯處理
服務(wù)器端業(yè)務(wù)邏輯的處理我們采用了MVC設(shè)計(jì)模式,在具體的處理上,采用了Spring MVC框架和MySql數(shù)據(jù)庫。為了便于移動(dòng)應(yīng)用的數(shù)據(jù)顯示,架構(gòu)采用了JSON數(shù)據(jù)交換格式。通過配置Jackson類庫,實(shí)現(xiàn)JSON的輸入和輸出,并在此基礎(chǔ)上提供了WEBService接口,將處理后的數(shù)據(jù)轉(zhuǎn)化為JSON格式。采用Spring MVC中的@ResponseBody將JSON數(shù)據(jù)傳遞給客戶端。這里重點(diǎn)介紹Spring MVC配置、數(shù)據(jù)庫操作和JSON傳遞的實(shí)現(xiàn)方法。
(1)SpringMVC配置
在Java Web項(xiàng)目中導(dǎo)入Spring的類庫集,并按照如下內(nèi)容的配置web.xml文件。
其中DispatcherServlet是前端控制器設(shè)計(jì)模式的實(shí)現(xiàn),提供Spring Web MVC的集中訪問點(diǎn),而且與Spring IoC容器無縫集成。然后在spring-servlet.xml文件中配置數(shù)據(jù)庫、注解、反射、國際化,并創(chuàng)建Controller、Service、Dao的相關(guān)基類,用于被未來MVC中使用的類來繼承,通常情況下,基類中配置了日志處理,基本的增、刪、改、查的方法,便于最大范圍地實(shí)現(xiàn)多態(tài)。
(2)數(shù)據(jù)庫操作
Spring MVC的Dao層和Service層是處理數(shù)據(jù)庫操作和業(yè)務(wù)邏輯功能的部分。通過Dao層完成針對數(shù)據(jù)庫系統(tǒng)的增、刪、改、查,通過Service層進(jìn)行業(yè)務(wù)判斷。通過繼承JdbcDaoSupport類定義Dao基類,再針對每一個(gè)數(shù)據(jù)結(jié)構(gòu)定義自己的Dao類,這樣便于數(shù)據(jù)獨(dú)立性的處理,也可以為持久化奠定基礎(chǔ)。
(3)JSON傳遞
Spring MVC支持JSON,一定要引用jackson-core-asl和jackson-mapper-asl的類庫,并在Spring的配置文件中,增加如下配置。
public class JsonData {
public List
public JsonData(List
super();
this.legend = legendList;
}
}
在服務(wù)器端定義如下JSON數(shù)據(jù)類。
通過Controller類中的方法將數(shù)據(jù)JSON化。在Controller類中,定義@ResponseBody,直接將JsonData實(shí)例傳遞給客戶端就完成了JSON數(shù)據(jù)向客戶端推送。具體實(shí)現(xiàn)代碼如下:
@RequestMapping("test.do")
@ResponseBody
public JsonData test() {
List
JsonData data=new JsonData(legend);
return data;
除上述關(guān)鍵點(diǎn)以外,考慮到服務(wù)器端向外提供接口的時(shí)候,有信息安全的要求,在客戶端訪問服務(wù)器端接口的時(shí)候需要通過HTTPS協(xié)議進(jìn)行安全認(rèn)證,并遵照軟件架構(gòu)的自身要求進(jìn)行協(xié)議握手認(rèn)證,這樣就防止了校園關(guān)鍵信息的泄露和惡意攻擊。
2.移動(dòng)應(yīng)用UI設(shè)計(jì)
我們的移動(dòng)應(yīng)用UI設(shè)計(jì)部分采用成熟的JS組件與原生API混合形式進(jìn)行,當(dāng)進(jìn)行普通畫面顯示的時(shí)候,采用HTML、CSS3和JQuery Mobile技術(shù),當(dāng)需要設(shè)備端功能的時(shí)候,調(diào)用原生API。這里重點(diǎn)介紹獲取并顯示JSON數(shù)據(jù)、本地存儲(chǔ)和移動(dòng)應(yīng)用界面效果的實(shí)現(xiàn)方法。
(1)獲取并顯示JSON數(shù)據(jù)
在移動(dòng)應(yīng)用端獲取JSON數(shù)據(jù),通常采用ajax方式,這樣客戶的體驗(yàn)感受會(huì)更好,配合Loading的顯示,整個(gè)移動(dòng)應(yīng)用端非常流暢。JQUERY提供了非常完善的ajax方法。下面代碼是在Id為show_div的div中顯示JSON數(shù)據(jù)的實(shí)現(xiàn)方法。
$.ajax({
type: "post",
url: "test.do",
dataType: "json",
success: function (data) {
$("#show_div").val(data[0]. legend);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
(2)本地存儲(chǔ)
為了保證用戶在離線的情況下,可以查看本地已經(jīng)下載完成的數(shù)據(jù)信息,如校園的新聞信息、課程信息等,需要將一些數(shù)據(jù)信息保存在本地,保證非實(shí)時(shí)在線的情況下應(yīng)用是可用的。我們采用HTML5的存儲(chǔ)方式,存儲(chǔ)少量數(shù)據(jù)的時(shí)候,使用Local Storage來實(shí)現(xiàn),如果存儲(chǔ)的數(shù)據(jù)偏大,使用Web SQL Database來實(shí)現(xiàn)。通過HTML5操作Web SQL Database的openDatabase、transaction、executeSql三個(gè)基本方法,分別規(guī)定了數(shù)據(jù)庫打開、事務(wù)處理、執(zhí)行SQL語句的使用方式。我們定義了基本的客戶端數(shù)據(jù)庫結(jié)構(gòu)以后,通過這些基本方法操作數(shù)據(jù)庫將信息保存在本地。
(3)移動(dòng)應(yīng)用界面效果
通過JQUERY Mobile實(shí)現(xiàn)客戶端的界面效果,主要是將一個(gè)應(yīng)用中的多個(gè)Page實(shí)現(xiàn)出來,再經(jīng)過各種效果的頁面跳轉(zhuǎn),構(gòu)成整個(gè)界面風(fēng)格的主體。
Page是JQUERY Mobile的重要組成部分,由data-role="page"屬性產(chǎn)生,每個(gè)Page由header、content和footer組成(不是必須的),配合JQUERY Mobile提供的標(biāo)準(zhǔn)控件,構(gòu)成一系列常用的Page庫,這個(gè)Page庫就是移動(dòng)應(yīng)用的UI框架。當(dāng)然作為后續(xù)擴(kuò)展開發(fā)者,可以自定義Page來實(shí)現(xiàn)自己的應(yīng)用界面。
將上述這些功能集成為一套功能集合,就形成了一個(gè)混合模式移動(dòng)應(yīng)用軟件架構(gòu)的雛形,在此基礎(chǔ)之上,開發(fā)人員可以更多地關(guān)注業(yè)務(wù)本身,而不需要考慮底層的技術(shù)問題,這樣既保證了應(yīng)用的完善性,也將共通性功能進(jìn)行了最大化的資源共享。
結(jié)語
混合模式移動(dòng)應(yīng)用軟件架構(gòu)的實(shí)現(xiàn),有利于簡化移動(dòng)應(yīng)用開發(fā)流程,有利于高校移動(dòng)應(yīng)用的發(fā)展,從而推進(jìn)智慧校園建設(shè)和深化校園移動(dòng)信息化建設(shè),促進(jìn)“互聯(lián)網(wǎng)+”發(fā)展戰(zhàn)略的實(shí)施。后續(xù)我們還會(huì)將架構(gòu)的應(yīng)用引入學(xué)生的興趣社團(tuán),將校園移動(dòng)應(yīng)用開發(fā)的工作以項(xiàng)目的形式組織學(xué)生來完成,通過基于項(xiàng)目的實(shí)踐教學(xué),深化實(shí)踐教學(xué)改革,促進(jìn)卓越工程師培養(yǎng)計(jì)劃的實(shí)施。
參考文獻(xiàn):
劉歡,張?jiān)鲂蓿枯x.華東師范大學(xué):混合開發(fā)移動(dòng)應(yīng)用[J].中國教育網(wǎng)絡(luò),2013(7):63-65.