17.1 ASP.NET AJAX概述
在学习ASP.NET AJAX之前,首先要知道什么是AJAX?AJAX是Asynchronous JavaScfipt and XML(异步JavaScript和XML)的缩写,这个术语是由Adaptive Path公司的创办人之一兼董事长Jesse James Garrett发明的。Jesse Jarnes Garrett在其论文“AJAX:Web应用程序的新途径”中创造了这个术语,它描述了请求和提交额外信息时发生于客户端和服务器之间的高级交互。
AJAX包括了多种数据通信的可能组合,但它们都围绕一个中心——附加的数据请求是在页面完全载入之后由客户端向服务器发起的。这允许应用程序开发者超越缓慢的、传统的应用程序流程,创建与用户相关的额外交互。
AJAX并不是一种全新的技术,而是一种方法。使用几种现有技术,开发Web应用软件,使得Web应用程序就像桌面应用程序一样,可以使用动态用户界面和漂亮的控件。下面是AJAX应用程序所用到的基本技术:
● HTML用于建立Web表单并确定应用程序其他部分使用的字段。
● JavaScript代码是运行AJAX应用程序的核心代码,帮助改进与服务器应用程序的通信。
● DHTML或Dynamic HTML,用于动态更新表单。使用div、span和其他动态HTML元素来标记HTML。
● 文档对象模型DOM用于处理HTML结构(通过JavaScript代码)和服务器返回的XML。
AJAX中,异步这个词是指AJAX应用软件与主机服务器进行联系的方式。在原来的模式中,每当用户执行某种操作向服务器请求获得新数据时,Web浏览器就会更新当前窗口。如果使用AJAX的异步模式,浏览器就不必等用户请求操作全部完成,也不必更新整个窗口就可以显示新获取的数据,只要来回传送采用XML格式的数据。在浏览器里面运行的JavaScript代码就可以与服务器进行联系。JavaScript代码还可以把样式表加到检索到的数据上,然后在现有网页的某个部分加以显示。
真正与AJAX相关的新名词应该是XMLHttpRequest,它是一个JavaScript对象,最早在IE 5中出现,现在是在多数浏览器得到支持的用来实现异步通信的对象。如同名字所表示的,它允许一个客户端脚本来执行HTTP请求,并且将解析一个XML格式的服务器响应。大家都知道,B/S模式是利用浏览器作为其通用的客户端,所以要想异步通信成为可能,必须要得到浏览器的支持。如果不是有了浏览器对XMLHttpRequest对象的广泛支持,可能不会看到AJAX的今天。
AJAX处理过程中,首先需要创建一个XMLHttpRequest实例。使用HTTP方法(GET或POST)来处理请求,并将目标URL设置到XMLHttpRequest对象上。
当用户发送HTTP请求时,不希望浏览器挂起并等待服务器的响应,取而代之的是,希望通过页面继续响应其他的界面交互,并在服务器响应真正到达后处理它们。为了达到这个目的,用户需要向XMLHttpRequest注册一个回调函数,并异步发送XMLHttpRequest请求。请求发送完毕后,控制权马上被返回到浏览器,当服务器响应到达时,回调函数将会被调用。
在Web服务器上,到达的请求与任何其他HttpRequest一样.等待服务器处理。Web应用程序解析请求参数后,执行必需的应用逻辑,将响应序列化到XML中。并将它返回给客户端。
在面向消费者的诸多应用当中,Google的Gmail和GoogleMaps就是最常见的例子。在Gmail当中,AJAX负责如何开启线程会话,以显示不同邮件的文本内容。而在Maps当中,AJAX允许用户以一种似乎无缝的方式拖拉及滚动地图。
了解了AJAX的概念,再来看ASP.NET AJAX。ASP.NET AJAX是微软公司专门为ASP.NET应用程序提供AJAX技术支持的开发框架,通过它原有的ASP.NET应用程序可以很轻松地使用ASP.NET AJAX所提供的基础架构,开发出具有AJAX能力的Web应用程序。
ASP.NET AJAX能够快速地创建具有丰富用户体验的页面,而且这些页面由安全的用户接口元素组成。ASP.NET AJAX提供了一个客户端脚本(client-script)库,包含跨浏览器的ECMAScript(如JavaScript)和动态HTML(DHTML)技术,而且ASP.NET AJAX把这些技术同ASP.NET开发平台结合起来。使用ASP.NET AJAX,可以在很大程度上的善Web程序的用户体验和提高应用程序执行效率。
与那些完全基于服务器端的Web应用程序相比,ASP.NET AJAX能够创建丰富的Web应用程序,它提供了以下优势:
● 提高浏览器中Web页面的执行效率。
● 包含了开发人员熟悉的UI元素,比如进程指标控件、Tooltips控件和弹出式的窗口。
● 实现了页面的局部刷新,只刷新已被更新的页面。
● 实现客户端与ASP.NET应用服务的集成以进行表单认证和用户配置。
● 通过调用Web服务整合不同的数据源数据。
● 简化了服务器控件的定制来实现客户端功能。
● 支持最流行的和通用的浏览器,包括微软IE、Firefox和Safari。
● 具有可视化的开发界面,使用Visual Studio 2012可以轻松自如地开发AJAX程序。
ASP.NET AJAX包括客户端脚本(client-script)库和服务器端组件,这些都被集成到一个稳健的开发框架,如图17-1所示。此外,ASP.NET AJAX还提供了控件工具包以支持Web程序的开发。
图17-1 ASP.NETAJAX体系结构
17.1.1 客户端特征
ASP.NET AJAX客户端脚本库是100%面向对象的JavaScript客户端脚本框架并且是可扩展的,允许开发人员很容易地构建拥有丰富UI功能和连接Web Service的AJAX网页应用程序。通过ASP.NET AJAX,开发人员能够使用DHTML、JavaScript和XMLHTTP来编写Web应用程序,而无需掌握这些技术的细节。
ASP.NET AJAX客户端脚本框架可以在所有常用浏览器上运行,而不需要Web服务器。它不需要安装,只要在页面中引用正确的脚本文件即可。
ASP.NET AJAX客户端脚本框架包括以下各层内容:
● 一个浏览器兼容层。这个层为ASP.NETAJAX脚本提供了各种常用浏览器的兼容性,这些浏览器包括微软的IE、Mozilla的Firefox和苹果的Safari等。
● ASP.NETAJAX核心服务,这个核心服务扩展了JavaScript,例如把类、命名空间、事件句柄、继承、数据类型、对象序列化扩展到JavaScript中。
● 一个ASP.NETAJAX的基础类库,这个类库包括组件,例如字符串创建器和扩展错误处理。
● 一个网络层,该层用来处理基于Web服务和应用程序的通信以及管理异步远程方法的调用。
17.1.2 服务器端特征
微软公司专门为ASP.NET应用程序设计了一组AJAX风格的服务器控件,并且加强了现有ASP.NET页面框架和控件,以便支持ASP.NET AJAX客户端脚本框架。
1.脚本支持
“异步客户端回调”的特性,使得构建没有中断的页面变得很容易。“异步客户端回调”包装了XMLHTTP,能够在很多浏览器上工作。ASP.NET本身包括了很多使用回调的控件,包括具有客户端分页和排序功能的GridView和DataView控件,以及TreeView控件的虚拟列表支持。ASP.NET AJAX客户端脚本框架将完全支持ASP.NET的回调,但微软希望进一步增强浏览器和服务器之间的集成性。例如,可以将ASP.NET AJAX客户端控件的数据绑定为服务器上的ASP.NET数据源控件,并且可以从客户端异步地控制Web页面的显示。
2.Web Service集成
服务端框架使用了一套扩展的机制使程序中的Web Service可以被客户端Java Script直接访问。可以在Web Service上标记[ScriptService]的属性,就可以简单地使该Web Service能够被客户端的JavaScript直接访问。
3.应用程序服务
服务端框架提供了一些内置的应用服务,如授权服务Authentication和个性化支持服务Prifile。
4.服务器端控件
ASP.NET AJAX服务器控件包括服务器和代码,以实现类似于AJAX的行为。表17-1列出了最常用的ASP.NET AJAX服务器控件。
表17-1 最常用的ASP.NET AJAX服务器控件