AJAX架構介紹

來源:互聯網
上載者:User

Ajax架構介紹
到此為止,你可能已經注意到,使用Ajax編程時有很多麻煩事。如果你要支援多個瀏覽器(現在還有誰只支援一個瀏覽器呢。),無疑會遭遇不相容問題。單看一個簡單的動作,比如說建立XMLHttpRequest對象的一個執行個體,這需要先進行瀏覽器測試。一旦開始嘗試使用Ajax技術,你很快就會注意到要反覆地完成同樣的一些任務。當然,你可以收集一些常用程式碼程式庫,甚至建立自己的架構。不過,做這個工作之前,需要先瞭解一下現在已經有些什麼了。
與所有優秀技術一樣,Ajax已經催生出大量架構,有了這些架構,開發人員的日子好過多了。我們要強調一點,Ajax還很新,而且還在發展,架構領域也同樣如此。幾乎每天都有新來者,目前還看不出誰是最後的贏家。2003年6月之前,這方面的架構還不多,所以在以後的幾個月可能還會有巨大變化。
有些架構基於用戶端,有些基於伺服器端;有些專門為特定語言設計,另外一些則與語言無關。其中絕大多數都有開源實現,但也有少數是專用的。我們不會面面俱到地談到每一個架構,而且也不可能深入分析提到的每個架構。我們的出發點很明確,就是讓你對現在有些什麼有所認識。在你讀到本附錄時,我們提到的一些工具包可能已經銷聲匿跡,另外的則可能剛剛建立。哪個架構最適合你。對於這個問題,只有你自己有發言權;不過,在架構領域穩定之前,你可以持一種保守的態度。甚至還有人在著力將各種架構合并在一起,等這個工作結束時應該會有好戲看。當你讀到本書時,情況應該會更加明朗,但也許你還想瞭解一下目前的情況 。
B.1 瀏覽器端架構
下面幾節介紹了一些瀏覽器端架構。
B.1.1 Dojo
Dojo是最老的架構之一,於2004年9月開始開發。這個項目的目標是建立充分利用XHR的DHTML工具包,並把重心放在可用性問題上。Dojo只有幾個檔案,不用處理XHR的建立,只需調用bind方法,並傳入想調用的URL和回調方法即可。就這麼簡單。還可以使用bind方法來提交整個表單。
Dojo有一個特性使它獨樹一幟,這就是它支援向後和向前按鈕。儘管這個特性不一定在每個瀏覽器上都能用(遺憾的是,Safari就是一個異類),但你確實可以註冊一個回調方法,在使用者點擊了向後按鈕或向前按鈕時觸發這個方法。Dojo還提供了changeURL標記,力圖解決使用Ajax所固有的書籤問題。
Dojo看上去是相對成熟的工具包之一,它把重點放在可用性上,這一點很不錯。Dojo表現得相當穩定,在它身後還有一些支撐力量。Dojo的郵件清單相當活躍,多看一些文檔可能更有協助。可以在dojotoolkit.org得到更多相關資訊。
B.1.2 Rico
Rico是市場上最新的架構之一,由Sabre Airline Solutions開發,隨後又成為開源實現。當然,rico在西班牙語裡就是rich,說明這個項目的總目標是提供一組組件來開發豐富的網際網路應用。它得到了廣泛的瀏覽器支援,不過讓人不解的是Safari 並不支援Rico。
與Dojo關注可用性不同,Rico則是針對拖放動作、資料格和所謂的電影效果(移動組件、淡入淡出等等)而設計。Rico網站上有很多有意思的示範版(DEMO),並且提供了代碼。如果開發人員想儘快瞭解Rico,並且運行起來,這是一個很好的起點。相關的文檔不多,不過隨著這個架構的日漸成熟,這種情況會有所改觀。
Rico可以作為單個檔案下載,不過你可能還需要Prototype JS庫。更多有關的資訊請訪問openrico.org/home.page。
B.1.3 qooxdoo
qooxdoo也是Ajax架構領域的一個新成員,它提供了一個基於JavaScript的工具包來彌補HTML的不足。儘管還處在早期的alpha階段,但qooxdoo確實提供了一些相當令人信服的組件。使用qooxdoo,可以類比標準胖客戶應用中的一些特性,如菜單條、工具提示、網格布局和拖放支援。
qooxdoo確實有一些有用的文檔,還對底層細節提供了很有協助的解釋。qooxdoo的魅力顯然體現在它的複雜部分上。如果你的目標是建立瘦應用,並希望它與胖客戶應用相差無幾,就可以試試qooxdoo。更多有關的資訊請訪問qooxdoo.oss.schlund.de。
B.1.4 TIBET
你覺得Ajax最早是什麼時候出現的。根據對此的解釋,也許會認為TIBET可能是現存最老的架構。根據文檔所述,TIBET小組從1997年就開始開發這個工具包,他們的目標是提供企業級Ajax支援。TIBET看上去不只是封裝了XMLHttpRequest對象,它還對Web服務和底層協議提供了支援,並且提供了Google、Amazon和許多其他常用服務的預置封裝器。
真正讓TIBET卓而不群的是,它有一個完全互動基於瀏覽器的IDE,這能大大簡化開發、調試和單元測試。更多有關的資訊請訪問www.technicalpursuit.com。
B.1.5 Flash/JavaScript整合套件
在Ajax之前,Flash很是風行,很多Web網站都建立在Flash平台上。那些曾對Flash狠下一番功夫的人不想完全放棄Flash,利用這個開源項目就能同時利用Ajax技術。這個工具包在所有主要瀏覽器上都能用,使得JavaScript能夠調用ActionScript,ActionScript也能調用JavaScript。可以來回傳遞大量對象,包括日期、串和數組。
Flash/JavaScript整合套件的安裝涉及一些JavaScript檔案,以及兩個用於Flash的庫函數。從頁面上調用ActionScript函數只需幾行代碼而已。有關的文檔相當少,不過,如果你想使用Ajax訪問Flash,這個工具包就很值得研究。更多有關的資訊請訪問weblogs.macromedia.
com/flashjavascript/。
B.1.6 Google AJAXSLT
基於Google Maps的工作,Google AJAXSLT是使用XPath的XSL轉換(XSLT)的JavaScript實現。XSLT可以把XML文檔轉換為其他語言,如HTML。AJAXSLT允許使用JavaScript在瀏覽器上直接完成這些轉換。
Google AJAXSLT在所有主要瀏覽器上都能工作,它是在BSD許可證下發布的。這個工具包很小,包括幾個JavaScript檔案,還有一些方便的測試頁。Google AJAXSLT不是十全十美的,不過,如果Google Suggest有所提示,我們希望Google AJAXSLT的缺點能很快解決。因為Google是最先使用Ajax的網站之一,我們會很有興緻地看到在未來幾個月它還會有所增加。更多有關的資訊請訪問goog-ajaxslt.sourceforge.net。
B.1.7 libXmlRequest
libXmlRequest架構也是比較老的一個架構,早在2003年就已經發布了。這個架構套件括一個JavaScript檔案,它相當於XMLHttpRequest對象的一個封裝器,提供了兩個重載的請求函數:getXml和postXml。另外,它有一些處理緩衝池和緩衝的屬性,還有一些工具函數處理常見的任務,如解析來自伺服器的XML以及修改DOM。
這個工具包能在哪些瀏覽器上運行,這一點還不是很清楚,而且有關的文檔相當少。這個工具包著作權歸其作者Stephen W. Cote所有,其中沒有提到許可問題。因此,只能用它協助你產生靈感。更多有關的資訊請訪問www.whitefrost.com/index.jsp。
B.1.8 RSLite
RSLite是遠程指令碼的一個實現,由Brent Ashley編寫。從技術上講,它沒有利用作為Ajax核心的XMLHttpRequest對象,但是得到了更廣泛的瀏覽器支援。如果你需要支援原來的瀏覽器,而這些瀏覽器不支援XMLHttpRequest對象,就可以試試RSLite。RSLite是相當輕量級的,已從2000年發展至今 。更多有關的資訊請訪www.ashleyit.com/rs/rslite/。
B.1.9 SACK
SACK(簡單Ajax程式碼封裝)開發為一個瘦封裝器,封裝了XMLHttpRequest對象。其作者Gregory Wild-Smith認為,其他的許多架構太過複雜,而且做了許多本不該它們完成的任務。所以他建立了SACK來簡化Ajax的開發。SACK包括幾個可以簡化伺服器調用的方法。比起具體建立適當的XMLHttpRequest對象執行個體來說,用更少的代碼就能向伺服器發送資料,並處理響應。
SACK由一個JavaScript檔案組成,其中包含很少的代碼。SACK底層軟體的發布得到了修改X11許可(也稱為MIT許可),與大多數開源項目一樣,它的文檔並不多,不過,入門肯定還是綽綽有餘的。SACK的真正強大之處在於它的簡單性,如果你要找的是一個基本封裝器,可以試試SACK。更多有關的資訊請訪問twilightuniverse.com/projects/sack/。
B.1.10 sarrisa
sarissa有一點是Ajax做不到的,它以一種獨立於瀏覽器的方式對XML API提供了封裝支援。利用這個架構,建立和使用XMLHttpRequest對象實在是小菜一碟(不用檢查瀏覽器,它已經為你處理好了)。另外,sarissa還對使用DOM提供了支援。類似於Google AJAXSLT,sarissa也支援XSLT,它類比了IE上的Mozilla處理器。
sarissa只包括幾個類,在GPL協議下發布。Mozilla/Firefox和IE都充分支援sarissa,只在Opera、Konqueror和Safari瀏覽器上有些函數不能用。更多有關的資訊請訪問sarissa.
sourceforge.net/doc/。
B.1.11 XHConn
XHConn類似於SACK,它相當於XMLHttpRequest對象的一個簡單封裝器。你不用直接使用XMLHttpRequest對象,只需首先啟動一個XHConn執行個體,與使用XHR同樣的方法加以處理。也就是說,無需瀏覽器檢查,並提供了一種簡單的方法來確定瀏覽器是否支援XHR(這對於需要妥善降級的網站尤其方便)。
XHConn在Safari、IE、Mozilla、Firefox和Opera上都能工作。類似於大多數Ajax架構,這是一個開源實現,在Creative Commons License協議下發布。XHConn是一個代碼不多的檔案,不過它確實做到了該做的事情——簡化Ajax。更多有關的資訊請訪問xkr.us/
code/javascript/XHConn/。
B.2 伺服器端架構
以下介紹伺服器端的架構。
B.2.1 CPAINT
CPAINT(跨平台非同步介面工具包)在伺服器端實現Ajax,它向客戶返迴文本或DOM文檔對象,以便用JavaScript處理。CPAINT在大多數主要瀏覽器上都能用,而且支援遠程指令碼,在GPL協議下發布。這個項目的文檔相當完備,不過,CPAINT只支援PHP和ASP。更多有關的資訊請訪問sourceforge.net/projects/cpaint/。
B.2.2 Sajax
利用Sajax,可以直接從JavaScript調用伺服器端代碼。Sajax支援Perl、Python、Ruby和ASP等語言(不過奇怪的是,目前並不支援Java)。安裝Sajax相當簡單,只涉及針對特定伺服器語言的簡單的庫。Sajax的開發社區極其活躍。已經確認的只有IE 6和Mozilla/Firefox提供Sajax支援,不過本書作者認為它在Safari上也能很好地使用。更多有關的資訊請訪問www.modernmethod.com/sajax。
B.2.3 JSON/JSON-RPC
JavaScript對象註解(JSON)是一種文字格式設定,與XML很相似,可以用於交換資料。JSON的設計要保證兩方面,一方面便於人閱讀,另一方面便於機器解析,它使用了C系列語言類似的約定。與JSON相關的還有JSON-RPC,這是一個遠端程序呼叫(RPC)協議,類似於XML-RPC,但面向的是JSON語言。作為規約,JSON-RPC在許多語言中都有實現,包括Java、Ruby、Python和Perl。
由於JSON-RPC是規約,你需要知道哪個特定實現適用於你的環境,還要充分瞭解特定的實現。取決於具體的實現,有些實現的文檔相當完備,有些則根本沒有。開發人員的參與程度也有很大不同。關於JSON-RPC規約的討論已經有些少了。更多有關的資訊請訪問 www.crockford.com/JSON/index.html。
B.2.4 Direct Web Remoting
利用Direct Web Remoting (DWR),你能從JavaScript直接調用Java方法,就好像它們是瀏覽器的本地方法一樣。儘管後台嚴格限制為Java,但DWR仍然是最流行的架構之一。DWR的文檔是最棒的,還有一些有用的例子可以協助你入門。
安裝並不難,不過還要編輯Web應用的部署描述檔案,另外要編輯DWR特定的檔案。DWR設定檔指定了可以遠程建立和調用的類,而且文檔中警告使用者:從瀏覽器調用伺服器確實存在一些安全問題。除了包含伺服器端代碼的JAR檔案,另外還有兩個JavaScript檔案包含了一些輔助函數。DWR適用於一些常見的Web架構,如Struts和Tapestry,在Apache協議下發布。如果想從Web頁面調用Java方法,DWR能助你一臂之力。更多有關的資訊請訪問getahead.ltd.uk/dwr/index。
B.2.5 SWATO
Shift Web Applications TO (SWATO)也是一個基於Java的Ajax架構解決方案。SWATO在所有Servlet 2.3或更高版本的容器中都能工作,類似於DWR,它也需要對設定檔做一些更新。有意思的是,SWATO充分利用了JSON來完成客戶和伺服器之間資料的編組,與本附錄中討論的其他一些架構相似,它也允許從瀏覽器調用伺服器端Java。為了協助開發人員,SWATO包括許多可複用的組件,如自動完成文字框等。
與使用其他架構相比,使用SWATO要相對複雜一些,要訪問的類需要實現一個SWATO介面。不過,其文檔相當完備,對於入門來講綽綽有餘。SWATO設計為使用Spring來打包服務,但是不一定非得如此。更多有關的資訊請訪問https://swato.dev.java.net/doc/html/。
B.2.6 Java BluePrints
Sun的BluePrints小組一直忙於將Ajax納入他們的解決方案目錄(Solutions Catalog)中。Solutions Catalog包括一些很好的文檔,描述了如何使用基本Ajax,如何?自動完成,如何建立一個進度條以及如何驗證表單。它還包括JavaServer Faces組件。為BluePrints Solutions Catalog開發的代碼可以從www.java.net網站得到。
B.2.7 Ajax.Net
Ajax.Net之於Microsoft .NET就相當於SAJAX、DWR和SWATO之於Java。利用Ajax.Net,你能從JavaScript客戶調用.NET方法。Ajax.Net包括一個DLL,可以與VB .NET或C#一同使用。Ajax.Net的文檔很好地展示了針對各種情境的解決方案,而且能得到相關的原始碼。不過,Ajax.Net的許可協議很不明確。更多有關的資訊請訪問ajax.net。
B.2.8 Microsoft的Atlas項目
Microsoft在Ajax領域涉足的時間已經不短了,畢竟,XMLHttpRequest對象是Microsoft發明的,而且從1998年開始就已經用在Web版本的Outlook中。Microsoft把重點放在提供一個更加健壯的開發環境上,從而讓開發人員的工作更輕鬆。Microsoft的著眼點還不只這些,還力圖提供用戶端指令碼架構、ASP.NET控制項和Web服務整合。Microsoft還發布了Atlas項目,作為其ASP.NET 2.0預覽版的一部分。有Microsoft的介入,開發人員的工具包可能會比今天充實得多。更多有關的資訊請訪問beta.asp.net/default.aspx?tabindex=7&t-
abid=47。
B.2.9 Ruby on Rails
Rails是一個令人興奮的新Web架構,建立在Ruby語言基礎上。如今,Rails已經得到了大量關注(在Google上查一下Rails,可以找到更多資訊),這是因為使用Rails能夠快速開發基於Web的應用。開發Basecamp時,37signals小組提出名為Rails的架構。Basecamp正是Ajax應用的主要樣本,所以看到Rails對Ajax提供如此充分的支援,我們不應感到奇怪。Rails有許多內建的JavaScript庫,其中封裝了很多常用的特性,它還包含一個模組,其中封裝了Ruby的JavaScript調用。如果你在使用Rails,就會發現Ajax非常簡單。更多有關的資訊請訪問www.rubyonrails.org。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.