APP下载

基于Silverlight的B/S模式水库洪水预报系统设计与实现

2014-08-18,,,

长江科学院院报 2014年8期
关键词:应用程序洪水客户端

,,,

(武汉大学 水资源与水电工程科学国家重点实验室,武汉 430072)

1 研究背景

目前国内大多数大型水库均已建设了以洪水预报为核心的防洪调度系统,并且发挥了重要的防洪减灾作用[1]。其中绝大多数系统采用的是传统的C/S(Client/Server)结构[2]。随着水利信息化建设的进一步深入,计算机网络技术、地理信息系统技术、卫星遥感、云计算等高新技术在水利行业中已得到广泛的应用。传统的C/S模式系统存在的计算机资源占用量大、维护和升级困难、重复开发工作量大、移植性和可扩展性差、系统数据库容易成为“信息孤岛”等弊端不断显现,需要采用新的系统结构去适应决策环境的变化和满足用户提出的新要求[3-5]。以Web技术为核心的B/S(Browser/Server)结构的出现及其广泛应用为解决上述问题提供了全新的系统构造模式。这种模式简化了系统的开发、维护和使用,提高了系统的通用性,客户端只需安装一个浏览器便可访问。

Silverlight是2007年微软为了解决Web前端应用程序而提出的一种解决方案,经过短短的5年时间,Silverlight已经由最初的1.0版本发展为现如今的5.0版本。由于其跨浏览器、跨平台及丰富的交互体验等优点,越来越多的大型门户网站开始接受并使用Silverlight[6]。现在使用Silverlight技术开发洪水预报系统属于一种全新的尝试与探索。

本文基于ASP.NET平台下B/S模式,借助Silverlight富客户端技术,使用XAML语言设计UI(User Interface)界面、C#开发后台业务逻辑,选用SQL Server 2008作为数据库平台,采用面向服务架构完成了基于Silverlight的B/S模式水库洪水预报系统的开发。该系统具有友好的界面显示、灵活的数据操作和丰富的结果展示功能,可以为流域的防洪决策提供重要的技术支撑。

2 洪水预报系统分析

2.1 系统开发目标

系统开发目标是应用面向服务架构,设计和开发通用可靠、界面友好的B/S模式水库洪水预报系统。用户通过浏览器就可以查看流域内基本地理信息,完成实时水雨情信息的查询与整理,洪水预报及实时交互综合修正,预报成果查询与对比分析等功能。对于不同的水库,只需修改配置文件、更新遥测站点信息、调整或添加新的预报模型,就可以实现系统的移植和扩展,以满足各种不同的需求。系统较好地考虑了网络安全、网络传输速率、系统维护、升级和使用等问题,所有的操作只需要针对服务器进行,便于远程维护、升级和信息共享。

2.2 系统结构

B/S模式水库洪水预报系统以数据库服务器和应用服务器为核心。前端采用Silverlight技术设计系统的输入和图形显示界面对系统进行操作管理。数据库服务器通过数据模型工具LINQ to SQL Class将数据封装为实体模型,然后通过Silverlight-enabl-ed WCF Service来发布服务;应用服务器是通过组件的应用程序接口把商业逻辑暴露给客户端应用程序,并配置了多种可扩展和容错技术,然后用Web Service发布。系统的总体结构见图1。

数据库服务器负责系统运行过程中所有数据的存储,应用服务器是所有数据操作、预报模型和系统维护模块的集合。系统结构既相互独立,又相辅相成,可根据用户需要添加或扩展新的功能,系统良好的可扩展性为后续开发提供了理想的基础。系统运行时,用户指令通过网络提交给服务器端,再通过服务引用由数据库服务器或应用服务器对指令进行响应,然后根据指令调用不同的方法类执行相应的操作,最后将响应结果返回到浏览器端显示给用户。这样所有业务数据的处理、维护以及模型计算都在服务器端完成,大大地减轻了客户端的负担,显著提高工作效率并增强了人机交互性。

2.3 系统开发环境

2.3.1 ASP.NET平台

.NET是支持生成和运行下一代应用程序和XML Web services的内部Windows组件,提供了“公共语言运行规范”和基本类库来支撑面向服务的整合应用。ASP.NET是.NET的Web模式,应用程序需要使用IIS(Internet Information Server)发布,客户端只需要通过浏览器,输入服务器IIS发布的地址,即可通过网络访问服务端发布的应用程序。客户端使用HTTP协议向服务器发送请求,服务器IIS响应请求,并产生动态的HTML文档返回给客户端,浏览器编译返回的HTML文档并以用户界面形式展现在浏览器中[7]。原理如图2所示。

图2 ASP.NET原理图

2.3.2 Silverlight技术

Silverlight是微软推出的一种新的Web呈现技术,它允许在IE,FireFox,Chrome等主流浏览器上创建和运行RIA(Rich Internet Applications),并且能在Microsoft Windows和Apple Mac OS X上运行。Silverlight应用程序在安装于本地机器上的浏览器插件中运行,其方式类似于Flash动画的运行方式。Silverlight插件支持RIA平台所支持的所有重要特性,为用户提供了丰富和交互式的用户体验[8]。在.NET Framework开发平台中,与ASP.NET页面的UI界面使用HTML语言作为标记相似,Silverlight使用可扩展应用程序标记语言(XAML)实现用户UI界面,它是微软公司为构建Web应用程序用户界面而创建的一种新的描述性语言[9]。在客户端Silverlight插件中,通过XAML编译器编译出XAML并在浏览器中展示。

2.3.3 LINQ to SQL组件

LINQ(Language Integrated Query)是一组用于C#和Visual Basic语言的扩展,它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。除了提供一种简洁的查询言语,以便精确指定要搜索的对象之外,LINQ还提供了许多扩展方法,更便于排序、组合和计算查询结果的统计数据。LINQ to SQL是包含在.NET Framework中的一种O/RM组件(对象关系映射),O/RM允许使用.NET的类来对关系数据库进行建模。然后,可以使用LINQ对数据库中的数据进行查询、更新、添加、删除操作。

3 洪水预报系统设计

3.1 系统开发框架设计

客户端安装了Silverlight环境后,用户通过浏览器访问系统。客户端首先会将Silverlight编译产生的XAP包下载到客户端,再通过客户端Silverlight环境编译,在浏览器上展示界面内容。由于Silverlight应用程序的XAP包都是在客户端运行,在需要向服务端获取数据时,只能通过Web服务得到数据。根据Silverlight的这个特性,微软为Silverlight技术推荐的开发架构是MVVM(Model-View-ViewModel)开发框架[10]。MVVM模式由模型、视图和视图模型3部分组成,Model是MVVM模式的底层,封装业务逻辑和数据,实现数据的检索和管理,实现业务规则;View封装界面和界面逻辑,主要作用是实现用户界面定义,完成与UI交互;ViewModel是MVVM模式的核心层,介于Model层和View层之间,封装呈现逻辑和实现程序状态维持。基于MVVM框架的洪水预报系统开发框架如图3所示。

图3 系统开发框架

3.2 数据结构设计

洪水预报系统的数据源包括多种类型数据,如不同比例尺的地理数据、水文数据、工情数据等。数据库的设计是否合理将会极大地影响系统运行的性能。在洪水预报系统中,地理数据主要服务于水库运行管理、洪水预报以及总体决策的背景图等,其设计内容主要是对各图层数据的坐标信息和要素特征进行关联。对于水文、工情数据按照国家规范建立相应的表格存储,保证数据的规范性和水利行业内数据库的一致性,便于在网络上实现数据信息的共享,确保系统的完备性和高效性。

3.3 功能实现算法设计

3.3.1 系统安全性

默认情况下,Silverlight应用程序承载在浏览器中,并且在限制对用户计算机的访问的环境下运行。与Windows窗体不同的是,Silverlight在浏览器沙盒内运行,它不能采用与传统.NET应用程序相同的方式访问文件系统和其他系统资源,因此它所提供的安全程度提高。正因为如此,Silverlight不能直接连接到数据库,必须创建一个可提供对数据和业务逻辑访问的服务层。在Silverlight代码内实现严格的安全检查几乎没有意义,攻击者可以很容易就完全摆脱Silverlight应用程序并直接调用服务层,从而避开安全措施。所以,可以使用HTTPS/SSL加密客户端和服务器之间的任何通信以保护服务的安全。本文采用在Microsoft平台上最常用的一种身份验证方法——窗体身份验证。用户输入用户名和密码组合,此信息将提交给服务器进行验证。服务器根据用户数据库检查凭据,如果凭据正确,则返回一个Forms Authentication Cookie。然后,客户端在随后的请求中提供此Cookie。Cookie经过签名和加密,因此只有服务器才能解密,恶意用户既无法解密,也无法篡改。

3.3.2 跨域访问策略

Silverlight出于对安全性的考虑对URL的访问进行了严格的限制,只允许访问同一子域下的URL资源。如果WCF与Silverlight Web不是在同一站点,那么就要在被访问端的根域上放2个XML文件clientaccesspolicy.xml,crossdomain.xml。通常,如果基于Silverlight的应用程序检测到其请求是一个跨域请求,将首先在Web服务的应用程序根目录下查找Silverlight跨域策略文件(clientaccesspolicy.xml)。如果这个请求导致“404未找到”或其他错误,将在应用程序根目录下查找Flash跨域策略文件(crossdomain.xml),如果仍然找不到,那么会返回相应的异常。

3.3.3 洪水预报模块设计

洪水预报模块是系统中最重要的模块之一。结合洪水预报模型使用经验,分别选用降雨径流经验相关法、三水源新安江模型,利用C#语言将有关预报模型编写成标准的动态链接库(DLL),在服务端提供相应的接口,通过Web Service声明外部函数,在客户端添加服务引用调用有关的洪水预报模型。

下面是一段在服务端引入DLL的代码:

[DllImport("XAJ.dll", CallingConvention = CallingConvention.StdCall)]

private static extern void XAJ(int length, int year, int[,] mdh, float[,] ph, float[] qh, float[,] pd, int[,] sj, int length2, float[] qe, float[] pb, float[] ql, float[] qlf, int[,] itsmdh);

由于不同的水库环境存在差异,洪水预报模型及参数也不同。可以将不同的模型编译成DLL作为预报模型类中的方法,客户端简单的调用即可,当需要添加新模型时,只需要引入DLL并在类中添加相应的方法,便于系统的扩展和升级。

3.3.4 数据操作类

洪水预报系统有大量与数据库之间的操作,不管是信息查询还是预报模型计算,都需要提取相关数据,为了简化后台逻辑代码,将对数据库的操作定义为一个标准化的方法类。在全面分析系统数据结构的基础上,总结了对数据库操作的类别,包括系统启动时连接数据库、退出系统时断开连接,以及对数据进行查询、插入、修改、删除等。通过调用.NET中System.Linq和System.Data.SqlClient空间里的基本数据库操作类及其扩展方法,使用LINQ构建标准数据操作类,能够简洁灵活地完成系统对数据的各项操作。

3.3.5 图形交互操作

Silverlight技术是以XAML语言声明文字、图形、动画、控件等,并在Web浏览器上显示。借助该技术,可以获得内容丰富、视觉效果绚丽的交互式体验。洪水预报系统的遥测数据检索、图形查询、数据整理、模型预报结果的表现都有可视化和图形交互的需求。如用柱状图显示一段时间内的降雨量,对流域降雨分布有个直观的认识;用曲线图表现水位、流量随时间的变化过程,在交互预报状态下通过拖动预报结果(过程线)生成新的方案等。根据不同的要求,通过在页面中使用Silverlight丰富的图表控件,可以轻松地绘制出各种类型的实时图表,配合控件的MouseMove,MouseDown,MouseUp事件就可以快速方便地完成交互式操作的图形化。

4 洪水预报系统功能实现

洪水预报系统按功能设计主要由地图管理、数据库管理、洪水预报、系统维护4大功能模块组成。4个模块利用标准的应用程序接口将相关的数据库表有机地联系在一起,通过调用数据操作类中的方法和预报模型类进行相关计算,实现了流域地理信息显示、水雨情信息查询、实时洪水预报、预报成果管理等各项功能。

4.1 地图管理模块

该模块将整个流域的空间信息按空间实体划分图层数据进行管理,实现对流域内基本地理信息的查询。主要功能有:①用户可以根据需求选择不同的图层,多种类型数据既可以单独显示,也可以叠加显示;②利用信息导航工具,可实现地图的放大、缩小、漫游、复位、后退、前进、属性、标尺、全局预览功能。

4.2 数据库管理模块

该模块部署在服务器端,实现的功能有:①数据镜像。当系统启动后,自动搜寻遥测库中新进数据,并镜像到服务器端数据库相应库表中;②数据整理。待数据更新完毕,把遥测雨量数据整编为用于模型计算所需的时段雨量,根据水库上下游遥测水位由水量平衡公式反推入库流量并写入相应库表;③人工输入。系统可根据用户请求浏览数据、插入数据、修改数据和删除数据。其中数据镜像和数据整理在服务器端自动完成,人工输入提供给用户交互操作数据的途径。

4.3 洪水预报模块

洪水预报模块包括实时洪水预报和预报成果管理。实现的主要功能有:①通过前面的数据整理,用户在客户端设置预报起始时间和预报模型信息,并发送到服务端请求计算,服务端根据请求的预报模型类型,调用相应方法完成计算,最后将计算结果写入数据库,以供客户端查询预报结果;②通过在预报结果图形显示页面人工修改预报流量,系统可结合预报人员的长期实际工作经验进行交互预报;③每次预报模型计算的结果都写入数据库,可根据设置自动生成方案号,以供客户端查询预报的流量过程和不同方案的对比分析。

4.4 系统维护模块

由于计算机应用技术升级速度很快,为使构建的洪水预报系统能具有更好的移植性和可扩展性,建立了系统维护模块。该模块的主要功能有:①权限管理。主要包括新用户的添加,登入的判断,对不同的用户角色设置不同的管理权限,而且权限可以具体到限制用户不能对数据库中某一张表进行操作;②测站管理。水库洪水预报系统处理的测站分为雨量站、河道站和水库站3类,授权用户可以查询站点列表和添加、修改站点的属性特征;③预报模型管理。当需要添加新模型时,在预报模型类中添加相应的方法后,可以在客户端设置模型参数,通过服务引用的方式调用模型来实现系统的扩展。

5 系统在王英水库的应用

结合在湖北省王英水库的成功开发和实际应用,简要介绍系统的界面设计和使用情况。王英水库洪水预报系统开发采用B/S模式,使用Visual Studio 2010作为开发工具,用XAML开发UI界面,开发语言选用C#,使用SQL Server 2008作为数据库管理软件。在用户界面上通过树型控件、标签页、工具栏和浮动窗体实现各项功能,系统的主要功能有地理信息查询、实时水情信息查询、洪水预报、成果管理、报表查询和系统维护等。整个界面简洁直观,功能区域划分清晰,风格统一,用户易于操作。

洪水预报结果显示界面如图4所示。图4(a)为图形显示,在图形显示标签下通过在图形上移动鼠标,根据鼠标位置,系统在界面下方显示雨量、入库流量、预报流量及相应时间;在图形上通过按动鼠标左键滑动,则可计算滑动时间段内预报来水量,可为水库预报调度人员进行下步调度操作提供初步数据。图4(b)为列表显示,在预报结果标签下,系统给出了时段雨量、入库流量、预报流量及其时间的详细列表,并完整地显示了洪水的重现期、一日洪量、总洪量等特征数据以及峰现时差、预报洪峰误差、洪水过程效率系数等评定指标。

图4 预报结果图形、列表显示界面

6 结 语

(1) 水库洪水预报系统是流域防洪决策支持系统的关键组成部分,是实现防洪决策系统科学、高效、可靠的基础。本文在分析系统开发目标和系统结构的基础上,简要阐述了系统开发环境中的关键技术,提出了系统开发框架和核心功能实现方法,在ASP.NET平台上完成了水库洪水预报系统的设计与开发,实现了流域地理信息管理、水雨情信息查询、实时洪水预报、预报成果管理等功能。

(2) 基于Silverlight技术开发的系统界面较之传统的基于HTML的界面,提供了更为丰富的界面元素,实现了一些传统Web应用程序中难以实现的一些界面操作,使得系统操作更加方便,具有更好的用户友好性和交互性。另外,B/S模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的维护和使用。

(3) 系统采用B/S模式,访问客户机可以运行在不同的软硬件环境下,授权用户借助Internet即可在任何时间、任何地点实现对水库端数据库的远程访问;来自不同部门、不同地方的防汛主管部门和防汛专家均可利用同一套系统进行洪水过程预报,及时、准确地了解防汛信息,为防洪决策提供依据。

(4) 实际应用表明,基于Silverlight的B/S模式水库洪水预报系统使用简便、界面友好、响应灵敏、运行稳定,具有良好的移植性和可扩展性。可以在水库、流域及各级防汛部门推广使用,提高其管理工作效率。

参考文献:

[1] 陈 华,郭生练,林凯荣,等.基于Web的水库洪水预报调度系统设计与开发[J].武汉大学学报(工学版),2004,37(3):27-31.(CHEN Hua, GUO Sheng-lian, LIN Kai-rong,etal.Design and Development of Web-based Reservoir Flood Control System[J].Engineering Journal of Wuhan University, 2004, 37(3): 27-31.(in Chinese))

[2] 郭生练,彭 辉,王金星,等.水库洪水调度系统设计与开发[J].水文,2001,21(3):4-7.(GUO Sheng-lian, PENG Hui, WANG Jin-xing,etal.Design and Development of Reservoir Operation System[J].Journal of China Hydrology, 2001, 21(3): 4-7.(in Chinese))

[3] 周惠成,彭 勇,梁国华.基于B/S模式的水库防洪调度系统的设计与开发研究[J].计算机应用研究,2005, (6):150-152.(ZHOU Hui-cheng, PENG Yong, LIANG Guo-hua.Development of Reservoir Flood Control Decision Support System Based on B/S Structure[J].Application Research of Computers, 2005, (6): 150-152.(in Chinese))

[4] 周惠成,梁国华,王本德,等.水库洪水调度系统通用化模板设计与开发[J].水科学进展,2002,13(1):42-48.(ZHOU Hui-cheng, LIANG Guo-hua, WANG Ben-de,etal.Development of Generalization Module for the Reservoir Flood-control System[J].Advances in Water Science, 2002, 13(1): 42-48.(in Chinese))

[5] 张 俊,陈桂亚,杨 斌,等.基于GIS的汉江流域洪水预报系统设计与实现[J].长江科学院院报,2009,26(8):15-19.(ZHANG Jun,CHEN Gui-ya,YANG Bin,etal.Design and Implementation of GIS-based Flood Forecasting System for Hanjiang River Basin[J].Journal of Yangtze River Scientific Research Institute, 2009, 26(8): 15-19.(in Chinese))

[6] 孙 超,钟 珞.基于Silverlight的富界面应用研究[J].武汉理工大学学报,2008,30(12):95-97.(SUN Chao, ZHONG Luo.Research on Rich Interactive Application Based on Silverlight[J].Journal of Wuhan University of Technology, 2008, 30(12): 95-97.(in Chinese))

[7] SCHILDT H.C#完全手册[M].朱德爽,胡凤燕,胡复明,等译.北京:电子工业出版社,2008.(SCHILDT H.The Complete Reference C# [M].Translated by ZHU De-shuang, HU Feng-yan, HU Fu-ming,etal.Beijing: Publishing House of Electronics Industry, 2008.(in Chinese))

[8] PAPA J.Data-Driven Services with Silverlight 2[M].US: O’Reilly Media, Inc, 2009.

[9] 熊云龙.基于Silverlight的RIA研究及应用[D].重庆:重庆大学,2008.(XIONG Yun-long.Research and Application of RIA Based on Silverlight[D].Chongqing: Chongqing University, 2008.(in Chinese))

[10] 钟亚妹.基于ArcGIS Silverlight的广东省环境质量监测系统的设计与实现[D].广州:华南理工大学,2012.(ZHONG Ya-mei.Design and Implementation of Guangdong Provincial Environmental Quality Monitoring System Based on ArcGIS Silverlight[D].Guangzhou: South China University of Technology, 2012.(in Chinese))

猜你喜欢

应用程序洪水客户端
删除Win10中自带的应用程序
如何看待传统媒体新闻客户端的“断舍离”?
洪水时遇到电线低垂或折断该怎么办
谷歌禁止加密货币应用程序
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
又见洪水(外二首)
该做的和不该做的
筑起堤坝,拦住洪水