ASP.NET AJAX 概述

更新:2007 年 11 月

使用 ASP.NET 中的 AJAX 功能可快速创建包含具有响应能力且熟悉的用户界面 (UI) 元素的网页,以提供丰富的用户体验。AJAX 功能包括客户端脚本库,这些库将跨浏览器的 ECMAScript (JavaScript) 和动态的 HTML (DHTML) 技术结合在一起,并与基于 ASP.NET 服务器的开发平台集成。通过使用 AJAX 功能,可以改进用户体验并提高 Web 应用程序的效率。

为何使用 ASP.NET AJAX 功能?

使用 ASP.NET 中的 AJAX 功能,可以生成丰富的 Web 应用程序。与完全基于服务器的 Web 应用程序相比,这些应用程序具有很多优点。支持 AJAX 的应用程序可以提供:

  • 增强的效率,因为网页的大部分处理工作是在浏览器中执行的。

  • 熟悉的 UI 元素,如进度指示器、工具提示和弹出窗口。

  • 部分页更新,只刷新已发生更改的网页部分。

  • 客户端与用于 Forms 身份验证的 ASP.NET 应用程序服务、角色和用户配置文件的集成。

  • 自动生成的代理类,可简化从客户端脚本调用 Web 服务方法的过程。

  • 一个框架,可让您自定义服务器控件以包含客户端功能。

  • 对大部分流行的和常用的浏览器的支持,其中包括 Microsoft Internet Explorer、Mozilla Firefox 和 Apple Safari。

ASP.NET 中的 AJAX 功能的结构

ASP.NET 中的 AJAX 功能结构由两部分组成:客户端脚本库和服务器组件。这两个组成部分集成在一起以提供可靠的开发框架。

Bb398874.alert_note(zh-cn,VS.90).gif说明:

除 ASP.NET 中的 AJAX 功能之外,还可以使用 ASP.NET AJAX 控件工具箱和 Microsoft ASP.NET 将来版本中的功能,它们都受社区支持。

下图显示客户端脚本库和服务器组件中包含的功能。

ASP.NET AJAX 客户端和服务器结构
ASP.NET AJAX 服务器和客户端体系结构

此图显示了基于客户端的 Microsoft AJAX Library 的功能,其中包含对创建客户端组件、浏览器兼容性以及网络和核心服务的支持。还显示了基于服务器的 AJAX 特性的功能,其中包括脚本支持、Web 服务、应用程序服务和服务器控件。以下各节对此图进行了更详细的描述。

AJAX 客户端结构

客户端结构包括用于组件支持、浏览器兼容性、网络和核心服务的库。

组件

客户端组件在服务器中启用丰富的行为,而不需要回发。这些组件分为三个类别:

  • 组件,这些组件是封装代码的非可视对象(如计时器对象)。

  • 行为,这些行为可扩展现有 DOM 元素的基本行为。

  • 控件,这些控件表示具有自定义行为的新的 DOM 元素。

使用的组件类型取决于所需的客户端行为的类型。例如,可使用附加到现有文本框的行为创建该文本框的水印。有关更多信息,请参见创建客户端组件和控件

浏览器兼容性

浏览器兼容性层为最常用的浏览器(包括 Microsoft Internet Explorer、Mozilla Firefox 和 Apple Safari)提供 AJAX 脚本兼容性。这将使您能够针对各种受支持的服务器编写相同的脚本。有关更多信息,请参见支持 AJAX 的 ASP.NET 页面的浏览器安全设置

网络

网络层将处理浏览器中的脚本与基于 Web 的服务和应用程序之间的通信,还将管理异步远程方法调用。在许多常见方案中(如使用 UpdatePanel 控件的部分页更新),将自动使用网络层而无需编写任何代码。

网络层还提供对在客户端脚本中访问基于服务器的 Forms 身份验证、角色信息和配置文件信息的支持。只要应用程序具有对 Microsoft AJAX Library 的访问权,在不是使用 ASP.NET 创建的 Web 应用程序中也可获得此支持。有关更多信息,请参见 ASP.NET AJAX 中的 Web 服务

核心服务

ASP.NET 中的 AJAX 客户端脚本库由 JavaScript (.js) 文件组成,这些文件提供用于面向对象的开发的功能。包含在 ASP.NET AJAX 客户端脚本库中的面向对象的功能在客户端脚本中启用高级别的一致性和模块化。下面的核心服务是客户端结构的一部分:

  • 针对 JavaScript 的面向对象的扩展,如类、命名空间、事件处理程序、继承、数据类型和对象序列化。

  • 一个基类库,其中包含字符串生成器和扩展的错误处理这样的组件。

  • 对 JavaScript 库的支持,这些库会嵌入到程序集中或作为单独的 JavaScript (.js) 文件提供。在程序集中嵌入 JavaScript 库可以使部署应用程序更容易,并有助于解决版本问题。

  • 有关更多信息,请参见使用 Microsoft AJAX Library 创建自定义客户端脚本

调试和错误处理

核心服务包括 Sys.Debug 类,此类提供用于在网页的末尾以可读形式显示对象的方法。该类还显示跟踪消息,使您能够断言,并让您可以中断至启动调试器。一个扩展的 Error 对象 API 将提供有用的异常详细信息,并支持发布和调试模式。有关更多信息,请参见 调试和跟踪 AJAX 应用程序概述

全球化

ASP.NET 中的 AJAX 服务器和客户端结构提供用于本地化和全球化客户端脚本的模型。这将使您能够设计使用单个代码库为多个区域设置(语言和区域性)提供 UI 的应用程序。例如,AJAX 结构使 JavaScript 代码能够根据用户浏览器的区域设置自动为 DateNumber 对象设置格式,而无需回发到服务器。有关更多信息,请参见演练:使用客户端脚本全球化日期

AJAX 服务器结构

支持 AJAX 开发的服务器模块由管理应用程序的 UI 和流的 ASP.NET Web 服务器控件和组件组成。这些服务器模块还管理序列化、验证、控件扩展性等等。还有一些 ASP.NET Web 服务使您能够允许访问用于 Forms 身份验证、角色和用户配置文件的 ASP.NET 应用程序服务。

脚本支持

通过使用从服务器发送到客户端的支持脚本,可实现 ASP.NET 中的 AJAX 功能。根据启用的 AJAX 功能,会将不同的脚本发送到浏览器。

还可以为 ASP.NET 应用程序创建自定义客户端脚本。在这种情况下,还可以使用 AJAX 功能来管理作为静态 .js 文件(磁盘上)或作为资源嵌入到程序集中的 .js 文件的自定义脚本。

ASP.NET AJAX 功能包括一个用于发布模式和调试模式的模型。发布模式提供错误检查和异常处理,并针对性能进行了优化,同时使用最少量的脚本。调试模式提供更可靠的调试功能,如类型和参数检查。当应用程序处于调试模式时,ASP.NET 将运行调试版本。这将使您能够在调试脚本中引发异常,同时保持最少数量的发布代码。

对 ASP.NET 中的 AJAX 的脚本支持可用于提供两个重要功能:

本地化

ASP.NET AJAX 结构以 ASP.NET 2.0 本地化模型为基础进行构建。它提供对嵌入到程序集中的或在磁盘上提供的本地化 .js 文件的其他支持。ASP.NET 可以自动针对特定语言和区域提供本地化的客户端脚本和资源。

有关更多信息,请参见下列主题:

Web 服务

借助 ASP.NET 网页中的 AJAX 功能,可以使用客户端脚本来调用 ASP.NET Web 服务 (.asmx) 和 Windows Communication Foundation (WCF) 服务 (.svc)。请求的脚本引用将自动添加到页,随后它们会自动生成 Web 服务代理类,您可以从客户端脚本使用这些类来调用 Web 服务。

也可以访问 ASP.NET Web 服务,而无需使用 ASP.NET AJAX 服务器控件(例如,如果使用其他 Web 开发环境)。为此,可通过手动在页中包括对 Microsoft AJAX Library、脚本文件和 Web 服务本身的引用。在运行时,ASP.NET 将生成可用于调用这些服务的代理类。有关更多信息,请参见 ASP.NET AJAX 中的 Web 服务

应用程序服务

ASP.NET 中的应用程序服务是基于 ASP.NET Forms 身份验证、角色和用户配置文件的内置 Web 服务。这些服务可由支持 AJAX 的网页中的客户端脚本、Windows 客户端应用程序或 WCF 兼容的客户端调用。有关信息和示例,请参见使用 ASP.NET Web 服务

服务器控件

ASP.NET AJAX 服务器控件由服务器和客户端代码组成,这些代码集成在一起可生成丰富的客户端行为。当您将 AJAX 控件添加到 ASP.NET 网页上时,该页会自动将支持的客户端脚本发送到浏览器以获取 AJAX 功能。可以提供其他的客户端代码来自定义控件的功能,但这不是必需的。

以下列表描述最常使用的 ASP.NET AJAX 服务器控件。

  • ScriptManager
    管理客户端组件、部分页呈现、本地化、全球化和自定义用户脚本的脚本资源。若要使用 UpdatePanelUpdateProgressTimer 控件,则需要 ScriptManager 控件。

  • UpdatePanel
    使您能够刷新页的选定部分,而不是使用同步回发来刷新整个页面。

  • UpdateProgress
    提供有关 UpdatePanel 控件中的部分页更新的状态信息。

  • Timer
    按定义的时间间隔执行回发。可以使用 Timer 控件来发送整个页,或将其与 UpdatePanel 控件一起使用以按定义的时间间隔执行部分页更新。

还可以创建包含 AJAX 客户端行为的自定义 ASP.NET 服务器控件。用于增强其他 ASP.NET Web 控件功能的自定义控件称为“扩展程序控件”。有关更多信息,请参见 向 ASP.NET 控件添加 AJAX 功能ASP.NET AJAX 扩展程序控件概述

AJAX 控件工具箱

ASP.NET AJAX 控件工具箱是示例和组件的集合,这些示例和组件演示一些可使用 ASP.NET AJAX 控件和扩展程序创建的体验。控件工具箱提供了一些示例和功能强大的 SDK,这将使创建和重用自定义控件及扩展程序变得很简单。可以从 ASP.NET Ajax 网站下载 ASP.NET AJAX 控件工具包。ASP.NET AJAX 控件工具箱是受社区支持的。

AJAX 社区支持的将来版本

ASP.NET AJAX 社区支持的将来版本提供了一些功能,这些功能将使用正处于开发阶段且 ASP.NET 中未包含的功能来扩展 ASP.NET 的 AJAX 功能。这包括其他扩展程序控件、对客户端声明性语法 (xml-script) 的支持等等。若要下载并了解有关将来版本的更多信息,请访问网站 ASP.NET AJAX

请参见

概念

支持 AJAX 的 ASP.NET 页面的浏览器安全设置

向 ASP.NET 控件添加 AJAX 功能