基於Ajax的應用程式架構匯總
來源:互聯網
上載者:User
瀏覽器端架構被劃分成兩大類:
·應用程式架構:提供瀏覽器的功能,但是常以包括視窗小組件抽象和另外的組件而出名,其功能主要圍繞案頭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;</pre>
代替手工的導航:
var node = doc.documentElement.firstChild.firstChild.getAttribute("size");</pre>
·開源許可。由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指令碼。
·支援伺服器端調用。
·調度支援。
·開源許可。