中间件技术在雨水情管理系统中的应用研究

2014-12-25 03:20徐国荣孙志斌
江西水利科技 2014年4期
关键词:水情中间件雨量

徐国荣 ,孙志斌

(1.江西省抚州市临川区抚河河道堤防管理局,江西 抚州344000;2.江西省水利科学研究院,江西南昌330029;3.江西省水工安全工程技术研究中心,江西南昌330029)

0 引言

目前在水利信息化领域中,中间件技术开发大多基于J2EE平台。应用集成有两种框架,一种是以EJB为代表的重量级框架,另一种是以 Struts、Spring、Hibernate为代表的轻量级框架[1]。在传统的J2EE体系中,EJB是重量级组件,增加了部署方面的难度,在很多情况下的企业级应用需要一个轻量级的解决方案。随着以Spring为代表的轻量级框架的出现,它们为企业级的应用提供了更多的选择。轻量级框架旨在消除与传统J2EE API有关的不必要的复杂性和限制,它也将缩短应用程序的开发部署时间,这样做的直接好处就是缩短了启动时间,降低了运行环境的要求,也减轻了测试的工作量[2]。在上述研究背景下,本文在研究了轻量级框架中间件技术开发前提下,将此技术应用在雨水情管理系统中很有意义。

1 J2EE的轻量级框架

在J2EE平台下的轻量级框架应用体系中,数据持久化采用的是Hibernate框架,中间负责业务逻辑的采用Spring框架,而表现层借鉴的是Struts框架[3]。

1.1 表现层框架Struts

Struts是开源的一款框架产品,实现的是一个MVC模式的框架结构,主要包括模型、视图和控制器3个部分[4]。MVC过程的实现就是将模型通过控制器利用视图表现出来的一种方式。Mode可以由不同的Java Bean组成,对应业务逻辑组件而实现具体的业务逻辑,直接与底层的数据源打交道[5];VIEW可以是由多种视图文件来表示,可以是JSP、HTML等等[6]。系统开发应用该结构的核心就是控制器,引入了拦截器机制。控制器分发客户端的不同请求到具体的业务逻辑模型中去,并且依据不同的请求和回转的结果决定跳转到哪个视图的显示[7]。

1.2 数据持久层框架Hibernate

Hibernate框架核心技术是ORM映射[8]。Hibernate通过使用O/R映射工具,将需要操作的数据库映射成多个可操作的对象Java类。这种不与数据库耦合的方式,使开发者能够在对象层面上充分使用SQL功能[9]。Hibernate使用的是快照形式来判断数据库里的字段是否改变的。若数据库更新后内容发生改变,Hibernate会使用SQL语句提交更新内容[10]。通过Hibernate的使用,我们可以减少因大量使用SQL语句的JDBC操作带来的麻烦。

1.3 业务逻辑层框架Spring

Spring是为了解决企业应用开发的复杂性而创建的一个开源的轻量级容器框架,具有控制翻转IOC功能[11]。控制反转是通过依赖寻找或依赖注入实现,依赖注入与依赖查找相比,依赖注入更适合目前程序开发。主要因为依赖注入查找定位的操作跟程序代码完全无关,在任何容器外部可以轻松的使用对象,不依赖容器的API,应用对象可以不需要特殊的接口独立于容器而运行[12]。依赖注入具有3种实现方法:构造子注入、设值注入、接口注入。理论上来说,构造子函数是依赖注入的主要方式,设值注入是辅助的方式。但是在现实开发中,设值注入应用较多,本次雨量水情系统开发也采用了设值注入的方式。

2 轻量级框架的整合策略

SSH框架就是Struts、Spring和Hibernate框架组合的简称。Struts实际上就是完成一个MVC的过程,是一种展示层的解决方案[13]。Struts框架不能直接整合Hibernate底层框架,Hibernate框架的持久化数据源的API不能直接连接Struts框架,必须在它们之间有个中间的连接层。Spring框架正好符合这个功能,既能向上为Struts框架提供控制器的支撑服务,向下为Hibernate框架提供DAO接口服务,又能在自身内部完成业务逻辑[14-15]。这3种框架就是以这样耦合的方式组合在一起,能够很好的为系统提供层次分明的技术功能支持。

3 中间件技术在雨量水情查询系统中的应用

3.1 系统概述

雨量水情查询系统是水利汛情发布系统的重要组成部分,通过计算机网络技术和应用技术可以提供一个雨情和水情信息综合的查询平台。该系统有利于雨量和水情信息的整合,从而有利于水利部门服务能力的提升。通过雨量查询系统,使用者可以查询相关地区的雨量、水情信息,也可以为水利部门的决策管理者做出及时、科学、有效的决策提供实时依据。

3.2 系统需求分析

根据某地水利信息化建设新要求,原雨量数据库和水情数据库是已经建成的集中式数据库,分属不同的数据库系统,数据库里包含着各地水库的库内水位、汛限水位、入出库流量和雨量等信息。雨量数据库系统采用的是MySQL,而水情数据库系统采用的SQL Server2000。根据系统需求分析,通过SSH整合能统一平台,实现异构数据库的访问及操作。系统用例图见图1。

图1 系统用例图

3.3 系统模块划分及功能描述

雨量水情查询系统要求不同的用户具有不同的权限,即不同操作人员看到的用户界面不一样,所有的用户都能使用雨量、水情单库查询功能和多库的综合查询功能。其中,具有管理员权限的人员还可以对雨量和水情数据信息进行增删改操作及用户管理设置,图2为系统模块构成图。

以综合查询模块为例来进行功能简介。综合信息查询功能用户可以根据地区、市县、站点等名称同时查询该地方的雨量和水情信息,也可根据信息关键字全库检索,并按照表格的形式将同一地方雨量水情信息显示在同一个页面上。综合信息查询流程图见图3。

3.4 主要模块的编码实现

3.4.1 登录模块实现

登录模块功能主要由LoginAction来控制。在Struts.xml中创建Login的控制器Action,它会在 Spring中使用Login接口处理登入业务逻辑,而在Sysmanager-DAOImpl实现登入的具体操作,调用SysmanagerDAO对数据库操作。在Hibernate框架中Sysmanager.hbm.xml为Sysmanager表与Sysmanagerbean类的映射文件。

3.4.2 雨量信息管理模块编码实现

雨量信息管理模块功能主要由RainAction来控制。 在Struts.xml中创建RainAction的控制器load_Action、add_Action、delete_Action,它会在 Spring 中使用Rain接口处理雨量业务逻辑,在RainDAOImpl实现登入的操作,调用RainDAO操作数据库。在Hibernate 框架中 Rain.hbm.xml为 Rain 表与 Rainaction bean类的映射文件。

3.4.3 综合查询模块的编码实现

综合查询模块功能除了上述的由RainAction、WaterAction控制外,还另外增加了ProvinceAction、CityAction、CountyAction动作。在 Struts.xml中会分别创建这 3种控制器的load_Action,它们会在Spring中调用相应的接口来处理业务逻辑,通过ProvinceDAOImpl、City-ActionDAOImpl、CountyDAOImpl来实现具体的业务逻辑。 在 Hibernate 框架中 Province.hbm.xml、CityAction.hbm.xml、County.hbm.xml分别为 Province、City 、County表与各自bean类的映射文件。

图2 系统模块构成图

图3 综合信息查询流程图

3.5 系统特点

雨量水情查询系统整体设计利用了基于J2EE的轻量级框架,该框架中间件技术开发在水利信息化中得到了很好的应用。

3.5.1 系统结构清晰

整个系统设计采用SSH(Struts2+Spring+Hibernate)开发设计,系统结构清晰,可以分为3个层次:视图表现层、业务逻辑处理层、数据持久层。视图表现层借鉴Struts框架,实现的是一个MVC的过程;Spring框架负责处理业务逻辑,通过事务流程的配置和接口方法的设计来完成业务的处理;数据持久化的工作由Hibernate框架的O/R技术来支持,负责数据的持久化。雨量水情查询系统就是在上述模块有条不紊的协作中完成工作。

3.5.2 系统易实现和复用

按照上述应用框架开发的系统各模块相对独立,功能明确,互不影响,各模块之间耦合性亦比较小,各层次调用关系明确。系统开发人员不必掌握太多的编程技巧就可以按照流程式配置来完成整个系统的结构设计,使得系统易于设计实现。雨量水情查询系统将整个大型的系统模块化,划分成多个易于实现的小模块,大大缩短了系统开发的时间。在水利信息化过程中,水利部门采用的数据库信息都已标准化,因此可以将本系统开发的框架复用到其他系统开发中,减少代码开发。

4 结语

相对比较重量级的EJB,基于轻量级框架开发的web应用具有可扩展性、可维护性好等诸多优点。Spring实现了对EJB技术的替代和更好的组件重用性,能够作为一个应用于所有层的综合框架,适合作为一些大型软件项目的底层平台。它能够提供轻量级的管理业务组件的IOC容器,很好地将表现层和数据持久层联系起来。SSH框架的组合,能够很好实现系统中间层,为系统提供相应的服务。因此,在水利信息化上利用Spring、Struts、Hibernate的轻量级框架组合的中间件技术开发具有十分广泛的应用前景。

[1]水利部信息化工作领导小组办公室.2009年度中国水利信息化发展报告[M].北京:中国水利水电出版社,2010.

[2]朱庆伟,吴宇红.一种对象/关系映射框架的分析和应用[J].计算机应用,2004(4):20-24.

[3]解建仓,张永进.面向水利信息化的中间件技术及其支持服务平台[J].中国水利,2005,25(5):35-39.

[4] 和应民,曲志超.J2EE 中间件的开发与应用[J].计算机工程,2004,5(10):27-29.

[5]朱铮雄.基于Spring框架的Web Services系统整合与研究[J].计算机应用与软件,2007,24(10):129-132.

[6]庞 欣.面向电子商务平台的Tuxedo中间件的设计与开发[D].天津:天津大学,2012.

[7] PaulM.Goodrum,MattA.MeLaren,Adam Durfee.The application of active RFID technology for tool tracking on construction job sites[J].Automation Construction,2006,2(15):292-302.

[8] Musolesi.Epidemic Messaging Middleware for Ad hoc networks [J].Personal and Ubiquitous Computing, 2005,2(1):12-13.

[9]于培亮.基于CORBA的分布式监控系统的设计与开发[D].济南:山东大学,2012.

[10]罗军刚.面向水利应用集成的水利信息门户的研究与应用[D].西安:西安理工大学,2006.

[11]李 璇,林立新.支持多种终端的多媒体展示中间件[J].计算机应用与软件,2012,24(2): 105-108.

[12] David M.Geary.Mastering the JSP Standard Tag Library [J].Prentice Hall PTR, 2002,5(8):102-106.

[13]张永进.面向防汛抗旱指挥系统的应用集成中间件平台研究[D].西安:西北大学,2007.

[14]黄烟波,张红宇.基于Struts和Hibernate的 J2EE架构[J].计算机应用,2004(10):30-35.

[15]洪志全.分布式数据服务中间件实现技术研究[J].计算机应用研究,2003,4(1):46-49.

猜你喜欢
水情中间件雨量
宁夏红柳沟流域水沙变化及产沙分析
曹新刚
基于小波去噪的称重雨量数据分析
RFID中间件技术及其应用研究
基于VanConnect中间件的设计与开发
甜水情
SL—1 型雨量传感器故障分析排除和维护
2011年辽宁省汛期水情分析
中间件在高速公路领域的应用
一种支持智能环境构建的中间件