作者:Dflying Chen (http://dflying.cnblogs.com/)
Microsoft ASP.NET Atlas的出現幾乎顛覆了整個傳統的ASP.NET開發概念,理論上講,最“純粹”的Atlas應用程式將把一切表現層全部移到用戶端進行,伺服器端僅僅是提供用戶端需要的服務。而目前為止這種用戶端編程模型還沒有很強大的IDE支援(想想編寫,調試JavaScript的時候是多麼的痛苦……),同時考慮到還存在著好多現有的ASP.NET程式,並且開發人員還需要一定的適應/學習時間。這樣Atlas在提供純粹的用戶端面向編程模型的同時,也允許控制項開發人員以伺服器端控制項的形式開發Atlas組件,讓傳統的ASP.NET開發人員在開發時不會覺得有什麼不同之處,他們會同樣得到Visual Studio的設計期支援,編譯期檢查等特性,平緩了程式開發人員的學習曲線。
Atlas的伺服器端控制項大都可以以Extender的形式提供,所謂Extender,顧名思義,就是對現有的控制項的功能,行為等進行擴充的組件。例如,為現有的TextBox控制項加上自動完成(auto complete)功能,為現有的Button控制項加上確認對話方塊等。其中Atlas官方發布的Control Toolkit就是若干個這樣的Extender的集合,您可以到這裡:"Atlas" Control Toolkit更新發布(Version 1.0.60504.0),以及Atlas Control ToolKit 發布得到更詳細的資訊。
對於這種非常常見的開發Extender的需求,Atlas為我們提供了一個Extender的基類以及相應的Visual Studio中的Project Template。在這個系列中,讓我們一起學習如何通過使用Atlas的Extender的基類以及相應的Visual Studio中的Project Template開發我們的自訂Extender。
在整個系列中,我將通過一個控制項的完整開發過程來講解,這裡我選擇的Extender的功能是,在使用者填寫註冊資訊時,使用AJAX方式即時驗證使用者名稱是否被註冊,關於這個功能的詳細介紹以及用戶端Atlas Behavior的實現,請參考:使用ASP.NET Atlas開發即時驗證使用者名稱是否被註冊的自訂Behavior。我推薦對這個系列感興趣的朋友把這篇文章看懂,其中的概念也弄明白,將會在未來的開發中節省好多時間。
在開發這個控制項前,我們需要安裝如下的組件/程式集:
- Atlas April CTP,請參考:ASP.NET Atlas April CTP發布,當然,您可以只使用其中的Atlas.dll,但我還是建議您安裝Atlas Web Site的Template,這樣可以在開發的過程中即時測試您的控制項。
- Atlas Control Toolkit,請參考:"Atlas" Control Toolkit更新發布(Version 1.0.60504.0),以及Atlas Control ToolKit 發布,下載好運行自解壓檔案AtlasControlToolkit.exe,您將得到三個目錄,其中在目錄AtlasControlExtender下有一個AtlasControlExtender.vsi檔案,如果您不想手動建立Control項目以及眾多的相關檔案/引用,那麼最好還是運行安裝一下這個Visual Studio的Project Template(噢,當然,Visual Studio還是必要的)。
如果一切順利的話,上述兩個步驟以後您在建立Web Site的時候就可以看到Atlas Web Site的Template了;同樣在建立項目的時候也能看到Atlas Control Project的選項。
順便也說一下,AtlasControlToolkit.exe解壓後的三個目錄中的另外兩個:
- AtlasControlToolkit目錄中有這個Control Toolkit提供的若干個Extender,都帶有原始碼(不過沒有注釋)。這將是您在開發過程中不可缺少的樣本程式!
- SampleWebSite目錄中有上述Extender的使用文檔以及示範程式。您可以在這裡學到如何使用開發好的Extender。
這個Control Toolkit中的所有Extender以及提供的Extender的基類都遵守Microsoft Permissive License協議,這是個非常寬鬆的協議,基本沒有任何限制,請參見http://www.microsoft.com/resources/sharedsource/licensingbasics/permissivelicense.mspx 。
(今天就到這裡吧,不好意思寫了這麼短的文章。實在是有點累了……這個系列大概還要兩三篇左右。順祝各位兒童節快樂)