APP下载

基于Silverlight的大风监测系统研究

2018-07-06杨明陈晴刘永生曾悠韩颂雨肖云

现代计算机 2018年16期
关键词:数据服务大风浏览器

杨明,陈晴,刘永生,曾悠,韩颂雨,肖云

(浙江省气象信息网络中心,杭州 310017)

0 引言

大风是我国沿海的重大灾害性天气之一,它给海上航运、渔业生产、近海养殖等带来了严重影响和危害,甚至对人民群众的生命带来了威胁[1]。由于我国东南沿海毗邻太平洋,海区辽阔跨越东亚季风区,而海洋气象监测相对稀少[2],沿海自北向南分布的岛屿上建了许多海洋气象站和海洋浮标站,这些气象站的大风资料的监测,对防台、抗灾等方面的作用非常重大。

这些气象站的大风资料的监测显示,大多数是在没有地理信息的单机桌面平台上使用,存在操作不便、移值难、维护难等问题,而采用传统的B/S架构的Web系统,存在响应速度慢,交互性差等缺点。这些必影响决策服务和资料时空分析的准确性。在Silverlight上实现大风资料的监测,具有分布性、共享性强、维护简单方便、业务扩展简单特点,通过Web浏览器可以随时随地对大风进行监测、查询浏览等操作,可以通过地理信息数据的支撑,直观地监测大风信息,能更好地为各级政府及气象部门组织防灾减灾,防台抗台等决策提供重要的依据,是气象部门加强为防灾抗灾服务的重要手段。

本文旨在建立一个基于Silverlight的大风监测系统,为防台抗台及各防灾减灾成员单位及相关防汛人员提供决策依据和专业服务。

1 系统总体设计

1.1 整体框架结构

为了保证大风监测系统的低耦合性、高扩展性,系统的整体框架结构采用层次化的设计,整体框架结构由数据支撑层、业务逻辑层、应用服务层和大风监测表示层组成,整体框架结构如图1所示。

数据支撑层:用于存储数据的基础数据库。其中,地理信息相关的数据存储于空间数据库,大风数据存储于大风数据库,应用服务层通过数据库引擎实现对数据的调用。

应用服务层:实现系统架构平台的主要功能,主要功能分为三类,分别是地理信息服务功能,系统集成接口,应用领域的管理信息系统服务。地理信息服务功能主要包括地图浏览服务、空间数据查询服务、图层编辑服务、与地理信息想关的数据处理算法库、空间数据维护服务等;系统集成接口根据业务领域的需求,构建不同的系统集成接口组件,主要提供对业务逻辑层的集成、数据集成等功能;应用领域的管理系统服务是将现在应用领域的功能封装为服务,并通过服务层被应用系统调用。

图1 整体框架结构

业务逻辑层:是平台对表现层的支撑,平台的所有功能都以业务逻辑的形式进行封闭和发布。实现表现层请求,根据业务逻辑设计,完成对系统功能的请求,不同的服务之间也可以实现相互调用,共同完成业务流程。业务逻辑层还包括了与地理信息相关的服务,也包括了与管理相关的服务。

表现层:是架构平台与用户的接口层,实现的主要功能包括接收用户的输入信息,并将请求发送给服务端,服务器端接收请求并进行处理后,表现层将返回的信息以文字、图片、表格等多种方式展现给用户,完成系统功能。

1.2 系统功能

为了满足大风监测的需求,对系统的整体功能进行了设计,系统功能主要包括五大类:实况展示、查询统计、观测站信息可视化、曲线图表和基础地理信息服务等5个功能。系统功能结构如图2所示。

(1)大风实况:主要通过读取大风数据库,在地理信息上显示各站点的实时大风数据库信息及等级信息。

(2)查询统计:通过不同的大风统计类别,在地理信息上显示各站点的实时大风数据库信息及等级信息。

图2 系统功能结构

(3)观测站可视化:主要通过读取大风数据库中的观测站表,在地理信息上显示各站点的站名、经纬度信息。

(4)曲线图表功能:主要通过读取大风数据库中的近24小时数据,以曲线图的方式显示各站点的近24小时大风的数据变化。

(5)地理信息操作:主要通过读取地理信息数据库中地理信息,以切片的方式显示地图。地理信息的操作功能包括了放大、缩小、漫游、地图的选择、测距、清屏、图层选择。

2 基于Silverlight的系统功能实现

Silverlight是由微软公司开发的跨平台、跨浏览器的RIA(Rich Internet Applications,富互联网应用程序)实现技术[3-4],是基于.NET的交互式Web应用程序。它具有以下几个方面特性:

(1)基于浏览器插件,支持RIA,具有跨浏览器、跨平台特性。Silverlight可以在通用的浏览器上创建和运行RIA,其方式类似于Flash动画。另外,不仅可以运行Web平台,也可以应用到Windows桌面版和移动设备上(如Windows Phone7),开发和设计不需要考虑用户所使用的浏览器或平台。

(2)客户端数据处理与缓存功能。Silverlight在客户端具有一定的计算能力,同时缓存大量的数据,减松服务端与客户端交互的压力。

(3)提供丰富的交互式的用户体验。Silverlight包含WPF技术的一个子集,不仅扩展了浏览器中用于创建UI的元素,还使Silverlight应用程序在浏览器中展示效果远超单独使用HTML提供的效果。Silverlight允许创建动画、媒体、沉浸式图形和其他丰富的客户端功能效果。可扩展应用程序标记语言(XAML)是Sil⁃verlight对UI界面设计使用的语言,XAML提供用于创建元素的声明性标记语法。

(4)Silverlight提供对JavaScript等通用脚本语言的扩展,并可以控制浏览器的UI,包括使用WPF元素;Silverlight可以集成在ASP.NET页面中,还可以与Ja⁃vaScript和ASP.NET AJAX代码无缝集成,增加页面体验效果并增强页面功能。

(5)Silverlight拥有TCP上的HTTP网络支持。应用程序可以连接SOAP、WCP、ASP.NET AJAX等服务,接收XML、RSS、JSON等格式的数据。

利用这些特性,构建了基于B/S结构的大风监测系统,即可以有效地解决桌面版大风监测系统的操作不便、移值难、维护难问题,也可以提高传统的B/S的计算能力和响应速度,提升用户体验。

整个系统的核心模块主要由数据服务实现和Sil⁃verlight层次结构实现。

2.1 大风监测数据服务实现

数据服务层主要采用Web Service实现数据服务的部署、注册和发布。它负责接收业务逻辑层的数据和计算的请求,访问数据库里的大风监测数据,转换数据格式,通过数据接口,返回给业务逻辑层。.NET平台为Web Service提供了集成开发环境,本文采用.NET平台开发,并部署在IIS应用服务器。它分为两个步骤:

(1)创建创建Web Service的Web数据服务

Web Service向外部程序提供了可调用的Web服务接口及其描述,创建Web Service的Web数据服务应用程序的关键是实现数据操作接口,使其满足数据服务的需求。利用.NET平台开发,创建asmx文件,打开asmx.cs文件创建数据操作接口。伪代码示例如下:

创建某时次所有站点的大风数据接口[WebMethod]

public List<Wind> GetWindItems(string datetime){

//根据时次,读取所有站点的大风数据库;

//数据格式化并封装;

//返回大风对象;}

创建某大风站点的大风时序数据接口[WebMethod]

public WindSeries GetWindSeries(string stationed,string date⁃time,int hours=24){

//根据时次和时序,读取某个站点的大风数据库;

//数据格式化并封装;

//返回大风对象;

}

(2)部署发布Web Service的Web数据服务

Web数据服务部署到应用服务器,通过IIS发布提供对外服务,采用URL或Silverlight引用Service程序访问发布的服务接口,获取数据。本文在应用中过程,Web Service的Web数据服务和大风监测系统Silver⁃light端部署在相同的域中,以解决由Silverlight安全性带来的跨域问题。

2.2 大风监测Silverlight层次结构实现

大风监测Silverlight端由整体结构的表示层和业务逻辑层组成。

(1)表示层主要采用XAML定义了系统的界面布局和控件,包括在地图的调用、大风实时在线显示、大风站点显示、站点时序图表等,并将这些布局和控件,显示在Web浏览器上。同时,还定义了控件与用户实时交互的事件,将用户的操作,通过事件,提交给业务逻辑层处理,最后业务逻辑层将结果反馈给表示层。

如地图的调用采用ArcGIS API for Silverlight控件开发,代码如下:

<esri:Map x:Name="windmap">

<esri:Map.Layers><!—添加图层-->

<esri:ArcGISDynamicMapServiceLayer ID="BaseMap"/>

<esri:GraphicsLayer ID="windLayer"/>

</esri:Map.Layers>

</esri:Map>

(2)业务逻辑层是系统的核心,这部分的代码主要采用C#语言实现。从功能上来看,业务逻辑层主要响应表示层的交互事件,如大风信息、地图操作和站点时序等。业务逻辑在获取到表示层的请求事件后,根据相关的参数和业务设计,通过业务逻辑封装,采用WebService异步调用方式,向数据服务层请求大风数据,站点单击大风时序示例伪代码如下:

//站点单击事件

private void StationOnClick(object sender,RoutedEventArgs routedEventArgs){

//获取站号;

//通过windSeriesData函数,请求该站大风时序数据

}

//采用WebService异步调用方式,请求大风数据

private void windSeriesData(string stationid,string datetime,int hours=24)

{

WindServiceSoapClient client=new WindService SoapCli⁃ent();

client.GetWindSeriesCompleted+=new EventHandler<Ge⁃tWindSeriesCompletedEventArgs>(client_GetWi-ndSeriesCom⁃pleted);

client.GetWindSeriesAsync(stationid,datetime,hours);client=null;

}

//获取数据结果

void client_GetWindSeriesCompleted(object sender,GetWind⁃SeriesCompletedEventArgs e)

{//在图表控件上,显示图表}

(3)Silverlight应用程序部署在服务端,在浏览器客户端,会自动下载xap包,它是Silverlight应用程序编译好的文件,表示层的界面元素和业务逻辑时实现的事件和功能,通过客户端浏览器内嵌的silverlight来执行。

3 应用实例效果

利用本文介绍的基于Silverlight技术及方案,实现了大风监测系统。目前该系统已经在业务中得到实际的应用,应用结果显示,系统能够实时获取大风数据及站点数据,并能在地图上正确展示。同时,站点时序曲线,也能正确的在图表控件上显示。整个系统运行流畅、稳定、方便直观,实现了的业务需求目标。实现了桌面版和传统Web的难以实现的一些界面操作和功能,使得系统响应更快,更加生动,操作方便和用户友好的体验效果。系统还具有良好的异构性,提供了跨平台、跨系统、高可用的大风监测服务,具有较好的效果。应用效果如图3所示。

图3 单站近24小时时序效果图

4 结语

本文设计实现了基于Silverlight的大风监测系统,在业务应用结果表明,系统不仅实现了大风实时监测可视化,还提供了高可用的大风监测数据和丰富的功能。Silverlight技术的运用使得大风监测系统响应更快、表现元素更加生动,操作和用户体验更加友好。但是随着大气监测业务不断更新和功能需求增加,该系统仍有不完善之处,待未来不断完善和提高,以满足大风监测业务应用的更高需求。

[1]孙燕,吴海英,沈树勤,等.冬春季江苏沿海大风的特征[J].南京气象学院学报,2007,30(5):699-704.

[2]卢美,朱业.浙江沿海大风的天气气候特征[J].杭州师范大学学报(自然科学版),2011,10(5):474-480.

[3]程国雄,胡世清.基于Silverlight的RIA系统架构与设计模式研究[J].计算机工程与设计,2010,31(8):1706-1709.

[4]李爱民,刘晶.Silverlight相关技术研究[J].计算机技术与发展,2009,19(6):117-120.

猜你喜欢

数据服务大风浏览器
大数据时代高校图书馆数据服务的困境及优化路径
地理空间大数据服务自然资源调查监测的方向分析
大风之夜(组诗)
基于数据中台的数据服务建设规范研究
NetApp将提供无缝混合多云体验
微软发布新Edge浏览器预览版下载换装Chrome内核
反浏览器指纹追踪
看不见的大风(外一首)
大风
人小鬼大狄仁杰