ArcGIS Server 中AJAX应用系列(3)
工作已经初步落实,这个文章是我原来投递给杂志社的,但估计质量比较差,被涮了,但不管如何,给大家做个参考吧!
这个系列准备分成以下几节:
基于工具栏使用ArcGIS Server Ajax 框架
基于.Net Callback 回调机制使用ArcGIS Server Ajax 框架
基于第三方Ajax框架扩展ArcGIS Server Ajax 框架
基于Ajax调用空间Web服务
基于ArcGIS Server的空间Web服务异步调用
(中南大学地学与环境工程学院 湖南长沙 410083)
摘要:针对当前空间Web服务平台ArcGIS Server存在服务响应效率低等问题,将Ajax技术引入传统空间Web服务模型,实现异步响应空间Web服务。基于ArcGIS Server平台提出了集成Ajax技术空间Web服务的框架,并通过实例研究了构建空间Web服务和异步调用的过程。结果表明,集成Ajax技术空间Web服务的框架减少了数据传输量和Web调用时间,显著提高了数据使用与功能服务调用效率,相比传统空间Web服务框架具有明显优势。
关键字:ArcGIS Server;空间Web服务;Ajax
Research on Asynchronous Calling Spatial Web Services of ArcGIS Server
Zhou Sheng, Zou Yan Hong
(School of Geosciences and Environment Engineering; Central South University; Changsha 410083; )
Abstract: To solve the delaying response of prevailing Services which exists in spatial web service platform ArcGIS Server, Ajax is introduced into the traditional Spatial Web Service model to achieve an effect of asynchronous response of the Spatial Web Service. According to ArcGIS Server, presents a feasible framework of Spatial Web Service integrated with Ajax and provides a corresponding example. The results show that the framework reduce the volume of data transmission and Web call time, significantly improve data use and efficiency of the function service calls, has obvious advantages compared to the framework of traditional spatial Web services.
Key Words: ArcGIS Server; Spatial Web Services; Ajax
0. 前言
Web服务(Web service)作为一种面向服务架构的技术,通过标准Web协议提供服务,其松散耦合结构保证了不同平台应用服务互操作的进行。空间Web服务即在空间信息服务中引入Web服务技术[1],空间Web服务保证了空间信息操作的平台无关性,又与其它应用系统资源融合,最大程度利用现有资源,其核心内容是通过Web服务与GIS功能相结合以服务的方式在网络上发布,实现异构地理空间信息的共享与互操作[2]。
传统的空间Web服务在响应效率方面存在明显缺陷:其“请求-响应”模式下用户每次请求总是要等待服务器响应且返回响应都要重新刷新整个页面。同时,少量数据的改变也会导致页面的全部刷新,既增加了网络流量及服务器的负担,又导致互操作和交互性能相对较差。本文将基于典型空间Web服务的企业级平台ArcGIS Server,在传统空间Web服务上集成Ajax技术,实现地理空间Web信息服务的异步响应,解决服务调用效率及用户体验问题,达到信息资源与地理空间信息的高效率共享与服务的目的。
1. ArcGIS Server机制原理
1.1 体系结构
ArcGIS Server基于ArcObjects以分布式对象技术标准构建,ArcObjects由各种组件、接口和方法组成,其组件涉及面从细粒度对象(单个的几何对象)到粗粒度对象(与ArcMap文档交互的地图对象)[3],因此ArcGIS Server每个组件都各自扮演着特定的角色,诸如进程管理、激活、解除活动以及平衡分配资源等。
ArcGIS Server由GIS服务器、Web服务器、Web浏览器、桌面产品四部分组成(图1)。GIS服务器本身包括两部分:Server Object Manager(SOM)和Server Object Containers(SOCs)。SOM是一个Windows/Unix服务进程,它管理着一组分布在一个或多个服务器对象容器机器上的SOC,Web应用通过局域网或广域网直接连接到SOM服务器名称或IP地址。SOC支持多个并发的服务器对象,因此提高了服务器使用性能。
ArcGIS Server的服务器对象实质是一种粗粒度的ArcObjects组件对象,通过服务器对象可以访问与之相关的细粒度的ArcObjects组件对象。ArcGIS Server中的GIS 服务器可以宿主多个服务器对象,而服务器对象本质上体现了GIS内在的资源,可通过服务器对象的客户端共享GIS 数据资源。
图1 ArcGIS Server 体系结构
1.2 内核机制原理
ArcGIS Server是服务器端的ArcObjects组件集,具备跨平台基础,通过对服务器对象的管理及ArcGIS Server的分布式体系部署机制,在Web环境下可获得ESRI桌面GIS功能。
(1) 服务器对象管理;ArcGIS Server中服务器对象是空间数据的载体,服务器对象可创建最大数目必须是有限的。为了优化系统运行时的性能,对服务器对象的生命周期进行有效的管理,可以通过设置服务器对象的池式(pooled)与非池式(none-pooled)管理来解决。非池式管理即用户第一次请求服务器对象时服务器对象创建,用户会话结束后释放服务器对象。池式服务器对象是在服务器运行时预先创建了指定数目的服务器对象,用户请求服务器对象时优先使用已创建的服务器对象,没有空闲服务器对象才创建新的服务器对象,并且当操作结束后立即将服务器对象释放回到服务器对象池中等待下一个用户会话。
(2) 分布式体系部署机制;ArcGIS Server提供了基于DCOM的负载平衡方法,进行分布部署时,经过Windows域授权的用户身份运行ArcGIS Server SOM/SOC,并以具有访问SOM/SOC权限的用户身份运行Catalog或Manager管理ArcGIS Server。Web应用服务器、GIS服务器可同时部署在同一台机器,也可部署到多台机器,GIS服务器的负载平衡由SOM完成,另外额外部署了一个SOC进程,用于负载平衡算法。
2. 基于Ajax技术的ArcGIS Server空间Web服务框架设计
1.3 基于Ajax的空间Web服务异步调用
现有大部分Web服务交互遵循的是请求/响应模式(即基于表单-Form的提交), 请求/响应模式要求用户进行一次Http请求后,等待服务器端返回一个动态生成的HTTP网页结果后,再进行下一项操作。因此现有Web服务交互在实际应用中存在着多方面的缺陷:。
目前,基于Ajax的网络地理信息服务不断出现,最为典型的如Google Maps等,在这些应用中Ajax技术优势得到了充分的体现。因此在传统空间Web服务中引入Ajax引擎,以异步方式实现空间Web服务的交互,将在一定程度上解决当前空间Web服务所存在的缺陷。在基于Ajax引擎的空间Web服务异步交互模型中(图2),客户端通过JavaScript调用Ajax引擎产生服务请求,Ajax引擎将请求异步送回Web服务器,在Web服务器结果返回之前,客户端任何操作不受影响;Web服务器通过HTTP调用Web服务,GIS服务器接到服务请求向数据库请求并处理数据,结果最后由Ajax引擎返回给客户端,以可视化方式在客户端浏览器呈现。
图2 Ajax引擎的空间Web服务异步交互模型
1.4 集成Ajax技术的ArcGIS Server空间Web服务框架
在Ajax技术引入空间Web服务基础上,本文基于ArcGIS Server平台提出集成Ajax技术的空间Web服务框架(图3),框架中将空间数据库资源视为可访问的Web服务并结合ArcGIS Server强大的后台服务功能,从而实现了数据交换和共享,并取得良好的用户体验。相对传统空间Web服务框架主要优势在于:按需取数据,最大程度减少冗余;无刷新更新,减少等待时间;应用中间层技术,减少服务器端负担等。
图3 集成Ajax技术的ArcGIS Server空间Web服务框架
2 实例应用研究
笔者在以长沙市为背景,基于ArcGIS Server平台开发的饮食管理实验系统中,集成Ajax技术进行了空间Web服务开发研究。
2.1 实例系统简介
基于ArcGIS Server平台开发的饮食管理系统是一个面向餐饮空间信息与非空间信息的服务、控制与管理的WebGIS系统,系统基于三层架构设计,如图4所示,其中应用层(虚线框内)基于.NET平台及ArcGIS Server .NET ADF提供的组件进行开发。系统数据均由Oracle分布式储存与管理,并借助于空间数据库引擎(ArcSDE)访问。系统集成Ajax技术进行了空间Web服务开发,在轻易实现互操作性的同时,也使得系统资源达到最大共享,下面以构建空间地址定位服务为例,阐述Web服务的实现和异步调用过程。
图4 长沙市饮食管理信息系统架构图
2.2 空间地址定位服务构建与异步调用实例
空间地址定位是把描述成地址的地理位置信息转换成可以用于ArcGIS Server的地理坐标形式,具体方法是指将用户交互式输入的地址信息或从数据库相关的地址描述信息,在经过语义分析、字符串拆分,调用ArcGIS Server地图编码服务,使地址信息自动获取对应空间地理坐标值,并准确定位到相应空间位置。
ArcGIS Server是服务器端ArcObjects组件集,对ArcGIS Server的编程操作都意味着对远端服务器上对象的操作,因此只有先与GIS服务器进行连接,才能使用ArcObjects组件集进行开发,下面为连接代码。
ESRI.ArcGIS.ADF.Identity userIdentity = new ESRI.ArcGIS.ADF.Identity(username, password, domain);
ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection agsConnnection = new AGSServerConnection(host, userIdentity); // 创建用户标识并使用标识建立连接
agsConnnection.Connect();
GIS服务器端ArcGIS Server地理编码服务根据用户输入信息在一定范围内进行地址匹配,完成匹配的地址数据被赋予空间坐标,从而在地图上表示出此地址数据所代表的空间位置,完成空间地址定位服务的构建部分关键语句如下。
IPropertySet geocodeResults = geocodeServer.GeocodeAddress(addressProperties, null);
IPoint addressPoint = (IPoint)geocodeResults.GetProperty("Shape");
用户在浏览器页面按格式输入空间定位点的地址信息,在发送消息时,为了达到异步调用地址定位服务,客户端采用Asp.NET提供的Callback回调技术实现客户端的回调。
Function void GetAddr()
{Var Addrtxt= document.getElementById('Addr_txt').value;//异步返回服务器地址信息
<%=sCallBackFunctionInvocation%>}
Ajax 引擎将回调信息以XMLHTTP方式发送给服务器,服务器端添加Web服务引用并调用方法,Web 服务代理程序将其转化为SOAP消息,通过网络进行空间Web服务调用语句如下,实现的系统空间定位服务界面如图5所示
sCallBackFunctionInvocation = Page.ClientScript.GetCallbackEventReference(this, "message", "processCallbackResult", "context"); ……
ToxicLocation.ToxicSiteLocator toxloc = new ToxicLocation.ToxicSiteLocator();//调用空间Web服务
object[] objs = toxloc.FindToxicLocations("message[0] "," message[1] ",10000);
for (int i = 0; i < objs.Length; i++)
{ ToxicLocation.ToxicSite toxsite = objs[i] as ToxicLocation.ToxicSite; …… }
3 结束语
基于Ajax技术的ArcGIS Server空间信息Web服务框架真正体现了SOA(面向服务架构)的理念,有效地解决了空间信息Web服务响应效率的问题,提高了空间信息服务的交互能力及用户体验。但是, Ajax技术在空间信息Web服务中的应用及开发过程中还应当注意存在的问题:不同浏览器之间的兼容、Ajax的滥用导致网络堵塞、空间信息Web服务的安全性及远程通信等,因此都有待进一步的深入与研究。
图 5 系统空间定位服务
参考文献
[1] 刘岳峰.地理信息服务概述[J].地理信息世界.2004,(6):26-29
[2] 冯文钊,彭立芹,张宏,闾国年.基于.NET平台和Web Service 方式的WebGIS系统集成[J].计算机工程.2004, 24(11):64-66
[3] ESRI. Developer Help For ArcGIS v9.2 [M].USA:Esri,2006
[4] Garrett J J.Ajax:A New Approach to Web Applications[EB/OL].[2005-01-18] http://www. Adaptivepath.com/publica-tions/essays/archives/
[5] 王凌云,李琦,喻文承. Web Service 与地理信息互操作[J]. 测绘科学, 2004, 29 (1) : 38-41.
[6] 孙立坚,刘纪平,王亮,等. 基于Web Services技术的GIS体系结构研究[J]. 地理信息世界, 2005, 3 (3) : 21-25.
[7] 刘南,刘仁义. Web GIS原理及其应用[M ] . 北京:科学出版社, 2002: 10-15.
所有版权归小能所有哦!!!