王文琴,李亦飛
(常州工學(xué)院計算機(jī)信息工程學(xué)院,江蘇 常州 213002)
我國的建筑能耗隨著城市建設(shè)的高速發(fā)展逐年大幅上升,已達(dá)到全社會能源消耗量的32%,如果加上每年房屋建筑材料生產(chǎn)能耗約13%,那么建筑總能耗實際已達(dá)全國能源總消耗量的45%。近年來,國家對建筑節(jié)能工作提出了一系列更新更高的要求,出臺了有關(guān)建筑節(jié)能的實施意見等相關(guān)文件,要求建立大型公共建筑和國家機(jī)關(guān)辦公建筑能耗監(jiān)測體系,通過對大型公共建筑和國家機(jī)關(guān)辦公建筑能耗進(jìn)行動態(tài)實時監(jiān)測、能耗統(tǒng)計、能耗審計,為大型公共建筑和國家機(jī)關(guān)辦公建筑節(jié)能改造提供數(shù)據(jù)支持,實現(xiàn)建筑節(jié)能規(guī)劃目標(biāo)。
移動互聯(lián)網(wǎng)的不斷發(fā)展和智能手機(jī)的快速更新使移動終端的服務(wù)更加豐富和實用化,在移動設(shè)備上的交互式信息系統(tǒng)的研究成為3G業(yè)務(wù)新的亮點。本文采用Web Services技術(shù),設(shè)計開發(fā)了基于SOA架構(gòu)的建筑能耗監(jiān)測系統(tǒng),并基于此方案實現(xiàn)了運行于Android操作系統(tǒng)的移動端軟件,進(jìn)一步擴(kuò)大了能耗信息的覆蓋面,使各行業(yè)應(yīng)用部門能夠及時獲取建筑能耗數(shù)據(jù)并得到高效利用。
SOA(Services Oriented Architecture)是為解決網(wǎng)絡(luò)應(yīng)用環(huán)境下分布式異構(gòu)系統(tǒng)集成及實現(xiàn)資源共享問題而逐步發(fā)展起來的一種系統(tǒng)架構(gòu)設(shè)計思想,它可以根據(jù)需要對網(wǎng)絡(luò)上松散耦合的應(yīng)用組件進(jìn)行分布式部署、組合和調(diào)用。實現(xiàn)SOA架構(gòu)的技術(shù)有ESB、Web Services和JMS等。
Web Services是一種新的計算模式,這種技術(shù)隱藏了服務(wù)實現(xiàn)的細(xì)節(jié),允許通過獨立于硬件或軟件平臺、獨立于編寫服務(wù)所使用的編程語言、獨立于服務(wù)實現(xiàn)的方式使用該服務(wù)。Web Services技術(shù)的主要目標(biāo)是在各種異構(gòu)平臺的基礎(chǔ)之上構(gòu)建一個與平臺和語言無關(guān)的相同的技術(shù)層,各種應(yīng)用都可以通過這個技術(shù)層來實施彼此的連接和集成。這些特點使Web Services作為SOA的具體實現(xiàn)技術(shù)非常合適,成為異構(gòu)系統(tǒng)集成的主要手段,也是目前常用的SOA實現(xiàn)技術(shù)。其典型的工作流程如圖1所示:①Web Service服務(wù)器將實現(xiàn)的業(yè)務(wù)功能封裝為服務(wù),并使用UDDI把自己提供的Web Service發(fā)布到注冊中心;②服務(wù)請求者通過查詢UDDI服務(wù)器中的WSDL獲取所需Web Service的服務(wù)器地址和接口;③服務(wù)請求者通過SOAP發(fā)出訪問Web Service的請求;④Web Service的提供者接收并處理這個請求,并將請求的處理結(jié)果使用SOAP應(yīng)答消息發(fā)送。
圖1 Web Services工作流程
按SOA設(shè)計思想,建筑能耗監(jiān)測系統(tǒng)按圖2所示分為4部分:中心數(shù)據(jù)庫服務(wù)器、Web服務(wù)器、Web Service服務(wù)器和各種終端用戶。系統(tǒng)使用Web服務(wù)封裝了各種能耗數(shù)據(jù)管理功能,并將這些服務(wù)在Web Service服務(wù)器上發(fā)布,提供給各種終端用戶使用;實現(xiàn)了建筑能耗監(jiān)管系統(tǒng),實時采集建筑物用能狀況,并自動對采集到的能耗數(shù)據(jù)進(jìn)行處理,完成建筑用能效率、建筑能耗結(jié)構(gòu)及建筑節(jié)能潛力數(shù)據(jù)分析,并將相關(guān)統(tǒng)計數(shù)據(jù)進(jìn)一步報送上一級數(shù)據(jù)中心;開發(fā)了基于Android手機(jī)操作系統(tǒng)的移動端軟件,可以通過Wi-Fi、GSM 或GPRS等無線通訊技術(shù)訪問服務(wù),獲取能耗數(shù)據(jù)。
圖2 建筑能耗監(jiān)測系統(tǒng)架構(gòu)
系統(tǒng)所涉及的軟件環(huán)境主要包括以下4個方面:①中心數(shù)據(jù)庫服務(wù)器,采用Oracle 10g做為數(shù)據(jù)庫管理軟件;②Web服務(wù)器和Web Service服務(wù)器,采用IIS 6.0;③建筑能耗監(jiān)管系統(tǒng)開發(fā),使用Microsoft Visual Studio 2010開發(fā)環(huán)境,基于ASP.NET技術(shù)和Ext.NET框架設(shè)計實現(xiàn);④建筑能耗監(jiān)測系統(tǒng)移動端開發(fā),基于Android手機(jī)操作系統(tǒng),使用Eclipse+Android Developer Tools開發(fā)工具,采用Java語言結(jié)合Android SDK和Google Map API等類庫實現(xiàn)。
智能手機(jī)使用的操作系統(tǒng)有Android、iOS、Windows Phone和BlackBerry OS等。其中Android是Google發(fā)布的基于Linux平臺的開源手機(jī)操作系統(tǒng),由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成,是首個為移動終端打造的真正開放和完整的移動軟件。截至2012年6月,Android占據(jù)全球智能手機(jī)操作系統(tǒng)市場59%的份額,中國市場占有率為76.7%,成為全球第一大智能操作系統(tǒng)。
建筑能耗監(jiān)測系統(tǒng)移動端軟件開發(fā)基于Android手機(jī)操作系統(tǒng),主要功能包括:①使用Google Map技術(shù)將用戶管理的建筑標(biāo)記在手機(jī)地圖上,并可以放大、縮小和移動,方便用戶查找建筑標(biāo)記、獲取建筑地理位置信息;②通過無線網(wǎng)絡(luò)訪問Web Service服務(wù)器上封裝的能耗數(shù)據(jù)管理服務(wù)解析建筑能耗數(shù)據(jù);③使用圖表技術(shù)對獲取的建筑能耗數(shù)據(jù)進(jìn)行動態(tài)圖表顯示,可以選擇的圖形包括柱狀圖和線形圖等;④使用推送技術(shù)接收遠(yuǎn)程服務(wù)器的推送信息,實現(xiàn)預(yù)警;⑤使用JavaMail技術(shù)實現(xiàn)郵件發(fā)送功能,提交用戶反饋信息。本節(jié)對系統(tǒng)實現(xiàn)中的一些關(guān)鍵技術(shù)進(jìn)行介紹。
建筑能耗監(jiān)測系統(tǒng)移動端需要對大量的數(shù)據(jù)進(jìn)行統(tǒng)計,統(tǒng)計過程中通常使用圖表來給用戶恰當(dāng)?shù)臄?shù)據(jù)體驗,如餅狀圖、柱形圖和線形圖等。在Android中,可用的圖表繪制方案有Google Chart API、AChartEngine庫和Chartdroid庫等。
①Google Chart API:是Google公布的繪圖服務(wù)(Google Chart)接口,能夠為統(tǒng)計數(shù)據(jù)自動生成圖片,可用的圖片類型有折線圖、條狀圖、餅狀圖、Venn圖和散點圖。這種方法實現(xiàn)較為簡單,但是在使用過程中手機(jī)端必須連接網(wǎng)絡(luò),對于手機(jī)用戶來說有額外的網(wǎng)絡(luò)流量開銷。
②AChartEngine庫:是 Google的開源圖表庫,這種方法在項目中引入achartengine-1.0.0.jar包(http://code.google.com/p/achartengine/downloads/list),利用 AChartEngine庫提供的功能可以實現(xiàn)折線圖、散點圖、條狀圖、餅狀圖、氣泡圖、柱狀圖和儀表圖等圖形的繪制,功能強(qiáng)大。
③Chartdroid庫:該方法需先下載并安裝ChartdroidCore-2.0.0.apk,應(yīng)用程序利用Android提供的ContentProvider機(jī)制使用Chartdroid庫。因此,對于手機(jī)用戶來說帶有強(qiáng)制性,不合適。
根據(jù)以上分析,本系統(tǒng)最終使用Google提供的開源圖表庫AChartEngine實現(xiàn)了圖表繪制,圖3是使用AChartEngine繪制圖表的思路,具體分析如下:
圖3 使用AChartEngine繪制圖表
XYMultipleSeriesDataset:用于數(shù)據(jù)的存放。添加的XYSeries對象用于提供繪制的點集合的數(shù)據(jù)。程序中需要把用來畫圖的數(shù)據(jù)存入這些結(jié)構(gòu)中,并且要根據(jù)所畫圖的類型不同,將數(shù)據(jù)整理成特定的格式。
XYMultipleSeriesRenderer:主要是設(shè)置所畫圖形的線的顏色、點的形狀、是否顯示數(shù)據(jù)等。添加的XYSeriesRender對象用于定義繪制的點集合設(shè)置,注意數(shù)量要和XYMultipleSeriesDataset添加的XYSeries一致。
ChartFactory:使用ChartFactory類的getXXXChartIntent()方法繪制不同的圖表,使用時需傳入XYMultipleSeriesRenderer和XYMultipleSeriesDataset類型的對象。
獲取服務(wù)器上不定時更新信息的方法一般有:一是客戶端使用Pull(拉)方式,定時訪問服務(wù)器查詢是否有新的信息;二是服務(wù)器使用Push(推送)方式,即客戶端和服務(wù)器之間建立持久連接通道,當(dāng)服務(wù)端有新消息時通過此通道發(fā)給客戶端。雖然Pull和Push方式都能實現(xiàn)獲取服務(wù)器端更新信息的功能,但相比Pull方式,Push方式不需要定時訪問服務(wù)器,推送的消息是實時的,而且節(jié)約手機(jī)電量和流量。目前Android平臺上推送實現(xiàn)方式有:C2DM云端推送、XMPP協(xié)議、MQTT協(xié)議和使用第三方推送服務(wù)等。
①C2DM(Cloud to Device Messaging):是Google推出的云消息服務(wù),用來幫助開發(fā)者從服務(wù)器向Android應(yīng)用程序發(fā)送數(shù)據(jù)。服務(wù)提供了一個簡單的、輕量級的機(jī)制,但是C2DM內(nèi)置于Android 2.2系統(tǒng),無法兼容老的系統(tǒng),且需要依賴于Google官方提供的C2DM服務(wù)器,由于國內(nèi)的網(wǎng)絡(luò)環(huán)境,這個服務(wù)經(jīng)常不可用。
②XMPP(可擴(kuò)展通訊和表示協(xié)議):基于XML協(xié)議,前身是Jabber,目前已由IETF國際標(biāo)準(zhǔn)化組織完成了標(biāo)準(zhǔn)化工作。該協(xié)議成熟,可擴(kuò)展性強(qiáng),主要應(yīng)用于許多聊天系統(tǒng)中。androidpn(Android Push Notification)是一個基于XMPP協(xié)議的Java開源實現(xiàn),包含了完整的客戶端和服務(wù)器端。服務(wù)端基于openfire開源項目、客戶端基于smack開源項目,均采用Java語言實現(xiàn)。這個解決方案比較簡單,但部署硬件成本較高,且XMPP協(xié)議復(fù)雜,費流量和電量,對智能機(jī)的消耗太大,對不穩(wěn)定的手機(jī)網(wǎng)絡(luò)不是最優(yōu)的選擇。
③MQTT(Message Queuing Telemetry Transport,消息隊列遙測傳輸):由IBM 開發(fā),為大量計算能力有限,且工作在低帶寬、不可靠網(wǎng)絡(luò)的遠(yuǎn)程傳感器和控制設(shè)備通訊而設(shè)計的協(xié)議,是一種開放、精簡、輕量級和容易實現(xiàn)的協(xié)議。
④第三方推送服務(wù):客戶端嵌入第三方提供的lib庫,由第三方建立長連接,負(fù)責(zé)消息的接收/發(fā)送。目前比較成熟的有:parse、pubnub、個推等。
推送方案的評價可采取4S標(biāo)準(zhǔn),即Safe(安全)、Stable(穩(wěn)定)、Save(省電省流量省成本)和Slim(體積小)。按照此標(biāo)準(zhǔn)及項目成本和安全性考慮,本系統(tǒng)最終在項目中引入 IBM提供的MQTT協(xié)議實現(xiàn)包wmqtt.jar(http://www-01.ibm.com/support/docview.wss?rs=171&uid=swg24006006)完成推送功能。圖4為系統(tǒng)實現(xiàn)界面,在左邊的target文本框中輸入設(shè)備的唯一ID號“AslanchenIsGod”,text文本框中輸入要發(fā)送的內(nèi)容“危險警告”,點擊“Send Push Message”按鈕就可在手機(jī)端推送及時的報警信息。
圖4 系統(tǒng)實現(xiàn)的推送功能
Web Services是一種基于SOAP協(xié)議實現(xiàn)遠(yuǎn)程調(diào)用的分布式計算方式,是目前常用的SOA實現(xiàn)技術(shù)和異構(gòu)系統(tǒng)集成的主要手段,具有非常廣闊的應(yīng)用前景。但是,在Android SDK中并沒有提供調(diào)用Web Services的類庫,需要借助第三方類庫來實現(xiàn)。其中最常用的是開源項目ksoap2-android(http://code.google.com/p/ksoap2-android/),其為Android平臺提供給了一個輕量級而且高效的SOAP庫。利用ksoap2-android開源項目訪問Web Services的步驟如圖5所示。
SOA是近幾年業(yè)界廣為接受的軟件體系架構(gòu),它的提出使得Web Services得到了更為廣泛的應(yīng)用。本文采用SOA架構(gòu),利用Web Services的封裝性和松耦合性,將采集到的建筑能耗數(shù)據(jù)封裝為Web服務(wù)提供給各種類型的終端用戶,可以很好地適應(yīng)目前建筑能耗監(jiān)測系統(tǒng)應(yīng)用環(huán)境存在的地域分布性的狀況?;谠摻鉀Q方案實現(xiàn)了一個面向移動設(shè)備,運行于Android操作系統(tǒng)的建筑能耗監(jiān)測系統(tǒng),使用戶能通過各種移動終端獲取最新的建筑能耗信息及預(yù)警信息,擴(kuò)大了能耗信息的覆蓋面。
圖5 利用ksoap2-android開源項目訪問Web Service方法
[1]鄭宗生,黃冬梅,張建新,等.面向SOA的城市風(fēng)暴潮災(zāi)害評估 GIS 系統(tǒng)[J].計算機(jī)工程與設(shè)計,2011,32(3):931-935.
[2]劉建峰,陳志泊.基于SOA的校園網(wǎng)運維平臺[J].計算機(jī)工程與設(shè)計,2011,32(2):543-548.
[3]馬越.Android的架構(gòu)與應(yīng)用[D].北京:中國地質(zhì)大學(xué),2008.
[4]Shane Conder.Android移動應(yīng)用開發(fā)從入門到精通[M].北京:人民郵電出版社,2010.
[5]管紅杰,王珂,江海峰,等.SOA架構(gòu)的工作流管理系統(tǒng)的研究與應(yīng)用[J].計算機(jī)工程與設(shè)計,2011,32(5):1654-1657.