全国高分辨率土地利用数据服务 土地利用数据服务 土地覆盖数据服务 坡度数据服务 土壤侵蚀数据服务 全国各省市DEM数据服务 耕地资源空间分布数据服务 草地资源空间分布数据服务 林地资源空间分布数据服务 水域资源空间分布数据服务 建设用地空间分布数据服务 地形、地貌、土壤数据服务 分坡度耕地数据服务 全国大宗农作物种植范围空间分布数据服务
多种卫星遥感数据反演植被覆盖度数据服务 地表反照率数据服务 比辐射率数据服务 地表温度数据服务 地表蒸腾与蒸散数据服务 归一化植被指数数据服务 叶面积指数数据服务 净初级生产力数据服务 净生态系统生产力数据服务 生态系统总初级生产力数据服务 生态系统类型分布数据服务 土壤类型质地养分数据服务 生态系统空间分布数据服务 增强型植被指数数据服务
多年平均气温空间分布数据服务 多年平均降水量空间分布数据服务 湿润指数数据服务 大于0℃积温空间分布数据服务 光合有效辐射分量数据服务 显热/潜热信息数据服务 波文比信息数据服务 地表净辐射通量数据服务 光合有效辐射数据服务 温度带分区数据服务 山区小气候因子精细数据服务
全国夜间灯光指数数据服务 全国GDP公里格网数据服务 全国建筑物总面积公里格网数据服务 全国人口密度数据服务 全国县级医院分布数据服务 人口调查空间分布数据服务 收入统计空间分布数据服务 矿山面积统计及分布数据服务 载畜量及空间分布数据服务 农作物种植面积统计数据服务 农田分类面积统计数据服务 农作物长势遥感监测数据服务 医疗资源统计数据服务 教育资源统计数据服务 行政辖区信息数据服务
Landsat 8 高分二号 高分一号 SPOT-6卫星影像 法国Pleiades高分卫星 资源三号卫星 风云3号 中巴资源卫星 NOAA/AVHRR MODIS Landsat TM 环境小卫星 Landsat MSS 天绘一号卫星影像
前面两篇文章我们介绍了ArcGIS Server93 AJAX的两种模式,分别是Client Callback和ASP.NET AJAX(也可以称为局部页面刷新,partial page rendering)。本篇主要将这两种方案做一个对比,比较两种方案的优缺点,探讨适用的情景。
Client Callback
随着ASP.NET 2.0的发布,微软为网络应用提供了一个简单、轻量、高效的AJAX解决方案,称为客户端回调(Client Callback)。这种解决方案仅凭一个接口(ICallbackEventHandler),一个客户端脚本管理类和一个Javascript文件(WebForm.js)就可以管理客户端与服务器之间的异步传输。在运行时环境下,页面初始载入后,客户端回调页面时经历的页面周期与传统的同步传输有些不同。如下图所示,页面经历了初始化和载入(initiate and load),但页面没有被渲染(render),取而代之的是服务器端的代码被调用,处理客户端的回调请求并返回一个值给客户端,客户端的Javascript函数基于DOM和DHTML技术动态的更新网页内容。虽然客户端回调是一个轻量级的AJAX框架,但它也有一个很大的缺点:在客户端回调时,开发者必须提供所有客户端服务器端和客户端渲染页面内容的代码,并且管理客户端与服务器之间的异步通信,这无疑加重了开发人员的负担,也在一定程度上促成了ASP.NET AJAX的推出。
ASP.NET AJAX
为了提供一个更全面的AJAX解决方案,微软于2007年初提出了ASP.NET AJAX。该方案在服务器端提供一系列AJAX控件(ScriptManager,UpdatePanel等)和API用于管理异步通信,同时通过客户端的Microsoft AJAX Library动态更新页面内容,这就使得开发人员甚至不用编写任何客户端脚本就可以实现异步刷新。与Client Callback不同的是,局部页面回发经历了与同步传输一样的页面生命周期,但只有页面上一些特定的区域和控件得到刷新,所以又称为局部页面刷新(partial page rendering)。
事实上,ASP.NET AJAX依赖于拦截机制(interceptor pattern)来处理部分回发。在初始化后,ASP.NET AJAX Javascript. Library在客户端立即添加一系列客户端事件处理器(event handler)用来截获会引起整体页面回发的请求。这些事件处理器仅截获注册控件发起的回发请求,并转化成部分回发请求,在服务器响应后处理接收到的内容并动态更新页面。
总的来讲,两个技术各有优缺点。ASP.NET AJAX框架的出现不是为了取代客户端回调(Client Callback),而是微软给开发者提供一个更为便捷的开发环境。
客户端回调(Client Callback)
优点在于回调时发送请求和返回结果的字符串都由开发者自定义和解析,更为灵活和轻便。当然,ArcGIS Server中提供了CallbackResult和processCallbackResult函数,更加方面了开发者。另外,客户端整个页面的生命周期比传统Postback短(无论是同步或者异步),更为高效。
缺点是需要开发者编写客户端脚本和服务器代码。
ASP.NET AJAX (partial page postback)
优点在于实现方便,拖动控件便可以实现异步刷新;支持控件的视图状态;
缺点是页面生命周期比CallBack长,只要在更新区域(UpdatePanel)里的控件不管是否有改变都会回传到服务器并且重新渲染(Render),造成了多余的负担;引发回传的控件(Tiggers)必须实现IPostBackEventHandler, IPostBackDataHandler 或者INamingContainer.接口。