基于Web Service 的水情信息交换系统设计与实现
2014-04-30尹志杰赵兰兰
王 容 ,尹志杰 ,赵兰兰
(1. 宁夏水文水资源勘测局,宁夏 银川 750001;2. 水利部水文局,北京 100053)
水情信息指江河、水库(湖泊)、地下水和其他水体的水文及有关要素过去,现时及未来的信息,如降水量、水位、流量和土壤含水量等[1]。水情信息是防汛抗旱的耳目,主要通过基层报汛站获取,并逐级报送至地市、省、流域、中央水文部门,为各级防汛抗旱指挥部门提供决策支持。2005 年,水利部水文局基于《水情信息编码标准》和《实时雨水情数据库表结构与标识符标准》开发了 C/S 版的水情信息传输软件,实现了实时水情信息的自动编码、传输、译电及入库,提高了信息的收集传输效率。近年来,我国水情监测站点大幅增加,自动化水平明显提高,水情信息测报频次和信息总量成倍上升,原有软件难以传输基础类、预报类及统计类水情信息,不适应自动测报技术,已无法满足实际需要,迫切需要一种新的传输方式来提高水情信息传输的技术水平。
目前,全国水利信息骨干网已全面覆盖水利部、各流域和省级水文部门,地市也实现了与省级(流域)之间的互联;同时,南方部分省份在地市与省之间已采用数据交换方式传输水情信息。基于以上条件,结合水情信息编码和实时雨水情数据库的标准修订工作,水利部水文局于 2010 年初启动了数据库之间的信息交换研究工作,设计并研发了水情信息交换系统。
1 系统总体架构
1.1 体系结构
水情信息交换系统依托全国水利信息骨干网,基于水利行业标准 SL323-2011《实时雨水情数据库表结构与标识符》开发,可用于多级水情部门间传输水情信息。系统主要采用 B/S 模式,在配置、维护方面辅助以 C/S 模式进行设计开发,在确保安全、及时、准确的数据交换基础上,提供了友好的交互操作页面,增加了数据的透明度,方便网内发送和接收节点相互查询信息。系统软件开发基于微软的 .Net 技术框架,采用 Web Service 技术实现远程数据传输,利用 Ajax 技术实现良好的界面交互效果。根据系统需求,划分了数据库升级、信息发送、信息接收、统计分析、信息监控等 5 个子系统,各子系统既相互关联又可独立运行,确保某一子系统出现故障时不影响其他子系统的正常运行。数据库平台支持 Oracle 和 SQL Server 这 2 大主流数据库,软件运行需要 .Net Framework 3.5 和 IIS(互联网信息服务)的支撑。系统结构如图 1 所示。
图1 水情信息交换系统结构
图2 数据交换流程
1.2 交换流程
系统在 Web 环境下的节点都是对等的,在进行数据交换时,按照功能划分为发送和接收节点。2 个节点之间进行数据交换主要通过数据持久化模块、数据处理模块、发送模块、接收模块、Web 服务等完成[2]。流程图如图 2 所示。
数据持久化模块直接同数据库或各应用接口相互交互。面向不同的异构数据库进行处理,包括数据库的插入、更新、删除等操作;处理异构数据库中的异构数据库类型,如各种字符串的转换等;并通过事务,保证写入数据的完整性和一致性,防止写入失败后数据不一致,在出错后进行回滚。
数据处理模块实现数据封装、解析、转换等处理,以及用户的身份、权限验证;发送模块、接收模块及 Web 服务构建了发送和接收点之间的交互窗口,实现数据的发布、交互、接收和发送功能。
数据交换流程中,发送节点通过数据持久化模块完成数据提取,按照转发规则进行数据封装后,映射成 XML 文件,文件依次进行数字签名并打包成文件流,通过发送模块发送 Soap 请求,成功后将文件流发送到指定目的地。
接收节点通过接收模块对 Soap 请求进行处理,进行身份、权限验证后,提供接收服务;文件流接收后,经过解析,通过数据持久化模块进行数据的处理、存储。
发送与接收节点的系统间通信采用 Web 服务的方式,由接收节点提供 Web 服务接口,系统间的数据通信使用 Soap 协议进行交流,接收节点使用WSDL 描述 Web 服务和说明如何与 Web 服务通信[3]。
1.3 运行模式
系统主要部署在水情分中心、省(流域)及国家水情中心(水利部中央节点),完成每级节点之间的水情信息传输。目前全国水情信息传输流程主要存在 2 种模式:1)水情信息按照测站、水情分中心、省(流域)水情中心、国家水情中心逐级上传[4];2)省(流域)水情中心集中接收并向水情分中心和国家水情中心分发。
水情信息的信息源来自水文测站,具有唯一性,系统运行模式遵循水情信息的传输流程,数据交换执行单向传输流程。系统运行模式如图 3 所示。
图3 水情信息交换系统运行模式
2 系统关键技术
2.1 Web Service 技术
Web Service[5]是一种面向服务的分布式计算体系结构,具有松散耦合性、良好的封装性、协议的通用性和高度可集成性等优点,能够提供开放的、面向 Internet 的标准程序接口,在不同系统平台之间具有互操作性,实现不同应用程序之间的远程过程调用。Web Service 使用(基于 XML)标准化的 Internet 语言和标准化协议(HTTP),使得 Web Service 平台、语言和发布者能够相互独立;通过开放的 Internet 标准,如 SOAP,WSDL 及 UDDI,消除了现有应用集成方案中存在的问题,是解决数据交换共享问题的最佳解决方案。
系统采用 Web Service 技术为接收节点提供状态查询和文件接收服务,供发送节点查询接收节点的接收状态,并远程调用文件、接收服务、发送文件,及时进行数据入库处理,最终实现远程数据交换。同时,将系统对数据的操作封装成为标准接口,提高了系统的可拓展性。
2.2 应用层技术
系统在数据交换过程中要保证水情信息交换及时、数据完整,并提供直观简洁、易操作的主页面,对于系统应用层主要使用了以下相关的开发技术:1)利用 COM +、消息队列(MSMQ)、目录和安全性等服务,实现业务层与数据层数据服务的交互[6];2)采用 DML 触发器、数据压缩(ZIP)、数字签名(MD5)、远程命令调用(RPC)、身份验证等技术,保证数据传输的时效性和正确性[7];3)采用Ajax 技术,实现页面的无刷新数据查询,保障了系统的多浏览器兼容性,极大提高了系统用户体验。
2.3 数据层技术
系统基于《实时雨水情数据库表结构与标识符》进行开发,确保了全国各级水情部门的实时雨水情数据库格式完全一致,但存在 Oracle 和 SQL Server这 2 种不同类型的异构数据库系统。系统在数据处理过程中,要保证同步写入异构数据库中数据和异构数据库间交换数据的一致性,对于数据层主要采用以下 2 种技术:1)Spring 技术,实现系统多数据库事物管理,可同步进行多个数据库的操作、异常状态的监视,并完成主备数据库之间的自动切换,保证数据库间的一致性;2)IBATIS 技术[8],实现关系数据库与对象的映射,封装对数据的访问,对于异构数据库可采取完全相同的逻辑处理,通过配置文件设置相应的 SQL 语句进行数据处理。
2.4 数据交换机制
实时水情信息具有较强的时效性,数据交换必须要保证数据同步的及时性、准确性、完整性,并支持异构数据库平台。而目前常规的触发和轮询机制均存在一定的缺陷,无法满足实际需要。为此,详细分析 2 种机制的运行模式,吸取核心思想,设计并提出触发和轮询机制结合的混合机制,将 2 种机制取长补短,优势最大化,使之既能完成异构数据库之间的数据交换,又能提高数据交换效率,确保数据的完整性。
混合机制是在发送节点的数据库平台内采用触发器机制将发生变动的信息(插入、修改及删除等)写入到待交换的数据库表单中,完成发送数据的提取。然后采用轮询机制方式监控待交换的数据库表单,定时处理待交换数据,通过 Web Service 发送到接收节点,实现节点之间的数据交换。工作流程如图 4 所示。
3 系统实现
3.1 数据库升级
数据库升级子系统用于完成实时雨水情数据库的连接与升级,表结构与 2011 版实时雨水情数据库表结构一致,完善基础类、实时类、预报类表单,增加交换类和字典类表单[9],并创建基本类、实时类、预报类及统计类表单的触发器。
系统实现数据交换必须保证各节点数据库表结构的一致性,而全国各级水情部门的数据库均在2005 版实时雨水情数据库表结构的基础上创建,并根据单位业务运行增加了表单或字段。为了确保业务系统的正常运行,数据库升级仅在原有的结构上增加表单和字段,创建主键和索引,修改字段类型和长度,如遇到数据问题或数据库类型限制导致的升级失败时,系统将自动提示错误信息和处理 SQL文件,以便用户选择手动处理完成升级。
3.2 信息发送
图4 混合机制工作流程
信息发送子系统将发送节点实时入库的水情信息发往相应的接收节点,并为用户提供 2 种网络异常时的应急发送方式,保证了信息发送的时效性。按照功能分为发送配置、数据轮询、数据发送、手工上传、数据导出、信息补送等 6 个模块。
发送配置模块包括信息发往单位、交换站点及表单的设置,用户可按照报汛任务要求依次完成各个接收节点的设置,待与接收节点连接畅通后,系统将自动启动轮询模块并开始发送数据。发送节点数据库中有水情信息入库或对数据进行修改、删除等操作时,触发器将自动把发生改变的数据记录写入到待发送记录表中,此时数据轮询模块按照轮询设定时间自动监控待发送信息记录表中的数据,当轮询倒计时为 0 时,将依据转发关系为各个接收节点生成待交换数据文件。生成待交换数据文件后,如网络畅通,发送模块将自动上传待发送状态的文件;若遇到网络异常,当接收节点有 VPN 设备时,发送节点用户可通过人工上传模块利用 VPN 虚拟通道上传文件;若接收节点无 VPN 设备时,也可通过数据导出模块将待发送或发送失败的文件包导出,再利用公网发送电子邮件并通知接收节点用户查收、入库相关数据。在遇到特殊情况需要补送历史数据时,用户可通过信息补送模块选择发送的单位、测站、表单及时间段补送本地数据库中的数据。
3.3 信息接收
信息接收子系统用于接收外单位发来的文件,并依次入库,实现发送和接收节点信息的同步。按照功能分为接收配置、数据接收、数据导入、数据入库等 4 个模块。
接收节点的接收配置在完成信息来源单位设置后,系统将自动启动接收模块并开始接收文件。根据发送节点的文件上传方式,接收模块提供了自动和手工上传文件 2 个不同的 Web Service 函数接口。当接收自动上传文件时,系统会根据发送节点提交的 IP 地址,与数据库中地址进行对比,判断是否接收该文件;当接收手工上传文件时,通过上传提交的密码进行验证,并根据文件包中的 IP 地址识别发送单位。针对发送节点导出的数据文件包,接收节点可通过数据导入模块将文件导入,依据文件包中的 IP 地址查找发送单位信息。系统通过多种方式成功接收到文件后,将反馈接收成功信息,并启动数据入库模块,将文件中的数据信息存储于信息接收记录表中,然后根据表标识字段分批将信息写入到对应的表单中。信息发送、接收流程如图 5 所示。
图5 信息发送、接收流程
3.4 统计分析
统计分析子系统用于水情信息质量考核,分为发送和接收信息统计 2 个模块。
依据 GB/T 22482-2008《水文情报预报规范》,各级水情部门应定期对水情信息的准确性、及时性和完整性进行检查和考核,考核内容包括信息数量、时效性及更正数量[10]。为了配合此项工作,水情信息交换系统增加了统计分析功能。发送信息统计模块统计每日向接收节点发送的信息数据量及时效性,主要包括报送任务站数、实际报送信息站数、报送信息总量、30 min 报送信息量等统计信息;接收信息统计模块统计每日从发送节点接收的信息数据量与时效性,主要包括报汛任务站数、实际接收信息站数、接收信息总量、30 min 接收信息量等统计信息。所有的统计信息均可按照时间、数量、单位、报汛等级、信息类型等分类显示,并可进一步查看详细信息,且支持 Excel 文件导出功能。
3.5 信息监控
信息监控子系统主要为用户提供实时监控页面,自动显示各节点发送和接收信息的状态、轮询倒计时及网络连接情况等,通过系统日志显示各环节的运行情况,自动将数据交换过程中的异常情况进行告警,并提示错误信息,方便用户管理维护。按照功能分为实时监控、远程监控、告警提示等 3 个模块。
实时监控模块采用 C/S 模式运行在服务器端,用户可通过监控页面进行系统的初始设置、手工上传、数据导入/导出等操作,实时查看各节点发送和接收数据的详细及统计信息,监控网络连接及系统运行状况;远程监控模块主要为客户端服务,方便网内用户通过 Web 网页远程监控各节点的发送和接收状态、网络连接和系统运行状况,查看发送和接收的详细及统计信息;告警提示模块主要在监控页面出现待处理信息或网络异常、发送文件失败、备用数据库连接失败等错误信息时,通过声音告警的方式进行提醒,并将详细内容显示在系统日志中。水利部水文局水情信息交换系统监控页面如图 6 所示。
3.6 安全保障
系统开发依托于全国水利信息骨干网和原有的数据库应用系统,确保了存储数据和网络安全,交换安全主要考虑数据交换时水情信息的完整性、安全性、一致性,以及外部系统访问交换服务器所带来的安全隐患。
图6 水利部水文局水情信息交换系统监控页面
1)链路层安全。链路层采用全国水利信息骨干网络数据专用线路,确保了各级水情部门之间的信息安全互通。
2)网络层安全。网络层的安全防护通过防火墙技术和安全信息交流系统(隔离网闸)实现。防火墙通过限定源、目地 IP 地址,及源、目的端口达到访问控制的目的,以防止发生不可预测、潜在破坏性的侵入。安全信息交换系统保障监管系统与内部业务系统的有效隔离和安全可靠的监管信息交流。
3)交换数据安全。系统利用数字签名、身份验证等技术确保交换数据的安全,对交换数据进行了以下处理:a)数据加密,使用加密算法将明文转换为密文,并使用相应的解密算法将密文转换回明文;b)消息验证,利用消息身份代码验证数据的完整性,确保数据免受意外或者故意(恶意)的篡改;c)身份验证,利用数字证书提供身份验证,确定数据的来源。
4)交换系统安全。系统设置了严格的安全访问机制,对于制定 IP 授权的用户才可访问;另外在系统管理和维护上,具有管理员身份的用户登录后才可进行系统配置和数据处理,并在系统日志中记录用户操作过程。
5)数据库系统安全。数据库设有安全的数据库访问用户的访问权限,并提供安全的数据备份和恢复机制。
4 系统特点和优势
1)创新了数据交换机制。系统设计综合考虑Oracle 和 SQL Server 这 2 类主流数据库类型,将触发器机制和轮询机制进行了整合,分析和吸取 2 种常规机制的核心思想,提出了触发和轮询机制结合的混合机制。该机制将触发和轮询 2 种机制取长补短,即支持异构数据库,又无需在数据库表单中添加字段,适用于全国水情行业管理模式,确保了交换数据的时效性和安全性,在全国水文系统尚属首次。
2)适用于自动测报技术。近年新建水文测站均为自动测报站,监测数据可自动采集入库,但原有信息传输系统需要将数据进行编码才能发送,而交换系统采用数据库交换方式,直接从数据库提取数据并发送,实现了水情信息采集、发送、接收全程自动化,大大提高了水情信息传输效率。
3)统一了数据库结构。系统实现数据交换要保证每个节点间的数据库结构完全一致。系统设计专门增加了数据库升级环节,对系统部署连接的数据库进行升级,与 2011 版实时雨水情数据库表结构相统一,确保了各级水情部门实时雨水情数据库的一致性。
4)简化了维护环节。系统运行执行的信息单向传输流程,保证了数据源的唯一性,且数据交换环节无需人工干预,测站采集信息入分中心数据库后,将逐级进行数据交换。无论哪一环节发现数据有误,只需从源头修改即可,减少了维护环节,提高了工作效率。
5)实现了信息全面共享。系统开发与《实时雨水情数据库表结构与标识符》的修订工作同步开展,新版的实时雨水情数据库完善了基础类和预报类表单,增加了统计类表单。系统的运行实现了基础类、预报类、实时类、统计类信息的全面共享。
5 结语
水情信息交换系统于 2011 年初开发完成,经过8 个单位的试点测试和全国试运行后,于 2011 年汛期正式投入运行。目前,全国共有 39 个流域和省级节点、234 个地市级节点实现了水情信息交换,系统应用范围基本覆盖全国,信息传输种类、信息量及时效性均得到显著提高;尤其在县级非工程措施山洪灾害防治和中小河流水文监测项目的推进中,全国水文站点迅猛增加,水情信息交换系统有力推动了全国水情部门开展中小河流、山洪监测等项目所建测站信息的整合共享工作,水利部水文局接收站点及信息量成倍增加。据统计,2013 年全国各类报汛站高达 7 万余个,新增中小河流站点 1.6 万个,山洪监测站点 2.6 万个;水情信息接收总量达 2.65 亿条,约为 2010 年信息总量的 12 倍。
[1]水利部. SL 330-2011 水情信息编码 [S]. 北京:中国水利水电出版社,2011: 1-3.
[2]闵洁,刘丽娟. 基于 XML+Web Service 的异构数据交换技术应用研究[J]. 电脑知识与技术,2011, (7) 26: 6356-6357.
[3]张宗平,张咏,秦慧. 基于 Web Services 的数据交换平台的应用研究[J]. 现代计算机,2011 (7): 60-62.
[4]水利部水文局,长江水利委员会水文局. 水文情报预报技术手册[M]. 北京:中国水利水电出版社,2010: 161-191.
[5]帕派佐格罗. Web 服务:原理和技术[M]. 龚玲,张云涛,译. 北京:机械工业出版社,2009: 1-30.
[6]计岩平. 在数据交换传输中安全 Web Service 的实现技术[J]. 计算机应用与软件,2010, 27 (10) : 281-283.
[7]李菲,张新家,袁林. 基于 Web Services 的群组数据交换系统的研究与实现[J]. 计算机技术与发展,2011, 21 (12):186-190.
[8]张德强,祁亚玲. iBatis.Net(C#)系列二:SQL 数据映射[J].电脑编程技巧与维护,2013(7):5-11.
[9]水利部. SL 323-2011 实时雨水情数据库表结构与标识符[S]. 北京:中国水利水电出版社,2011: VI-3.
[10]国家质量监督检验检疫总局,国家标准化管理委员会.GB/T 22482-2008 水文情报预报规范[S]. 北京:中国标准出版社,2008: 3-4.