作者: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 。
(今天就到這裡吧,不好意思寫了這麼短的文章。實在是有點累了……這個系列大概還要兩三篇左右。順祝各位兒童節快樂)