張婷
(唐山學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系 河北唐山 063000)
“智慧城市”建設(shè)是我國“十二五”規(guī)劃的重要戰(zhàn)略目標(biāo)之一,而城市移動(dòng)信息化是“智慧城市”建設(shè)的重要組成部分。利用移動(dòng)技術(shù),構(gòu)建一個(gè)信息化應(yīng)用與服務(wù)平臺,為城市中的居民、企事業(yè)單位等提供一個(gè)綜合的、統(tǒng)一接口的移動(dòng)信息化服務(wù),是推動(dòng)城市發(fā)展與建設(shè)的有力動(dòng)力。近年來,隨著移動(dòng)通信應(yīng)用技術(shù)的發(fā)展和人們對隨時(shí)隨地獲取資訊,尤其對互聯(lián)網(wǎng)移動(dòng)化需求的增強(qiáng),手機(jī)作為隨身便捷、更具時(shí)效性的媒體出現(xiàn),已逐漸成為人們新聞資訊主要來源。手機(jī)媒體的快速發(fā)展,必然加大對社會(huì)的影響力,充分利用手機(jī)等移動(dòng)終端作為城市移動(dòng)信息化建設(shè)的平臺,建立和完善相應(yīng)的信息傳播管理機(jī)制,為完善信息社會(huì)做更大努力。
城市門戶建設(shè)分為三個(gè)層面,一是移動(dòng)政務(wù),移動(dòng)信息化技術(shù)將傳統(tǒng)的政務(wù)應(yīng)用結(jié)合到移動(dòng)通信平臺[1],為城市居民與政府職能部門之間搭建了一座可以隨時(shí)溝通的橋梁;二是移動(dòng)商務(wù),高效城市是移動(dòng)商務(wù)的發(fā)展方向,移動(dòng)信息化有效地提高辦公的效率,使商務(wù)生活在快節(jié)奏中有條不紊;三是移動(dòng)生活,針對城市居民的城市新聞資訊、旅游咨詢、生活服務(wù)、購物、娛樂節(jié)目等。唐山作為國家級科學(xué)發(fā)展示范區(qū),在其“十二五”城市信息化發(fā)展規(guī)劃中,著重提出數(shù)字城市的建設(shè),因此,城市移動(dòng)門戶-“掌上唐山”的建設(shè)顯得尤為重要。
“掌上唐山”以本地資源為依托,立足于打造城市掌上“虛擬城市”,建立本地化的信息內(nèi)容,側(cè)重于本地生活信息和內(nèi)容,整合本地資源,提供便民服務(wù)。為我市本地移動(dòng)用戶和外地客商提供最全面的本地新聞、衣食住行以及貼近生活的信息查詢服務(wù),為廣大市民提供一站式的生活解決方案,同時(shí)也是展示我市形象的重要窗口,是城市對外和對內(nèi)宣傳的重要陣地。
根據(jù)調(diào)研,考慮到實(shí)際應(yīng)用,前臺使用Android技術(shù),后臺應(yīng)用JSP+M ysql開發(fā)“掌上唐山”移動(dòng)門戶。
Android是一種以Linux為基礎(chǔ)的開放源碼操作系統(tǒng),主要用于便攜設(shè)備,是目前全球最受歡迎的智能手機(jī)平臺。Android SDK為開發(fā)人員提供了在Android平臺使用Java編程語言進(jìn)行開發(fā)應(yīng)用程序所必要的工具和API[2]。從軟件分層的角度來看,Android平臺由應(yīng)用程序、應(yīng)用程序框架、程序庫(libraries)、Android系統(tǒng)運(yùn)行庫以及Linux內(nèi)核五部分構(gòu)成[3]。手機(jī)終端使用的開發(fā)工具是包含KVM 虛擬機(jī)的插件的Eclipse,同時(shí)前臺界面采用Android編程語言。
在W indow s環(huán)境下搭建Android開發(fā)環(huán)境,需要的組件包括:JDK、Eclipse、ADT、Android在Eclipse上的開發(fā)工具、Android SDK等。Android開發(fā)應(yīng)用程序包括活動(dòng)(Activity)、服務(wù)(Service)、廣播接收者(BroadcastReceiver)、內(nèi)容提供者(ContentProvider)、意圖(Intent)等基本組件。
數(shù)據(jù)庫使用M ySQL,一個(gè)多用戶、多線程的SQL數(shù)據(jù)服務(wù)器。SQL是一種標(biāo)準(zhǔn)化語言,它使得存儲、更新和存取信息更容易。M ySQL能夠以相當(dāng)快的速度和靈活來允許您存儲紀(jì)錄文件和圖像。對于M ySQL來說具有可延伸性以及資料處理能力;M ySQL提供了許多不同的用戶界面和各種程序語言介面,例如C+,PHP,Perl,Java,以及Python。
對于手機(jī)客戶端來說,主要是將U I線程與后臺業(yè)務(wù)處理層分開,這樣有助于多人開發(fā)并集成,而且解決了非U I線程對U I線程進(jìn)行操作引發(fā)的問題[4]。這兩層在設(shè)計(jì)時(shí)不會(huì)有相互干擾。當(dāng)業(yè)務(wù)處理層將獲得的數(shù)據(jù)放入客戶端緩存中,方便U I的調(diào)用。
對于服務(wù)端來說,主要采用了Factory和DAO設(shè)計(jì)模式。其優(yōu)點(diǎn)主要有以下幾點(diǎn):
(1)簡單遷移化
DAO層的使用,使應(yīng)用程序向不同的數(shù)據(jù)庫進(jìn)行遷移變得容易。商業(yè)對象可以對底層數(shù)據(jù)是如何實(shí)現(xiàn)的一無所知.這樣的話,遷移只涉及到DAO層的修改。另外,使用工廠模式,能夠?yàn)槊恳环N底層數(shù)據(jù)實(shí)現(xiàn)提供一個(gè)具體的工廠模式實(shí)現(xiàn)成為可能。
(2)透明化
商業(yè)對象可以在完全不知道數(shù)據(jù)源如何具體實(shí)現(xiàn)的狀況下來使用數(shù)據(jù)源.訪問數(shù)據(jù)源是相當(dāng)透明的,因?yàn)閷?shí)現(xiàn)的細(xì)節(jié)已經(jīng)被隱藏到了DAO層。
(3)降低商業(yè)對象的編程難度
因?yàn)镈AO管理著所有的數(shù)據(jù)訪問細(xì)節(jié),從而在很大程度上簡化了在商業(yè)對象和其它使用DAO的數(shù)據(jù)客戶端里的實(shí)現(xiàn)代碼。所有的實(shí)現(xiàn)細(xì)節(jié)代碼比如SQL語句都包含在DAO層而不在商業(yè)對象中,這樣的話使得代碼變得更加健壯且提高了開發(fā)效率。
(4)所有的數(shù)據(jù)訪問都集中到同一層中去
由于所有的數(shù)據(jù)訪問操作都已經(jīng)被DAO層所代理,所以單獨(dú)的數(shù)據(jù)訪問層可以被看作可以是將數(shù)據(jù)訪問層和其余應(yīng)用程序隔離的一層。這種集中,使得應(yīng)用程序的維護(hù)和管理更加容易。
“掌上唐山”為本地新聞資訊客戶端,設(shè)計(jì)功能涵蓋本地資訊及國內(nèi)外新聞,包括焦點(diǎn)新聞即時(shí)推送、滾動(dòng)播報(bào),本地、國內(nèi)、國際、文體全覆蓋;滿足用戶需求的商業(yè)資訊,電子優(yōu)惠券、消費(fèi)提示;社區(qū)掌上互動(dòng);微周刊以及生活服務(wù)信息分類,即時(shí)搜索,餐飲、休閑、娛樂場所點(diǎn)擊即達(dá),提供用戶訂閱頻道。
(1)新聞?lì)l道。第一時(shí)間獲知國內(nèi)國際、文娛體育要聞趣聞,特別是來自本地主流報(bào)媒的本地要聞及深度報(bào)道,用戶可縱橫“穿越”報(bào)紙、網(wǎng)絡(luò)、手機(jī)三種不同媒介,隨時(shí)隨地與報(bào)紙全媒體記者在線溝通。
(2)訂閱頻道。用戶根據(jù)自己喜好訂閱“掌上唐山”內(nèi)部和外包內(nèi)容的頻道,可添加、刪除、移動(dòng)欄目,點(diǎn)擊欄目可以直接進(jìn)入對應(yīng)頻道、專題或活動(dòng)鏈接。
(3)優(yōu)惠頻道。為電子優(yōu)惠券頻道,用戶在合作商家出示優(yōu)惠券享受優(yōu)惠,有·推薦、免費(fèi)、美食、娛樂、購物、其他等二級頻道。
(4)微刊頻道。微刊是用相對簡短的內(nèi)容對一個(gè)主題的連載,是由合作伙伴、網(wǎng)友“自己當(dāng)主編”的欄目,其二級頻道為:最新、時(shí)尚、文化、公益、其他等。
(5)生活頻道。為本地生活服務(wù)信息分類頻道。有美食、娛樂、結(jié)婚、健身、酒店等信息??刹樵兘煌?、違章、本地列車、本地航班、本地公交線路功能。通過LBS定位身邊的注冊場所,有反饋、論壇和關(guān)于我們連接。
后臺功能:包括權(quán)限設(shè)置、新聞管理、訂閱管理、優(yōu)惠券管理、微刊管理、生活頻道:廣告位設(shè)置、分享功能、統(tǒng)計(jì)功能等。
系統(tǒng)功能如圖1所示。
圖1 系統(tǒng)功能圖
網(wǎng)絡(luò)通信模式采用無狀態(tài)的同步通信模式。無狀態(tài)即在客戶端與服務(wù)器的一次完整會(huì)話過程中,沒有始終建立的一條確定的連接,而是在每次客戶端需要請求服務(wù)器的服務(wù)時(shí)臨時(shí)建立連接,服務(wù)完成后連接則關(guān)閉。無狀態(tài)的同步通信模式具有負(fù)荷小的特點(diǎn),但如何讓服務(wù)器區(qū)分各個(gè)客戶端指令是需要解決的問題。利用在服務(wù)器端設(shè)計(jì)緩存的方式,把用戶保存并設(shè)計(jì)編號,編號發(fā)給客戶端,客戶端則以編號的形式附加給服務(wù)請求。編號是由服務(wù)器創(chuàng)建的只為保證當(dāng)前登錄的用戶編號,不同的登錄需要重新賦予編號。有狀態(tài)的同步通信模式具有負(fù)荷較大的特點(diǎn),有若干線程維護(hù)著鏈接。
設(shè)計(jì)中客戶端與服務(wù)器的通信方式采用Socket通信完成,Socket傳遞Java對象(使用Java對象序列化機(jī)制),即Socket中傳遞的是Request(請求)和Response(應(yīng)答)對象。而Request和Response對象中封裝一個(gè)Map來保存需要傳遞的參數(shù),所有參數(shù)均需實(shí)現(xiàn)java.io.Serializable(可序列化)接口。
由于篇幅限制,這里給出部分實(shí)現(xiàn)代碼,主Activity代碼:
隨著移動(dòng)用戶的迅速增長和智能手機(jī)的快速普及,智能終端及應(yīng)用在人們的生活中越來越重要。系統(tǒng)使用Eclipse開源開發(fā)平臺進(jìn)行手機(jī)客戶端軟件的開發(fā)與設(shè)計(jì),通過TCP報(bào)文與后臺進(jìn)行數(shù)據(jù)交換,使用通信中間件作為并發(fā)交易消息的分發(fā)與處理,使用Sybase數(shù)據(jù)庫系統(tǒng)作為后臺數(shù)據(jù)存儲管理,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)基于Android的城市移動(dòng)門戶——“掌上唐山”系統(tǒng)。
[1]李曉軍.移動(dòng)政務(wù)的功能及評價(jià)研究[D].北京交通大學(xué),2011(6)85-86.
[2]3GPP2,S.R0037,IPNetwork Architecture Model 1 for CDMA2000 Spread Sprectrum Systems,2004.
[3](美)羅杰.Android應(yīng)用開發(fā)(李耀亮譯)[M].北京:人民郵電出版社,2010.
[4]林博佳.基于Android平臺的煤礦移動(dòng)信息化系統(tǒng)的研究與實(shí)現(xiàn)[D].北京郵電大學(xué),2012(1)25-26.