版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ajax技术及其在WebGIS中的应用的教程摘要本文首先介绍了Ajax的出现背景,然后分析了AJAX引擎的原理和各个组成部分,接着讨论了Ajax在WebGIS中的应用,总结出三种开发模式,并给出了用Ajax.NET在MapXtreme.NET2004平台上开发webgis的关键源代码。关键词WebGIS;Ajax;XMLHttpRequest;WebApplication;MapX当前Web服务逐渐渗入到人们的日常生活中,越来越多的人正通过web享受信息化时代带来的各种服务。WebGIS是GIS与Web有机结合的产物,是Internet环境下的一种存储、传输、处理、分析、显示和应用地理空间信息的计算机系统,它将GIS带入到千家万户,使GIS真正成为一种大众使用工具[5],[18]。1Ajax引擎的原理AJAX(AsynchronousJavaScriptandXML)是现有多种技术的综合,包括JavaScript、XHTML、CSS、DOM、XML、XSTL和XMLHttpRequest。Ajax使用XHTML和CSS标准化呈现数据,使用DOM实现动态显示和交互数据,使用XML和XSTL进行数据交换与处理,使用XMLHttpRequest对象进行异步数据读取,使用JavaScript绑定和处理所有数据[1]。Ajax为交互操作较多、数据读写频繁和数据分类良好的Web应用提供了一个很好的解决方案。其中XMLHttpRequest、JavaScript和DOM是Ajax技术的核心。1.1XMLHttpRequestXMLHttpRequest是Ajax引擎的核心技术,是Ajax引擎解决无需刷新整个页面即可从服务器获取所需数据问题的关键。在微软IE平台下XMLHttpRequest是XMLHTTP组件的一个对象,它通过允许开发人员在web页面内部使用XMLHTTPActiveX组件扩展自身功能,开发人员不必从当前的Web页面导航而直接与服务器上的数据库进行双向数据传输。该项功能相当重要,它弥补了无状态连接的缺点,排除下载冗余Web数据的需要,从而提高了进程速度。1.2DOM(DocumentobjectModel)DOM是给HTML和XML文件使用的一组API。它提供了文件的结构表述,允许开发人员改变其中的内容,建立网页与程序语言沟通的桥梁。所有Web开发人员操作及建立文件的属性、方法及事件都以对象方式来展现,这些对象均可由当今大多数浏览器以脚本取用。一个用HTML或XHTML构建的网页可看作是一组结构化数据,这些数据被封在DOM(DocumentObjectModel)中,且DOM提供对网页中各个对象的读写支持。1.3JavaScriptJavaScript是一种在浏览器中大量使用的跨平台编程语言,常被用来制作网页特效或表单验证。在Ajax中JavaScript则是XMLHttpRequest与DOM交互的桥梁以及Ajax引擎工作的主要推动力。JavaScript通过调用XMLHttpRequest的属性和方法获取服务器端数据,调用DOM的API更新Web页面内容,从而实现整个页面的无刷新更新页面的效果。2基于Ajax引擎的Web应用体系结构图1Ajaxweb应用程序模型Ajax采用异步交互过程,在用户与服务器之间引入一个中间媒介,从而消除网络交互过程中“处理―等待―处理―等待”的缺点。用户的浏览器在执行任务时即装载了Ajax引擎,通常放在一个隐藏的框架中。Ajax引擎采用JavaScript语言编写,负责编译用户界面及与服务器之间的交互。Ajax引擎允许用户与应用软件之间的交互过程异步进行,独立于用户与网络服务器间的交流。用JavaScript调用Ajax引擎来代替产生一个HTTP的用户动作,如内存中的数据编辑、页面导航、数据校验等无需重新载入整个页面的请求,可由Ajax引擎来执行[1],[17]。基于Ajax引擎的Web应用体系结构模型如图1所示。3Ajax的优点3.1减轻服务器和网络的负担Ajax的原则是“按需获取数据”,可最大程度地减少冗余请求和响应对服务器造成的负担。把以前一些服务器承担的工作转到客户端,利用客户端闲置的能力进行处理,从而减轻服务器和网络的负担,节约空间和宽带租用成本。3.2无刷新更新页面,减少用户实际和心理等待时间首先,“按需获取数据”的理念减少了数据的实际读取量。其次,DOM的使用不像传统刷新那样出现白屏的情况,而是在读取数据的过程中显示的是原来的页面状态,只有当接收到全部数据后才更新相应部分的内容,而这种更新也是瞬间的,用户几乎感觉不到,提高了可用性,提高了用户体验。这种无刷新更新页面的功能,减少用户实际和心理等待时间。3.3基于现有公开的标准化Ajax技术标准公开,跨浏览器和跨平台,并且不需要插件或下载小程序。3.4实现数据聚合Ajax可以调用外部数据,实现数据聚合的功能。比如微软发布的在线RSS阅读器;用户还可以利用一些开放的数据,开发自已的应用程序,例如可用GOOGLE的地图数据做一些新颖的专题地图网络应用。3.5界面与应用分离,数据与呈现分离Ajax在整个Web服务系统中的位置决定了Ajax引擎只要从服务端获取XML或者其他格式的数据,便可定制整个Web界面,从而可以使用服务端只注重数据逻辑处理而不必关心Web界面的呈现,将数据呈现的工作交给Ajax引擎来做,这样有利于分工合作、减少非技术人员对页面的修改造成的Web应用程序错误,提高了效率,也更加适用于现在的发布系统。3.6有大厂商的支持AJAX被IT大厂商包括Google、yahoo、Amazon和微软大量采用并广泛应用到实际的项目开发中,证明了市场的欢迎程度和该技术的正确性。4Ajax在WebGIS中的应用4.1通用AJAX开发框架AJAX遵循Request/Response模式,这个框架的`基本流程为:对象初始化->发送请求->服务器接收->服务器返回->客户端接收->修改客户端页面内容,这个过程是异步进行的。(1)初始化对象并发出XMLHttpRequest请求。为了让Javascript可以向服务器发送HTTP请求,必须使用XMLHttpRequest对象。各个浏览器对这个实例化过程的实现方式不同。IE以ActiveX控件的形式提供,而Mozilla等浏览器则直接以XMLHttpRequest类的形式提供。if(window.XMLHttpRequest){//Mozilla,Safari,...http_request=newXMLHttpRequest();}elseif(window.ActiveXObject){//IEhttp_request=newActiveXObject("Microsoft.XMLHTTP");}(2)指定响应处理函数指定当服务器返回信息时客户端的处理方式,相应的处理函数名称赋给XMLHttpRequest对象的onreadystatechange属性。例如:http_request.onreadystatechange=processRequest;(3)发出HTTP请求指定响应处理函数之后,就可以向服务器发出HTTP请求。这一步调用XMLHttpRequest对象的open和send方法。http_request.open(#39;GET#39;,#39;/some.file#39;,true);http_request.send(null);open的第一个参数是HTTP请求的方法,为Get、Post或者Head。open的第二个参数是目标URL。open的第三个参数只是指定在等待服务器返回信息的时间内是否继续执行下面的代码。如果为True,则不会继续执行,直到服务器返回信息。默认为True。(4)处理服务器返回的信息首先,它要检查XMLHttpRequest对象的readyState值,判断请求的当前状态。形式如下:if(http_request.readyState==4){//信息已经返回,可以开始处理}else{//信息还没有返回,等待}服务器返回信息后,还需要判断返回的HTTP状态码,确定返回的页面没有错误。所有的状态码都可以在W3C的官方网站上查到。其中,200代表页面正常。if(http_request.status==200){//页面正常,可以开始处理信息}else{//页面有问题}XMLHttpRequest对成功返回的信息有两种处理方式:responseText将传回的信息当字符串使用;responseXML将传回的信息当XML文档使用,可以用DOM处理。4.2基于Ajax通用组件的WebGIS开发框架AJAX一旦大规模实际应用,就会造成众多问题,如技术的多样性、分布耦合的复杂性、浏览器的兼容性、开发效率低下、开发进度慢、质量低和可维护性差等。基于组件的AJAX开发,可以屏蔽技术的多样性和复杂性,集中维护修改,以一变应万变;采用规范合理的架构,能够轻易扩展兼容各种平台后台语言和浏览器,从而才可能真正大规模在项目中实际应用。下面以VisualStudio2005和C#为例,介绍组件Ajax.NET在MapXtreme.NET2005中的应用开发。(1)下载最新版Ajax.NET,在工程项目中添加引用,并修改配置文件web.config。[...](2)以下是将地图居中的C#代码,函数返回一个指向缓存地图的URL地址,公开给客户端调用的后台C#函数需要添加AjaxMethod属性标记。[Ajax.AjaxMethod(Ajax.HttpSessionStateRequirement.ReadWrite)]publicstringdoCenterTool(doublex,doubley){//在使用Pooling后重新生成RestoreState();MapInfo.Mapping.MapmyMap=null;myMap=MapInfo.Engine.Session.Current.MapFactory[0];MapInfo.Geometry.CoordSysmyCoordSys=myMap.GetDisplayCoordSys();System.Drawing.PointsP=newSystem.Drawing.Point(Convert.ToInt16(x),Convert.ToInt16(y));DPointmP=newDPoint(x,y);//转换成地图坐标点myMap.DisplayTransform.FromDisplay(sP,outmP);myMap.SetView(mP,myCoordSys,myMap.Zoom);//以流式输出,并在服务器端缓存returnexportToStream(myMap);}(3)为了后台C#方法能够被客户端JavaScript调用,必须注册整个类。protectedvoidPage_Load(objectsender,EventArgse){AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));}(4)编写回调JavaScript脚本,将当前地图用新图代替。functiondoReCenter_callback(newImageUrl){varmyMapImg=document.getElementById(#39;MapControl1_Image#39;);myMapImg.src=newImageUrl.value;}(5)最后,在客户端使用JavaScript来生成一张新地图,可通过自定义工具或直接修改资源文件JavaScript代码实现。doCenterTool(event.x,event.y,doReCenter_callback);4.3在WebGIS内部集成Ajax功能随着相关技术的成熟和Ajax的广泛使用,各大GIS厂商将会把Ajax集成到他们WebGIS平台内部去。Google在2004年初推出GoogleMaps[2],融合了全球的空间地图数据以及高分辨率的影像,其中采用了特有Ajax技术AJAXSLT,ESRI的创始人兼总裁JackDangermond评价Google的网络GIS作用“正是Google打开了我们的世界,GIS行业正在趋于繁荣”[12]。Microsoft的LiveLocal[19],Yahoo公司的Flash/AJAX[9]等空间信息门户共同网站也采用了增强用户体验的AJAX技术,该技术良好的RWA(RichWebApplication)特性给普通大众用户使用GIS无疑带来了很大的福音。ESRI正在开发ArcGIS9.2,在ArcGISServer和ArcIMS的应用开发框架(ADF)将包括了一个AJAX可用应用和丰富的开发API[12];MapInfo在将要发布的MapXtreme2006组件中也将会集成Ajax技术,可以让用户建立高性能互操作地图应用,包括无缝和动态的移动、放大、缩小、以及地图提示等功能,以提高网络应用的可用性和响应速度[11]。5小结AJAX因具有独特的优势,迅速成为Web研究热点,并在实际开发得到广泛应用。本文分析了Ajax的原理和体系结构,提出了WebGIS中Ajax的三种开发模式,为WebGIS的开发提供了很好的指导。Ajax界面是WebGIS应用的主要的组成,Ajax的应用将会越来越广,以至于会改变WebGIS的基础交互模式,为WebGIS的大众化应用提供了极其重要的技术保证。参考文献[1]JesseJ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2019-2020学年吉林省通化市辉南县小学三年级上册数学期中试题及答案
- 椅子瑜伽塑形课程设计
- 2021-2022学年江苏省南京市鼓楼区四年级下学期期末语文真题及答案
- 2024年版交通设施代采购合同范本3篇
- 2022-2023学年重庆市秀山土家族苗族自治县小学二年级上册数学期末试题及答案
- 一年级数学(上)计算题专项练习集锦
- 2021-2022学年广东省汕头市濠头区二年级下册期末语文真题及答案
- 成人学习策略与成效关系考核试卷
- 木材切削刀具的磨损机理研究考核试卷
- 服装企业战略规划与管理考核试卷
- 《四川省病案质控指标检查表》填报指南
- 工程洽商记录表
- 【旅游学概论课件】旅游资源
- 1.1、供应商管理控制流程与风险控制流程图
- 北师大版九年级数学下册《圆的对称性》评课稿
- 住宅室内装饰装修管理办法课件
- 呼吸系统疾病诊疗规范
- 2023年全国乙卷笔试部分讲解课件 【高效课堂+精研精讲】 高考英语复习
- 酒店业轻资产运营模式案例研究
- 建筑师《建筑工程经济》习题(E)
- 《卓有成效的管理者》读书分享
评论
0/150
提交评论