初學 ASP.NET AJAX (一):構建 ASP.NET AJAX 開發環境

1 概述
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 服務器和客戶端架構
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 吧...
 
發佈了33 篇原創文章 · 獲贊 0 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章