Microsoft ASP.NET AJAX 是 Microsoft 公司對 AJax 技術的完美封裝。它能使你已快速的創建包含豐富用戶體驗的用戶界面的 Web 頁面,提供加入了跨浏覽器的 ECMAScript(Javascript) 和動態 HTML(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 服務器和客戶端架構
下載
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 ,可以根據需要進行下載。
安裝
安裝的順序是先安裝ASP.NET 2.0 AJax Extensions 1.0,再安裝ASP.Net AJax Control Toolkit,再安裝其他組件。所有的安裝基本上都只要單擊下一步即可,在此不再詳述。
安裝必需的組件包後,可以在新建網站的對話框中看到多了一項“ASP.Net AJAX-Enabled Web Site”,用它即可以新建經過基本配置的AJax 網站,如圖2所示:
圖2 新建網站對話框
配置
ASP.Net AJax 的配置在很多時候是在用於以前開發的沒有使用 AJax 的 ASP.NET 應用程序時才會注意到它,不過,了解這些配置,對於用好 ASP.Net AJax 也是必不可少的。
在此僅對所有的配置元素進行了簡要的介紹,在以後的使用中再詳細對他們進行說明。
在新的 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
添加 ASP.Net AJax 配置元素到已存在的 Web 站點中
對於一個已存在的站點,通常有一些值是要保留的,在這種情況下,就可以添加新的 ASP.Net AJax 配置元素到已存在的 Web.config中去。
新的元素是下列配置節的組成部分:
<configSections>
下列示例展示了用於 ASP.Net AJax 的
<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>
<controls>
<ASP:ScriptManager ID="ScriptManager1" runat="server" />
下列示例展示了用於 ASP.Net AJax 的<controls>
<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>
<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>
如果要調試該程序集,可以添加
<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>
<httpModules>
下例示例展示了用於 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>
<system.web.extensions>
<scriptResourceHandler>元素、 <authenticationService>元素和<profileService>
下例示例展示了用於 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>
<system.webserver>
下例示例展示了用於 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>
總結
總的來說,構建一個 ASP.Net AJax 的開發環境還是很簡單的。