基于SOA架构的建筑能耗监测系统移动端的设计与实现
2013-01-15王文琴李亦飞
王文琴,李亦飞
(常州工学院计算机信息工程学院,江苏 常州 213002)
0 引言
我国的建筑能耗随着城市建设的高速发展逐年大幅上升,已达到全社会能源消耗量的32%,如果加上每年房屋建筑材料生产能耗约13%,那么建筑总能耗实际已达全国能源总消耗量的45%。近年来,国家对建筑节能工作提出了一系列更新更高的要求,出台了有关建筑节能的实施意见等相关文件,要求建立大型公共建筑和国家机关办公建筑能耗监测体系,通过对大型公共建筑和国家机关办公建筑能耗进行动态实时监测、能耗统计、能耗审计,为大型公共建筑和国家机关办公建筑节能改造提供数据支持,实现建筑节能规划目标。
移动互联网的不断发展和智能手机的快速更新使移动终端的服务更加丰富和实用化,在移动设备上的交互式信息系统的研究成为3G业务新的亮点。本文采用Web Services技术,设计开发了基于SOA架构的建筑能耗监测系统,并基于此方案实现了运行于Android操作系统的移动端软件,进一步扩大了能耗信息的覆盖面,使各行业应用部门能够及时获取建筑能耗数据并得到高效利用。
1 基于SOA架构的建筑能耗监测系统设计
1.1 SOA架构和Web Services技术
SOA(Services Oriented Architecture)是为解决网络应用环境下分布式异构系统集成及实现资源共享问题而逐步发展起来的一种系统架构设计思想,它可以根据需要对网络上松散耦合的应用组件进行分布式部署、组合和调用。实现SOA架构的技术有ESB、Web Services和JMS等。
Web Services是一种新的计算模式,这种技术隐藏了服务实现的细节,允许通过独立于硬件或软件平台、独立于编写服务所使用的编程语言、独立于服务实现的方式使用该服务。Web Services技术的主要目标是在各种异构平台的基础之上构建一个与平台和语言无关的相同的技术层,各种应用都可以通过这个技术层来实施彼此的连接和集成。这些特点使Web Services作为SOA的具体实现技术非常合适,成为异构系统集成的主要手段,也是目前常用的SOA实现技术。其典型的工作流程如图1所示:①Web Service服务器将实现的业务功能封装为服务,并使用UDDI把自己提供的Web Service发布到注册中心;②服务请求者通过查询UDDI服务器中的WSDL获取所需Web Service的服务器地址和接口;③服务请求者通过SOAP发出访问Web Service的请求;④Web Service的提供者接收并处理这个请求,并将请求的处理结果使用SOAP应答消息发送。
图1 Web Services工作流程
1.2 基于SOA架构的建筑能耗监测系统架构
按SOA设计思想,建筑能耗监测系统按图2所示分为4部分:中心数据库服务器、Web服务器、Web Service服务器和各种终端用户。系统使用Web服务封装了各种能耗数据管理功能,并将这些服务在Web Service服务器上发布,提供给各种终端用户使用;实现了建筑能耗监管系统,实时采集建筑物用能状况,并自动对采集到的能耗数据进行处理,完成建筑用能效率、建筑能耗结构及建筑节能潜力数据分析,并将相关统计数据进一步报送上一级数据中心;开发了基于Android手机操作系统的移动端软件,可以通过Wi-Fi、GSM 或GPRS等无线通讯技术访问服务,获取能耗数据。
图2 建筑能耗监测系统架构
系统所涉及的软件环境主要包括以下4个方面:①中心数据库服务器,采用Oracle 10g做为数据库管理软件;②Web服务器和Web Service服务器,采用IIS 6.0;③建筑能耗监管系统开发,使用Microsoft Visual Studio 2010开发环境,基于ASP.NET技术和Ext.NET框架设计实现;④建筑能耗监测系统移动端开发,基于Android手机操作系统,使用Eclipse+Android Developer Tools开发工具,采用Java语言结合Android SDK和Google Map API等类库实现。
2 建筑能耗监测系统移动端的设计与实现
智能手机使用的操作系统有Android、iOS、Windows Phone和BlackBerry OS等。其中Android是Google发布的基于Linux平台的开源手机操作系统,由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的真正开放和完整的移动软件。截至2012年6月,Android占据全球智能手机操作系统市场59%的份额,中国市场占有率为76.7%,成为全球第一大智能操作系统。
建筑能耗监测系统移动端软件开发基于Android手机操作系统,主要功能包括:①使用Google Map技术将用户管理的建筑标记在手机地图上,并可以放大、缩小和移动,方便用户查找建筑标记、获取建筑地理位置信息;②通过无线网络访问Web Service服务器上封装的能耗数据管理服务解析建筑能耗数据;③使用图表技术对获取的建筑能耗数据进行动态图表显示,可以选择的图形包括柱状图和线形图等;④使用推送技术接收远程服务器的推送信息,实现预警;⑤使用JavaMail技术实现邮件发送功能,提交用户反馈信息。本节对系统实现中的一些关键技术进行介绍。
2.1 移动端统计图表的绘制
建筑能耗监测系统移动端需要对大量的数据进行统计,统计过程中通常使用图表来给用户恰当的数据体验,如饼状图、柱形图和线形图等。在Android中,可用的图表绘制方案有Google Chart API、AChartEngine库和Chartdroid库等。
①Google Chart API:是Google公布的绘图服务(Google Chart)接口,能够为统计数据自动生成图片,可用的图片类型有折线图、条状图、饼状图、Venn图和散点图。这种方法实现较为简单,但是在使用过程中手机端必须连接网络,对于手机用户来说有额外的网络流量开销。
②AChartEngine库:是 Google的开源图表库,这种方法在项目中引入achartengine-1.0.0.jar包(http://code.google.com/p/achartengine/downloads/list),利用 AChartEngine库提供的功能可以实现折线图、散点图、条状图、饼状图、气泡图、柱状图和仪表图等图形的绘制,功能强大。
③Chartdroid库:该方法需先下载并安装ChartdroidCore-2.0.0.apk,应用程序利用Android提供的ContentProvider机制使用Chartdroid库。因此,对于手机用户来说带有强制性,不合适。
根据以上分析,本系统最终使用Google提供的开源图表库AChartEngine实现了图表绘制,图3是使用AChartEngine绘制图表的思路,具体分析如下:
图3 使用AChartEngine绘制图表
XYMultipleSeriesDataset:用于数据的存放。添加的XYSeries对象用于提供绘制的点集合的数据。程序中需要把用来画图的数据存入这些结构中,并且要根据所画图的类型不同,将数据整理成特定的格式。
XYMultipleSeriesRenderer:主要是设置所画图形的线的颜色、点的形状、是否显示数据等。添加的XYSeriesRender对象用于定义绘制的点集合设置,注意数量要和XYMultipleSeriesDataset添加的XYSeries一致。
ChartFactory:使用ChartFactory类的getXXXChartIntent()方法绘制不同的图表,使用时需传入XYMultipleSeriesRenderer和XYMultipleSeriesDataset类型的对象。
2.2 移动端推送功能实现
获取服务器上不定时更新信息的方法一般有:一是客户端使用Pull(拉)方式,定时访问服务器查询是否有新的信息;二是服务器使用Push(推送)方式,即客户端和服务器之间建立持久连接通道,当服务端有新消息时通过此通道发给客户端。虽然Pull和Push方式都能实现获取服务器端更新信息的功能,但相比Pull方式,Push方式不需要定时访问服务器,推送的消息是实时的,而且节约手机电量和流量。目前Android平台上推送实现方式有:C2DM云端推送、XMPP协议、MQTT协议和使用第三方推送服务等。
①C2DM(Cloud to Device Messaging):是Google推出的云消息服务,用来帮助开发者从服务器向Android应用程序发送数据。服务提供了一个简单的、轻量级的机制,但是C2DM内置于Android 2.2系统,无法兼容老的系统,且需要依赖于Google官方提供的C2DM服务器,由于国内的网络环境,这个服务经常不可用。
②XMPP(可扩展通讯和表示协议):基于XML协议,前身是Jabber,目前已由IETF国际标准化组织完成了标准化工作。该协议成熟,可扩展性强,主要应用于许多聊天系统中。androidpn(Android Push Notification)是一个基于XMPP协议的Java开源实现,包含了完整的客户端和服务器端。服务端基于openfire开源项目、客户端基于smack开源项目,均采用Java语言实现。这个解决方案比较简单,但部署硬件成本较高,且XMPP协议复杂,费流量和电量,对智能机的消耗太大,对不稳定的手机网络不是最优的选择。
③MQTT(Message Queuing Telemetry Transport,消息队列遥测传输):由IBM 开发,为大量计算能力有限,且工作在低带宽、不可靠网络的远程传感器和控制设备通讯而设计的协议,是一种开放、精简、轻量级和容易实现的协议。
④第三方推送服务:客户端嵌入第三方提供的lib库,由第三方建立长连接,负责消息的接收/发送。目前比较成熟的有:parse、pubnub、个推等。
推送方案的评价可采取4S标准,即Safe(安全)、Stable(稳定)、Save(省电省流量省成本)和Slim(体积小)。按照此标准及项目成本和安全性考虑,本系统最终在项目中引入 IBM提供的MQTT协议实现包wmqtt.jar(http://www-01.ibm.com/support/docview.wss?rs=171&uid=swg24006006)完成推送功能。图4为系统实现界面,在左边的target文本框中输入设备的唯一ID号“AslanchenIsGod”,text文本框中输入要发送的内容“危险警告”,点击“Send Push Message”按钮就可在手机端推送及时的报警信息。
图4 系统实现的推送功能
2.3 Android平台Web Services访问
Web Services是一种基于SOAP协议实现远程调用的分布式计算方式,是目前常用的SOA实现技术和异构系统集成的主要手段,具有非常广阔的应用前景。但是,在Android SDK中并没有提供调用Web Services的类库,需要借助第三方类库来实现。其中最常用的是开源项目ksoap2-android(http://code.google.com/p/ksoap2-android/),其为Android平台提供给了一个轻量级而且高效的SOAP库。利用ksoap2-android开源项目访问Web Services的步骤如图5所示。
3 结语
SOA是近几年业界广为接受的软件体系架构,它的提出使得Web Services得到了更为广泛的应用。本文采用SOA架构,利用Web Services的封装性和松耦合性,将采集到的建筑能耗数据封装为Web服务提供给各种类型的终端用户,可以很好地适应目前建筑能耗监测系统应用环境存在的地域分布性的状况。基于该解决方案实现了一个面向移动设备,运行于Android操作系统的建筑能耗监测系统,使用户能通过各种移动终端获取最新的建筑能耗信息及预警信息,扩大了能耗信息的覆盖面。
图5 利用ksoap2-android开源项目访问Web Service方法
[1]郑宗生,黄冬梅,张建新,等.面向SOA的城市风暴潮灾害评估 GIS 系统[J].计算机工程与设计,2011,32(3):931-935.
[2]刘建峰,陈志泊.基于SOA的校园网运维平台[J].计算机工程与设计,2011,32(2):543-548.
[3]马越.Android的架构与应用[D].北京:中国地质大学,2008.
[4]Shane Conder.Android移动应用开发从入门到精通[M].北京:人民邮电出版社,2010.
[5]管红杰,王珂,江海峰,等.SOA架构的工作流管理系统的研究与应用[J].计算机工程与设计,2011,32(5):1654-1657.