AJAX
AJAX全稱為“Asynchronous JavaScript and XML”(異步JavaScript和XML),是指一種創建交互式網頁應用的網頁開發技術。 Ajax(Asynchronous JavaScript + XML)的定義
基于web標準(standards-based presentation)XHTML+CSS的表示;
使用 DOM(Document Object Model)進行動態顯示及交互;
使用 XML 和 XSLT 進行數據交換及相關操作;
使用 XMLHttpRequest 進行異步數據查詢、檢索;
使用 JavaScript 將所有的東西綁定在一起。
類似于DHTML或LAMP,AJAX不是指一種單一的技術,而是有機地利用了一系列相關的技術。事實上,一些基于AJAX的“派生/合成”式(derivative/composite)的技術正在出現,如“AFLAX”。
AJAX的應用使用支持以上技術的web瀏覽器作為運行平臺。這些瀏覽器目前包括:Mozilla、Firefox、Internet Explorer、Opera、Konqueror及Safari。但是Opera不支持XSL格式對象,也不支持XSLT。[1]
與傳統的web應用比較
傳統的web應用允許用戶填寫表單(form),當提交表單時就向web服務器發送一個請求。服務器接收并處理傳來的表單,然后返回一個新的網頁。這個做法浪費了許多帶寬,因為在前后兩個頁面中的大部分HTML代碼往往是相同的。由于每次應用的交互都需要向服務器發送請求,應用的響應時間就依賴于服務器的響應時間。這導致了用戶界面的響應比本地應用慢得多。
與此不同,AJAX應用可以僅向服務器發送并取回必需的數據,它使用SOAP或其它一些基于XML的web service接口,并在客戶端采用JavaScript處理來自服務器的響應。因為在服務器和瀏覽器之間交換的數據大量減少,結果我們就能看到響應更快的應用。同時很多的處理工作可以在發出請求的客戶端機器上完成,所以Web服務器的處理時間也減少了。
微軟的Ajax
微軟目前目前對于通過Ajax風格的編程在瀏覽器中實現日益流行的富客戶端應用比較感興趣。今后的IE中將擁有Ajax的所有東西——DHTML、JScript和XmlHttp。實際上Outlook Web Acces從1998年開始就已經提供了這種偉大的瀏覽體驗了。在ASP.NET 2.0中,微軟使用異步回調及舒適的Ajax風格的應用程序的編寫更加簡單,并且,微軟為此提供了內建的控件。
最近,幾乎所有的瀏覽器都提供了Ajax所需的技術,使用這種模式的富客戶端應用程序也不斷出現。今天,世界上出現了不計其數的Ajax風格的站點,包括Google的很多站點、A9和Flickr。微軟的很多站點也使用了這項技術,如Start.com和MSN虛擬地球。
Ajax的風行說明用戶對于豐富的Web體驗的需求日益增長。然而,開發和調試Ajax風格的Web應用程序是一項非常艱難的工作。要編寫一個豐富的Web UI,開發者需要詳細地掌握DHTML和JavaScript,并且還要掌握各種瀏覽器之間在設計細節上的不同。然而沒有那些工具能夠簡化這些應用程序的設計和開發。最后,調試和測試這些應用程序會變得異常困難。
微軟致力于簡化Ajax風格Web應用的開發,并提供豐富的、可交互的和個性化的用戶體驗。開發者可以對客戶端腳本不甚了解;但他們可以很容易地開發和調試這種應用程序。
出于這一目的,微軟啟動了一個新的項目,研發代號“Atlas”。Atlas為開發這帶來了如下特性:
·Atlas客戶端腳本框架
·Atlas的ASP.NET服務器控件
·ASP.NET Web Services集成
·Atlas的ASP.NET構建塊
·客戶端構建塊服務
你可能會問的一個問題是,Atlas如何在Avalon和智能客戶端上使用?
我們可以看到,Atlas是編寫豐富的、可交互的和個性化的Web瀏覽器應用程序的最好方式。而Avalon是微軟的下一代表現層模型,可以在Windows平臺上提供最豐富的用戶體驗。Avalon將使用最新的媒體集成功能和硬件加速設備,提供卓越的視覺體驗。Avalon將帶來超越瀏覽器的體驗。
當然,當你構建Avalon應用程序的時候,你依然可以重用ASP.NET和Atlas中的編程模型。例如,Avalon客戶端上依然可以使用ASP.NET構建塊服務和客戶端構建塊服務。這種模型可以使你平滑地過渡到下一代應用程序上。
微軟提供了一個工具包,用來完成Ajax的功能,稱作Atlas。從微軟的Scott Guthrie的blog上看來,這個東西應該是ASP.NET 2.0里面的。Scott肯定地表示,“Atlas客戶端腳本框架(Client Script Framework)可以運行在所有的現代瀏覽器上并且何以與任何Web服務器交互”,這說明他們正在以跨瀏覽器的態度來開發Ajax風格的遠程腳本,這無疑是一個巨大的轉變;過去的微軟,把任何東西都搞成了特定于IE的,而一旦其開發工具能夠真的提供徹底的跨瀏覽器支持,將能夠籠絡更多的ASP.ENT開發者,他們無需了解任何細節就可以創建跨瀏覽器代碼。
Atlas客戶端腳本框架是可擴展的,100%面向對象的JavaScript客戶端腳本框架,允許開發這很容易地構建擁有豐富的UI工能并且可以連接Web Services的Ajax風格瀏覽器應用程序。使用Atlas,開發者可以使用DHTML、JavaScript和XMLHTTP來編寫Web應用程序,而無須掌握這些技術的細節。
Atlas客戶端腳本框架可以在所有的現代瀏覽器上運行,而不需要Web服務器。它還完全不需要安裝,只要在頁面中引用正確的腳本文件即可。
Atlas客戶端腳本框架包含下列組件:
·一個可擴展的和新框架,其中為JavaScript添加了很多新特性,如生存期管理、集成、多播事件處理器和接口
·一個基礎類庫,提供了通用特性,如豐富的字符串操作功能、計時器和運行任務等
·一個UI框架,可以跨瀏覽器實現動態行為
·一個網絡棧,用于簡化對服務器的連接和對Web Services的訪問
微軟為ASP.NET應用程序專門設計了一組Ajax風格的服務器控件,并且加強了現有的ASP.NET頁面框架和控件,以便支持Atlas客戶端腳本框架。
ASP.NET 2.0中有一項稱作異步客戶端回調的新特性,使得構建無中斷的頁面變得很容易。異步客戶端回調包裝了XMLHTTP,能夠在很多瀏覽器上工作。ASP.NET本身包括了很多使用回調的控件,包括具有客戶端分頁和排序功能的GridView和DetalsView控件,以及TreeView空間的虛擬列表支持。
Atlas客戶端腳本框架將完全支持ASP.NET 2.0回調,但微軟希望進一步增強瀏覽器和服務器之間的集成性。例如,你可以將Atlas客戶端控件的數據綁定指定為服務器上的ASP.NET數據源控件,并且可以從客戶端異步地控制Web頁面的個性化特征。
和任何客戶端應用程序一樣,一個Ajax風格的Web應用程序通常也需要訪問Web服務器的一些功能。Atlas應用程序連接服務器的模型和其他平臺類似,都是使用Web Services來實現。
通過ASP.NET Web Services集成,Atlas應用程序將可以在任何支持XMLHTTP的瀏覽器上通過Atlas客戶端將本框架來直接訪問任何宿主于ASP.NET的asmx或Indigo服務。該框架將會自動處理代理和腳本到對象、對象到腳本的序列化問題。通過使用Web Services集成,開發者可以使用單一的編程模型來編寫Web Services,并且在任何應用程序中使用它們,不論是基于瀏覽器的站點上還是智能客戶端應用程序中。
在ASP.NET 2.0中,微軟構建了一組豐富的構建塊服務(Building Block Services),這使得構建強大、個性化的Web應用程序變得不可思議的簡單。這些構建塊極大地降低了在開發通用的Web應用程序過程中需要編寫的代碼數量,比如管理用戶、通過角色驗證用戶和存儲用戶的個性化設置信息等。
使用Atlas,我們可以在任何瀏覽器上的任何客戶端應用程序中向訪問Web Services那樣訪問這些功能。例如,如果你正在開發一個站點,來顯示用戶的TO-DO項目,你可以使用ASP.NET的Profile服務來將他們存放在服務器上的用戶自定義配置文件中。這樣即使用戶從一臺機器上轉移到另一臺機器上,也同樣可以訪問這些項目。
微軟將提供的服務包括(全部是基于ASP.NET 2.0的):
- Profile:在服務器上存放每個用戶特有的數據
- UI個性化:在服務器上存放個性化的UI設置信息
- 驗證:驗證用戶
- 角色:基于用戶的角色驗證用戶任務和提供不同的UI
由于這些構建塊是服務器端的,開發者需要對他們應用和其他站點一樣的安全模型。這些服務不需要客戶端下在任何東西——只要在瀏覽器中引用腳本代理即可。
所有的ASP.NET 2.0構建塊服務都是可插拔的,這使用一種通用的提供者模型可擴展模式在后臺實現。微軟提供的內建提供程序允許開發這使用SQL Server數據庫或Active Directory作為存儲容器,開發者也可以很容易地插接自己的提供程序。例如,你可能希望使用集群而不是數據庫服務器來存放用戶的配置文件,這時你只需將你的提供程序插接近來即可。
除了DHTML、JScript和XMLHTTP,微軟還提供了一組附加的服務來加強客戶端的功能并提供增強的體驗。
對于這樣的服務,本地瀏覽器緩存就是一個很好的例子。當啟用了本地瀏覽器緩存時,Web站點就可以將內容存儲到患從中,并在需要的時候很快地取出。但瀏覽器并未提供向緩存中存放數據的API,而且象Google Map或OWA這樣的應用程序不得不通過很多工作產生一個唯一的URL才能使瀏覽器緩存它。在Atlas中,微軟提供了可編程的本地存儲/緩存,因此應用程序可以很方便、有效并且安全在本地緩存數據。
同其他應用程序的集成是檢驗Web體驗是否豐富的另一個新的標準。例如,當一個用戶瀏覽一個拍賣網站并對一件商品出價時,他可能想隨時知道這個拍賣什么時候結束,但他如何才能將這個事件添加到他們個人的日歷程序中?Atlas帶來了一系列客戶端構建塊服務,當用于選擇“添加到日歷”時,瀏覽器將調用接駁點來獲取日歷數據,并將其傳遞到本地的日歷程序中。此時頁面上無須下載或運行任何特殊的代碼或執行任何初始化動作,因此,這比ActiveX要安全得多。
基于Ajax的應用程序架構
瀏覽器端框架被劃分成兩大類:
·應用程序框架:提供瀏覽器的功能,但是常以包括窗口小部件抽象和另外的部件而出名,其功能主要圍繞桌面GUI框架。
·基本結構框架:提供基本的管道和可移植的瀏覽器抽象,讓開發者去創建內容。典型的功能:
* 針對XMLHttpRequest的包裝器以封裝瀏覽器-服務器的交互。(所有的框架都提供這一功能)。
* XML操作和查詢。
* 根據來自XMLHttpRequest的應答執行DOM操作。
* 在一些情況中,與另外的瀏覽器端技術如Flash(和潛在的Java applets)集成在一起。
而服務器端框架通常以下面兩種方式工作(盡管它們在這里根據語言的不同進行了分類):
·HTML/JS生成:服務器提供完整的HTML/Javascript代碼生成和瀏覽器-服務器協調,結果是只有瀏覽器端編碼可以被定制。
·遠程調用:Javascript調用直接被路由到服務器端功能(例如Java方法)并返回到Javascript回叫處理器;或者Javascript調用服務器以提取信息,例如會話細節,數據庫查詢等。
·純Javascript:應用程序框架
1.1 Bindows(自從2003年)
網址是:http://www.bindows.net,Bindows是一個軟件開發包(SDK),它,通過強力聯合DHTML,JavaScript,CSS和XML等技術,能生成高度交互的互聯網應用程序-成為現代的桌面應用程序的強有力對手。Bindows應用程序不要求下載和也不需要在用戶端安裝-僅要求有一個瀏覽器(也不需要Java,Flash或者ActiveX)。Bindows有可能領導面向對象開發的AJAX應用程序的平臺。
·它是商業化的,使用來自于MB的技術(總部位于GA USA,主要開發中心在瑞典,成立于2002年)。
Bindows框架提供給你:
·基于類的面向對象的API
·一套完整的窗口系統,提供寬范圍的窗口小部件支持,包括菜單、表單、格子、滑動條、量程,甚至更多
·用于開發zero-footprint SOA客戶端應用程序的領先的工具箱
·本機的XML,SOAP和XML-RPC支持
·單用戶到企業級的支持
·內建的對AJAX的支持
Bindows開發環境:
·支持企業級規模的工程開發
·跨瀏覽器,跨平臺支持
·服務器獨立結構
·與新的和現有資源的互操作性
·一致性開發方法學
1.2 BackBase(自從2003年)
網址是:http://www.backbase.com,是一個全面的瀏覽器端框架,支持豐富的瀏覽器功能以及與.NET和Java的集成。
·商業化,來自于Backbase B.V(總部在Amsterdam,成立于2003年)。
1.3 DOJO(開發中;自從2004年9月)
網址是:http://dojotoolkit.org/,提供全面窗口小組件和瀏覽器-服務器消息支持。
·為創建定制的Javascript窗口小組件提供框架支持。
·預置的窗口小組件庫。
·瀏覽器-服務器消息支持-XMLHttpRequest和另外的機制。
·支持瀏覽器中的URL操縱功能。
·開源許可(學術自由許可2.1(http://opensource.org/licenses/afl-2.1.php)),由JotSpot(http://www.jot.com/)的Alex Russell(http://alex.dojotoolkit.org/)所領導。
1.4 Open Rico(開發中;自從2005年5月;基于早期的私有框架)
網址是:http://openrico.org/demos.page,是一多用途框架,支持Ajax基礎結構和用戶交互。
·一個XMLHttpRequest應答能被路由到一個或者更多回叫操作,DOM對象,或者Javascript對象。
·容易鼠標拖動支持。
·Ajax動畫,例如縮放和變換。
·"行為"-實質上是窗口小組件庫。
·使用指南(http://www.mirimar.net/mailbrowser/),由RussMirimar的Yonah所提供
·開源。源于Sabre航空公司解決方案,由Bill Scott(http://looksgoodworkswell.blogspot.com),Darren James及另外一些人所支持。
1.5 qooxdoo(開發中;自從2005年5月)
網址是:http://qooxdoo.sourceforge.net/,是另一個雄心勃勃的框架,提供寬范圍的UI支持和正在開發中的基礎結構特性。
·基礎結構:
* DOM和事件/焦點管理的可移植的抽象。
* 調試支持。
* 易于時間調度的Timer類。
* Getter/Setter支持。
·UI:
* 窗口小組件框架和預置的窗口小組件庫。
* 布局管理器。
* 圖像緩沖和可移植的PNG透明性。
·開源(LGPL)。來自多方面的貢獻者。
1.6 Tibet(開發中;自從2005年6月)
網址是:http://www.technicalpursuit.com/,目的是提供高度可移植的和全面的Javascript API,結果是,可能自動生成大量的客戶端代碼。自稱是"企業級Ajax"。
·遠程腳本運行在XMLHttpRequest包裝之上-通過協調調用結果支持工作流管理,例如應答可以發生在只有當兩個分離的調用返回時。
·URI支持。
·所有的HTTP方法-不僅是"GET"和"POST"。
·低級的協議-File://和WebDav以及HTTP。
·Web服務調用-SOAP,XML-RPC,等等。
·預置的針對Google API,Amazon API等等服務的支持。
·由高級Javascript對象組成一個巨大的庫。
·許多XML操作。
·IDE和開發工具。
·開源許可(顯然經過OSI認證,但是細節不多)。
2 純Javascript:基礎結構框架
2.1 AjaxCaller(Alpha版本;自從5月2005年)
網址是:http://ajaxify.com/run/testAjaxCaller/,是一基本的線程安全的XMLHttpRequest包裝器,主要針對Ajax新手,仍處于原始的alpha開發階段,目前僅與AjaxPatterns的在線搜索范例一起打包。
·實現對服務器的調用(GET/POST/PUT/DELETE),用路由到一個回叫操作的plain-text或者XML完成。
·使用過的XMLHttpRequest對象的析構。
·Response緩沖(計劃的)。
·針對Ajax新手-并非強調性能優化,該庫主要用于實現易讀的基礎代碼并將提供調試支持。
·開源許可。由Michael Mahemoff(http://softwareas.com)(具有John Wehr和Richard Schwartz的一些思想)維護。
2.2 Flash JavaScript集成包
網址是:http://www.osflash.org/doku.php?id=flashjs,允許JavaScript和Flash內容的集成:
·使JavaScript能夠調用ActionScript功能和反過來的實現。
·所有主要的數據類型能在這兩種環境之間傳遞。
·開源許可。由多個開源Flash貢獻者提供支持。
2.3 Google AJAXSLT(發行于2005年6月)
網址是:http://goog-ajaxslt.sourceforge.net/,是一個Javascript框架,用來執行XSLT轉換以及XPath查詢。
·建立在Google地圖工作基礎之上。
·開源許可(BSD)。由一家創新搜索方案公司支持,自稱為"Google"。
2.4 HTMLHttpRequest(Beta版;始于2005年)
HtmlHttpRequest(http://www.twinhelix.com/javascript/htmlhttprequest/),它使用了XMLHttpRequest和Iframes以改進兼容性。
·測試過并能工作在:IE6/Win,IE5.5/Win,IE5/Win,IE4/Win,Mozilla/Win,Opera7/Win,Safari/Mac,IE5/Mac。
·未測試,可能能工作在:IE4/Mac,Mozilla/Mac,Opera/Other,Konqueror/Linux。你正在使用這些之一嗎?作者正在請求兼容性信息。
·開源許可(LGPL)。由Twin Helix Designs(http://www.twinhelix.com/)的Angus Turnbull維護。
2.5 交互式網站框架(自從2005年5月)
交互式網站框架(http://sourceforge.net/projects/iwf/,是一個項目,目的是從瀏覽器端對Ajax基礎結構的多方面予以支持。自描述為"使用javascript,css,xml,和html來創造高度交互網站的框架。包括一個定制的針對高度可讀的javascript的xml分析器。實質上,是建立基于AJAX的網站的基礎,還有另外一些通用腳本"。
·線程安全的XMLHttpRequest實現。
·針對XML文檔的包裝器,以便你能夠創建更具可讀性的代碼:
var node = doc.groceries.frozen[0].pizza[0].size;
代替手工的導航:
var node = doc.documentElement.firstChild.firstChild.getAttribute("size");
·開源許可。由Weaver(http://circaware.com|Brock)維護。
2.6 LibXMLHttpRequest(發行于2003年6月)
libXmlRequest(http://www.whitefrost.com/servlet/connector?file=reference/2003/06/17/libXmlRequest.html),是XMLHttpRequest的一個瘦包裝器。
·getXML()和postXML()方法。
·XMLHttpRequest對象池支持。
·Response緩沖。
·可用源碼(明顯),但是受標準版權的保護,由Stephen W.Coate(http://www.whitefrost.com/index.jsp)所維護。
2.7 RSLite(x)
網站是:http://www.ashleyit.com/rs/main.htm,是一個針對XMLHttpRequest的瘦包裝器。
·一個簡單的組件,作為Brent Ashley的更全面的遠程腳本工作(參見Javascript遠程腳本-JSRS在多語言服務器端)的一部分發行。
2.8 Sack(在開發中,自從2005年5月)
網站是:http://twilightuniverse.com/2005/05/sack-of-ajax/,是一個針對XMLHttpRequest的瘦包裝器。
·調用者能指定回叫函數或者回叫DOM對象。借助于回叫DOM,應答文本直接被推入到DOM中
2.9 Sarissa(發行于2月,2003年)
網站是:http://sarissa.sf.net,是一種Javascript API,它封裝了在瀏覽器端可以獨立調用XML的功能。
·可移植的XMLHttpRequest創建
·可移植的XPath查詢
·可移植的DOM操作
·可移植的XSLT
·可移植的XML串行化
·開源(GPL2.0和LGPL2.1)。來自多方面貢獻者。
2.10 XHConn(發行于自從4月,2005年)
網站是:http://xkr.us/code/javascript/XHConn/,是一個對XMLHttpRequest的瘦包裝器。
·例如
new XHConn().connect("mypage.php","POST","foo=bar&baz=qux",fnWhenDone);
·開源許可。由Brad Fults所維護。
3 服務器端:多種語言
3.1 跨平臺異步的接口工具箱(5月2005年)
CPAINT:http://cpaint.sourceforge.net/,是一真正的支持PHP和ASP/Vbscript的Ajax實現和JSRS(JavaScript遠程腳本)實現。CPAINT提供給你需求的代碼在后臺實現AJAX和JSRS,而返回的數據以JavaScript形式在前臺操作,格式化和顯示。這允許你創建能提供接近實時的反饋給用戶的web應用程序。
·支持PHP&ASP
·針對所有函數的一致的JavaScript文件
·支持遠程腳本和XML
·支持本地和遠程函數
·單個或者多個XMLHTTP對象
·以文本或者JavaScript XML/DOM文檔對象方式返回后臺數據
·能支持POST和GET請求
·后臺代理函數來訪問遠程函數和數據
·在所有的主要瀏覽器上測試過
·在GNU GPL&LGPL保護下發行
3.2 SAJAX(可用,但是不是1.0版本;自從3月2005年)
網站是:http://www.modernmethod.com/sajax/,直接把調用從Javascript發送到你的服務器端語言并再次回返。例如,調用一個javascript方法x_calculateBudget(),將先到達服務器和調用一個Java calculateBudget()方法,然后以javascript方式把值返回到x_calculateBudget_cb()。
·便利從Javascript代理函數到后臺操作的映射。
·能夠代理對眾多服務器端平臺(ASP/ColdFusion/Io/Lua/Perl/PHP/Python/Ruby)的調用。
·開源許可。來自多方面貢獻者。
3.3 Javascipt對象標志(JSON)和JSON-RPC
JSON(http://www.crockford.com/JSON/index.html),是一個"胖的自由的XML選擇",而JSON-RPC(http://www.json-rpc.org/)是一種遠程過程協議,類似于XML-RPC,強有力支持Javascript客戶。
·實現多服務器端平臺(http://www.json-rpc.org/impl.xhtml):Java,Python,Ruby,Perl。
·針對每種平臺有獨立的打包和許可,如JSON-RPC-Java(http://oss.metaparadigm.com/jsonrpc/)。
3.4 Javascript遠程腳本(JSRS)(自從2000年)
網址是:http://www.ashleyit.com/rs/jsrs/test.htm,直接把調用從Javascript發送到你的服務器端語言并再次回返。
·知名的瀏覽器:IE4+,NS4.x,NS6.x,Mozilla,Opera7和Galeon。
·服務器端支持:ASP,ColdFusion,PerlCGI,PHP,Python和JSP(servlet)。
·開源許可。由Brent Ashley(http://www.ashleyit.com/)提供支持。
4 服務器端:Java
注意:許多現有的框架最近正在添加Java支持(例如struts),我將在后面指出。
4.1 WebORB for Java(自從2005年8月)
網址:http://www.themidnightcoders.com/weborb/aboutWeborb.htm,是一個平臺,支持開發AJAX和基于Flash的胖客戶端應用程序,并可以把它們與Java對象和XML Web服務相系起來。在線舉例(http://www.themidnightcoders.com/examples)
·WebORB包括一個稱作豐富的客戶系統(http://www.themidnightcoders.com/rcs/index.htm)的客戶端庫。該豐富的客戶系統提供一簡單的在線api來綁定到并調用任何Java對象,XML Web服務或者EJB上的方法。
·支持同步的和異步的方法調用。
·并不要求在服務器端代碼上作任何修改,不需要定制方法屬性,特別的簽名或者參數類型。★不要求設計時生成代理。
·同步調用返回來自于該調用(不需要回叫)的數據。異步的調用依賴于一個回叫實現。
·任何服務器端方法能被同步地或者異步地調用。
·客戶應用程序能向服務器對象請求指定的活動方式。結果,對象能被輕易地創建而不需任何特殊的編程。
·提供一個特定API來處理數據庫查詢結果-服務器代碼能返回Data集合或者Data表,而客戶端以一個特殊RecordSet JavaScript對象來顯示這個結果。該對象提供一個方法以檢索列名和行數據。
·支持數據分頁技術。客戶應用程序能檢索頁面中的數據。
·支持所有的服務器端參數類型并返回值-原型,字符串,復合類型,數組,本機.net集合,遠程參考。
·共有兩種版本可用:標準版(自由)和專業版(商業許可)
4.2 Echo 2(自從3月2005年)
網址是:http://www.nextapp.com/products/echo2/,允許你用純Java代碼編寫Ajax應用軟件(范例(http://demo.nextapp.com/InteractiveTest/ia))。
自動地生成HTML和Javascript。
·協調瀏覽器和服務器之間的消息。消息形式為XML。
·如果需要,可以手工編寫定制的Javascript部件。
·開源許可(Mozilla公共許可或者GNU LGPL)。源于Next App,Inc.(http://www.nextapp.com/)。
4.3 Direct Web Remoting (DWR)(2005年)
網址是:http://www.getahead.ltd.uk/dwr/,是一個框架,用于直接從Javascript代碼中調用Java方法。
·象SAJAX,能把Javascript中的調用傳遞到Java方法,并返回到Javascript回叫。
·能與任何web框架(Struts,Tapestry,等等)一起使用。
·開源許可(Apache(http://www.apache.org/LICENSE.txt))。由Joe Walker(http://www.getahead.ltd.uk/sg/space/joe/)所支持。被加入到WebWork(http://www.opensymphony.com/webwork/)版本。
4.4 SWATO(2005年)
網址是:http://swato.dev.java.net/,是一套可重用的和良好集成的Java/JavaScript庫,它實現了一種更容易的方式來改變你的web應用程序的交互,它是通過AJAX方式實現。
·服務器端Java庫能被容易地配置到所有的Servlet 2.3+匹配的容器中。
·客戶端JavaScript庫能工作在支持HttpXMLRequest的各種瀏覽器中。
·使用JSON來在服務器端編組你的POJO數據。這樣你能存取在任何JavaScript環境(HTML,XUL,SVG)中的遠程數據,這種存取可以容易地通過硬編碼或者與某種成熟的JavaScript庫集成來實現。
·提供一個簡單的接口來使你的JavaScript代碼可以與暴露在客戶端的遠程POJO交互(RPC等)。
·使用web.xml中的<servlet>和<filter>的容易且靈活的配置,并能(但不是依賴)與Spring集成到一起。
·提供了幾個可幫助你快速開發web應用程序的組件(如自動完成的文本框,在線表單,在線列表,等等)。
5 服務器端:Lisp
5.1 CL-Ajax
網址:http://cliki.net/cl-ajax,實現Javascript直接調用服務器端Lisp函數。
·如下輸出函數:
(export-函數 #’my-函數)
·可以產生帶有參數的Javascript代理。
·能回叫Javascript函數或者DOM對象。
·可以被集成進SAJAX。
·開源(定制,非常靈活,許可)。由[Richard Newman](http://www.holygoat.co.uk/)所維護。
6 服務器端:.NET
6.1 WebORB for.NET(自從8月2005年)
網址:http://www.themidnightcoders.com/weborb/aboutWeborb.htm,是一個平臺,用于開發AJAX和基于Flash的胖客戶端應用程序,并能把它們連接到.NET對象和XML Web服務。(在線舉例(http://www.themidnightcoders.com/examples))
·WebORB包括一個客戶端庫,名叫Rich Client System(http://www.themidnightcoders.com/rcs/index.htm)。Rich Client System提供一簡單的在線api以綁定到和調用任何.NET對象或者XML Web服務上的任何方法。
·支持同步和異步的方法調用
·并不要求在服務器端代碼上作任何修改,不需要定制方法屬性,特別的簽名或者參數類型。**不要求設計時代理生成。
·同步調用返回來自于該調用的數據(不需要回叫)。異步的調用依賴于一個回叫實現。
·任何服務器端方法能被同步地或者異步地調用。
·客戶應用程序能向服務器對象請求指定的活動方式。結果,對象能被輕易地創建而不需任何特殊的編程。
·提供一個特定API來處理數據庫查詢結果-服務器代碼能返回DataSet或者DataTable,而客戶端以一個特殊RecordSet JavaScript對象來顯示這個結果。該對象提供一個方法以檢索列名和行數據
·支持數據頁面技術。客戶端應用程序能檢索頁面中的數據。
·支持所有的服務器端參數類型并返回值-原型,字符串,復合類型,數組,本機.net集合,遠程參考
·共有兩種版本可用的:標準版(自由)和專業版(商業許可)
6.2 Ajax.NET(自從3月2005年)
網址是:http://ajax.schwarz-interactive.de/,是一個庫,實現從Javascript到服務器端.NET的存取。
·象SAJAX,能把Javascript中的調用傳遞到.NET方法,并返回到Javascript回叫。
·能存取來自于JavaScript的會話數據。
·緩存結果
·自由使用,可用的源碼,未指定使用許可。由Michael Schwarz(http://weblogs.asp.net/mschwarz/)所維護。
·不允許改變源代碼,用屬性標記方法
·完整的類支持以返回客戶端JavaScript值
·使用HtmlControls來進行輸入和返回值
·可以返回數據表,數據集,數據視圖,數組和集合
7 服務器端:PHP
7.1 AjaxAC(自從2005年4月)
網址是:http://ajax.zervaas.com.au/,用單個的PHP類封裝了完整的應用程序。
·所有的應用程序代碼是自包含在單個類中(附加另外一些JavaScript庫)
·干凈利索地調用PHP文件/HTML頁面。只需創建應用程序類,然后參照應用程序JavaScript和依附任何需要的HTML元素到該應用程序。
·容易地處理JavaScript事件的內嵌功能
·創建子需要并處理它們的內嵌功能
·允許定制的配置值,因此某些單元能在運行時間設置
·無凌亂的JavaScript代碼夾雜在調用HTML的代碼中-所有的事件是被動態依附的
·由于以上兩個原因容易和模板引擎集成到一起
·容易鉤到(hook in to)已有的PHP類或者MySQL數據庫以返回來自于子需求的數據
·能夠容易地進一步生成JavaScript對象的可擴展的窗口小組件結構(但是還需要做一些工作)
背景:
·開源許可(Apache2.0)。由Zervaas Enterprises(http://ajax.zervaas.com.au/)支持
7.2 JPSpan
網址是:http://jpspan.sourceforge.net/wiki/doku.php,直接把Javascript調用傳遞到PHP函數。
·進行了嚴肅的單元測試。
·開源許可(PHP)。
7.3 XAJAX
網址是:http://xajax.sf.net,直接把Javascript調用傳遞到PHP函數。
·使用Javascript代理來調用PHP腳本。
·開源。由J.Max Wilson所創。
8 服務器端:Ruby
Ruby On Rails(http://www.rubyonrails.org/)是一個通常的強力支持Ajax的web框架:
·當Ajax出現的時候Rails還處于其發展的早期,因此Ajax可能逐漸成為Rails框架的核心。
·生成瀏覽器中大多數/全部的窗口小組件和動畫的Javascript腳本。
·支持服務器端調用。
·調度支持。
·開源許可。
http://kb.csdn.net/java/Articles/200509/7a4005c8-f221-46d0-b229-53c9ae1259df.html
注意: http://kb.csdn.net/java/Articles/200509/7a4005c8-f221-46d0-b229-53c9ae1259df.html
posted on 2005-12-20 11:21
Alpha 閱讀(1633)
評論(0) 編輯 收藏 所屬分類:
jQuery JavaScript Flex