-- 作者:gengwei80
-- 发布时间:3/6/2006 8:56:00 AM
-- 基于.NET的WebGIS服务开发
蔡勇,邓跃进,余旭 (武汉大学测绘遥感信息工程国家重点实验室,湖北武汉 430079) 摘 要:在.Net Web Service体系结构的基础上,介绍如何应用该技术的跨平台互操作性开发地理信息系统,最后简述一个GIS空间数据转换的Web服务的实现。 关键词 Web Service;WebGIS;Microsoft.Net;ASP 中图分类号:P208 文献标识码:A 0 引言 地理信息系统是集计算机图形学、数据库和空间拓扑信息于一体的、存储和处理空间信息的高新技术。它把地理位置和相关属性有机地结合起来,并根据实际需要,准确真实、图文并茂地展示给用户。人们可以借助其独有的空间分析功能和可视化表达,进行各种辅助决策。GIS的这些特点已使其成为现代社会必不可少的基础软件,渗透到生产、生活的各个领域。 基于Web的地理信息系统结合了Web技术、GIS技术和数据库技术,以新的工作模式和数据共享机制,广泛应用于各种涉及地理信息的领域,为全球范围用户提供数据、通讯和其他信息服务。 Microsoft.Net作为新一代互联网工作平台,对WebGIS的发展产生了重要影响。.Net通过Web Service技术把分布在互联网上的各种服务集成到客户开发的应用程序中。本文主要介绍Microsoft.Net Web Service技术在WebGIS中的应用。 1 .Net Web Service概述 Microsoft.Net是一项具有革命性的技术框架,正如Microsoft所说:“.Net是一个革命性的新平台,它建立在开放的Internet协议和标准之上,采用许多新的工具和服务用于计算和通讯。”简单地说,.Net就是一个开发和运行软件的新环境,只不过这个环境提供了许多基于Web的服务,更加易于使用,它使得多种语言之间以及网络机群之间的基于组件的交互访问更加方便。 .Net彻底把计算机模式从单机、客户机/服务器和Web网站的方式转向分布式计算。CORBA和COM是当前比较流行的部件对象计算模型,但是都存在“局部计算”的局限性。也就是说,这些模型都仅仅是本地计算或本网计算模式,而不能把整个Internet当作一个计算资源体系来加以利用。.Net则通过Web Service技术把分布在Internet上的各种资源有效地通过编程手段整合在特定的应用界面中。Web Service就相当于过去编程中常常调用的API函数和在面向对象编程中常用的部件接口,只不过API一般存在于单个程序的不同模块中,部件接口存在于相同机器的不同部件中,而Web Service则分布在网络中。Web Service的体系结构如图1 所示。 从图1 中可以看出,Web Service的结构共有三种角色: (1)服务提供者:发布自己的服务,并且对使用自己服务的请求进行响应。 (2)服务代理:注册已经发布的服务,对其进行分类,并提供搜索服务。 (3)服务请求者:利用服务代理查找所需服务。三种角色之间使用发布、寻找、绑定进行操作。 一般认为一个功能全面的Web Service平台是XML+HTTP+SOAP+WSDL+UDDI,描述如下: 1)SOAP SOAP是一个协议规范,即简单对象访问协议(Simple Object Access Protocal),定义了传递XML-encoded数据时的统一方式。SOAP的中心任务是如何把一个SOAP消息从发送者(客户)发送到最终目的地(Web 服务),在发送者和目的地之间可能有一些中介节点。 在实际应用中,SOAP主要用来进行远程方法调用。这个时候,发送者会把方法的参数值从本地二进制格式转换到XML文档中,然后把这个文档发送给远程服务器。而在远程服务器端,会有对应的SOAP*9+, 处理器解析345 文档,取出方法的参数 信息,恢复成它的二进制状态,然后调用本地方法。 SOAP消息一般包括3个主要元素:(1)SOAP<Envelope>。它是整个SOAP消息的根元素,也是每个SOAP消息中都必须有的元素,其他2 个元素都在该元素内部,一般用来指明命名空间和数据的编码规则。(2)SOAP<Header>。<Header>元素是SOAP消息中的可选元素,也就是说不是每个SOAP消息中都必须有<Header>元素。但如果有的话,必须是<Envelope>里的第一个 元素。(3)SOAP<Body>。这是每个SOAP消息中都必须有的元素,而一个<Body>元素可以由很多的体条目元素构成,每个体条目元素都被编码成<Body>元素中的独立子元素。 2)WSDL WSDL(Web Service Description Language)是一种描述Web服务的规范。它使用XML语法定义用于描述Web服务各个方面的元素,这些方面包括Web服务所在的位置、它支持的传输协议、包含的接口、接口中的方法以及方法的参数类型等等。到目前为止,WSDL的最新版本是1.1,是由IBM研究院和微软公司共同制定的。 3)UDDI UDDI(Universal DXescription, Discovery and Intergration)通用描述、发现和集成服务实质上是一个公共注册表,旨在以一种结构化的方式保存有关各公司及其服务的信息。通过UDDI,人们可以发布和发现有关某个公司及其Web Service的信息。 UDDI包含有关服务的技术接口的信息。通过一套基于SOAP的XML API调用,用户可以在设计和运行时与UDDI进行交互以发现技术数据,从而调用和使用这些服务。 2. 基于.Net Web Service的WebGIS体系结构 Web Service是一个能够使用XML消息通过网络来访问的接口,这个接口描述了一组可访问的操作(如获取空间数据、地图放大等)。服务的行为,也就是Web Service的接口可使用WSDL进行描述。完成一个Web服务后,根据UDDI注册该Web服务。UDDI是基于标准的服务描述和发现的规范, 用来描述Web Service和发现Web Service。它通过Service Registry发布其提供的可用Service。 需要这个Web Service的客户程序可以通过Service Registry发现需要的Service,绑定服务提供者提供的服务并实施调用。根据这一方法,在一个网络应用程序上集成GIS功能将变得简单。只要添加一个从UDDI中找到的可用服务,然后绑定这个服务就可以调用这个服务提供的方法和数据,这一过程可以用图2简单描述。 3 WebGIS空间数据转换服务的实现 本文实现了一个数据转换的Web服务,Web Service提供了由Arc/Info的E00数据格式到CAD的DXF数据的转换服务。 在创建ASP.Net Web Service后,首先要确定创建哪些Web服务访问方法。这里创建了UploadFiles、E00toDXF两个方法。 要实现文件格式的转换,首先要将待转换的E00文件上传到服务端。UploadFiles接口负责将客户端需要转换的文件上传到服务端。 首先给网页添加窗体,窗体包含一个type="file"的HTML输入框,用来输入要上传的文件。 <%@Page language="C#"%> <html> <head> <title>Upload Files</title> </head> <body> <%string strName=Request["TextName"];%> <h1>Upload your E00 Files</h1> <p>Please use this page to upload your file.</p> <form method="post" action="Upload.aspx" name=frmUpload ID=frmUpload enctype="multipart/form-data"> <input type="file" id="myFIle" Name="myFile"><br><br> <input type="submit" id="btnSubmit" value="Post file!"> <br><hr> 在设计好网页的窗口之后,就要向ASP.Net添加代码。先检查该文件是否已经上传,如果已经上传,适当处理该文件。 if(Request.Files.count>0) System.Web.HttpPostedFile objFile = Request.FIles[0]; 接下来将文件存储到指定的目录中去: System.IO.Directory objDir = new System.IO.Directory("C:\\upload\\"+strName); int i; for (i=1; objDir.Exists; i++) objDir = new System.IO.Directory("C:\\upload\\"+strName+i); objDir.Parent.CreateSubdirectory(objDir.Name); objFile.SaveAs(objDir.FullName+"\\FileName.E00"); 在实现了文件的上传之后,接下来就是要实现文件的格式转换,E00toDXF接口完成数据格式的转换,并将转换后的文件下载到客户端,转换方法可以参考相关资料,在这里不作详细介绍,图3、图4 显示了这些服务。在注册中心注册这些服务后,就可以在Internet环境下使用它们。图5显示了服务调用的页面。 在第一个浏览框中输入要转换的E00文件,点击上传文件,在第二个浏览框中输入保存文件的路径,点击转换文件,就完成了文件的转换。 4 结束语 Web Service是一个创建可互操作的分布式应用程序的新平台,其目标是实现跨平台的可互操作性。它是完全基于XML等独立于平台、独立于软件供应商的标准。这使得它非常适合开发企业之间的系统应用。Web Service是下一代分布式系统的核心,它能够使WebGIS即时定制,并具有良好的可伸缩性。通过集成不同的Web Service,可以容易地产生一个应用。如果在系统中集成一个基于Web Service的WebGIS,只要找到并绑定这个Web Service。这将使WebGIS的应用变得更加容易,更加广泛。
|