ajax|程式|架構|設計
1 瀏覽器端架構被劃分成兩大類:
•應用程式架構:提供瀏覽器的功能,但是常以包括視窗小組件抽象和另外的組件而出名,其功能主要圍繞案頭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所維護。