ajax框架總彙

 轉自http://www.duduwolf.com/post/AJAX_Frameworks.asp

另外http://ajaxpatterns.org/Frameworks關於ajax的東西真是應有盡有啊

此文原出於AJAX Patterns網站的一篇《Ajax Frameworks》的wiki文章,很早前我就注意到,後來在國內也有人翻譯了,不過最近發現此wiki還是在不斷添加維護中,截止此文發佈前,作者又添加了好幾個新誕生的AJAX開發工具,所以我決定重新翻譯一遍,並且時常注意原文發佈狀態,一有新的內容立馬也翻譯過來,做到同步:)

此翻譯稿很大一部分內容出自國內出現的那個先前版本,我只是對新加入的幾項進行了翻譯,並且對我熟悉的產品項着重介紹了一下,以後我會抽時間收集文中提到AJAX工具相關的文章,儘量將內容介紹和功能點評做到全面詳細點。所以請關注和準備用AJAX做開發的朋友關注這篇文章,我會時常更新的。原文因爲是由一個wiki系統維護,所以在所難免出現參差不齊,風格上也有不統一的情況,翻譯時我也是參照原文原封不動的挪了過來,以後我會抽時間改良下。


翻譯正文

基於瀏覽器的應用框架一般分爲兩種:

  • Aplication frameworks:提供了瀏覽器功能,但其最著名的還是在於通過窗口生成組件建立桌面GUI。
  • Infrastructural frameworks:提供基本的框架功能和輕便式瀏覽器端操作,讓開發者去創建具體應用,主要功能包括:
    • 基於XMLHttpRequest組件的瀏覽器交互功能
    • XML解析和操作功能
    • 根據XMLHttpRequest的返回信息進行相應的DOM操作
    • 一些特殊情況下,和其他的瀏覽器端技術如Flash(或Java Applets)等集合到一起應用

基於服務器端的應用框架通常以下面兩種方式工作(儘管它們根據不同的語言進行了分類)

  • HTML/JS Generation(HTML/JS生成):通過服務器端生成HTML和JS代碼在傳遞給瀏覽器端進行直接運行
  • 遠程交互:JavaScript調用服務器端函數(例如調用Java函數)並返回給JavaScript的回調句柄,或者請求服務器端數據信息,例如Session信息,數據庫查詢等。

 


目錄

1.1 Bindows 1.2 BackBase 1.3 DOJO 1.4 Open Rico 1.5 qooxdoo 1.6 Tibet 1.7 AJFORM 2.1 AjaxCaller 2.2 Flash JavaScript Integration Kit 2.3 Google AJAXSLT 2.4 HTMLHttpRequest 2.5 Interactive Website Framework 2.6 LibXMLHttpRequest 2.7 MAJAX 2.8 RSLite 2.9 Sack 2.10 Sarissa 2.11 XHConn 3.1 Cross-Platform Asynchronous INterface Toolkit 3.2 SAJAX 3.3 Javascipt Object Notation (JSON) and JSON-RPC 3.4 Javascript Remote Scripting (JSRS) 3.5 Bitkraft for ASP.NET 4.1 WebORB for Java 4.2 Echo 2 4.3 Direct Web Remoting (DWR) 4.4 SWATO 4.5 AJAX JSP Tag Library 4.6 AJAX Java Server Faces Framework 5.1 CL-Ajax 6.1 WebORB for .NET 6.2 Ajax.NET 6.3 ComfortASP.NET 6.4 AjaxAspects 7.1 AjaxAC 7.2 JPSpan 7.3 XAJAX 8.1 Ruby On Rails

1. Pure Javascript: Application Frameworks

1.1 Bindows (成立於2003年)

Backbase是一個通過DHTML、JavaScript、CSS和HTML等技術強勁聯合起來的一套完整的Windows桌面式的WEB應用程序解決方案。Bindows無需下載安裝客戶端支撐組件(如Java、ActiveX或Flash),僅需一個瀏覽器。純OO的理念體現在Bindows任何地方,Bindows或許是筆者見過的最完整最強大的AJAX應用程序平臺。
Bindows是商業程序的,使用了來自於MB的技術(總部位於GA USA,主要開發中心在瑞典,成立於2002年)。

Bindows框架提供的功能和特性有:
  • 基於面相對象技術的類和API
  • 一套完整的Windows桌面系統,支持各種特性窗口模式,包括菜單、表單、表格、滑動條、測量儀器窗口和其他一些Windows窗口特性支持。
  • 是開發zero-footprint(零空間佔用)SOA客戶端應用程序首選工具包
  • 本機的XML,SOAP和XML-RPC支持
  • 單用戶到企業級開發的支持
  • 內建的完美的AJAX支持
Bindows開發環境:
  • 支持企業級規模的項目開發
  • 跨瀏覽器、跨OS平臺的支持
  • 不受服務器結構限制
  • 良好的與新的、現有的資源互操作性
  • 統一的開發接口

 

1.2 BackBase (成立於2003年)

BackBase是一個完整的瀏覽器端框架,提供了豐富的瀏覽器操作功能,以及對.NET和JAVA平臺的集成。
商業化產品,來自於Backbase B.V(總部在Amsterdam,成立於2003年)。

 

1.3 DOJO (開發中,成立於2004年9月)

DOJO提供完整的輕量級窗口組件和瀏覽器-服務器消息映射支持

  • 提供創建自定義Javascript窗口組件的框架支持
  • 預製的豐富的窗口類型庫
  • B/S消息映射支持——XMLHttpRequest和其他機制
  • 支持瀏覽器中的URL操縱功能
  • 開源許可(Academic Free License 2.1),由JotSpotAlex Russell所領導。

1.4 Open Rico (開發中;成立於2005年5月;基於早期的一個proprietary 框架)

Open Rico是一個支持Ajax架構和用戶交互的多用途框架。

  • 一個XMLHttpRequest response能被一個或多個的DOM對象,或者Javascript對象調用。
  • 支持拖拽操作
  • 支持基於AJAX的動畫模式,如縮放和變換等
  • 基於Behaviors的操作庫
  • 使用指南,由RussMirimar的Yonah提供
  • 開源。源於Sabre航空公司解決方案,由Bill Scott,Darren James及另外一些人維護。

 

1.5 qooxdoo (開發中; 成立於2005年5月)

qooxdoo,是另一個發展迅猛的應用框架,提供廣泛的UI支持,正在開發基礎架構等特性。
  • 基礎結構特性:
    • 能輕易的捕獲和操縱DOM事件
    • 支持調試
    • 支持一個時間操作的Timer類
    • Getter/Setter支持
  • UI:
    • 窗口組件庫和框架
    • 界面佈局管理
    • 圖像緩存和透明PNG圖片處理
  • 開源(LGPL).

1.6 Tibet (開發中; 創建於2005年6月)

Tibet提供了大量的易移植和完整的JavaScript API,通過這些可以快速生成大量的客戶端代碼,Tibet自稱是企業級AJAX。

  • 遠程腳本調用封裝在XMLHttpRequest中
  • URI支持
  • 支持所有的HTTP事件,不再僅僅是GET和POST
  • 低級的協議-File://和WebDav也可以當作HTTP正常使用
  • Web Services調用支持,包括SOAP、XML-RPC等等
  • 大型的Javascript對象庫
  • 多種多樣的XML操作支持
  • IDE和開發工具
  • 開源協議(OSI)

1.7 AJFORM (創建於2005年6月)

AJFORM是一個極易上手的AJAX框架,被用來編寫入門級的AJAX代碼,提供有以下功能:

  • 三步安裝
  • 自動支持任意HTML表單元素
  • 幾乎無需編碼即可實現AJAX

2 Pure Javascript: Infrastructural Frameworks

2.1 AjaxCaller(創建於2005年5月,目前是Alpha版)

AjaxCaller是一個具有多線程安全訪問的XMLHttpRequest組件,主要針對Ajax開發新手,目前仍處於alpha開發階段,僅在AjaxPatterns的在線搜索範例中使用了這個程序。
  • 用明文或者XML結構的數據實現和服務器的交互(GET/POST/PUT/DELETE)
  • 支持XMLHttRequest對象的構析(銷燬對象,C++支持內存對象的構析操作)
  • 支持Response的高速緩存(尚在計劃中)
  • 簡單的庫文件代碼易於新手學習使用,並且支持腳本調試
  • 開源協議

2.2 Flash JavaScript Integration Kit

The Flash JavaScript Integration Kit可以使Flash和Javascript腳本實現相互集成。

  • 可以實現在JavaScript中調用Flash ActionScript腳本,反之亦然。
  • 幾乎支持雙方主要數據類型的在不同環境中的傳遞調用。
  • 開源協議,有幾個Flash開源愛好者維護。

2.3 Google AJAXSLT (2005年6月發行)

Google AJAXSLT,是一個Javascript框架,用來執行XSLT轉換以及XPath查詢。

  • 目前在Google Map上就使用了這個。
  • 開源協議(BSD)

2.4 HTMLHttpRequest(Beta版;創建於2005年)

HtmlHttpRequest最大的特點就是運用XMLHttpRequest對象和標準HTML標籤IFrame來實現最大限度的跨瀏覽跨平臺的AJAX支持,其原理是在支持XMLHttpRequest的瀏覽器上調用XMLHttp,如果不支持,就用IFrame來模擬實現異步交互。

  • 目前支持的瀏覽器: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)

2.5 Interactive Website Framework (創建於2005年)

Interactive Website Framework定位在瀏覽器中支持各種各樣的AJAX基礎應用的開源項目。自稱是通過JavaScript、CSS、XML和HTML實現高性能的交互式WEB框架,包括一個可定製易讀的XML解析器。實際上,IWF是一個AJAX的基礎框架,並且還包括一些通用腳本代碼。

  • 實現了線程安全的XMLHttpRequest
  • 對XML Document進行封裝,以便創建更具有可讀性的代碼:
    var node = doc.groceries.frozen[0].pizza[0].size;
    封裝後的數據讀取
    var node = doc.documentElement.firstChild.firstChild.getAttribute("size");
    原始的DOM操作讀取
  • 開源協議

2.6 LibXMLHttpRequest (2003年6月發佈)

libXmlRequest是一個小型XMLHttpRequest封裝包

  • 用getXML()和postXML()兩個事件簡化XMLHttpReuqest調用
  • 支持XMLHttpRequest對象池
  • Response緩存處理
  • 源碼可以使用,但是有版權保護。

2.7 MAJAX

MAJAX是另一個非常小巧的HttpRequest封裝包,爲收發字符型信息提供簡單接口,併爲每步動作設置回調界面。

2.8 RSLite (x)

RSLite是一個XMLHttpRequest封裝組件,作爲Brent Ashley的JSRS(JavaScript Remote Scripting)其中的一部分功能單獨發佈。詳情可以看JSRS的介紹

2.9 Sack(開發中,成立於2005年5月)

Sack也是一個很有名字的微型XMLHttpRequest封裝包。調用者可以自定義回調函數或者是DOM對象。藉助於回調DOM對象,可以把Response回來的數據直接以文本的方式嵌入DOM中。

2.10 Sarissa (發佈於2003年2月)

Sarissa是一個JavaScript API,封裝了在瀏覽器端獨立調用XML的功能。

  • 可移植的XMLHttpRequest對象創造
  • 可移植的XPath查詢
  • 可移植的DOM操控
  • 可移植的XSLT
  • 可移植的XML序列化
  • 開源協議(GPL2.0和LGPL2.1)

2.11 XHConn (2005年4月發佈)

XHConn也是一個小型的XMLHttpRequest封裝庫。筆者也使用改良過的XHConn,其特點就是調用簡單,代碼也清晰易讀。

  • 例子:
    new XHConn().connect("mypage.php","POST","foo=bar&baz=qux",fnWhenDone);
  • 開源協議許可

3 Server-Side: Multi-Language

3.1 Cross-Platform Asynchronous INterface Toolkit (2005年5月)

CPAINT是一個真正的同時支持PHP和ASP/VBScript腳本的AJAX和JSRS工具包。CPAINT在後臺提供你需求的AJAX和JSRS代碼,並自動返回到瀏覽器端相應的Javascript腳本代碼,這種方式易於實時反饋需求的WEB應用程序。

  • 支持PHP和ASP
  • 所有功能函數都在統一的JavaScript文件中
  • 支持遠程腳本和XML
  • 支持本地和遠程函數調用
  • 可以創建單個或多個XMLHttp對象
  • 返回給後臺的數據即可以是文本也可以是XML/DOM文檔對象
  • 支持POST和GET
  • 用服務端代理的方式實現遠程函數和數據的訪問操作
  • 大部分瀏覽器中測試正常使用
  • 在GNU、GPL、LGPL開源協議保護下發行

3.2 SAJAX (2005年3月)

SAJAX的實現方式很獨特,例如:調用一個javascript方法x_calculateBudget(),將先把響應傳到服務器並調用一個Java calculateBudget()方法,然後以javascript方式把值返回到x_calculateBudget_cb()中。SAJAX的名氣不錯,估計很多人都聽過甚至用過,不過缺點就是它的這套映射理論感覺較繁鎖,遠不如一些輕量級的封裝庫好用,不過SAJAX最大的特點就是支持的平臺豐富,幾乎囊括了WEB下常用的編程語言和平臺

  • 很方便從JavaScript函數映射到服務端代理操作
  • 支持多種平臺(ASP/ColdFusion/Io/Lua/Perl/PHP/Python/Ruby)
  • 開源協議

3.3 Javascipt Object Notation (JSON) and JSON-RPC

JSON是一個"face-free" XML,而JSON-RPC是一種遠程交互協議,類似於XML-RPC,對JavaScript支持較強

3.4 JavaScript Remote Scripting(JSRS)(2000年)

JSRS,較經典的遠程腳本訪問組件,支持將客戶端數據通過服務器做代理進行遠程的數據/操作交互。

  • 支持的瀏覽器:IE4+,NS4.x,NS6.x,Mozilla,Opera7和Galeon。
  • 服務器端腳本語言支持:ASP,ColdFusion,PerlCGI,PHP,Python和JSP(servlet)。
  • 開源協議。由Brent Ashley提供支持。

3.5 Bitkraft for ASP.NET

Bitkraft是個基於(.NET)Web框架的CLR(公共語言運行庫),允許用獨特的方式創建和操作分佈式Web內容。用C#編寫,運行在微軟的.NET 1.1和Mono框架下,無縫式的客戶端-服務器響應方式是它的最大特點。Bitkraft沒有使用XML組織數據,而是用JSON代替。

  • 支持的瀏覽器: IE5+, Firefox1+, NS6
  • 服務器端要求:ASP.NET, Mono XSP, Cassini, Apache (modMono) .NET Framework 1.1+
  • 事件驅動
  • 支持同步和異步的遠程代理
  • 客戶端支持所有的.NET類型或自定義類對象映射到JSON中
  • 用JSON取代XML
  • 免費,開源許可協議

4 Server-Side: Java

4.1 WebORB for Java (2005年8月)

WebORB for Java是一個開發AJAX和基於Flash的富客戶端應用程序的開發平臺。在線例子

  • WebORB包括一個富客戶端開發類庫。提供簡單的在線式API用來綁定或者調用任何Java對象、XML Web Services和EJB
  • 支持異步或同步的事件驅動
  • 不需要在服務端修改任何代碼,不需要自定義方法或屬性、變量等。不要求設計時指定代理等。
  • 同步調用不需要回調,異步調用需要一個回調方法。
  • 客戶端可以向服務端請求指定的活動方式,不需要任何編程就可以把處理結果輕易的轉變爲狀態。
  • 提供一個特定API來處理數據庫查詢結果-服務器代碼能返回DataSet或者DataTable,而客戶端以一個類似於RecordSet的JavaScript對象來顯示這個結果。該對象提供檢索列名和行數據的方法。
  • 支持數據分頁技術。客戶應用程序能檢索頁面中的數據。
  • 支持以參數的方式返回所有服務期端數據類型,如primitives, strings, complex types, arrays, native .net collections, remote references
  • 目前有兩個版本:標準版(免費),專業版(商業許可)

4.2 Echo 2 (2005年3月)

Echo 2允許你用純Java語言編寫AJAX程序。 Demo.

  • 自動生成HTML和Javascript代碼
  • 用XML在客戶端-服務端傳遞消息
  • 如果願意支持自定義Javascript組件
  • 開源協議(Mozilla Public License or GNU LGPL)

4.3 Direct Web Remoting (DWR) (2005)

Direct Web Remoting可以在Javascript代碼中直接調用Java方法的應用框架

  • 類似於SAJAX,可以把Javascript中的請求調用轉遞到Java方法中並將執行結果返回給Javascript
  • 可以和任何Web框架一起使用,如Struts、Tapestry等等
  • 開源(Apache),目前該產品被加入到WebWork

4.4 SWATO (2005)

SWATO是一套可重用的和良好集成的Java/JavaScript庫,它實現了一種更容易的方式來改變你的web應用程序的交互,通過AJAX方式實現。

  • 服務端Java庫可以非常容易的部署到所有Servlet2.3+兼容的容器中
  • 客戶端Javascript庫可以在所有支持XMLHttpRequest的瀏覽器中使用
  • 使用JSON技術在服務端組織POJO數據,這樣你可以在任何Javascript環境中(HTML、XUL、SVG)訪問這些遠程數據,這種方式很容易通過硬編碼或者某種成熟的Javascript庫集成到當前應用中
  • 提供一個簡單接口使你能在Javascript中調用遠程的POJO數據
  • 使用<servlet>和<filter>靈活的在web.xml中進行配置,並且可以集成(不是必須)到你的Spring框架中
  • 提供了幾個可幫助你快速開發web應用程序的組件(如自動完成的文本框,在線表單,在線列表等等)

4.5 AJAX JSP Tag Library

The AJAX JSP Tag Library是一組JSP標籤庫,用來AJAX程序開發。可以在J2EE下無需Javascript就能輕鬆開發AJAX模式的Web Form。標籤庫爲比較通用的AJAX功能提供了5個標籤:

  • autocomplete: 用戶在文本框中輸入字符,自動從指定的數據中匹配用戶輸入的字符,類似於Google Suggest
  • callout:可以爲A標籤加入氣泡式的消息提示框,不過是實時的服務端取出數據
  • Select/dropdown:類似於聯動菜單,比如地州市的聯動下拉框
  • toggle:開關閘按鈕,比如在一個hidden表單域中存儲true和falsh,同時顯示相應的img圖像
  • update field:更新數據,也就是無刷新提交了。

4.6 AJAX Java Server Faces Framework

The AJAX-JSF用來把任意的JSF應用程序轉變爲AJAX應用程序

  • 例子:AJAX組件的 MyFaces JSF Tree(樹型目錄), table scroller(可滾動的表格), tabbed pane(分頁欄)
  • 開源協議(Apache Software License)

Server-Side: Lisp

5.1 CL-Ajax

CL-Ajax實現Javascript直接調用服務端Lisp

  • 生成可帶參數的函數
  • 可以回調Javascript函數或者DOM對象
  • 可以集成到SAJAX中
  • 開源許可

6 Server-Side: .NET

6.1 WebORB for .NET (2005年8月)

WebORB for .NET是一個用.NET和XML Web Services方式開發AJAX和基於Flash的富客戶端應用程序(在線例子)

  • WebORB包括一個富客戶端開發類庫。提供簡單的在線式API用來綁定或者調用任何.NET對象、XML Web Services
  • 支持異步或同步的事件驅動
  • 不需要在服務端修改任何代碼,不需要自定義方法或屬性、變量等。不要求設計時指定代理等。
  • 同步調用不需要回調,異步調用需要一個回調方法。
  • 客戶端可以向服務端請求指定的活動方式,不需要任何編程就可以把處理結果輕易的轉變爲狀態。
  • 提供一個特定API來處理數據庫查詢結果-服務器代碼能返回DataSet或者DataTable,而客戶端以一個類似於RecordSet的JavaScript對象來顯示這個結果。該對象提供檢索列名和行數據的方法。
  • 支持數據分頁技術。客戶應用程序能檢索頁面中的數據。
  • 支持以參數的方式返回所有服務期端數據類型,如primitives, strings, complex types, arrays, native .net collections, remote references
  • 目前有兩個版本:標準版(免費),專業版(商業許可)

6.2 Ajax.NET (2005年3月)

Ajax.NET是首家支持各種方式通過Javascript訪問服務端.net的免費庫

  • 類似於SAJAX,能把Javascript請求發送到.NET方法,服務端回傳給Javascript,甚至包括串行化自定義類。
  • 可以在Javascript中訪問Session和Application數據
  • 緩存查詢結果
  • 免費使用源代碼
  • 無需更改源代碼,允許給Ajax.NET添加和修改方法和屬性
  • 所有類支持Javascript客戶端返回數據,可以在JavaScript中使用DataSet:res.Tables[0].Rows
  • 使用HtmlControls組件訪問和返回數據
  • 頁面無需重載,用事件代理(數據訪問層)
  • 因爲只提供一個調用接口方法,所以服務端CPU佔用非常少

6.3 ComfortASP.NET (2005年8月)

ComfortASP.NET可以讓開發者在純.NET下開發類似AJAX(DHTML,JavaScript,XMLHttp)特性的應用程序。

  • 快速應答
  • 減少HTML傳輸
  • 減少頁面重載
  • 無閃爍的瀏覽器內容更改
  • AJAX用戶體驗,

6.4 AjaxAspects (2005年8月)

AjaxAspects是個可以用Javascript調用服務端WebService事件的引擎

  • 用標準的SOAP和WSDL進行服務端-客戶端通信
  • 用簡單的類型和XML對象支持帶參數的返回值
  • 緩存支持
  • 動作隊列
  • 免費使用,開源協議

7 Server-Side: PHP

7.1 AjaxAC (2005年4月)

AjaxAC用一個單獨類封裝了完整的應用程序功能

  • 所有的功能集成在自包含的類中(另外附帶一些Javascript庫)
  • 調用PHP文件或者HTML頁面非常簡易,只需創建App類後把類引用傳遞給需要調用的Javascript對象或者HTML元素即可。
  • 捕獲Javascript事件
  • 可以自定義配置數據,並且支持運行時參數更改
  • 無需再Javascript代碼中夾雜凌亂的Html代碼,所有事件都是被動態附加上的
  • 由於以上兩個優點,所以支持良好的模版引擎
  • 容易Hook到PHP類和MySql數據已返回給自己的request
  • 能夠容易的用Javascript建立窗口模式應用程序。

7.2 JPSpan

JPSPAN通過Javascript直接調用PHP中的函數。

  • 進行了嚴謹的單元測試
  • 開源許可(PHP)

7.3 XAJAX

XAjax通過Javascript直接調用PHP中的函數

  • 支持用Javascript調用PHP腳本
  • 開源許可協議

8 Server-Side: Ruby

8.1 Ruby On Rails

Ruby On Rails是一個支持AJAX的完整Web框架,使用Ruby語言編寫,嚴格按照MVC結構開發。

  • 當Ajax出現的時候Rails還處於其發展的早期,因此Ajax可能逐漸成爲Rails框架的核心。
  • 生成瀏覽器中大多數/全部的Window應用組件和動畫的Javascript腳本。
  • 支持服務器端調用。
  • 隊列支持
  • 開源許可
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章