最近學習研究了一下微軟的AJAX架構,Atlas.這個架構對於實現AJAX裡的非同步請求,無重新整理等技術非常的簡便,功能也很強大,當然這些都是建立在DOTNET平台上.
對於這個架構,給我印象很深的就是,作為一個新的架構,能夠與現有的ASP.NET技術實現幾乎無縫的整合,並且只需要添加若干行代碼,就能實現常用AJAX技術,而不需要對現有代碼的大規模修改,效率和效益都是明顯的.舉個例子,比如實現一個文字框的輸入的自動完成功能,之前我就用純AJAX寫過,光一個htm檔案裡的js代碼就超過100行,另外還要一個空的aspx頁面(裡面沒有html代碼),然後在cs檔案裡寫商務邏輯,最後通過字串傳遞結果,整整加起來一共四個檔案,而最終實現的只是一個小小的功能.如今用atlas架構,根本不需要去寫繁瑣的js代碼,只需要引用一個自動輸入的擴充控制項,另外添加一個webservice,簡單設定屬性,之後剩下的就由atlas去處理.加起來代碼不過50行,而且頁面也更加的清晰.在沒接觸atlas之前,我還以為如果每次請求都用空的aspx頁面,那麼一個頁面裡由N個功能,就需要N個頁面,可想專案檔將會爆滿(如果採用純AJAX).
如果僅僅用Atlas實現非同步,無重新整理等,可能只用了其1/3的功能,其最讓我折服的是ControlTookit所提供的那些超強的伺服器控制項.跟Atlas核心部分裡的控制項一樣的方便,實現的功能更加的炫目.目前的ControlTookit幾乎把富用戶端(C/S模式中)的功能都實現了,諸如拖放,放大,快顯功能表,懸浮菜單,滑動條等,讓人忘記了那還是在瀏覽器裡,幾乎把WinForms裡能實現的都搬到瀏覽器裡,理論上說,用這些控制項,作個類似於作業系統的介面足夠了.當然除了類比富用戶端的功能,對於那些常用的B/S技術也是提供了不錯的實現.比如文字框驗證,密碼強度檢查,浮動廣告等,經過ControlTookit裡擴充控制項的簡單封裝就可以實現.還記得剛開始接觸網頁編程時,為了實現聯動菜單時,上網到處搜尋js代碼,最後找到了是一大堆的代碼,無法下手,嘗試修改卻困於調試的泥潭,再加上js的知識缺乏,當時做出個東西還真不容易.如今有了atlas,最起碼不需要為調試那些如亂碼般的js指令碼.
這個ControlToolkit的替代js的一部分工作,同時搶了部分CSS的飯碗.在現有版本裡就有了體現,比如要實現流行的圓角框,在一些Css教材裡都是首先找一個圓角圖片,然後用css去布局,整了一大堆,最後可能還需要考慮瀏覽器是否相容,使出什麼招數,最終的效果可能還不盡人意.而ControlToolKit裡的RoundConerExender,只不過區區幾行代碼,還是在頁面裡添加的,簡單設定幾個屬性,實現是否圓角框只是簡單的true或false,連找圖片的麻煩都省了.至於那些動畫效果就更酷,似乎連flash都得靠邊了.
作為一個因AJAX技術而產生的架構,卻並不是簡單的非同步,無重新整理,可以說幾乎把js,css,xml等技術都整合到了一起,對於開發人員來說是個不錯的選擇.不過這樣過於舒服的架構,會容易使人忘記js,xml等最基礎的東西,而這些語言是無平台性的.Atlas是好用,但不能濫用,光學Atlas是掌握不了AJAX的精粹的.