APP下载

基于Silverlight技术和WCF服务的WebGIS应用框架研究

2014-04-29唐芝青吴斌辉黄逸帆曹吉萍

国土资源导刊 2014年10期

唐芝青 吴斌辉 黄逸帆 曹吉萍

摘 要:本文首先分析了传统WebGIS存在的不足,随后介绍了RIA技术、Silverlight技术和WCF服务,并提出基于Silverlight技术和WCF服务的WebGIS框架。在描述了框架的目标后,较为详细地分析了框架的结构。最后,本文以该框架在财政预算审批空间可视化管理系统中的应用为例,介绍了框架中关键的表示层和WCF服务层的实现过程。

关键词:silverlight;WCF;WebGIS;财政预算审批管理系统

0 引言

WebGIS(Web Geographical Information System)是Internet 技术与GIS技术的结合。它通过互联网对地理空间数据进行发布和应用,实现地理空间数据的共享和互操作,它是GIS应用的重要发展方向。但目前传统WebGIS 技术存在地图界面操作体验不佳、交互性差、数据响应速度慢、代码模块化程度低及开发维护复杂等问题。

针对以上问题,本文提出了基于Silverlight技术和WCF服务的WebGIS应用框架。通过在财政预算审批空间可视化管理系统项目中的实际应用表明,该框架在增强WebGIS的交互性、加快处理速度、优化用户体验方面有较好的效果,同时该框架能提高开发模块复用性,为模块化快速搭建WebGIS应用系统提供了一种可行的解决方案。

1 相关技术介绍

1.1 Silverlight

在介绍Silverlight之前,有必要先介绍RIA(Rich Internet Applications,富因特网应用程序)。传统的基于页面的系统已经渐渐不能满足网络浏览者的更高的、全方位的体验要求了,而RIA的出现正是为了解决这个问题[ 1 ]。RIA是新一代的网络应用程序,它集桌面应用程序的最佳用户界面功能、Web应用程序的普遍性、低成本部署,以及基于网络的实时互动优势于一体。RIA 技术的发展迅速,主要有Adobe公司的Flex、微软公司的Silverlight 和 SUN公司的JavaFx,其中前两者是目前的RIA技术主流。本文选择微软公司的Silverlight作为RIA技术进行研究介绍。

Silverlight 是微软RIA策略的主要开发平台之一,以浏览器的插件方式运行,提供Web应用程序中多媒体与高度交互性前端应用程序的解决方案,可创建丰富的、绚丽效果的交互式应用[ 2 ]。基于Silverlight 开发的RIA,具备跨浏览器、跨平台等特性,甚至可以在移动设备上使用。Silverlight 提供灵活的编程模型,用户界面可由基于XML的XAML (可扩展应用程序标记语言)来渲染。

1.2 WCF服务介绍

WCF结合分布式技术和SOA理念[ 3 ],借助.NET框架而形成的面向服务的分布式通信编程框架,可以使开发人员快速地构建跨平台、安全、高效、事务性的企业级解决方案[ 4 ]。WCF是使用托管代码建立和运行面向服务应用程序的统一框架,它具有统一性、互操作性、安全性、兼容性的特点。WCF是微软分布式应用程序开发的集大成者,整合了.NET 平台下所有的和分布式系统有关的开发技术,从而大大简化开发过程;它采用SOAP(Simple Object Access Protocol)机制進行通信,从而保证了系统间的互操作性,而且利用这种通信机制可以支持跨进程、跨子网甚至跨Internet进行通信。正是由于这些优势,使得WCF在架构面向服务分布式企业级解决方案中,发挥越来越重要的作用,开发者对于WCF在企业级解决方案中的研究和应用也越来越多。

1.3 ArcGIS API for Silverlight

ArcGIS API for Silverlight是ESRI公司开放的基于Silverlight上的 ArcGIS ServerAPI接口[ 5 ]。其构建在微软的Silverlight平台之上,能够将ArcGIS Server、微软的Bing等地图服务和功能等,融合在Silverlight应用程序中,采用REST API应用程序接口来实现ArcGIS Server服务。因此,ArcGIS Server API for Silverlight,可以创造丰富的网络和桌面应用程序。ArcGIS API for Silverlight为用户提供的功能主要有:地图显示功能,该功能支持多种类型的地图投影、微软的Bing地图服务、ArcGIS Server的动态加载地图和缓存地图服务。在地图漫游和缩放时提供了动画显示效果,具有非常炫丽的用户界面。地图交互功能,通过 Graphics Layer等实现与地图的良好交互,这其中包括地图的输入与输出。任务工具功能,主要包含了查询、地理编码、地理处理、标识要素、查找、地理操作等常用的任务,极大丰富了GIS服务应用。

1.4 数据库技术

基于silverlight技术和WCF服务的WebGIS应用框架,使用大型关系型成熟数据库技术作为空间信息数据和属性数据的存储介质,包括空间数据库和项目属性数据库两部分,相互之间通过内部关键字进行关联。ArcGIS对空间数据的存储主要通过ArcSDE实现。ArcSDE为任意的客户端应用提供了一个能在数据库管理系统(DBMS)中存储、管理和使用空间数据的接口,并将地理特征数据(空间数据)和属性数据统一地集成在关系数据库管理系统中,从而可以较好地借助关系数据库管理系统对数据进行统一、有效的管理,保证空间数据与属性数据间的一致性和完整性。本框架采用ArcSDE为空间数据引擎连接SQL Server 2012进行空间数据的存储。

2 基于Silverlight和WCF的WebGIS框架

2.1 框架的目标

框架主要完成以下目标:

(1)实现系统架构的可扩展性和灵活性。利用基于面向服务思想的WCF服务开发WebGIS应用系统,实现功能模块间的松耦合,系统结构更加灵活,具有良好的扩展性。

(2)增强界面用户操作体验和系统交互性。利用Silverlight 富客户端比传统的WebGIS应用更能调用客户端自身的处理能力这一大优势,加上强大的Silverlight开发工具和控件(如Telerik、Blend、ESRI ArcGIS API for Silverlight)的支持,创建具有丰富体验的程序用户操作界面,同时解决传统WebGIS交互性差的弱点。

(3)实现框架功能的模块化。通过对传统经典三层架构(包括表现层、业务逻辑层和数据处理层)[ 6 ]进行扩展和细化,封装非业务公共功能模块形成通用类库,使得开发人员可以直接调用某一个类库来实现某项功能,提高企业级 WebGIS应用系统开发的效率。

2.2 框架的总体架构

本框架用Silverlight技术作为实现客户端的技术方案,WCF技术作为实现服务器端的服务基础。具体实现方法则是扩展传统的经典三层WebGIS应用框架,设计新的WebGIS框架的总体结构如图1所示。

(1)界面表示层

表示层用来完成地图数据和业务数据的展示以及人机交互的相关逻辑,接收用户的输入并将用户的意图转换为对业务层相关逻辑的调用。采用Silverlight Blend技术并调用Silverlight 控件(如Telerik)构建,地图展示和地图操作框架通过调用ArcGIS API for Silverlight接口快速实现[ 7 ]。

(2)WCF服务层

WCF服务层位于表示层和业务逻辑层之间,通过服务代理封装和扩展Silverlight客户端所调用的WCF服务,实现客户端服务调用的统一控制。服务端通过调用封装的业务逻辑层对象(以WCF服务的方式封装)响应界面表示层的数据请求和操作。WCF服务层的存在,降低了系统的耦合度,提高了系统的扩展性,并通过WCF服务代理的方式提高了系统开发的灵活性。

(3)业务逻辑层

业务逻辑层响应WCF服务层的业务逻辑请求,并完成与数据访问层的交互。它完全由WCF服务实现,以数据操作契约的形式向WCF服务层公开其数据操作。在服务底层开放与数据库交互基本操作的接口,并封装了基础数据实体的常用操作。

(4)数据访问层

负责空间数据和属性数据的存取,维护各种数据间的关系,通过用户的调用完成对数据的持久化工作,并且保障整个系统数据源的安全性。另外,本框架还包括数据实体类与通用类库:二者均面向全局,前者主要定义了基础数据实体模型,便于规范业务数据实体对象;后者主要是封装程序开发经常用到的方法和操作,例如数据转换、字符串处理等。

3 应用案例

本文将基于Silverlight技术和WCF服务的WebGIS框架应用于实际开发项目——财政预审审批空间可视化管理系统开发,取得了较好的效果。该系统前台使用Silverlight技术调用ArcGIS API for Silverlight等控件进行地图界面绘制,空间数据通过ArcSde空间数据引擎存储到商业数据库SQL Server 2012中,WCF服务层封装数据库操作函数,后台运维部分采用.NET环境下的C#语言开发。

3.1 WCF服务层的实现

新建WCF服务中GIS数据操作接口类文件IGISServices.cs,在其命名空間内,定义GIS数据库操作的函数,如下:

namespace WCFServices

{

[ServiceContract]

public interface IGISServices

{

[OperationContract]

ReturnInfoClass InsertFeaturesetIntoSDE(string FeaturesetJson, bool IsUpdate = false);

[OperationContract]

ReturnInfoClass DeleteFeatureFromSDE(string XMBH, bool IsUpdate = false);

[OperationContract]

ReturnInfoClass UpdateFeatureAttributes(string XMBH, Dictionary dicAttributes, bool IsUpdate = false);

}

}

之后,新建IGISServices.cs类的具体实现类文件GISServices.svc,在其中具体编写具体事件以完成IGISServices.cs中对应函数的功能。在此以在SDE数据库中插入图层数据的函数InsertFeaturesetIntoSDE()为例介绍其具体实现过程事件:

public ReturnInfoClass InsertFeaturesetIntoSDE(string FeaturesetJson, bool IsUpdate = false)

{

//设置欲更新的图层名

string strFeatureClassName = “sde.DBO.CZYSSP_Polygon”;

returnInfo.AddStepMsg(string.Format(“要素集名称{0}已确定”, strFeatureClassName));

//连接至工作空间获取要更新的图层

IWorkspace sdeWordspace = SDEConnectClass.OpenSdeConnect(connectionString=”SERVER=localhost;INSTANCE=5151;DATABASE=sde;USER=sde;PASSWORD=085222;VERSION=sde.DEFAULT”);

returnInfo.AddStepMsg(“打开工作空间”);

IFeatureClass featureClass = SDEConnectClass.findFeatureClassByName(sdeWordspace, strFeatureClassName);

returnInfo.AddStepMsg(“打开要素集”);

IFeature feature = featureClass.CreateFeature();

returnInfo.AddStepMsg(“创建空白要素成功”);

try

{

feature.Shape = j2fClass.features[0].geometry.polygon;

returnInfo.AddStepMsg(“添加图形”);

//属性处理

for (int i = 0; i < feature.Fields.FieldCount; i++)

{

//添加圖层的属性和字段值

}

//图层保存

feature.Store();

returnInfo.AddStepMsg(“要素保存完毕”);

returnInfo.ExecuteOK = true;

}

catch (Exception ex)

//如果没有保存成功 则删除掉创建的空白Feature

}

return returnInfo;

}

3.2 界面层的实现

本系统以XAML语言作为界面元素和.NET Framework for Silverlight 的衔接形式描述界面,借助ArcGIS API for Silverlight提供的控件和方法,展现和操作地图。下面以举一个很简单的例子说明:

//引用文件

……

//定义各种GIS操作(点、线、面等)在图层界面的样式

//插入ESRI提供的地图控件

Ext

ent=”12324619.9921,3013545.2841,12521039.992,3086331.8652”

MouseMove=”MyMap_MouseMove”

Progress=”Map_Progress”>

上述过程即搭建了一个简单了页面,在该页面中加入了一个地图控件,控件展示了本机发布的一张底图。财政预算审批空间可视化管理系统的截图如图2:

4 结束语

针对传统WebGIS地图界面操作体验不佳、用户交互性差、数据响应速度和架构模块化程度低的缺陷,本文提出了基于Silverlight技术和WCF服务的WebGIS应用框架。通过在财政预算审批空间可视化管理系统项目中的实际应用表明,该框架在一定程度上增强了WebGIS的用户体验和系统交互性,提高了WebGIS的开发模块复用性,为不同商业GIS业务系统的快速搭建提供了一个基本框架。

参考文献

[1] 吴涛, 戚铭尧, 黎勇, 等. WebGIS 开发中的RIA 技术应用研究[J]. 测绘通报, 2006, (6 ): 34- 37.

[2] Burkhardt F,Andreas M,Peter N.Integration of Environmental Management Information Systems and ERP Systems Using Integration Platforms[J].Environmental Science and Engineering:Information Technologies in Environmental Engineering,2009, 2:53-63.

[3]杨昌锋,王冠,司建辉. 基于 SOA 构建新一代的企业应用集成[J].计算机应用与软件,2005.20(3):63-65

[4] Juaval Lowy著,张逸,徐宁译. WCF 编程[M]. 机械工业出版社,2009:12-64,97-104

[5]汤国安,杨昕.ArcGIS地理信息系统空间分析实验教程(第二版)[M].北京科学出版社,2012

[6] 孙莉,李树刚,陶莹,等.基于B/S 模式的质量信息管理系统设计与实现[J].上海交通大学学报,2010,44(S1):175-177.

[7] 吴磊,李玮.Silverlight寻光之旅:企业级RIA项目全流程实践[M].北京电子工业出版社,2012.