`
caobihole
  • 浏览: 945886 次
文章分类
社区版块
存档分类
最新评论

ASP.NET中的AJAX应用开发总结

 
阅读更多

11 月21日晚7点应邀在武汉大学信息学院做了一场关于 ASP.NET AJAX 开发的报告,以我自己经历讲述了一些特殊应用在过去到现在实现手段的变化,本来想回家之后做个总结的,但是由于最近以来事情一直很多,所以没有来得及总结。今晚得以有空总结一下。

AJAX 介绍

其实 AJAX 应用的核心就是 XMLHttpRequest ,通过现象看本质,即使使用微软的 AJAX 服务器控件最终也是需要这些的,只不过使用微软 AJAX 服务器控件开发 AJAX 应用时我们不需要关心 JS 脚本的实现,只需关心业务逻辑就可以了,因而可以简化开发和提高开发速度。 AJAX 的基础是 XHTML CSS DOM JavaScript XML XMLHttpRequest

正确使用 AJAX 技术可以改善用户体验,是用户与服务器的交互更流畅,某些情况下还能减少服务器流量。在以前 AJAX 只是作为一种比较炫的技术为一些大型网站所使用,现今这个比云计算还要流行了,至少云计算更多地还是停留在人们的概念里,而 AJAX 确确实实应用在 WEB 开发当中了。 WEB 开发人员的招聘都是言必精通 AJAX 技术。

下面分别讲讲在 ASP.NET 开发中可以供选择的开发 AJAX 应用的方式:

采用纯 JavaScript 实现

在武侠小说中绝顶高手飞花摘叶都可以伤人,在 WEB 开发领域真正的高手也可以无需借助任何其它库就可以开发出 AJAX 应用。不适用任何第三方库开发 AJAX 应用就需要自己区分浏览器来实例化 XMLHttpRequest 对象实例,下面的代码是一个简单的调用 AJAX 的代码:

注意 XMLHttpRequest.readyState 共有5种状态,其可能值和对应描述如下:

0 :请求未初始化,还没有调用 open()

1 :请求已经建立,但是还没有发送,还没有调用 send()

2 :请求已发送,正在处理中(通常现在可以从响应中获取内容头)。

3 :请求在处理中;通常响应中已有部分数据可用了,没有全部完成。

4 :响应已完成;您可以获取并使用服务器的响应了。

从上面的代码中可以看出每次实例化 XMLHttpRequest 对象都需要判断,一些常用的操作也可以封装一下,利用 Prototype 这个 JavaScript 脚本库就可以轻松做到这一点,实际上早期很多人就用到了 Prototype 来开发 AJAX 应用,并且在 Prototype 中还封装了其它很多通用的方法,大大提高了我们的开发效率。

使用 Prototype

Prototype 中提供了一个 Ajax 对象,这样开发人员就可以直接使用 Ajax 对象而不必考虑如何判断浏览器类型再决定如何实例化 XMLHttpRequest 对象的实例了。下面的代码是使用了 Protype 之后的代码:

从上面的代码可以看出使用了一些相对较为成熟的 JavaScript 框架之后可以使我们的代码大大减少,开发速度也得到了提高。

使用jQuery

当然我们还可以使用目前比较热门的 JavaScript 框架 jQuery ,这个在 VS2008 中需要安装 SP1 后才能活得智能提示,在 VS2010 中已经集成了。如果使用 jQuery 上面的代码可以简化为:

可以看出在 jQuery 中提供了更多、更灵活的处理 AJAX XHTML 的方法,简易大家都去了解一下。

在上面的方式中无论使用自己写全部 JavaScript 脚本还是利用 Protype 或者 jQuery 这类框架的方式,都是需要写一些 JS 脚本的,有没有尽可能少写脚本的方式呢?毕竟我们知道 JS 脚本调试起来相对较为困难些。答案是有的,那就是使用 AjaxPro

使用 AjaxPro

下面是一个使用 AjaxPro 的例子,设计代码如下:

后台逻辑代码如下:

从上面的代码中可以看出使用 AjaxPro 之后可以不用写太多客户端代码,而且不同前面几种做法需要写一个页面调用显示,一个页面负责控制业务逻辑(一般情况下是这样的),使用 AjaxPro 可以将调用页面和控制业务逻辑页面合在一起,这样服务端代码调试比较方面,而且也不用控制如何发送请求,请求什么时候响应完毕。

使用 AjaxPro 有几方面需要注意,就上面的代码中的注意事项说明如下:

Page_Load事件中:

JS脚本中:

网页中调用的服务器端方法:

当然在运行上面的代码之前需要对web.config做些配置,打开web.config文件,在<configuration><system.web>后添加以下代码(如果已经存在<httpHandlers>节点那就直接添加<add>部分内容即可):

上面这段代码的作用是是保证客户端向"ajaxpro/*.ashx"的请求(POST和GET)都被AjaxPro.AjaxHandlerFactory拦截。

使用微软 AJAX 控件库

前面几种开发 AJAX 应用的方式都是遵循一个规律:开发速度是有低到高,开发难易程度由难到易,不过在前面几种方式中不管怎么做都还没有完全脱离 JavaScript ,这个东东对于现在的一些初学者(就是那些感觉做 ASP.NET 开发就只是拖拽控件)来说还是有些难度,还是需要写 JavaScript 来操作 HTML 页面,为了彻底减轻这部分人掌握 ASP.NET AJAX 开发,微软推出了 AJAX 服务器端控件。

使用微软 AJAX 服务器端控件可以在做简单设置的情况下满足开发环境中的大部分简单需求,当然做一些稍微复杂点的设置就可以满足开发环境中的绝大部分需求了。

在微软 AJAX 服务器控件库中主要有以下几个服务器控件:

ScriptManager 控件:注册脚本,必须在所有服务器控件之前出现

ScriptManagerProxy 控件:参考其它脚本和服务

UpdatePanel 控件:局部刷新控件

Timer 控件:定时执行控件

UpdateProgress 控件:进度显示控件

下面是一个使用了微软 AJAX 服务器控件的例子:

这个页面的作用其实很简单,就是在用户打开这个注册页面填写完自己的用户名之后准备填写其它信息(就是鼠标从用户名文本框移开后)时就能获知自己的用户名是否已经被注册,还有另外一个效果,就是在用户注册时实现了省(直辖市)、市(区县)、县三级联动的效果,因为使用了微软 AJAX 控件,所以操作过程中整个页面不会全部刷新,只有局部刷新效果。

在使用微软 AJAX 服务器控件过程中需要注意一些事项,就上面的例子中需要注意的事项如下:

总结

其实这篇文章是新瓶装旧酒(和 AJAX 一样),里面用到的代码都是以前在博客文章中出现的,这篇文章只不过做了一个综合性的比较而已。

对于上面出现的这么多选择,我们不必一味去追问哪种比哪种一定要好,实际上很多技术都有自己的使用场合的,没有绝对在所有领域所有场合都是最佳的(那就好像找一匹不吃草且跑得快的马)。控制越灵活的需要对脚本知识掌握越高,开发速度也相对低;开发速度越高、调试越容易的控制起来相对较难一些(就像武学一样,绝对高手飞花摘叶可以杀人,花花草草找起来很简单,但是没有深厚的功力不行;倚天屠龙即使在普通人手里也可以让他威力大增,但是不是每个人都有这种机会)。

对于初学者或者初级开发人员我建议如下:

如果开发简单 AJAX 应用,使用 AJAX 控件首选,无需任何脚本知识;

如果开发复杂 AJAX 应用,建议使用 jQuery ,这是一个可以用于多种动态网页编程的 Javascript 脚本库。

分享到:
评论

相关推荐

    ASP.NET AJAX程序设计——第I卷:服务器端ASP.NET 2.0 AJAX Extensions与ASP.NET AJAX Control Toolkit 源代码

    这部分内容不需要读者有任何的客户端开发知识,只要在Visual Stuio中轻松拖放即可实现强大的客户端Ajax功能,例如局部页面更新、异步回送、拖放、动画等,非常适合为现有的ASP.NET 2.0应用程序添加少量的Ajax特性,...

    完全手册ASP.NET AJAX实用开发详解 源码

    本书从易到难、由浅入深、循序渐进系统地介绍了ASP.NET AJAX(C#)知识点和基于AJAX的Web应用系统的开发技术。全书通俗易懂,大量的实例供读者更加深刻地巩固所学习的知识,使读者更好地进行开发实践。 本书共分为15...

    ASP.net AJAX Web应用开发秘诀.rar

    ASP.net AJAX Web应用开发秘诀.rar ASP.net AJAX Web应用开发秘诀.rar ASP.net AJAX Web应用开发秘诀.rar

    ASP.NET_AJAX入门系列

    ASP.NET_AJAX_在Web开发中的应用.doc ASP.NET_AJAX入门系列:Timer控件简单使用.doc ASP.NET_AJAX入门系列:UpdateProgress控件简单介绍.doc ASP.NET_AJAX入门系列:使用ScriptManagerProxy控件.doc ASP.NET_AJAX...

    [ASP.NET.AJAX编程参考手册(涵盖ASP.NET.3.5及2.0)].(美)霍斯拉维.扫描版.pdf

    本书将为您提供开发ASP.NET AJAX应用所必需的技能和知识。 内容简介 本书以AJAX为核心阐述对象,介绍了它对JavaScript所做的各种扩展,还介绍了在ASP.NET环境下创建客户端应用所需的一些核心控件。通过大量的实例...

    ASP.NET AJAX程序设计——第I卷:服务器端ASP.NET 2.0 AJAX 书中代码2

    这部分内容不需要读者有任何的客户端开发知识,只要在Visual Stuio中轻松拖放即可实现强大的客户端Ajax功能,例如局部页面更新、异步回送、拖放、动画等,非常适合为现有的ASP.NET 2.0应用程序添加少量的Ajax特性,...

    ASP.NET AJAX程序设计——第I卷:服务器端ASP.NET 2.0 AJAX 书中代码4

    这部分内容不需要读者有任何的客户端开发知识,只要在Visual Stuio中轻松拖放即可实现强大的客户端Ajax功能,例如局部页面更新、异步回送、拖放、动画等,非常适合为现有的ASP.NET 2.0应用程序添加少量的Ajax特性,...

    asp.net+ajax

    第5章 ASP.net Ajax Control Toolkit控件应用。包括:利用AutoCompleteExtender控件实现自动完成的功能;利用NoBot控件自动拒绝垃圾发布程序;利用ReorderList控件实现拖拽排序;利用Rating控件实现评分功能;利用...

    ASP.NET AJAX经典范例168 VC#版 (代码) Part 12

    本书详细介绍ASP.NET AJAX在Web开发上的应用。主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能...

    ASP.NET AJAX入门系列教程

     ASP.NET AJAX是一个完整的开发框架,其服务器端编程模型相对于客户端编程模型较为简单,而且容易与现有的ASP.NET程序相结合,通常实现复杂的功能只需要在页面中拖几个控件,而不必了解深层次的工作原理,除此之外...

    ASP.NET 2.0 Ajax程序设计——第II卷:客户端Microsoft AJAX Library与异步通信层源代码

    还介绍了ASP.NET AJAX 框架为开发者在客户端用JavaScript 与服务器端通信而创造的种种便利条件,包括直接调用Web Service、页面方法以及ASP.NET 应用服务(例如身份验证、用户个性化以及全球化服务)等。ASP.NET ...

    ASP.NET AJAX经典范例168 VC#版 (代码) Part 7

    本书详细介绍ASP.NET AJAX在Web开发上的应用。主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能...

    ASP.NET3.5AJAX高级编程.part2.rar

    并概述了体系结构,包括ASP.NET服务器元素、客户端JavaScript库和运行库,能够帮助读者清晰地理解ASENET 3.5 AJAX的各个部分之间的关系,从而为开发功能丰富的应用程序和进行各种定制提供一个内容全面的框架。...

    ASP.NET AJAX经典范例168 VC#版 (代码) Part 11

    本书详细介绍ASP.NET AJAX在Web开发上的应用。主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能...

    ASP.NET和AJAX简洁教程

    页面通过ASP.NET AJAX功能,调用一个Web Service来完成职员表中的数据增、删、改、查。 创建一个Web Service 作为开始,使用Visual Studio 2005创建一个新的Web站点,注意把ASP.NET AJAX项目模板添加到新站点...

    ASP.NET AJAX经典范例168 VC#版 (代码) Part 14

    本书详细介绍ASP.NET AJAX在Web开发上的应用。主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能...

    ASP.NET AJAX经典范例168 VC#版 (代码) Part 8

    本书详细介绍ASP.NET AJAX在Web开发上的应用。主要内容包括:ASP .NET AJAX技术慨述、实现异步局部更新页面、UpdatePanel编程功能、 PageRequestManager的使用方法、Timer控件、Control Toolkit方法、结合 OOP功能...

    ASP.net +ajax 网站开发典型实例第五篇

    ASP.net +ajax 网站开发典型实例 ASP.networkAjax框架应用篇

    ASP.NET AJAX实战源码

    4.1 ASP.NET开发人员的Ajax 86 4.2 改进原有ASP.NET网站 87 4.2.1 一个示例ASP.NET网站 88 4.2.2 配置现有的ASP.NET网站 88 4.3 ScriptManager: Ajax页面的大脑 90 4.3.1 理解ScriptManager 90 4.3.2 部署...

    ASP.NET AJAX程序设计——第I卷:服务器端ASP.NET 2.0 AJAX 书中代码3

    这部分内容不需要读者有任何的客户端开发知识,只要在Visual Stuio中轻松拖放即可实现强大的客户端Ajax功能,例如局部页面更新、异步回送、拖放、动画等,非常适合为现有的ASP.NET 2.0应用程序添加少量的Ajax特性,...

Global site tag (gtag.js) - Google Analytics