APP下载

基于 RESTful 架构的台风路径发布系统研究

2014-02-10洪敏慎龚岳松吕文斌

水利信息化 2014年2期
关键词:数据服务台风客户端

洪敏慎,龚岳松,吕文斌

(1. 上海市水务局水环境研究工作室,上海 200012;2. 上海市防汛信息中心,上海 200050)

基于 RESTful 架构的台风路径发布系统研究

洪敏慎1,2,龚岳松2,吕文斌2

(1. 上海市水务局水环境研究工作室,上海 200012;2. 上海市防汛信息中心,上海 200050)

在上海市防汛部门现有的多个信息系统的基础上,基于 RESTful 架构,运用 JSON,WCF,ArcGIS Server 10.1 等技术构建台风路径发布系统,为防汛指挥决策、气象水情分析及社会公共服务提供多层次和全方位的信息服务,并整合相关信息资源并有效降低建设运维成本。目前该研究成果已在上海防汛信息系统中得到使用和推广。

台风;RESTful ;WCF;ArcGIS10.1

0 引言

上海市水务局现有各单位的信息系统由于建设时间、设计理念和施工单位不同,技术路线、系统架构、数据库结构等各不相同:存在 C/S 与 B/S 多种系统架构,Java,.Net 与其他工业组态软件多种技术路线,SQL Server,Oracle,SyBase,DB2,Foxpro 多类数据库等,数据多源异构、技术路线差异极大[1],许多通用功能尤其是获取台风数据和 GIS平台部分都各自开发,造成无法重用,甚至是资源争用,使得后续维护更新的工作量加大,更容易产生数据发布不统一的问题。

在上海市防汛部门积累的大量数据基础上,主要对台风路径发布、数据分析及基础底图等进行整合研究,采用基于 RESTful 架构的面向服务的方式实现功能模块的重用,以达到数据发布的统一及系统运维的简化,为防汛指挥决策、气象水情分析及社会公共服务提供多层次及全方位的信息服务和决策支持,并整合资源降低建设运维成本。

1 RESTful 架构

REST 是 Representational State Transfer 的简称,是 Roy Fielding 博士于 2000 年提出来的一种软件架构风格。REST 从资源的角度观察整个网络,分布在各处的资源由 URI(Uniform Resource Identifier)确定,而客户端的应用通过 URI 获取资源的表征,获得这些表征致使这些应用程序转变了状态。随着不断获取资源的表征,客户端应用不断地在转变着状态,所谓表征状态转移(Representational State Transfer)。设计良好的网络应用表现为一系列的网页,这些网页可以看作虚拟的状态机,用户选择这些链接导致下一网页传输到用户端展现给使用的人,而这正代表了状态的转变[2]。

RESTful Web 服务是一个使用 HTTP 并遵循REST 原则的 Web 服务,对比目前主流的 Web 服务实现方案,RESTful 的 Web 服务比复杂的 SOAP 和XML-RPC 简洁。具体实现应该遵循 4 个基本设计原则:显式地使用 HTTP 方法;无状态;公开目录结构式的 URI;传输 XML,JavaScript Object Notation(JSON),或同时传输这两者。

JSON 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,但是也使用了类似于 C 语言家族的习惯,包括C, C++,C#, Java,JavaScript,Perl,Python 等, 这些特性使 JSON 成为理想的数据交换语言。JSON 建构于 2 种结构:1)“名称/值”对的集合,在不同的语言中,它被理解为对象、纪录、结构、字典、哈希表、有键列表或者关联数组;2)值的有序列表,在大部分语言中,它被理解为数组。这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能[3]。相对于传统的 XML 数据格式,JSON 由于省略了冗余标签,使得编码更为简单清晰,极大地缩减了数据量。并且 JSON 数据格式作为 JavaScript 程序语言规范的一个子集,能为客户端浏览器直接解析,极大地简化了开发步骤,提高了系统运行效率。通过对比可以发现,总体来说JSON 能够对 XML 数据进行进一步的压缩,压缩率由 XML 数据的内容而定,有一定的浮动。考虑到对于 XML 编码的数据在客户端需要进行进一步的解码处理,而对于 JSON 编码的数据则可以直接被客户端识别为 JavaScript 对象,因此 JSON 在提高服务方面有较高的利用价值[4]。

2 基于 WCF 技术的 RESTful 架构数据服务构建

2.1 WCF 技术

WCF 技术是由微软发展的一组数据通信的应用程序开发接口,是 .Net 框架的一部分,由 .Net Framework 3.0 开始引入,为适应面向服务架构而设计的一套统一的程序开发模型。借助 WCF,可以将数据作为异步消息从一个服务终结点发送至另一个服务终结点。服务终结点可以是由 IIS 承载的持续可用的服务的一部分,也可以是应用程序中承载的服务[5]。 终结点可以是从服务终结点请求数据的服务客户端。简单消息可以是作为 XML 发送的单个字符或单词,复杂消息可以是二进制数据流。WCF 的体系结构如图 1 所示。WCF 的功能包括:1)面向服务的体系结构,使得在任何平台上创建的任何客户端均可连接到所有服务;2)WCF 实现了Web 服务互操作性的现代行业标准;3)多种消息模式如单工、双工模式交换信息;4)发布服务元数据,可用于自动生成并配置客户端,以便访问 WCF 服务;5)数据协定的代码友好方法;6)可对消息进行加密以保护隐私,而且可以要求用户对其自身进行身份验证,然后才允许接收消息;7)支持多种传输和编码方式如超文本传输协议 (HTTP) 发送文本编码的SOAP 消息;8)支持 REST 及 AJAX。

图1 WCF 体系结构图

2.2 WCF 技术与 RESTful 架构

WCF 技术很好地支持了 RESTful 架构服务的开发,首先通过数据契约(DataContract)标记创建一个类来定义服务返回的对象结构。然后通过服务契约(ServiceContract)标记创建一个表示服务契约的接口,其中通过 WebGetAttribute 属性定义获取数据的 GET 方法,UriTemplate 定义调用 RESTful 服务的调用方式 URI,并且可以通过占位符实现路径中的动态部分与参数之间的映射,通过 WebMessageFormat 属性(Xml/Json)定义消息传递的格式。最后通过在 svc 的标记中加上 Factory = "System. ServiceModel. Activation. WebServiceHostFactory" 属性将该 RESTful 发布到寄宿程序中。

2.3 数据服务

基于 WCF 技术开发并对外发布基于 RESTful架构的台风路径,以及全市气象、水情、雨情、工情、灾情等实时数据服务。

数据服务采用简单、直观、可预测且易于理解的 URI 命名,例如 http://域名或 IP/dataservice/ jsonservice.svc/gettaifenglujing/{taifengname},开发人员无需解释或者参考资料,一看便能了解此服务是用于获得台风路径资源的。

数据服务提供了 JSON 数据格式,使得服务可由运行在不同平台和设备上的采用不同语言编写的各种各样的客户端所使用,最小化与使用服务的应用程序之间的数据耦合。台风路径服务提供的台风路径数据如表1 所示。

表1 台风路径数据服务属性表

除了台风、水位等基础信息的数据服务之外,数据服务还提供台风相似路径计算、雨量时段统计及最大小时雨量计算等服务。台风相似路径计算服务应用 Hausdorff 距离匹配法计算出路径相似的台风,并提供 Hausdorff 距离(DMHD)和路径相似度(SAB)2 个量化指标。以 2012 年 11 号台风“海葵”为例,系统自动查找出与其路径相似的台风,192208,194906,195411,0008 杰拉华,193309,195612,0216 森拉克,相似度依次为 89.8%,89.3%,88.2%,87%,85.9%,85.7%,85.7%。

基于 WCF 技术 RESTful 架构的数据服务在不改变原有数据结构的基础上,优化了对多源异构数据的跨库表访问方式,简化了数据共享与交换的难度,提高了数据库的安全程度,实现了对原有系统的零改造;同时考虑了跨部门、行业数据共享的访问权限控制,用户须经过系统身份验证、具有访问权限才可获得相应的数据资源。

3 基于 ArcGIS Server 10.1 平台的 Restful架构地图服务构建

3.1 ArcGIS Server 10.1 平台及部署

本系统采用 ArcGIS Server 10.1 平台软件提供GIS 资源服务。ArcGIS Server 10.1 是基于 SOA 架构的 GIS 服务器,通过它可以以服务形式共享二三维地图、地址定位器、空间数据库和地理处理工具等 GIS 资源,并允许多种客户端(如 Web 端、移动端、桌面端等)使用这些资源创建 GIS 应用[6]。

ArcGIS Server 10.1 架构模型的逻辑关系简单概括为以站点(Site)为架构单位,集群(Cluster)为GIS 服务的逻辑单位,GIS 服务器(Server)为实际处理单位。

ArcGIS Server 站点的用途是接收对服务的请求、执行请求,然后将结果发回到需要这些服务的客户端应用程序。以下组件构成了 ArcGIS Server站点:

1)GIS 服务器。GIS 服务器用于执行对 Web 服务的请求,可绘制地图、运行工具、查询数据,以及执行能够通过服务执行的任何其他操作。GIS 服务器可由 1 台或多台一起工作的计算机构成。这些计算机都具有访问相同数据和配置信息的权限,因此,整个 ArcGIS Server 10.1 平台是个具有弹性的、可伸缩的平台。GIS 服务器通过 Web 协议 HTTP 公开服务。安装 GIS 服务器后,即会获得 1 组可以在应用程序中使用的 Web 服务。GIS 服务器可按组组织成集群。按照服务器管理员的配置,每个集群都运行 1 个专门的服务子集。例如,可以创建一个集群运行所有地图服务,然后创建服务器的另一个集群运行地理处理服务。

2)Web 适配器。负责将 ArcGIS Server 站点与IIS,WebSphere,WebLogic 等 Web 服务器相集成,通过 Web 服务器地址及普通 URL 接收 GIS 服务请求,并将这些请求发送到站点上的各个 GIS 服务器计算机。

本系统在 VMWare 虚拟化平台上分 3 个部分安装部署 ArcGIS Server 10.1 平台。底层为数据服务器,包含 1 台部署了 MSSQLServer和ArcSDE 的地理数据库服务器及 1 台通过网络共享文件夹提供雷达及卫星云图数据的服务器,对核心层统一提供地理数据。核心层为在 6 台服务器中安装 ArcGIS Server 作为 GIS 服务器,并将这 6 台 GIS 服务器组织成 1 个 ArcGIS Server 站点统一管理,并根据业务需求创建 2 个计算集群(Cluster)分别处理已有缓存的瓦片和动态地图服务;同时将 SDE 地理数据库服务器及雷达、卫星云图共享文件夹成功注册。顶层为在对外提供服务的 3 台 Web 服务器的 IIS 中安装部署 Web 适配器并注册 ArcGIS Server 站点,对外统一提供基于 RESTful 架构的地理服务。

在本系统中,还结合使用 F5 应用负载均衡器对公开服务进行负载均衡设置。配置步骤如下:首先创建 GIS 应用池并设置虚拟 IP,然后设置该 GIS 应用池映射的 GIS 服务器 IP 地址,最后在映射的 GIS服务器中部署 F5 监测程序,同时应用 TCP 连接复用、内容缓存、TCP 缓冲、HTTP 压缩、SSL 加速等设置;创建 Web 服务应用池,设置虚拟 IP。后台由多台虚拟 Web 服务器构成,同时应用了 TCP 连接复用、内容缓存、TCP 缓冲、HTTP 压缩、SSL 加速等设置。ArcGIS 10.1 平台软件部署图如图 2 所示。

图2 Arcgis 10.1 平台软件部署图

3.2 地图服务的发布

ArcGIS Server 从 9.3 版本就开始原生地支持RESTful 架构,通过 ArcGIS 的 REST 服务目录可以看到当前所有的服务及这些服务支持的操作。

结合本系统的业务需求及空间数据的类型,创建和发布的地图服务主要包括瓦片和动态地图服务2 类。对于数据量巨大、更新不频繁,以系统背景底图为主要应用,不涉及属性查询的基础地图数据,预先制作瓦片缓存,并在相应的 ArcGIS Server 集群中创建静态的缓存服务。创建地图缓存时,配置不同的参数将影响地图服务的显示效果,这些参数包括起始点坐标、比例尺分级、切片格式(png,png24,jpg 等)、压缩比、图片高、图片宽、DPI、缓存类型、区域范围、比例尺和更新方式等。结合本系统的需要,为了使创建后的地图服务能够与其它信息系统实现数据熔享,本系统中提供了上海地方、Web Mercator 等坐标系统的地图服务。基础地形图瓦片,参数设置为格式 png8,图片大小为 256 px× 256 px,96 DPI,采用紧缩方式;影像图则采用 Jpg格式,压缩质量为 85%。对于数据更新频繁,有查询统计、地图定位需求的工程设施和监测监控数据等制作为动态地图服务。地图服务一览表如表2 所示。

4 应用系统构建

在基于 RESTful 的数据和地图服务的支持下,利用 ArcGIS 提供的各种客户端 API 及各种客户端的编程接口开发了适用于各个平台的台风路径图系统。

4.1 网页版台风路径图系统

采用 HTML+CSS+javascript 的传统网页技术开发台风路径图系统,用户只需要浏览器,即可访问系统,无需另外安装诸如 flash 等插件,使系统能获得最大的兼容性。GIS 接口使用了最新的 ArcGIS API for JavaScript,通过 ArcGISTiledMapServiceLayer 对象调用 ArcGIS Server 10.1 发布的瓦片地形图、地图及卫星遥感图;通过 Graphic 对象动态绘制台风实况路径和 7 家机构的预报路径,并按照 6 个等级(热带低压、热带风暴、强热带风暴、台风、强台风、超强台风),通过不同颜色和大小的符号直观表达台风发生、发展和消亡的变化过程。鼠标悬停在各节点可以查看台风位置、中心气压、最大风速、移动速度、移动方向、风圈半径等信息。同时由于该套API 构建在 Dojo 框架的基础之上,因此该网页版台风路径图系统也使用了 Dojo 框架及 Dijit 小部件库。通过 Dojo 中的 request.get 方法实现异步获取 WCF发布的各种数据服务,使用 dGrid 表格控件展示台风表格及雨量、水位等信息。此外为了丰富系统的显示效果,还运用 ArcGIS JavaScript Viewer 框架,开发了地图切换、卫星云图等小部件。网页版台风路径图系统如图 3 所示。

表2 地图服务一览表

4.2 安卓版台风路径图系统

基于当前较为流行的安卓系统,采用 ArcGIS API for Android 技术开发了安卓版本的台风路径图系统,将台风的运行轨迹描绘在电子地图上;对台风的未来运行轨迹进行显示;台风运行的每个点通过触摸设备屏幕可以调出该位置的时间、气压、风力、风速和风圈半径等信息。安卓版台风路径图系统如图 4 所示。

5 结语

研制的基于 RESTful 架构的台风路径发布系统,综合应用 JSON,WCF,ArcGIS 等技术,实现了一种灵活可复用的信息系统架构,有效支撑了防汛保安工作。目前研究成果已在上海水务信息化中得到推广应用,在快速构建水资源管理系统中发挥作用。2012 年“海葵”和 2013年“菲特”期间,研究成果分别经受了 17 万次和 5万次的访问量,较好地证明了技术路线的可行性,强化了社会公共服务功能,而且降低了信息化建设和运维成本。研究成果中使用的架构风格、技术路线具有较强的可操作性,对推进资源整合、信息共享、集约化建设信息系统具有一定的借鉴意义。

图3 网页版台风路径图系统

图4 安卓版台风路径图系统

[1]龚岳松,李静芳,吕文斌,等. 上海水务数据中心建设规范的设计与研究[J]. 水利信息化,2012 (6): 54-60.

[2]Roy Thomas Fielding, Architectural Styles and the Design of Network-based Software Architectures[D]. UNIVERSITY OF CALIFORNIA, IRVINE, 2000: 41-57.

[3]Introducing JSON[EB/OL]. [2013-12-05]. http://www.json.org.

[4]陈玮,贾宗璞. 利用 JSON 降低 XML 数据冗余的研究[J].计算机应用与软件,2012 (9): 188-190.

[5]什么是 Windows Communication Foundation[EB/OL]. [2013-12-05]. http://msdn.microsoft.com/zh-cn/library/ ms731082 (v = vs.110). aspx.

[6]Derek Law. ArcGIS for Server 101[J]. ArcUser (Spring), 2013:42.

Study on Typhoon Path Publishing System Based on RESTful Architecture

HONG Minshen1,2,GONG Yuesong2, LV Wenbin2

(1.Water Environment Research workroom,Shanghai Water Bureau, Shanghai 200012, China; 2. Shanghai Flood Risk Information Center, Shanghai 200050, China)

Based on a number of existing information system of flood prevention department in Shanghai, this paper uses JSON, WCF, ArcGIS Server 10.1 and other technology to build a typhoon path publishing system based on RESTful architecture. It provides multi-level, comprehensive information services for the flood prevention control decision, meteorological and hydrologic analysis, and social and public services. It integrates relevant information resources and reduces building operation and maintenance costs. At present, the results of this study have been used and promoted in Shanghai Flood Prevention Information System.

Typhoon; RESTful; WCF; ArcGIS10.1g

TP274;P457.8

A

1674-9405(2014)02-0039-06

2013-12-10

水利部公益性行业科研专项经费项目(201001069);水利部公益性行业科研专项经费项目(201201068)

洪敏慎(1983-),男,浙江宁波人,助理工程师,主要研究方向为 WebGIS 及水务信息化。

猜你喜欢

数据服务台风客户端
地理空间大数据服务自然资源调查监测的方向分析
台风过韩
台风来了
台风爱捣乱
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
基于Vanconnect的智能家居瘦客户端的设计与实现
台风来时怎样应对
如何运用税收大数据服务供给侧结构性改革
基于频繁子图挖掘的数据服务Mashup推荐