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 吧...