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