2005 年 9 月,ASP.NET 小組發布了代號為“Atlas”的 ASP.NET 中新功能的第一個社區技術預覽 (CTP)。Microsoft® .NET Framework 2.0 的這一功能擴充使開發人員能夠同時利用瀏覽器和伺服器功能,更輕鬆地建立豐富的、互動式網站。
Atlas 支援的這種類型的豐富開發統稱為“AJAX”(非同步 JavaScript 和 XML),這是一個較新的縮寫詞,代表了對某些現有技術的組合。現代瀏覽器包括 XMLHttpRequest 對象,可以從 JavaScript 使用此對象回調伺服器。這使得頁面無需重新整理整頁,即可對使用者輸入做出反應,並執行帶外操作。雖然這一概念大體很簡單,但 AJAX 庫可以大大減輕編寫與伺服器通訊及處理由 Web 服務所返回的 XML 的用戶端 JavaScript 的繁重任務。
AJAX 嘗試解決的這個一般性問題出在 HTTP 協議本身。HTTP 是瀏覽器用來與 Web 服務器通訊以檢索頁面並從瀏覽器向伺服器回傳資料的標準。該協議是無狀態的,即需由伺服器上的代碼負責在頁面重新整理之間保持使用者輸入。一直以來,典型的使用者體驗是整個頁面被重新整理,以將狀態資訊回送到伺服器。然後在發回瀏覽器的 HTML 中恢複頁面上的使用者輸入。
ASP.NET 替您管理此過程,它傳送一個隱藏檢視狀態表單欄位。即使實際上僅頁面上的某部分得到更新,也將傳輸整個頁面的 HTML,並出現暫時空屏。在此重新整理過程中,直到瀏覽器接收並呈現新視圖之後,使用者才能與頁面互動。AJAX 通過使用 XMLHttpRequest 對象回調伺服器以調用 Web 服務而無需重新整理整個頁面,改善了此體驗。然後基於接收的 XML 直接在 JavaScript 中修改被更新的頁面部分。使用者可能甚至不會覺察到發生了頁面更新,並可以繼續讀取頁面或與頁面互動,同時,帶外工作在後台非同步進行。
什麼是 Atlas?
ASP.NET 的 Atlas 功能不僅是用於編寫以用戶端為中心的 Web 應用程式的另一個 AJAX 指令碼庫。Atlas 基於 .NET Framework 2.0 構造並為更好地利用用戶端 JavaScript 和 XMLHttpRequest 對象新增了支援功能。它包括能夠更輕鬆地豐富現有 ASP.NET 應用程式的基於伺服器的功能,以及 Atlas 控制項和服務所使用的用戶端指令碼庫。圖 1 中的體繫結構圖顯示,Atlas 體繫結構跨接用戶端和伺服器,並應被視為用於建立更豐富、響應更及時的跨瀏覽器 Web 應用程式的一組廣泛的開發技術。
圖 1 ASP.NET Atlas 體繫結構
Atlas 支援的場合不限於通過非同步 JavaScript 調用更新頁面地區。您還將獲得其他技術難以實現的更豐富的用戶端體驗。以一個圍繞電影資料構建的 Web 應用程式為例。該應用程式也許需要允許使用者搜尋特定演員。顯然,提供包括所有演員姓名的全面的下拉式清單以便從中選擇並不實際,因此應用程式很可能會將這一問題分解。可能會要求使用者選擇演員姓名的首字母。這樣對伺服器的請求可以提供一個稍稍易於管理的列表,但從使用者體驗角度來說,並不太好。應用程式可能向使用者呈現一個文字框,以便輸入演員的部分姓名。然後伺服器至少可以有一些資料用來縮小搜尋範圍。情況有所改善,但仍然有待改進。而使用 Atlas 之後,您可以提供一個文字框,在使用者鍵入時動態做出反應,以協助縮小搜尋範圍,而無需等待瀏覽器重新整理整個頁面。圖 2 顯示可以如何使用 Atlas 添加自動完成行為,在使用者鍵入時提供反饋。
圖 2 篩選組合框
Atlas CTP 可從以下地址下載:atlas.asp.net。安裝後,它將在 Microsoft Visual Web Developer™ 中添加附加的 C# 和 Visual Basic® .NET 網站模板。在 Visual Web Developer 中建立新的網站項目(單擊“檔案”->“建立”->“網站”)時,您將看到一個類似圖 3 中所示的對話方塊。Atlas 網站包括 Microsoft.Web.Atlas.dll 和更新的 web.config 檔案,該檔案配置 Web 應用程式以使其能夠使用基於 Atlas 的 ASP.NET 功能。在目前的版本中,Microsoft.Web.Atlas.dll 被置於應用程式的 bin 目錄中,作為本地程式集可用於整個應用程式範圍內。
圖 3 建立 Atlas 網站
基於 Atlas 的應用程式可通過將檔案從開發電腦複製到裝有 ASP.NET 2.0 的伺服器而輕鬆部署,無需擔心單獨安裝 Atlas。安裝是在應用程式層級而不是在電腦層級進行。在推出後續 CTP 版本後,這些程式可以在安裝早期版本的 Atlas 的電腦上使用,即使功能已經得到發展和更改。與系統範圍的安裝相比,這為遷移到更新版本提供了更多靈活性。