ASP.NET AJAX 由客户端脚本库和服务器端组件缓存,以提供一个健壮的开发框架。除了 ASP.NET AJAX 以外,还可以使用 ASP.NET AJAX Control Toolkit 和由社区提供的 ASP.NET AJAX Futures 的特性。
ASP.NET AJAX 的架构如下图所示:
图1 ASP.NET AJAX 服务器和客户端架构
ASP.NET AJAX 必需组件包括:
ASP.NET 2.0 AJAX Extensions 1.0 :此下载安装用于开发和运行以服务器为中心或以客户端为中心的开发模型的 Ajax 类应用程序的框架,并且由 Microsoft 完全支持。在安装 ASP.NET Futures 或 ASP.NET AJAX Toolkit 之前必须安装它。另外,还可以下载ASP.NET AJAX 的文档 (非必需),文档中包含有可以帮助你最大限度的使用 ASP.NET AJAX 工作示例。
ASP.NET AJAX Control Toolkit :这是一个由示例和组件组成的共享源码社区项目,它使开发比以往使用 AJAX 控件和扩展的开发更加容易。Control Toolkit 提供了可运行的示例和丰富的 SDK 以简化定制 AJAX 控件和扩展程序的创建。
可选的组件包括:ASP.NET Futures (July 2007) 、ASP.NET 2.0 AJAX Extensions 1.0 源码 、示例应用程序 和 Microsoft AJAX Library ,可以根据需要进行下载。
3 安装
安装必需的组件包后,可以在新建网站的对话框中看到多了一项“ASP.NET AJAX-Enabled Web Site”,用它即可以新建经过基本配置的Ajax 网站,如图2所示:
在此仅对所有的配置元素进行了简要的介绍,在以后的使用中再详细对他们进行说明。
如果要手工添加一个 Web.config 到新建的 Web 站点中,可以从安装目录获取它的一个副本,将它复制到站点的根目录下即可。默认情况下,该文件被放在下列位置:
4.2 添加 ASP.NET AJAX 配置元素到已存在的 Web 站点中
新的元素是下列配置节的组成部分:
- <configSections> 元素
- <controls> 元素
- <assemblies> 元素
- <httpHandlers> 元素
- <httpModules> 元素
- <system.web.extensions> 元素
- <system.webserver> 元素
下列示例展示了用于 ASP.NET AJAX 的<configSections>元素,可以将它添加到已存在的 Web.config 文件中做为 <configuration> 元素的子元素。更详细的信息,请参见 4.2.6 <system.web.extensions>元素。
<configSections>
<sectionGroup name="system.web.extensions"
type="System.Web.Configuration.SystemWebExtensionsSectionGroup,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35">
<sectionGroup name="scripting"
type="System.Web.Configuration.ScriptingSectionGroup,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35">
<section name="scriptResourceHandler"
type="System.Web.Configuration.ScriptingScriptResourceHandlerSection,
System.Web.Extensions, Version=1.0.61025.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"
requirePermission="false"
allowDefinition="MachineToApplication"/>
<sectionGroup name="webServices"
type="System.Web.Configuration.ScriptingWebServicesSectionGroup,
System.Web.Extensions, Version=1.0.61025.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="jsonSerialization"
type="System.Web.Configuration.ScriptingJsonSerializationSection,
System.Web.Extensions, Version=1.0.61025.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"
requirePermission="false" allowDefinition="Everywhere" />
<section name="profileService"
type="System.Web.Configuration.ScriptingProfileServiceSection,
System.Web.Extensions, Version=1.0.61025.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"
requirePermission="false"
allowDefinition="MachineToApplication" />
<section name="authenticationService"
type="System.Web.Configuration.ScriptingAuthenticationServiceSection,
System.Web.Extensions, Version=1.0.61025.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"
requirePermission="false"
allowDefinition="MachineToApplication" />
</sectionGroup>
</sectionGroup>
</sectionGroup>
</configSections>
</configuration>
<pages>
<controls>
<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</controls>
</pages>
</system.web>
4.2.3 <assemblies> 元素
下例示例展示了用于 ASP.NET AJAX 的 <assemblies> 元素,可以将此节添加到已存在的 Web.config 文件中做为 <system.web><compilation> 元素的一个子元素:
<compilation>
<assemblies>
<add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</assemblies>
</compilation>
</system.web>
下例示例展示了用于 ASP.NET AJAX 的 <httpHandlers> 元素,可以将此节添加到已存在的 Web.config 文件中做为 <system.web> 元素的一个子元素:
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers>
</system.web>
下例示例展示了用于 ASP.NET AJAX 的 <httpModules> 元素,可以将此节添加到已存在的 Web.config 文件中做为 <system.web> 元素的一个子元素:
<httpModules>
<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions,
Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</httpModules>
</system.web>
<scriptResourceHandler> 元素、<authenticationService> 元素和<profileService> 元素只能定义在 Machine.config 文件或应用程序根目录下的 Web.config 文件中。<jsonSerialization>元素则还可以定义在Web 站点的子文件夹下的 Web.config 中。
下例示例展示了用于 ASP.NET AJAX 的 <system.web.extensions> 元素,可以将此节添加到已存在的 Web.config 文件中做为 <configuration> 元素的一个子元素:
<scripting>
<webServices>
<!-- 定制 maxJsonLength 并添加一个定制的 JSON 转换程序。 -->
<!--
<jsonSerialization maxJsonLength="500">
<converters>
<add name="ConvertMe"
type="Acme.SubAcme.ConvertMeTypeConverter"/>
</converters>
</jsonSerialization>
-->
<!-- 使论证服务可用,如果合适包括 requireSSL="true" 。-->
<!--
<authenticationService enabled="true" requireSSL = "true|false"/>
-->
<!-- 使个性化服务可用。要允许在 ASP.NET AJAX 应用程序中获取或修改个性化属性,
需要将每个属性的名称添加到 readAccessProperties 和 writeAccessProperties 属性中。 -->
<!--
<profileService enabled="true"
readAccessProperties="propertyname1,propertyname2"
writeAccessProperties="propertyname1,propertyname2" />
-->
</webServices>
<!-- 开启对客户端脚本文件的压缩或缓存的支持。 -->
<!--
<scriptResourceHandler enableCompression="true"
enableCaching="true" />
-->
</scripting>
</system.web.extensions>
下例示例展示了用于 ASP.NET AJAX 的 <system.webserver> 元素,可以将此节添加到已存在的 Web.config 文件中做为 <configuration> 元素的一个子元素:
<validation validateIntegratedModeConfiguration="false" />
<modules>
<add name="ScriptModule"
preCondition="integratedMode"
type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</modules>
<handlers>
<remove name="WebServiceHandlerFactory-ISAPI-2.0"/>
<add name="ScriptHandlerFactory" verb="*" path="*.asmx"
preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add name="ScriptHandlerFactoryAppServices" verb="*"
path="*_AppService.axd" preCondition="integratedMode"
type="System.Web.Script.Services.ScriptHandlerFactory,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35"/>
<add name="ScriptResource" preCondition="integratedMode"
verb="GET,HEAD" path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler,
System.Web.Extensions, Version=1.0.61025.0, Culture=neutral,
PublicKeyToken=31bf3856ad364e35" />
</handlers>
</system.webServer>
总的来说,构建一个 ASP.NET AJAX 的开发环境还是很简单的,好了,让我们开始 AJAX 吧...