ajax|微軟
微軟現在已經進入了ASP.NET 2.0和Visual Web Developer 2005發布版最後的RTM裡程碑時刻。為了達到ZBB(Zero Bug Bounce),微軟已經鎖定了這些產品的特性,著重最佳化最終的品質、效能和可靠性。
與此同時,微軟開始了下一個發布版本的研發,其中一個重要的研究方向就是通過Ajax風格的編程在瀏覽器中實現日益流行的富用戶端應用。
今後的IE中將擁有Ajax所需的所有東西——DHTML、JScript和XmlHttp。實際上Outlook Web Access從1998年開始就已經提供了這種偉大的瀏覽體驗了。在ASP.NET 2.0中,微軟使用非同步回調及舒適的Ajax風格的應用程式的編寫更加簡單,並且,微軟為此提供了大量的內建控制項。
目前,幾乎所有的瀏覽器都提供了Ajax所需的技術,使用這種模式的富用戶端應用程式也不斷出現。今天,世界上出現了不計其數的Ajax風格的網站,包括Google的很多網站、A9和Flickr。微軟的很多網站也使用了這項技術,如Start.com和MSN Virtual Earth項目。
Ajax的風行說明使用者對於豐富的Web體驗的需求日益增長。然而,開發和調試Ajax風格的Web應用程式是一項非常艱難的工作。要編寫一個豐富的Web UI,開發人員需要詳細地掌握DHTML和JavaScript,並且還要掌握各種瀏覽器之間在設計細節上的不同。然而沒有哪些工具能夠簡化這些應用程式的設計和開發。最後,調試和測試這些應用程式會變得異常困難。
微軟致力於簡化Ajax風格Web應用的開發,並提供豐富的、可互動的和個人化的使用者體驗。開發人員可以對用戶端指令碼不甚瞭解;但他們可以無縫地將瀏覽器UI與他們編寫的其他應用無縫地整合在一起,並且他們可以很容易地開發和調試這些應用程式。
出於這一目的,微緩啟動了一個新的項目,研發代號為“Atlas”。同時,微軟還啟動了一個網站來持續更新其核心進展和樣本,並圍繞它建立一個活躍的社區。在9月份的PDC大會上,開發人員可以看到Atlas的技術預覽版。
以下是Atlas所擁有的特性。
Atlas用戶端指令碼架構
Atlas用戶端指令碼架構是可擴充的、100%物件導向的JavaScript用戶端指令碼架構,允許開發人員很容易地構建擁有豐富的UI功能並且可以串連Web Services的Ajax風格瀏覽器應用程式。使用Atlas,開發人員可以使用DHTML、JavaScript和XMLHTTP來編寫Web應用程式,而無須掌握這些技術的細節。
Atlas用戶端指令碼架構可以在所有的現代瀏覽器上運行,不論使用的是什麼Web伺服器。它還完全不需要安裝,只要在頁面中引用正確的指令檔即可。
Atlas用戶端指令碼架構套件含下列組件:
l 一個可擴充的核心架構,其中為JavaScript添加了很多新特性,如生存期管理、繼承、多播事件處理器和介面
l 一個基礎類庫,提供了通用特性,如豐富的字串操作功能、計時器和運行任務等
l 一個UI架構,可以跨瀏覽器實現HTML的動態行為
l 一個網路棧,用於簡化對伺服器的串連和對Web Services的訪問
l 一組具有豐富UI功能的控制項,如自動完成文字框、彈出面板、動畫控制項和拖放
l 一個瀏覽器安全色的層(Layer),用於在不同瀏覽器中定位不同的指令碼行為
Atlas的ASP.NET伺服器控制項
對於ASP.NET應用程式,微軟專門設計了一組Ajax風格的伺服器控制項,並且加強了現有的ASP.NET頁面架構和控制項,以便支援Atlas用戶端指令碼架構。
ASP.NET 2.0中有一項稱作非同步用戶端回調(Asynchronous Client Callbacks)的新特性,使得構建從伺服器上更新內容時不會引發頁面中斷的ASP.NET頁面變得很容易。非同步用戶端回調封裝了XMLHTTP,能夠在很多瀏覽器上工作。ASP.NET本身就包括了很多使用回調的控制項,包括具有用戶端分頁和排序功能的GridView和DetalsView控制項,以及TreeView控制項的虛擬列表支援。
Atlas用戶端指令碼架構將完全支援ASP.NET 2.0回調,但微軟希望在今後進一步增強瀏覽器和伺服器之間的整合性。例如,你可以將Atlas用戶端控制項的資料繫結並指定為伺服器上的ASP.NET資料來源控制項,並且可以從用戶端非同步地控制Web頁面的個人化特徵。
ASP.NET Web Services整合
和任何用戶端應用程式一樣,一個Ajax風格的Web應用程式通常也需要訪問Web伺服器的一些功能。Atlas應用程式串連伺服器的模型和其他平台類似,都是使用Web Services來實現。
通過ASP.NET Web Services整合,Atlas應用程式將可以在任何支援XMLHTTP的瀏覽器上通過Atlas用戶端用本架構來直接存取任何宿主了ASP.NET的asmx或Indigo服務。該架構將會自動處理、代理和指令碼到對象、對象到指令碼的序列化問題。通過使用Web Services整合,開發人員可以使用單一的編程模型來編寫Web Services,並且在任何應用程式中使用它們,不論是基於瀏覽器的網站上還是智能用戶端應用程式中。
Atlas的ASP.NET構建塊
在ASP.NET 2.0中,微軟構建了一組豐富的構建塊服務(Building Block Services),這使得構建強大、個人化的Web應用程式變得不可思議的簡單。這些構建塊極大地降低了在開發通用的Web應用程式過程中需要編寫的代碼數量,比如系統管理使用者、通過角色驗證使用者和儲存使用者的個人化資訊等。
使用Atlas,我們可以在任何瀏覽器上的任何用戶端應用程式中向訪問Web Services那樣訪問這些功能。例如,如果你正在開發一個網站來顯示使用者的TO-DO項目,你可以使用ASP.NET的Profile服務來將他們存放在伺服器上的使用者自訂設定檔中。這樣,即使使用者從一台機器轉移到另一台機器上,也同樣可以訪問這些項目。
微軟將提供的服務包括(全部是基於ASP.NET 2.0的):
l Profile:在伺服器上存放每個使用者特有的資料
l UI個人化:在伺服器上存放個人化的UI設定資訊
l 驗證:驗證使用者
l 角色:基於使用者的角色驗證使用者任務和提供不同的UI
由於這些構建塊是基於伺服器的,開發人員需要對他們應用和其他網站一樣的安全模型。這些服務不需要用戶端下載任何東西——只要在瀏覽器中引用指令碼代理即可。
所有的ASP.NET 2.0構建塊服務都是可插拔的,這使用一種通用的提供者(Provider)模型可擴充模式在後台實現。微軟提供的內建提供者允許開發使用SQL Server資料庫或Active Directory作為儲存容器,開發人員也可以很容易地插接自己的提供者。例如,你可能希望使用叢集而不是資料庫伺服器來存放使用者的設定檔,這時,你只需將你的提供者插接進來即可——這一切都由開發人員來決定。
用戶端構建塊服務
除了DHTML、JScript和XMLHTTP,微軟還提供了一組附加的服務來加強用戶端的功能,並提供增強體驗。
對於這樣的服務,本地瀏覽器緩衝就是一個很好的例子。當啟用了本地瀏覽器緩衝時,Web網站就可以將內容儲存到緩衝中,並在需要的時候很快地取出。但瀏覽器並未提供向緩衝中存放資料的API,而且象Google Map或OWA這樣的應用程式不得不通過很多工作產生一個唯一的URL,才能使瀏覽器緩衝它。在Atlas中,微軟提供了可程式化的本機存放區/緩衝,因此應用程式可以很方便、有效並且安全地在本機快取資料。
同其它應用程式的整合是檢驗Web體驗是否豐富的另一個新的標準。例如,當一個使用者瀏覽一個拍賣網站並對一件商品出價時,他可能想隨時知道這個拍賣什麼時候結束,但他如何才能將這個事件添加到個人的行事曆程式中?Atlas帶來了一系列用戶端構建塊服務,當使用者選擇“添加到日曆”時,瀏覽器將調用接駁點來擷取行事曆資料,並將其傳遞到本地的行事曆程式中。此時頁面上無須下載或運行任何特殊的代碼或執行任何初始化動作,因此,這比ActiveX要安全得多。
下一步
隨著我們的技術進展,還會發生很多事情。我們現在已經開始研發、開發和調試工具的下一個版本了,因此,我們將很快為這些類型的豐富Web應用程式提供更加偉大的開發體驗。
您可能會問的一個問題是:Atlas如何在Avalon和智能用戶端上使用?
我們可以看到,Atlas是編寫豐富的、可互動的和個人化的Web瀏覽器應用程式的最好方式,而Avalon是微軟的下一代表現層模型,可以在Windows平台上提供最豐富的使用者體驗。Avalon將使用最新的媒體集成功能和硬體加速裝置,提供卓越的視覺體驗。Avalon將帶來超越瀏覽器的體驗。
當然,當你構建Avalon應用程式的時候,你依然可以重用ASP.NET和Atlas中的編程模型。例如,Avalon用戶端上依然可以使用ASP.NET構建塊服務和用戶端構建塊服務。這種模型可以使你平滑地過渡到下一代應用程式。