1 概述Microsoft ASP.NET AJAX 是 Microsoft 公司對 Ajax 技術的完美封裝。它能使你已快速的建立包含豐富使用者體驗的使用者介面的
Web 頁面,提供加入了跨瀏覽器的 ECMAScript(Javascript) 和動態超文字標記語言(DHTML) 技術的用戶端指令碼,並與基於伺服器的
ASP.NET 2.0 平台進行了整合。它還對 Javascript 進行了非常巧妙的物件導向方面的擴充,以提供對用戶端物件導向編程的支援;提供了與
ASP.NET 緊密結合的用戶端/伺服器端組件、類型的自動轉換;自動為用戶端暴露伺服器端的代碼的方法;為遠程 Web Service
提供本地用戶端代理等許多優美的功能。使用 ASP.NET AJAX ,可以提高應用程式的使用者體驗和效率。
ASP.NET AJAX 由用戶端指令碼庫和伺服器端組件緩衝,以提供一個健壯的開發架構。除了 ASP.NET AJAX 以外,還可以使用 ASP.NET
AJAX Control Toolkit 和由社區提供的 ASP.NET AJAX Futures 的特性。
ASP.NET AJAX 的架構如所示:
圖1 ASP.NET AJAX 伺服器和用戶端架構
2 下載
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 2.0 AJAX Extensions 1.0,再安裝ASP.NET AJAX Control
Toolkit,再安裝其他組件。所有的安裝基本上都只要單擊下一步即可,在此不再詳述。
安裝必需的組件包後,可以在建立網站的對話方塊中看到多了一項“ASP.NET AJAX-Enabled Web Site”,用它即可以建立經過基本配置的Ajax
網站,2所示:
圖2 建立網站對話方塊
4 配置ASP.NET AJAX 的配置在很多時候是在用於以前開發的沒有使用 AJAX 的 ASP.NET 應用程式時才會注意到它,不過,瞭解這些配置,對於用好
ASP.NET AJAX 也是必不可少的。
在此僅對所有的配置元素進行了簡要的介紹,在以後的使用中再詳細對他們進行說明。
4.1 在新的 Web 網站中使用 ASP.NET AJAX Web 設定檔當建立一個新的 ASP.NET AJAX Web 網站時,可以使用提供在安裝包中的 Web.config 檔案來添加配置設定。在 Visual Studio
中,用於 Microsoft ASP.NET AJAX 的 Web.config 檔案在建立新的 “ASP.NET AJAX-enabled Web
Site”時就已經包含在項目中。
如果要手工添加一個 Web.config 到建立的 Web
網站中,可以從安裝目錄擷取它的一個副本,將它複製到網站的根目錄下即可。預設情況下,該檔案被放在下列位置:磁碟機:"Program Files"Microsoft ASP.NET"ASP.NET 2.0 AJAX Extensions"v1.0.nnnn
4.2 添加 ASP.NET AJAX 配置元素到已存在的 Web 網站中對於一個已存在的網站,通常有一些值是要保留的,在這種情況下,就可以添加新的 ASP.NET AJAX 配置元素到已存在的 Web.config中去。
新的元素是下列配置節的組成部分:
- <configSections> 元素
- <controls> 元素
- <assemblies> 元素
- <httpHandlers> 元素
- <httpModules> 元素
- <system.web.extensions> 元素
- <system.webserver> 元素
4.2.1 <configSections> 元素<configSections> 元素建立了用於 SystemWebExtensionsSectionGroup
類的配置節和子配置節,可以為<system.web.extensions>元素中的這些節設定屬性。
下列樣本展示了用於 ASP.NET AJAX 的<configSections>元素,可以將它添加到已存在的 Web.config 檔案中做為
<configuration> 元素的子項目。更詳細的資訊,請參見 4.2.6 <system.web.extensions>元素。<configuration>
<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>
4.2.2 <controls> 元素<controls> 元素註冊了在 System.Web.Extensions 程式集中的 ASP.NET AJAX
命名空間,並為這些命名空間映射 asp 標記首碼別名。在ASP.NET AJAX 命名空間中的控制項可以用以下形式在 Web 頁面中使用:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
下列樣本展示了用於 ASP.NET AJAX 的<controls> 元素,可以將此節添加到已存在的 Web.config 檔案中做為
<system.web><pages> 元素的一個子項目:
<system.web>
<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> 元素<assemblies> 元素註冊 System.Web.Extensions 程式集。
下例樣本展示了用於 ASP.NET AJAX 的 <assemblies> 元素,可以將此節添加到已存在的 Web.config 檔案中做為
<system.web><compilation> 元素的一個子項目:
<system.web>
<compilation>
<assemblies>
<add assembly="System.Web.Extensions,
Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</assemblies>
</compilation>
</system.web>
如果要調試該程式集,可以添加 <compilation> 的屬性 debug="true" 。
4.2.4 <httpHandlers>元素<httpHandlers> 元素添加用於指令碼請求的新的處理常式。
下例樣本展示了用於 ASP.NET AJAX 的 <httpHandlers> 元素,可以將此節添加到已存在的 Web.config 檔案中做為
<system.web> 元素的一個子項目:<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>
4.2.5 <httpModules> 元素<httpModules> 元素定義在 ASP.NET AJAX 中使用的 HTTP 模組。
下例樣本展示了用於 ASP.NET AJAX 的 <httpModules> 元素,可以將此節添加到已存在的 Web.config 檔案中做為
<system.web> 元素的一個子項目:<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>
4.2.6 <system.web.extensions> 元素<system.web.extensions> 元素提供了配置如何調用 Microsoft ASP.NET AJAX 應用程式中的 Web
服務的元素。<jsonSerialization>元素指定定製類型的轉換器以覆蓋 JSON
序列化的預設設定,<converters> 元素指定定製的類型轉換器。<authenticationService>
元素用於使身份認證服務可用或不可用。<profileService>元素用於使個人化資訊服務可用或不可用,並指定服務暴露的屬性。<scriptResourceHandler>
元素用於使緩衝可用或不可用,以及由指令碼使用的資源壓縮。
<scriptResourceHandler> 元素、<authenticationService>
元素和<profileService> 元素只能定義在 Machine.config 檔案或應用程式根目錄下的 Web.config
檔案中。<jsonSerialization>元素則還可以定義在Web 網站的子檔案夾下的 Web.config 中。
下例樣本展示了用於 ASP.NET AJAX 的 <system.web.extensions> 元素,可以將此節添加到已存在的
Web.config 檔案中做為 <configuration> 元素的一個子項目:
<system.web.extensions>
<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>
4.2.7 <system.webserver> 元素<system.webserver> 元素包含用於 Microsoft Internet 資訊服務(IIS) 7.0 的配置設定。
下例樣本展示了用於 ASP.NET AJAX 的 <system.webserver> 元素,可以將此節添加到已存在的 Web.config
檔案中做為 <configuration> 元素的一個子項目:<system.webServer>
<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>
5 總結
總的來說,構建一個 ASP.NET AJAX 的開發環境還是很簡單的,好了,讓我們開始 AJAX 吧...