|
|
|
|

ArcGIS Server9.3 AJAX系列(四)之总结

前面两篇文章我们介绍了ArcGIS Server93 AJAX的两种模式,分别是Client Callback和ASP.NET AJAX(也可以称为局部页面刷新,partial page rendering)。本篇主要将这两种方案做一个对比,比较两种方案的优缺点,探讨适用的情景。Client Callback随着ASP.NET 2...

作者:geospatialthinking来源:http://geospatialthinking.blogbus.com|2009年12月22日
前面两篇文章我们介绍了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.接口。

上一篇:ArcGIS Server9.3 AJAX系列(三)之ASP.NET…

下一篇:ArcGIS Server中使用多个地图服务时的注…