文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2014)01-0134-03
Android平臺的開放性,、不受束縛性以及環(huán)境的自由性使其擁有更多的開發(fā)者 [1],。利用Android的優(yōu)勢對系統(tǒng)進(jìn)行研發(fā),對研究,、開發(fā)者有一定的參考意義,。面向服務(wù)架構(gòu)(SOA)的實(shí)現(xiàn)技術(shù),便于異構(gòu)系統(tǒng)互聯(lián),、組合,,得到了廣泛的關(guān)注。網(wǎng)絡(luò)服務(wù)(Web Service)作為SOA的一種實(shí)現(xiàn)技術(shù)是最常用的移動架構(gòu),,但獨(dú)立的移動應(yīng)用需要把內(nèi)容存儲在移動設(shè)備上,,浪費(fèi)了大量存儲空間。為了解決這個問題,,可采用分布式的移動應(yīng)用,,只在需要時加載,即可Web服務(wù)可滿足獨(dú)立于平臺的應(yīng)用程序并支持分布式系統(tǒng)應(yīng)用[2],。
1 Android應(yīng)用系統(tǒng)框架
Android可以通過Http、套接字(Socket),、Web Service,、遠(yuǎn)程調(diào)用協(xié)議(RPC)與服務(wù)器進(jìn)行交互。但是基于Socket的傳輸只適用于安全性,、實(shí)時性高的應(yīng)用,;Httpclient高效穩(wěn)定,但是維護(hù)成本高昂,;RPC可跨語言跨平臺,,但是在編譯期無法排錯。而Web Service可以直接利用Web服務(wù)的監(jiān)聽,已逐漸成為Web上的重要組件,,提供松耦合機(jī)制,,所基于的協(xié)議充分開放[3],是創(chuàng)建可互操作,、分布式應(yīng)用程序的新平臺[4],,并且具有一個:為無線設(shè)備提供服務(wù)?;谝陨蟽?yōu)點(diǎn)本系統(tǒng)選擇運(yùn)用Web Service進(jìn)行Android客戶端與服務(wù)器端的通信,。
以網(wǎng)格化管理平臺為例,介紹Android平臺下通過利用Web Service對服務(wù)器進(jìn)行數(shù)據(jù)訪問和通信,圖1所示為系統(tǒng)結(jié)構(gòu)圖,。
2 網(wǎng)格化管理平臺設(shè)計(jì)與實(shí)現(xiàn)
2.1 系統(tǒng)應(yīng)用背景
網(wǎng)格化管理是社會的一個趨勢,,借助先進(jìn)的信息技術(shù),對承擔(dān)社會管理的職能部門和社會資源進(jìn)行協(xié)調(diào),,最大限度地發(fā)揮資源共享的優(yōu)勢,提高社會管理服務(wù)水平,。城市網(wǎng)格化管理是一種革命和創(chuàng)新,,將城區(qū)劃分為“網(wǎng)格”,使這些網(wǎng)格成為政府管理基層的單元,,利用網(wǎng)格化的特點(diǎn)將數(shù)據(jù),、事件進(jìn)行整合。在這樣的趨勢下,,利用移動設(shè)備,,可以隨時隨地進(jìn)行信息的采集、查詢,,使得基于網(wǎng)格化的信息管理更加便利高效,。
2.2 系統(tǒng)架構(gòu)介紹
客戶端使用AndroidSDK2.2版本,Android開發(fā)插件ADT的eclipse軟件服務(wù)器端采用SSM(Struts2.0,,Spring,,Mybits)架構(gòu)及數(shù)據(jù)庫Oracle,、axis進(jìn)行服務(wù)的發(fā)布,并借助KSOAP來調(diào)用Web Service,。KSOAP是一個庫,,基于SOAP(Simple Object Access Protocol)框架,通過調(diào)用KSOAP可實(shí)現(xiàn)Android客戶端與服務(wù)端的數(shù)據(jù)交互,。系統(tǒng)實(shí)現(xiàn)流程如圖2所示,。
2.2.1 服務(wù)器端實(shí)現(xiàn)
服務(wù)器端實(shí)現(xiàn)是通過基于Java的SSM框架,利用Mybits翻轉(zhuǎn)數(shù)據(jù)庫形成基本的Model層,,View利用客戶端來顯示具體信息,。Controller控制層由Struts2實(shí)現(xiàn),Spring進(jìn)行業(yè)務(wù)邏輯的處理,。
(1)用戶權(quán)限的設(shè)置
不同的用戶根據(jù)不同的權(quán)限登錄,,看到的界面及功能不同,并且根據(jù)權(quán)限的不同,,看到的信息和處理的事件也不同,。
(2)應(yīng)用Entity
數(shù)據(jù)庫底層通過Mybits實(shí)現(xiàn)數(shù)據(jù)庫的翻轉(zhuǎn),把實(shí)體自動持久地轉(zhuǎn)換到數(shù)據(jù)庫中,形成entity文件及mapper文件(包括增,、刪,、改、查的實(shí)現(xiàn)),,配置的部分代碼為:
<table tableName="t_wggl_wgsx"
domainObjectName="Wgsx>
<generatedKey column="wgsxid"
sqlStatement="select wggl_wgsx _seq.nextval as wgsxid from dual" type="pre" >
</table>,。
(3)接口的聲明
聲明網(wǎng)格事項(xiàng)新增的方法,并且還需區(qū)分未處理或轉(zhuǎn)督辦的事項(xiàng),,同時包括獲取網(wǎng)格事項(xiàng)的詳細(xì)信息,,其中操作不包含核實(shí)及核實(shí)辦理結(jié)果。方法代碼如下:
public String addWgsx(Wgsx wgsx,Lzjl lzjl,String fj),。
定義添加網(wǎng)格事項(xiàng)信息的方法,,包括事項(xiàng)基本信息、處理狀態(tài),、流轉(zhuǎn)信息以及要添加的附件信息,。public String getDbList()通過此方法獲取備案信息,領(lǐng)導(dǎo)者可以查看相應(yīng)的處理情況,,而辦事人員登錄時會獲得其權(quán)限,,根據(jù)權(quán)限查看并辦理相應(yīng)的事項(xiàng)。
(4)方法實(shí)現(xiàn)
首先要獲取事項(xiàng)所在的網(wǎng)格,,并且要獲取JSON(Java Script Object Notation)對象,,將數(shù)據(jù)轉(zhuǎn)換成JSON數(shù)據(jù),在Android端獲取此數(shù)據(jù)并進(jìn)行展示。
(5)服務(wù)的發(fā)布
在方法中實(shí)現(xiàn)了方法名稱,、參數(shù)的具體服務(wù)過程,。系統(tǒng)使用Axis2服務(wù)發(fā)布技術(shù),它支持Web 服務(wù)描述語言(WSDL),,在服務(wù)器端發(fā)布服務(wù)之后,,可以看到WSDL的內(nèi)容,包括服務(wù)的命名空間(WSNS),、服務(wù)名稱,、服務(wù)的方法、參數(shù)等信息,,這些信息供客戶端調(diào)用,。網(wǎng)格事項(xiàng)的服務(wù)配置部分代碼如下:
<description>網(wǎng)格事項(xiàng)service</description>
<parameter name="ServiceObjectSupplier"> </ parameter>
<parametername="SpringBeanName">WgsxService</parameter>。
通過部署可以看到發(fā)布的服務(wù)信息,,即客戶端獲取的信息,。
(6) 數(shù)據(jù)交換
服務(wù)器端要聲明JSON,JSON數(shù)據(jù)是一種輕量級的數(shù)據(jù)交換格式,,是完全獨(dú)立于語言的文本格式,,該數(shù)據(jù)提供了更好的靈活性和簡單性。服務(wù)器和客戶端實(shí)現(xiàn)數(shù)據(jù)交換,,需在網(wǎng)格事項(xiàng)方法的實(shí)現(xiàn)中將結(jié)果轉(zhuǎn)換成JSON格式的數(shù)據(jù),,即JsonUtil.object2json(resultMap)。
2.2.2 客戶端具體實(shí)現(xiàn)
系統(tǒng)運(yùn)用第三方Ksoap2來實(shí)現(xiàn)Android客戶端與服務(wù)端的數(shù)據(jù)交互,,改進(jìn)了對Microsoft dotNet的兼容,,是一種不需要形成代理的,調(diào)用Web Service的方法,??赏ㄟ^實(shí)例SoapObject指定WebService命名空間,調(diào)用方法名稱,,在activity中實(shí)現(xiàn)獲取服務(wù)器端信息,。
Layout使用LinearLayout布局,系統(tǒng)下拉框信息是字典的形式,,在SqlLite數(shù)據(jù)庫中進(jìn)行轉(zhuǎn)換,,放入Android客戶端,。
當(dāng)客戶端發(fā)起網(wǎng)格事項(xiàng)的請求時,,需要查找發(fā)布的服務(wù)信息,在Wgsxmanager.java中寫出發(fā)起服務(wù)的名稱,、命名空間以及方法名,,添加網(wǎng)格事項(xiàng)的服務(wù)代碼如下:
private static final String URL=MyURLActivity.URL+"/services/wgbaService?wsdl";
定義服務(wù)的路徑,
private static final String NAMESPACE="http://impl.service.wgsx.zhxxpt.com";
定義服務(wù)的命名空間,
private static final String METHOD_NAME="addWgsx";
定義服務(wù)中調(diào)用的方法名,
方法的具體實(shí)現(xiàn)以及服務(wù)器信息的獲取,,怎樣將網(wǎng)格事項(xiàng)的信息保存到服務(wù)器端的數(shù)據(jù)庫中,,都要在wgsxactivity.java中具體實(shí)現(xiàn),其中頁面屬性要與layout布局設(shè)置的id一致,,同時要獲取JSON數(shù)據(jù),。主要方法有:(1)initWgxx();初始化網(wǎng)格信息,不同網(wǎng)格查看不同網(wǎng)格事項(xiàng)信息;(2)findViewById(),初始化控件;(3)setListener(),設(shè)置監(jiān)聽;(4)initViewValue(),初始化控件,。
2.2.3 頁面間參數(shù)的傳遞
頁面間的跳轉(zhuǎn)以及參數(shù)的傳遞,,需要將傳遞參數(shù)的頁面信息附帶到要跳轉(zhuǎn)的頁面,通過定義JSON數(shù)據(jù)獲取要傳遞的數(shù)據(jù),。通過如下代碼實(shí)現(xiàn)參數(shù)的傳遞:
Intent intent = new Intent();
intent.putExtra("cxResult",jsonObj.getString("result"));
intent.setClass(WgsxActivity.this,WgsxcxListActivity.class);
WgsxActivity.this.startActivity(intent);
上述代碼表示把網(wǎng)格事項(xiàng)傳遞到網(wǎng)格事項(xiàng)列表這個頁面中,。而在接收此參數(shù)的頁面只需運(yùn)用以下代碼就可以獲取上一個頁面?zhèn)鬟f過來的信息:
String cxResult = this.getIntent().getString
Extra("cxResult");
3 實(shí)驗(yàn)分析
運(yùn)行系統(tǒng)流程為:啟動服務(wù)端,在客戶端配置服務(wù)器端地址,,通過運(yùn)行Android應(yīng)用程序形成apk文件,。當(dāng)客戶端發(fā)起請求,首先找到匹配的服務(wù),,通過Web Service獲取服務(wù)端的信息,,最后將信息顯示在移動設(shè)備上。圖3所示為事項(xiàng)備案的錄入,,包括附件的上傳(可即照即傳),,下拉框信息在數(shù)據(jù)庫以字典代碼形式保存,減少了數(shù)據(jù)庫的存儲量,。
通過運(yùn)用Web Service技術(shù)實(shí)現(xiàn)Android客戶端與服務(wù)端數(shù)據(jù)的交互,,在系統(tǒng)中Android客戶端請求服務(wù),實(shí)現(xiàn)了數(shù)據(jù)錄入,、信息展示,、圖片獲取以及利用系統(tǒng)的Service實(shí)現(xiàn)了圖片信息的定位??紤]到安全問題,,最后對形成的apk進(jìn)行加密。
經(jīng)過測試,,系統(tǒng)實(shí)用性強(qiáng),,維護(hù)簡單,能隨時隨地進(jìn)行信息的錄入和展示,。實(shí)驗(yàn)證明通過Web Service系統(tǒng)可非常靈活的實(shí)現(xiàn),,服務(wù)信息進(jìn)行修改后,只需要重新發(fā)布服務(wù),,由客戶端調(diào)用即可,。
移動應(yīng)用的開發(fā)選擇方式很多,,采用Web Service進(jìn)行移動應(yīng)用的開發(fā)給Android客戶端與服務(wù)器端的通信提供了一種標(biāo)準(zhǔn)化的方式。Android用戶界面的豐富性,、操作簡便性與Web Service的跨平臺可操作性,,兩者的結(jié)合對移動應(yīng)用的開發(fā)提供了一個更好的發(fā)展方向。
參考文獻(xiàn)
[1] BURNETTE E. Android: Introducing Google’s mobile development platform(2nd edition)[M]. The Pragmatic Bookshelf, 2009.
[2] GUINARD D, TRIFA V, KARNOUSKOS S, et al. Interacting with the SOA-based internet of things:discovery,query, selection, and on-demand provisioning of Web Services[J]. IEEE Transactions on Services Computing, 2010,3(3):223-235.
[3] 王澤軍,韓在峰.基于整合模式的EMS/SAS監(jiān)控系統(tǒng)研究與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2010,36(9):145-146.
[4] MANTANARI U. Web services and models of computation[J].Electronic Notes in Theoretical Computer Science, 2004,105(10):5-9.