您的位置:首页 > 编程语言 > ASP

ASP.NET AJAX简介(译)

2007-05-08 13:49 302 查看
ASP.NET 2.x
ASP.NET AJAX简介
AJAX的客户端回调方式构建丰富的用户体验
作者: Steve C. Orr
很多有经验的开发者都认为ASP.NET 2.0的确是一个很不错的产品。它的这种以服务端为中心的方式使得开发者设计一个ASPX页面,完全可以以一种高可用的方式(编写少量代码或者完全不需要编写任何代码),就能轻易将页面、控件、数据源很好地绑定在一起。
但是很多有经验的开发者也感觉到了,ASP.NET 2.0这种以服务端为中心的方式也正是它最大的缺陷。主要原因在于,它需要频繁地刷新页面,即便是很小的一个操作。想克服这个缺陷,除非你自己编写客户端脚本代码,利用XMLHttp处理客户端的异步调用,处理跨平台的兼容性问题,以及其他需要花费您大量时间的工作。Web 2.0已经带给了我们全新的体验和感觉,而这种以服务端为中心的方式却无法体现Web 2.0的理念,所以在今天这个Web2.0的世界里它的缺陷也就表现得尤为突出了。
但是ASP.NET AJAX很好地解决了ASP.NET 2.0的这个问题。
ASP.NET的下一代开发
什么是ASP.NET AJAX?它涉及到很多方面的内容。其中最为显著的优点就是它能够和ASP.NET实现无缝集成。
ASP.NET AJAX完全支持Internet Explorer, Firefox, 和Safari浏览器。到目前为止,ASP.NET AJAX并没有打算支持Opera,但是事实上微软的ASP.NET AJAX团队正在悄悄地进行这项工作。
如果你想马上开始你的ASP.NET AJAX的开发旅程的话,先到http://ajax.asp.net下载免费的ASP.NET AJAX 1.0。当用Visual Studio 2005构建Web Application的时候,您将会看到一个ASP.NET AJAX的web site模板。选择这个模板新建一个Web Application,ASP.NET AJAX相关的一些配置将会添加到Web Application的web.config中。如果你想在已有的Web application中添加ASP.NET AJAX的功能,那你就需要手动修改web.config文件。
ASP.NET AJAX中新增加的服务端控件
ASP.NET AJAX增加了几个新的控件(参考 1) 。其中最重要的控件是ScriptManager,它管理着ASPX页面中的所有ASP.NET AJAX脚本。任何一个使用ASP.NET AJAX的页面都需要加入这个不可见控件,但每个页面中有仅只能存在一个ScriptManager实例。当然你也会碰到存在使用两个ScriptManager的情况(如在主页和ASP.NET Content页中都存在一个ScriptManager实例)。这时,你可以在其中的某个页面中使用ScriptManagerProxy,它可以替代了ScriptManager。ScriptManagerProxy和ScriptManager的功能很相似。但ScriptManagerProxy只是试图充当代理去调用ScriptManager的功能,从而保证了同一个页面实际上只存在一个ScriptManager。
控件名称
功能描述
ScriptManager
任何一个使用ASP.NET AJAX的页面都需要加入这个不可见控件,但每个页面中有仅只能存在一个ScriptManager实例。它实现了实现AJAX功能需要的基本的脚本。
ScriptManagerProxy
如果主也中已经声明了一个ScriptManager,它在相应的内容页中充当一个虚拟的ScriptManager
UpdatePanel
包含在UpdatePanel 中的任何控件都以AJAX的方式实现对服务端的请求
UpdateProgress
为长时间的AJAX调用给用户提供反馈
Timer
允许网页内容可以被周期性地更新
1.这些ASP.NET AJAX服务端控件为web开发者提供了很好的强有力的帮助
在设计阶段,UpdatePanel控件很像标准的ASP.NET Panel控件,它可以被自由地脱放和布局。UpdatePanel在运行的时候才表现出它真正的功能。默认情况下,包含在UpdatePanel 中的任何控件都会以AJAX的方式发起对服务端的请求。例如,你把一个标准的ASP.NET 2.0的GridView控件拖到UpdatePanel中,则GridView的分页、排序操作都会通过AJAX请求实现更新,而不需要每个操作都更新整个页面。这会让用户体验更流畅。不过要主要的是,对于每个AJAX请求,ASP.NET AJAX还是会更新页面的ViewState,因此正常的Postbacks都可以无错地进行。
在理想的情况下,AJAX可以很好地工作。但是如果服务器响应速度慢、网络速度不理想、复杂的数据库请求,AJAX则会让用户觉得没有任何的反馈。然而UpdateProgress控件提供了这样的功能,它可以给用户提供反馈,告知用户操作正在进行,用户也就不必为此而感到无可是从了。把UpdateProgress控件放到一个form中,它就能显示AJAX的请求正在进行中。你可以让UpdateProgress控件显示一个有意义的消息,或者一个取消按钮使用户可以取消操作。UpdateProgress控件运行时的表现形式完全可以通过ASP.NET的模板进行自定义,所以可以添加任何你感觉很酷的效果。
Timer也是一个很有用的ASP.NET AJAX服务端控件。Timer控件可以在一个规定的时间间隔内引发时钟事件,这很像Windows Forms的Timer控件。Timer控件的时间间隔单位是毫秒,把时间间隔设置为60,000,就可以每隔1s地引发服务端的时钟事件从而发起AJAX调用。间隔性的引发AJAX请求来更新UpdatePanel是一种非常美妙的方式。
太多内容 ...
一篇文章是很难把ASP.NET AJAX完全讲述清楚的。如果你想获取更多的关于新的AJAX服务端控件的相关介绍,以后还会有更多的关于ASP.NET AJAX的文章。例如,如果觉得这些都无法满足你的需要,你可以使用AJAX工具箱来自定义ASP.NET AJAX控件。这个AJAX工具箱也包含了许多很不错的ASP.NET AJAX控件,很值得期待。
如果想要学习更多的ASP.NET AJAX的相关知识,我推荐你阅读我和我的合伙人最近写的一本书:
Beginning ASP.NET 2.0 AJAX (by Wrox Press)

当然,除了ASP.NET AJAX,你也可以通过其他的方式来实现AJAX功能。这里就包括了一些很不错的第三方控件。尽管如此,下个版本的ASP.NET将会把ASP.NET AJAX也集成进去。所以你现在学习或者打算以后学习都可以。但如果你是一个ASP.NET的开发者,现在学习ASP.NET AJAX,将会让你捷足先登,收获颇多。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: