ASP.NET技術從1.0版本升級到1.1變化不是很大。然而,從ASP.NET 1.x升級到2.0,卻不是件輕而易舉的事。 ASP.NET 2.0技術增加了大量方便、實用的新特性。 ASP.NET 2.0主要提供控制項、頁面架構、服務與APIs等3個面向的技術特性。
控制項
在ASP.NET 1.x時代,由於內建伺服器控制項數量有限、功能覆蓋率窄,因此,開發人員怨聲載道。為了消除這個技術軟肋,ASP.NET 2.0做出了突破性改進。在ASP.NET 2.0中,新增數十個伺服器控制項。依控制項功能特徵,可分為:資料控制項(包含資料來源控制項和資料綁定控制項)、登入系列控制項、Web零件、網站導覽控制項和其他控制項等。這些伺服器控制項對於提高工作效率,降低開發成本有著重要作用。
頁面架構
在頁面架構方面,ASP.NET 2.0同樣做出了重大改進,主要體現在以下4項技術特性:母版頁、主題和皮膚、編譯機制和在地化。母版頁特性在大型Web網站中應用廣泛,它能夠在一定程度上取代框架頁功能,從而迅速建立具有統一佈局和外觀的頁面,並且有效降低維護人員的工作強度。主題和皮膚是ASP.NET 2.0的新增功能,使用此功能可以一次設定一種類型的伺服器控制項外觀樣式。該外觀可方便地應用於單一頁面、整個Web應用程序,甚至整個伺服器。在應用程式編譯方面,ASP.NET 2.0提供了幾種替代方案,從而擴大了編譯的選擇範圍,開發人員可以根據特定需求進行選擇。另外,ASP.NET 2.0在在地化方面也做了一些改進。
服務與APIs
這個部分包含的新功能在ASP.NET 2.0中佔有較大比例,主要包括成員資格管理、角色管理、使用者設定、資料快取、設定與管理工具等。利用這些功能,可以快速實現使用者和角色管理、個人化使用者配置、資料快取、應用程式視覺化配置等任務。以成員資格和角色管理功能為例,在ASP.NET 1.x時代,實現這兩項功能是比較繁瑣和困難的;而在ASP.NET 2.0中不僅提供預設資料庫表,而且只需呼叫幾個簡單的方法,就能夠輕鬆實現成員和角色管理功能。
一、新增伺服器控件
在ASP.NET 1.x時代,有許多開發人員對其中的內建伺服器控制項提出批評。主要的觀點是ASP.NET 1.x提供的控制項數量太少,難以滿足日益增長的開發需求,無法更快更好地開發應用程式。為了彌補ASP.NET 1.x的不足,ASP.NET 2.0新增了數十個伺服器控制項。根據控制功能,可分為網站導航控制項、資料控制項(包括資料來源控制項和資料綁定控制項)、登入系列控制項、Web元件和其他伺服器控制項等。熟練使用這些伺服器控制項對於提供工作效率、減低開發成本有著重要意義。
1、站點導航控件
在ASP.NET 1.x時期,微軟發布了一組IE Web Control控制項(非內建控制項),其中包含實作樹狀結構的TreeView控件,它就是典型的網站導覽控制項。在ASP.NET 2.0中,不僅包含並擴充了原有的TreeView,而且還新增了另外兩個控制項。
網站導航控制項主要用於實現網站頁面導航功能。網站導航控制項包括SiteMapPath、Menu和TreeView控制。 SiteMapPath控制項能夠根據網站導航訊息,準確定位目前頁面所處整個Web網站的位置,同時,使用層次化表示方法,將位置資訊顯示為有序的靜態文字或超連結。另外,還可以透過調整相關屬性,自訂位置資訊的外觀以及實作資料綁定等功能。 Menu控制項可建立與Windows應用程式類似的選單。此控制項不僅可與多種資料來源控制項集成,還可支援自訂外觀、事件處理等功能。 TreeView控制項主要用於顯示樹狀結構,該樹與Windows資源管理器中的樹類似。同時,此控制項也支援資料綁定、自訂外觀等功能。
2、資料控件
ASP.NET 2.0的資料控件可細分為兩類:一類是資料來源控件,另一類是資料綁定控件。資料來源控制項包括SqlDataSource、AccessDataSource、XmlDataSource、SiteMapDataSource和ObjectDataSource。這些控制項主要實作連接不同資料來源、資料檢索和修改功能,例如,查詢、排序、分頁、篩選、更新、刪除和插入等。資料綁定控制項主要包括GridView、DetailsView和FormView等。這些控制項可與資料來源控制項配合,將取得的資料以不同形式顯示在頁面上。由於資料來源控制項和資料綁定控制項支援良好的視覺化設計時功能,因此,當利用Visual Studio 2005實現資料存取時,甚至不需要編寫任何程式碼就能夠完成任務。
3.登入系列控制項很多Web網站都提供了使用者登入驗證以及相關功能。常見功能包括使用者登入、建立新使用者等。總體而言,實現這些功能的基本方法比較類似,然而,由於開發人員的水平差異,可能造成一些不必要的漏洞和錯誤。為了解決這個問題,ASP.NET 2.0將與登入驗證相關的實作集成為登入系列控制項。這些控制項包括:Login、LoginName、LoginView、LoginStatus、PasswordRecovery、ChangePassword和CreateUserWizard。利用這些控制項可以輕鬆實現登入驗證、建立新使用者、顯示登入狀態、顯示登入使用者名稱、更新和重設密碼等。出於靈活性考慮,登入系列控制項不僅提供了大量成員對象,而且還支援自訂範本功能(部分控制項支援)。另外,登入系列控制也加強了安全方面的控制。例如,預設情況下,登入系列控制項是以純文字形式運作於HTTP上。如果應用程式對安全性十分關注,那麼可以使用SSL加密的HTTPS。
Login控制項用於實作使用者登入驗證,CreateUserWizard控制項用於建立新使用者。或許讀者會沿襲ASP.NET 2.0之前的思路,認為實作以上兩種應用需要增加多個文字方塊、按鈕等元素,並設計實作資料庫、資料存取邏輯等。實際上,使用Login和CreateUserWizard控制項實現以上應用,非常簡單,簡單到不需要編寫任何程式碼,不需要自建資料庫,只需新增和設定控制項即可。
4.web部件
Web元件是ASP.NET 2.0新增功能。如果曾經開發應用過SharePoint,那麼對Web元件應該不會感到陌生。 ASP.NET 2.0的Web元件功能包含多個伺服器控制項,例如,實作WebPart控制項管理與控制的WebPartManager、實作編輯WebPart控制項的EditorZone和EditorPart系列控制項、實作目錄管理的CatalogZone和CatalogPart系列控制項、實作WebPart通訊的ConnectionZone控制項等。利用它們可以創建具有高度靈活性和個性化的Web網站。
5.其他伺服器控制項除上文介紹的4類控制項之外,ASP.NET 2.0新增了其他伺服器控制項。這些控制項包括BulletedList、HiddenField、FileUpload、ImageMap、MultiView(View)和Wizard。
二、母版頁
每個站點都應具有統一的風格和佈局。不同科技時代,給了不同的解決方案。例如,在ASP技術時期,使用#include指令,在ASP.NET 1.x時期,主要使用使用者控制項。 ASP.NET 2.0技術時期,則可使用建立頁面佈局架構的技術特性—母版頁。
母版頁是擴展名為.master的文件,其程式碼內容和結構與普通.aspx文件類似。注意程式碼中包含一個或多個ContentPlaceHolder控制項。在建立母版頁時,需要將頁面公用部分儲存於母版頁中,例如,頁面公用的頁頭、頁尾等,而頁面非公用部分則使用ContentPlaceHolder控制項實作佔位。內容頁檔案雖然副檔名為.aspx,但是程式碼內容和結構與普通.aspx檔案程式碼相距甚遠,其程式碼分為兩個部分:程式碼頭聲明一個或多個Content控制項。開發人員需要在內容頁代碼頭綁定母版頁,同時,將頁面非公用部分內容設定在Content控制標籤之間。在執行時,使用者不能直接要求母版頁,只能要求存取內容頁。此時,母版頁和內容頁將合併產生結果頁,結果頁麵包含頁面公共部分和非公共部分的運作結果。
三、主題和皮膚
在未接觸主題和皮膚功能之前,你可能已經習慣使用級聯樣式表(CSS)來設定頁面和控制項等元素外觀和樣式。雖然在ASP.NET 1.x開發中,CSS同樣適用,但是如果碰到一些複雜控件,例如,Calendar、GridView,那麼設定CSS將變得比較困難。如果能夠完全根據控件本身外觀和樣式屬性,而不僅限於CSS中規定元素,來設定伺服器控件,那麼整個實作過程將變得比較簡單。 ASP.NET 2.0中的主題和皮膚功能就能夠提供這樣的便利。
所謂「主題」是指頁面和控制項外觀屬性設定的集合。主題由一組文件構成,可能包括皮膚文件、CSS文件、圖片和其他資源等。這些檔案必須儲存在App_Themes資料夾中。皮膚文件是主題的核心內容。這種檔案的副檔名為.skin,其中包含各種伺服器控制項的各種屬性設定。利用主題功能,不僅能夠定義頁面和控制項的外觀,還可以在所有網頁應用程式、單一網頁應用程式的所有頁面或單一網頁中,快速一致地套用所定義外觀。另外,還可以根據應用程式需要動態載入主題。
四、個人化用戶配置
儲存和存取用戶配置資料一直是開發人員關注的熱點。在ASP.NET 1.x時代,實現此功能主要透過Session、Application等物件或採用資料庫儲存的方法。這兩種方法都有著本身不可克服的缺點。例如,使用前者容易發生資料遺失的情況,而使用後者較為繁瑣,例如,需要自行設計實作資料庫及存取資料的程式碼。為了解決以上問題,ASP.NET 2.0新增了個人化使用者設定功能。
個人化使用者配置功能主要用於儲存單一使用者配置數據,這些數據可以是簡單資料類型,也可以是複雜資料類型,甚至自訂物件等。同時,單一用戶既可以是匿名用戶,也可以是註冊用戶。預設情況下,所有使用者設定資料都儲存在SQL Server資料庫中,且無需自行建立和維護該資料庫,這些工作都由ASP.NET 2.0自動完成。個人化使用者配置功能還支援從應用程式中任何位置存取的多種強類型API,以方便儲存、顯示和管理使用者配置資訊。使用個人化使用者配置功能非常簡單。首先,在Web.config檔案中定義設定資訊名稱、資料類型等,然後,呼叫與使用者設定功能相關的強型別API,例如,Profile實作對使用者設定資訊的儲存、存取和管理等應用程式。
五、會員資格和角色管理
多數網站的後台管理中,幾乎都包含使用者成員和角色管理功能,例如,新建、修改、刪除使用者和角色,為使用者設定角色,管理角色中的使用者等。在使用ASP.NET 1.x版本時,實作這些功能的主要方法是,首先,設計建立成員庫表、角色庫表等,然後,編寫程式碼實作具體功能。實現所有功能可能需要花費不少的時間和精力,過程繁瑣,容易出現錯誤。然而,使用ASP.NET 2.0新增的成員資格和角色管理功能則可以很好地解決這個問題。
成員資格和角色管理功能的核心是利用自動產生的資料庫表、多個實現管理功能的API、成員資格和角色管理提供程序,實現模組化和自動化的成員資格和角色管理模式。具體而言,包括建立和管理使用者和角色資訊、實現對多種資料來源中使用者和角色資訊的管理、驗證存取應用程式的使用者憑證、支援使用Cookie快取角色資訊、實現角色管理與會員資格管理等功能的整合。
六、設定和管理工具
為了快速方便地實現應用程式配置和管理,ASP.NET 2.0提供了兩個內建的視覺化工具:一個是ASP.NET MMC管理單元,另一個是Web網站管理工具。
如果電腦中安裝了Internet資訊服務(IIS)和.NET Framework 2.0,那麼開啟IIS即可使用ASP.NET MMC管理單元。利用該工具可對指定應用程式的連接字串、應用程式配置、自訂錯誤、授權、身份驗證、公共編譯、頁面和運行時、全球化和標識、應用程式狀態、位置等方面進行全面設定。所有設定結果都將顯示在應用程式Web.config檔中。從這個角度而言,ASP.NET MMC管理單元是用來編輯Web.config檔的圖形化工具。
如果使用Visual Studio 2005建立ASP.NET 2.0應用程序,那麼可以呼叫Web網站管理工具。與ASP.NET MMC管理工具不同的是,Web網站管理工具是一個Web應用程序,而不是一個Windows應用程式。 Web網站管理工具提供了指定Web應用程式的安全性、應用程式設定、提供者等多方面的設定。例如,建立管理使用者和角色資訊、設定SMTP參數、設定各種提供者等。