您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 基于ArcGISServer的空间Web服务异步调用
基于ArcGISServer的空间Web服务异步调用周胜,邹艳红(中南大学地学与环境工程学院湖南长沙410083)摘要:针对当前空间Web服务平台ArcGISServer存在服务响应效率低等问题,将Ajax技术引入传统空间Web服务模型,实现异步响应空间Web服务。基于ArcGISServer平台提出了集成Ajax技术空间Web服务的框架,并通过实例研究了构建空间Web服务和异步调用的过程。结果表明,集成Ajax技术空间Web服务的框架减少了数据传输量和Web调用时间,显著提高了数据使用与功能服务调用效率,相比传统空间Web服务框架具有明显优势。关键字:ArcGISServer;空间Web服务;AjaxResearchonAsynchronousCallingSpatialWebServicesofArcGISServerZhouSheng,ZouYanHong(SchoolofGeosciencesandEnvironmentEngineering;CentralSouthUniversity;Changsha410083;)Abstract:TosolvethedelayingresponseofprevailingServiceswhichexistsinspatialwebserviceplatformArcGISServer,AjaxisintroducedintothetraditionalSpatialWebServicemodeltoachieveaneffectofasynchronousresponseoftheSpatialWebService.AccordingtoArcGISServer,presentsafeasibleframeworkofSpatialWebServiceintegratedwithAjaxandprovidesacorrespondingexample.TheresultsshowthattheframeworkreducethevolumeofdatatransmissionandWebcalltime,significantlyimprovedatauseandefficiencyofthefunctionservicecalls,hasobviousadvantagescomparedtotheframeworkoftraditionalspatialWebservices.KeyWords:ArcGISServer;SpatialWebServices;Ajax0.前言Web服务(Webservice)作为一种面向服务架构的技术,通过标准Web协议提供服务,其松散耦合结构保证了不同平台应用服务互操作的进行。空间Web服务即在空间信息服务中引入Web服务技术[1],空间Web服务保证了空间信息操作的平台无关性,又与其它应用系统资源融合,最大程度利用现有资源,其核心内容是通过Web服务与GIS功能相结合以服务的方式在网络上发布,实现异构地理空间信息的共享与互操作[2]。传统的空间Web服务在响应效率方面存在明显缺陷:其“请求-响应”模式下用户每次请求总是要等待服务器响应且返回响应都要重新刷新整个页面。同时,少量数据的改变也会导致页面的全部刷新,既增加了网络流量及服务器的负担,又导致互操作和交互性能相对较差。本文将基于典型空间Web服务的企业级平台ArcGISServer,在传统空间Web服务上集成Ajax技术,实现地理空间Web信息服务的异步响应,解决服务调用效率及用户体验问题,达到信息资源与地理空间信息的高效率共享与服务的目的。1.ArcGISServer机制原理1.1体系结构ArcGISServer基于ArcObjects以分布式对象技术标准构建,ArcObjects由各种组件、接口和方法组成,其组件涉及面从细粒度对象(单个的几何对象)到粗粒度对象(与ArcMap文档交互的地图对象)[3],因此ArcGISServer每个组件都各自扮演着特定的角色,诸如进程管理、激活、解除活动以及平衡分配资源等。ArcGISServer由GIS服务器、Web服务器、Web浏览器、桌面产品四部分组成(图1)。GIS服务器本身包括两部分:ServerObjectManager(SOM)和ServerObjectContainers(SOCs)。SOM是一个Windows/Unix服务进程,它管理着一组分布在一个或多个服务器对象容器机器上的SOC,Web应用通过局域网或广域网直接连接到SOM服务器名称或IP地址。SOC支持多个并发的服务器对象,因此提高了服务器使用性能。ArcGISServer的服务器对象实质是一种粗粒度的ArcObjects组件对象,通过服务器对象可以访问与之相关的细粒度的ArcObjects组件对象。ArcGISServer中的GIS服务器可以宿主多个服务器对象,而服务器对象本质上体现了GIS内在的资源,可通过服务器对象的客户端共享GIS数据资源。图1ArcGISServer体系结构1.2内核机制原理ArcGISServer是服务器端的ArcObjects组件集,具备跨平台基础,通过对服务器对象的管理及ArcGISServer的分布式体系部署机制,在Web环境下可获得ESRI桌面GIS功能。(1)服务器对象管理;ArcGISServer中服务器对象是空间数据的载体,服务器对象可创建最大数目必须是有限的。为了优化系统运行时的性能,对服务器对象的生命周期进行有效的管理,可以通过设置服务器对象的池式(pooled)与非池式(none-pooled)管理来解决。非池式管理即用户第一次请求服务器对象时服务器对象创建,用户会话结束后释放服务器对象。池式服务器对象是在服务器运行时预先创建了指定数目的服务器对象,用户请求服务器对象时优先使用已创建的服务器对象,没有空闲服务器对象才创建新的服务器对象,并且当操作结束后立即将服务器对象释放回到服务器对象池中等待下一个用户会话。(2)分布式体系部署机制;ArcGISServer提供了基于DCOM的负载平衡方法,进行分布部署时,经过Windows域授权的用户身份运行ArcGISServerSOM/SOC,并以具有访问SOM/SOC权限的用户身份运行Catalog或Manager管理ArcGISServer。Web应用服务器、GIS服务器可同时部署在同一台机器,也可部署到多台机器,GIS服务器的负载平衡由SOM完成,另外额外部署了一个SOC进程,用于负载平衡算法。2.基于Ajax技术的ArcGISServer空间Web服务框架设计1.3基于Ajax的空间Web服务异步调用现有大部分Web服务交互遵循的是请求/响应模式(即基于表单-Form的提交),请求/响应模式要求用户进行一次Http请求后,等待服务器端返回一个动态生成的HTTP网页结果后,再进行下一项操作。因此现有Web服务交互在实际应用中存在着多方面的缺陷:。目前,基于Ajax的网络地理信息服务不断出现,最为典型的如GoogleMaps等,在这些应用中Ajax技术优势得到了充分的体现。因此在传统空间Web服务中引入Ajax引擎,以异步方式实现空间Web服务的交互,将在一定程度上解决当前空间Web服务所存在的缺陷。在基于Ajax引擎的空间Web服务异步交互模型中(图2),客户端通过JavaScript调用Ajax引擎产生服务请求,Ajax引擎将请求异步送回Web服务器,在Web服务器结果返回之前,客户端任何操作不受影响;Web服务器通过HTTP调用Web服务,GIS服务器接到服务请求向数据库请求并处理数据,结果最后由Ajax引擎返回给客户端,以可视化方式在客户端浏览器呈现。图2Ajax引擎的空间Web服务异步交互模型1.4集成Ajax技术的ArcGISServer空间Web服务框架在Ajax技术引入空间Web服务基础上,本文基于ArcGISServer平台提出集成Ajax技术的空间Web服务框架(图3),框架中将空间数据库资源视为可访问的Web服务并结合ArcGISServer强大的后台服务功能,从而实现了数据交换和共享,并取得良好的用户体验。相对传统空间Web服务框架主要优势在于:按需取数据,最大程度减少冗余;无刷新更新,减少等待时间;应用中间层技术,减少服务器端负担等。图3集成Ajax技术的ArcGISServer空间Web服务框架2实例应用研究笔者在以长沙市为背景,基于ArcGISServer平台开发的饮食管理实验系统中,集成Ajax技术进行了空间Web服务开发研究。2.1实例系统简介基于ArcGISServer平台开发的饮食管理系统是一个面向餐饮空间信息与非空间信息的服务、控制与管理的WebGIS系统,系统基于三层架构设计,如图4所示,其中应用层(虚线框内)基于.NET平台及ArcGISServer.NETADF提供的组件进行开发。系统数据均由Oracle分布式储存与管理,并借助于空间数据库引擎(ArcSDE)访问。系统集成Ajax技术进行了空间Web服务开发,在轻易实现互操作性的同时,也使得系统资源达到最大共享,下面以构建空间地址定位服务为例,阐述Web服务的实现和异步调用过程。图4长沙市饮食管理信息系统架构图2.2空间地址定位服务构建与异步调用实例空间地址定位是把描述成地址的地理位置信息转换成可以用于ArcGISServer的地理坐标形式,具体方法是指将用户交互式输入的地址信息或从数据库相关的地址描述信息,在经过语义分析、字符串拆分,调用ArcGISServer地图编码服务,使地址信息自动获取对应空间地理坐标值,并准确定位到相应空间位置。ArcGISServer是服务器端ArcObjects组件集,对ArcGISServer的编程操作都意味着对远端服务器上对象的操作,因此只有先与GIS服务器进行连接,才能使用ArcObjects组件集进行开发,下面为连接代码。ESRI.ArcGIS.ADF.IdentityuserIdentity=newESRI.ArcGIS.ADF.Identity(username,password,domain);ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnectionagsConnnection=newAGSServerConnection(host,userIdentity);//创建用户标识并使用标识建立连接agsConnnection.Connect();GIS服务器端ArcGISServer地理编码服务根据用户输入信息在一定范围内进行地址匹配,完成匹配的地址数据被赋予空间坐标,从而在地图上表示出此地址数据所代表的空间位置,完成空间地址定位服务的构建部分关键语句如下。IPropertySetgeocodeResults=geocodeServer.GeocodeAddress(addressProperties,null);IPointaddressPoint=(IPoint)geocodeResults.GetProperty(Shape);用户在浏览器页面按格式输入空间定位点的地址信息,在发送消息时,为了达到异步调用地址定位服务,客户端采用Asp.NET提供的Callback回调技术实现客户端的回调。FunctionvoidGetAddr(){VarAddrtxt=document.getElementById('Addr_txt').value;//异步返回服务器地址信息%=sCallBackFunctionInvocation%}Ajax引擎将回调信息以XMLHTTP方式发送给服务器,服务器端添加Web服务引用并调用方法,Web服务代理程序将其转化为SOAP消息,通过网络进行空间Web服务调用语句如下,实现的系统空间定位服务界面如图5所示sCallBackFunctionInvocation=Page.ClientScript.GetCallbackEventReference(
本文标题:基于ArcGISServer的空间Web服务异步调用
链接地址:https://www.777doc.com/doc-2568177 .html