劉永強(qiáng),鄭 康,李 冉,李大偉
(太原市防震減災(zāi)局,山西 太原 030082)
目前,山西前兆臺(tái)網(wǎng)數(shù)據(jù)庫主要有模擬數(shù)據(jù)庫(包括模擬數(shù)據(jù)、原始數(shù)據(jù)、預(yù)處理數(shù)據(jù)、觀測(cè)日志)和“十五”數(shù)據(jù)庫。模擬數(shù)據(jù)庫采用Microsoft sql server 2000進(jìn)行搭建,表結(jié)構(gòu)根據(jù)中國地震局“九五”數(shù)據(jù)庫相關(guān)規(guī)范進(jìn)行設(shè)計(jì);“十五”數(shù)據(jù)庫采用Oracle 10g進(jìn)行搭建,表結(jié)構(gòu)根據(jù)《地震前兆數(shù)據(jù)庫結(jié)構(gòu)規(guī)范》進(jìn)行設(shè)計(jì)[1]。如果直接通過手機(jī)等移動(dòng)終端設(shè)備登錄該數(shù)據(jù)庫服務(wù)器調(diào)取數(shù)據(jù),在關(guān)鍵技術(shù)上存在壁壘,在網(wǎng)絡(luò)安全防控上也存在較大風(fēng)險(xiǎn)。系統(tǒng)試圖通過對(duì)地震觀測(cè)設(shè)備的數(shù)據(jù)通信單元進(jìn)行傳輸模式改造,在互聯(lián)網(wǎng)上重新搭建數(shù)據(jù)庫服務(wù)平臺(tái),通過移動(dòng)終端設(shè)備進(jìn)行訪問,實(shí)現(xiàn)各項(xiàng)地震前兆觀測(cè)數(shù)據(jù)在移動(dòng)終端的應(yīng)用,動(dòng)態(tài)顯示觀測(cè)設(shè)備運(yùn)行狀況以及觀測(cè)數(shù)據(jù)圖文等等。
研究的主要內(nèi)容是設(shè)計(jì)開發(fā)一套基于移動(dòng)終端的地震前兆數(shù)據(jù)在線觀測(cè)系統(tǒng)軟件。首先,在進(jìn)行相關(guān)調(diào)研工作后,通過分析用戶需求、功能需求和性能需求,確定系統(tǒng)的總體框架和技術(shù)選型,對(duì)系統(tǒng)總體功能進(jìn)行規(guī)劃,對(duì)移動(dòng)終端地震前兆觀測(cè)系統(tǒng)進(jìn)行詳細(xì)設(shè)計(jì)和數(shù)據(jù)庫設(shè)計(jì);隨后,通過Android模擬器和采用Android系統(tǒng)的手機(jī)對(duì)系統(tǒng)進(jìn)行測(cè)試。
采用移動(dòng)互聯(lián)網(wǎng)技術(shù)和移動(dòng)終端技術(shù)相結(jié)合,實(shí)現(xiàn)基于移動(dòng)終端的地震前兆數(shù)據(jù)觀測(cè)系統(tǒng)的相關(guān)功能。對(duì)地震觀測(cè)設(shè)備的數(shù)據(jù)通信單元進(jìn)行傳輸模式改造,在互聯(lián)網(wǎng)上重新搭建數(shù)據(jù)庫服務(wù)平臺(tái),通過移動(dòng)終端設(shè)備對(duì)其進(jìn)行訪問,用戶可以實(shí)現(xiàn)隨時(shí)隨地查看各項(xiàng)地震前兆觀測(cè)數(shù)據(jù),動(dòng)態(tài)顯示觀測(cè)設(shè)備運(yùn)行狀況以及觀測(cè)數(shù)據(jù)圖文等等。
基于Android平臺(tái)的地震前兆數(shù)據(jù)觀測(cè)系統(tǒng)的總體架構(gòu)中,終端用戶可以通過Android設(shè)備運(yùn)行訪問Android客戶端,也可以通過Web瀏覽器訪問系統(tǒng)Web客戶端。Android客戶端主要為用戶提供一個(gè)方便操作的信息采集平臺(tái),Web客戶端主要為用戶提供管理和維護(hù)數(shù)據(jù)的一個(gè)平臺(tái)。通過Web服務(wù)器提供不同數(shù)據(jù)訪問接口與數(shù)據(jù)庫服務(wù)器進(jìn)行交互,確保數(shù)據(jù)訪問的一致性。
系統(tǒng)涉及Android和Web瀏覽器兩個(gè)不同的平臺(tái),為降低系統(tǒng)維護(hù)難度,客戶端和服務(wù)器之間通過HTTP協(xié)議進(jìn)行交互,采用輕量級(jí)數(shù)據(jù)交互格式JSON作為數(shù)據(jù)格式的標(biāo)準(zhǔn)。JSON是目前通用的數(shù)據(jù)格式,使用JSON既可以提高系統(tǒng)擴(kuò)展性,今后也可以將客戶端移植到其他平臺(tái)。
系統(tǒng)的物理架構(gòu)如圖1所示,移動(dòng)終端設(shè)備(智能手機(jī)、平板電腦等)可通過移動(dòng)互聯(lián)網(wǎng)(WIFI/GPRS/3G/4G)來訪問項(xiàng)目管理系統(tǒng)的服務(wù)器,如需進(jìn)行數(shù)據(jù)交互則通過Web服務(wù)器來訪問后臺(tái)數(shù)據(jù)庫服務(wù)器。
拆除水毀的襯砌板時(shí),要輕拿輕放,避免破壞已安裝的復(fù)合土工膜,拆除水毀的現(xiàn)澆襯砌板時(shí),要避免破壞未水毀的襯砌板。
圖1 系統(tǒng)物理架構(gòu)圖Fig.1 Physical architecture of the system
系統(tǒng)實(shí)現(xiàn)關(guān)鍵技術(shù)選型:客戶端(主要是指Android客戶端)應(yīng)用程序開發(fā)使用Java技術(shù),采用主流的Android SDK API-19(Android 4.3版本)進(jìn)行開發(fā),實(shí)現(xiàn)客戶端與服務(wù)器端的通信使用HTTP技術(shù);后臺(tái)數(shù)據(jù)庫采用MySQL,采用JDBC連接方式訪問數(shù)據(jù)庫。系統(tǒng)實(shí)現(xiàn)關(guān)鍵技術(shù)的選型如圖2所示。
圖2 系統(tǒng)實(shí)現(xiàn)關(guān)鍵技術(shù)選型圖Fig.2 Selected key technology of the system
基于Android平臺(tái)的信息采集共享系統(tǒng)的功能設(shè)計(jì)主要分為兩大部分:基于B/S模式的Web管理客戶端和基于Android平臺(tái)的手機(jī)客戶端。系統(tǒng)的整體功能框架如圖3所示。
實(shí)現(xiàn)基于Android平臺(tái)的地震前兆數(shù)據(jù)觀測(cè)系統(tǒng),主要使用以下技術(shù)。
圖3 系統(tǒng)的整體功能框架圖Fig.3 The overall functional framework of the system
Android應(yīng)用程序的前臺(tái)客戶端與后臺(tái)Web服務(wù)器之間進(jìn)行數(shù)據(jù)交互,可采用Android自帶的Adapter機(jī)制和JSON來實(shí)現(xiàn)。Android和Web服務(wù)器端交互使用Apache Tomcat服務(wù)器進(jìn)行,通過HTTP協(xié)議,客戶端通過發(fā)送網(wǎng)絡(luò)請(qǐng)求進(jìn)行數(shù)據(jù)的獲取,服務(wù)器端則將客戶端請(qǐng)求的數(shù)據(jù)以數(shù)據(jù)流的形式遠(yuǎn)程發(fā)送到手機(jī)端[2]。在服務(wù)器與客戶端進(jìn)行交互的過程中,當(dāng)前對(duì)象的遠(yuǎn)程發(fā)送較為流行且高效的是根據(jù)對(duì)象的設(shè)計(jì)將對(duì)象信息序列化為JSON對(duì)象進(jìn)行傳輸。為實(shí)現(xiàn)在發(fā)送數(shù)據(jù)和接收數(shù)據(jù)時(shí)對(duì)相關(guān)數(shù)據(jù)進(jìn)行轉(zhuǎn)化,采用Google官方提供的Gson工具包進(jìn)行對(duì)象的序列化和反序列化。
在Android程序中,出于安全方面的考慮,創(chuàng)建專門用于訪問數(shù)據(jù)庫的接口。系統(tǒng)中通過創(chuàng)建工具類My SQLUtil和配置相關(guān)數(shù)據(jù)庫信息來實(shí)現(xiàn)。部分實(shí)現(xiàn)代碼如下:
Try{
Prop.load(this.getClass().getCkassLiadwe().getResourceAsStream(
“DBConfig.Properties”))); //調(diào)用配置資源文件數(shù)據(jù)
Driver=prop.getProperty(“driver”);
Ur1=prop.getProperty(“ur1”); //從配置文件中獲取數(shù)據(jù)庫地址
Username=prop.getProperty(“username”); //獲取配置文件中的用戶名
Password=prop.getProperty(“password”); //獲取配置文件中的密碼
Class.forName(driver);
Return DriverManager.getConnection(ur1,username,password);
}
接著,配置數(shù)據(jù)庫信息,相關(guān)信息文件的部分內(nèi)容如下:
driver=com.mysql.jdbc.Driver //數(shù)據(jù)庫驅(qū)動(dòng)
ur1=jdbc:mysql://
//配置數(shù)據(jù)庫的地址
Username=root //配置數(shù)據(jù)庫的用戶名
Password=admin //配置數(shù)據(jù)庫的密碼
同時(shí)使用Hibernate和Struts框架會(huì)產(chǎn)生大量的對(duì)象創(chuàng)建操作,如果對(duì)象管理不當(dāng),很容易造成內(nèi)存溢出現(xiàn)象,而且DAO層和業(yè)務(wù)邏輯層之間的耦合性較大,針對(duì)此現(xiàn)象,使用Spring框架對(duì)整個(gè)服務(wù)器端的系統(tǒng)進(jìn)行整合,利用Spring的IOC(Inversion of Control,控制反轉(zhuǎn))特性,將所有需用到的對(duì)象托管到Spring中進(jìn)行管理,需要使用對(duì)象時(shí),直接從對(duì)應(yīng)的對(duì)象池中獲取需要的對(duì)象進(jìn)行使用。這樣,對(duì)于對(duì)象內(nèi)存的使用進(jìn)行了優(yōu)化。同時(shí)Spring的AOP(Aspect Oriented Programming,面向切面編程)也為之后對(duì)系統(tǒng)的維護(hù)做準(zhǔn)備。
通過Android模擬器和采用Android系統(tǒng)的手機(jī)對(duì)系統(tǒng)進(jìn)行測(cè)試。Android平臺(tái)客戶端和Web服務(wù)端實(shí)現(xiàn)效果如圖4、圖5、圖6和第56頁圖7所示。
移動(dòng)互聯(lián)網(wǎng)技術(shù)的發(fā)展和各種智能移動(dòng)終端的不斷普及和性能提高,為給用戶構(gòu)建基于移動(dòng)終端的項(xiàng)目管理系統(tǒng)提供了良好的技術(shù)環(huán)境和條件,“互聯(lián)網(wǎng)+地震”成為防震減災(zāi)工作信息化建設(shè)的一項(xiàng)重要內(nèi)容。該系統(tǒng)的研發(fā)基本上實(shí)現(xiàn)了便攜、及時(shí)、高效、隨時(shí)隨地獲取地震信息,提高工作效率的目的。限于開發(fā)者的知識(shí)背景、技術(shù)水平、研究時(shí)間和資源等條件,系統(tǒng)在設(shè)計(jì)與實(shí)現(xiàn)過程中仍存在一些問題和待改進(jìn)的地方。主要有以下兩點(diǎn):
圖4 觀測(cè)臺(tái)站選擇圖Fig.4 Selected observation stations
圖5 觀測(cè)儀器選擇圖Fig.5 Selected observation instruments
圖6 觀測(cè)數(shù)據(jù)曲線瀏覽圖Fig.6 Observation data curve
(1) 功能不夠完善。系統(tǒng)僅實(shí)現(xiàn)了地震前兆觀測(cè)的基本功能。
(2) 界面不夠美觀。系統(tǒng)界面簡單、風(fēng)格單一、操作還不夠“友好”。界面是應(yīng)用程序客戶體驗(yàn)的重要因素,客戶體驗(yàn)也是評(píng)判應(yīng)用程序好壞的標(biāo)準(zhǔn)之一。系統(tǒng)在此方面還有待進(jìn)一步完善。
圖7 Web服務(wù)端運(yùn)行界面圖Fig.7 Interface of WEB server
參考文獻(xiàn):
[1] 程冬焱,胡玉良,穆慧敏,等.山西地震前兆數(shù)據(jù)智能監(jiān)控分析軟件在山西前兆臺(tái)網(wǎng)中的應(yīng)用[J].山西地震,2012(3):21-23.
[2] 黃金剛,閆民正,郭林旺,等.基于云推送和Android的地震信息發(fā)布技術(shù)[J].震災(zāi)防御技術(shù),2015,10(4):1004-1009.