鷹翔宇空

          學(xué)習(xí)和生活

          BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
            110 Posts :: 141 Stories :: 315 Comments :: 1 Trackbacks
          引自:http://www.aygfsteel.com/zyb9114/articles/23357.html

          AJAX全稱(chēng)為“Asynchronous JavaScript and XML”(異步JavaScript和XML),是指一種創(chuàng)建交互式網(wǎng)頁(yè)應(yīng)用的網(wǎng)頁(yè)開(kāi)發(fā)技術(shù)。它有機(jī)地包含了以下幾種技術(shù):

          Ajax(Asynchronous JavaScript + XML)的定義

          基于web標(biāo)準(zhǔn)(standards-based presentation)XHTML+CSS的表示;

          使用 DOM(Document Object Model)進(jìn)行動(dòng)態(tài)顯示及交互;

          使用 XML 和 XSLT 進(jìn)行數(shù)據(jù)交換及相關(guān)操作;

          使用 XMLHttpRequest 進(jìn)行異步數(shù)據(jù)查詢(xún)、檢索;

          使用 JavaScript 將所有的東西綁定在一起。

          類(lèi)似于DHTML或LAMP,AJAX不是指一種單一的技術(shù),而是有機(jī)地利用了一系列相關(guān)的技術(shù)。事實(shí)上,一些基于AJAX的“派生/合成”式(derivative/composite)的技術(shù)正在出現(xiàn),如“AFLAX”。

          AJAX的應(yīng)用使用支持以上技術(shù)的web瀏覽器作為運(yùn)行平臺(tái)。這些瀏覽器目前包括:Mozilla、Firefox、Internet Explorer、Opera、Konqueror及Safari。但是Opera不支持XSL格式對(duì)象,也不支持XSLT。[1]

          與傳統(tǒng)的web應(yīng)用比較

          傳統(tǒng)的web應(yīng)用允許用戶(hù)填寫(xiě)表單(form),當(dāng)提交表單時(shí)就向web服務(wù)器發(fā)送一個(gè)請(qǐng)求。服務(wù)器接收并處理傳來(lái)的表單,然后返回一個(gè)新的網(wǎng)頁(yè)。這個(gè)做法浪費(fèi)了許多帶寬,因?yàn)樵谇昂髢蓚€(gè)頁(yè)面中的大部分HTML代碼往往是相同的。由于每次應(yīng)用的交互都需要向服務(wù)器發(fā)送請(qǐng)求,應(yīng)用的響應(yīng)時(shí)間就依賴(lài)于服務(wù)器的響應(yīng)時(shí)間。這導(dǎo)致了用戶(hù)界面的響應(yīng)比本地應(yīng)用慢得多。

          與此不同,AJAX應(yīng)用可以?xún)H向服務(wù)器發(fā)送并取回必需的數(shù)據(jù),它使用SOAP或其它一些基于XML的web service接口,并在客戶(hù)端采用JavaScript處理來(lái)自服務(wù)器的響應(yīng)。因?yàn)樵诜?wù)器和瀏覽器之間交換的數(shù)據(jù)大量減少,結(jié)果我們就能看到響應(yīng)更快的應(yīng)用。同時(shí)很多的處理工作可以在發(fā)出請(qǐng)求的客戶(hù)端機(jī)器上完成,所以Web服務(wù)器的處理時(shí)間也減少了。



          傳統(tǒng)web應(yīng)用與AJAX應(yīng)用的比較:處理用戶(hù)交互


          傳統(tǒng)web應(yīng)用與AJAX應(yīng)用的比較:交互模式

          微軟的Ajax

          微軟目前目前對(duì)于通過(guò)Ajax風(fēng)格的編程在瀏覽器中實(shí)現(xiàn)日益流行的富客戶(hù)端應(yīng)用比較感興趣。今后的IE中將擁有Ajax的所有東西——DHTML、JScript和XmlHttp。實(shí)際上Outlook Web Acces從1998年開(kāi)始就已經(jīng)提供了這種偉大的瀏覽體驗(yàn)了。在ASP.NET 2.0中,微軟使用異步回調(diào)及舒適的Ajax風(fēng)格的應(yīng)用程序的編寫(xiě)更加簡(jiǎn)單,并且,微軟為此提供了內(nèi)建的控件。

          最近,幾乎所有的瀏覽器都提供了Ajax所需的技術(shù),使用這種模式的富客戶(hù)端應(yīng)用程序也不斷出現(xiàn)。今天,世界上出現(xiàn)了不計(jì)其數(shù)的Ajax風(fēng)格的站點(diǎn),包括Google的很多站點(diǎn)、A9和Flickr。微軟的很多站點(diǎn)也使用了這項(xiàng)技術(shù),如Start.com和MSN虛擬地球。

          Ajax的風(fēng)行說(shuō)明用戶(hù)對(duì)于豐富的Web體驗(yàn)的需求日益增長(zhǎng)。然而,開(kāi)發(fā)和調(diào)試Ajax風(fēng)格的Web應(yīng)用程序是一項(xiàng)非常艱難的工作。要編寫(xiě)一個(gè)豐富的Web UI,開(kāi)發(fā)者需要詳細(xì)地掌握DHTML和JavaScript,并且還要掌握各種瀏覽器之間在設(shè)計(jì)細(xì)節(jié)上的不同。然而沒(méi)有那些工具能夠簡(jiǎn)化這些應(yīng)用程序的設(shè)計(jì)和開(kāi)發(fā)。最后,調(diào)試和測(cè)試這些應(yīng)用程序會(huì)變得異常困難。

          微軟致力于簡(jiǎn)化Ajax風(fēng)格Web應(yīng)用的開(kāi)發(fā),并提供豐富的、可交互的和個(gè)性化的用戶(hù)體驗(yàn)。開(kāi)發(fā)者可以對(duì)客戶(hù)端腳本不甚了解;但他們可以很容易地開(kāi)發(fā)和調(diào)試這種應(yīng)用程序。

          出于這一目的,微軟啟動(dòng)了一個(gè)新的項(xiàng)目,研發(fā)代號(hào)“Atlas”。Atlas為開(kāi)發(fā)這帶來(lái)了如下特性:
          ·Atlas客戶(hù)端腳本框架
          ·Atlas的ASP.NET服務(wù)器控件
          ·ASP.NET Web Services集成
          ·Atlas的ASP.NET構(gòu)建塊
          ·客戶(hù)端構(gòu)建塊服務(wù)

          你可能會(huì)問(wèn)的一個(gè)問(wèn)題是,Atlas如何在Avalon和智能客戶(hù)端上使用?

          我們可以看到,Atlas是編寫(xiě)豐富的、可交互的和個(gè)性化的Web瀏覽器應(yīng)用程序的最好方式。而Avalon是微軟的下一代表現(xiàn)層模型,可以在Windows平臺(tái)上提供最豐富的用戶(hù)體驗(yàn)。Avalon將使用最新的媒體集成功能和硬件加速設(shè)備,提供卓越的視覺(jué)體驗(yàn)。Avalon將帶來(lái)超越瀏覽器的體驗(yàn)。

          當(dāng)然,當(dāng)你構(gòu)建Avalon應(yīng)用程序的時(shí)候,你依然可以重用ASP.NET和Atlas中的編程模型。例如,Avalon客戶(hù)端上依然可以使用ASP.NET構(gòu)建塊服務(wù)和客戶(hù)端構(gòu)建塊服務(wù)。這種模型可以使你平滑地過(guò)渡到下一代應(yīng)用程序上。

          微軟提供了一個(gè)工具包,用來(lái)完成Ajax的功能,稱(chēng)作Atlas。從微軟的Scott Guthrie的blog上看來(lái),這個(gè)東西應(yīng)該是ASP.NET 2.0里面的。Scott肯定地表示,“Atlas客戶(hù)端腳本框架(Client Script Framework)可以運(yùn)行在所有的現(xiàn)代瀏覽器上并且何以與任何Web服務(wù)器交互”,這說(shuō)明他們正在以跨瀏覽器的態(tài)度來(lái)開(kāi)發(fā)Ajax風(fēng)格的遠(yuǎn)程腳本,這無(wú)疑是一個(gè)巨大的轉(zhuǎn)變;過(guò)去的微軟,把任何東西都搞成了特定于IE的,而一旦其開(kāi)發(fā)工具能夠真的提供徹底的跨瀏覽器支持,將能夠籠絡(luò)更多的ASP.ENT開(kāi)發(fā)者,他們無(wú)需了解任何細(xì)節(jié)就可以創(chuàng)建跨瀏覽器代碼。

          Atlas客戶(hù)端腳本框架是可擴(kuò)展的,100%面向?qū)ο蟮腏avaScript客戶(hù)端腳本框架,允許開(kāi)發(fā)這很容易地構(gòu)建擁有豐富的UI工能并且可以連接Web Services的Ajax風(fēng)格瀏覽器應(yīng)用程序。使用Atlas,開(kāi)發(fā)者可以使用DHTML、JavaScript和XMLHTTP來(lái)編寫(xiě)Web應(yīng)用程序,而無(wú)須掌握這些技術(shù)的細(xì)節(jié)。

          Atlas客戶(hù)端腳本框架可以在所有的現(xiàn)代瀏覽器上運(yùn)行,而不需要Web服務(wù)器。它還完全不需要安裝,只要在頁(yè)面中引用正確的腳本文件即可。

          Atlas客戶(hù)端腳本框架包含下列組件:
          ·一個(gè)可擴(kuò)展的和新框架,其中為JavaScript添加了很多新特性,如生存期管理、集成、多播事件處理器和接口
          ·一個(gè)基礎(chǔ)類(lèi)庫(kù),提供了通用特性,如豐富的字符串操作功能、計(jì)時(shí)器和運(yùn)行任務(wù)等
          ·一個(gè)UI框架,可以跨瀏覽器實(shí)現(xiàn)動(dòng)態(tài)行為
          ·一個(gè)網(wǎng)絡(luò)棧,用于簡(jiǎn)化對(duì)服務(wù)器的連接和對(duì)Web Services的訪(fǎng)問(wèn)
          微軟為ASP.NET應(yīng)用程序?qū)iT(mén)設(shè)計(jì)了一組Ajax風(fēng)格的服務(wù)器控件,并且加強(qiáng)了現(xiàn)有的ASP.NET頁(yè)面框架和控件,以便支持Atlas客戶(hù)端腳本框架。
          ASP.NET 2.0中有一項(xiàng)稱(chēng)作異步客戶(hù)端回調(diào)的新特性,使得構(gòu)建無(wú)中斷的頁(yè)面變得很容易。異步客戶(hù)端回調(diào)包裝了XMLHTTP,能夠在很多瀏覽器上工作。ASP.NET本身包括了很多使用回調(diào)的控件,包括具有客戶(hù)端分頁(yè)和排序功能的GridView和DetalsView控件,以及TreeView空間的虛擬列表支持。
          Atlas客戶(hù)端腳本框架將完全支持ASP.NET 2.0回調(diào),但微軟希望進(jìn)一步增強(qiáng)瀏覽器和服務(wù)器之間的集成性。例如,你可以將Atlas客戶(hù)端控件的數(shù)據(jù)綁定指定為服務(wù)器上的ASP.NET數(shù)據(jù)源控件,并且可以從客戶(hù)端異步地控制Web頁(yè)面的個(gè)性化特征。

          和任何客戶(hù)端應(yīng)用程序一樣,一個(gè)Ajax風(fēng)格的Web應(yīng)用程序通常也需要訪(fǎng)問(wèn)Web服務(wù)器的一些功能。Atlas應(yīng)用程序連接服務(wù)器的模型和其他平臺(tái)類(lèi)似,都是使用Web Services來(lái)實(shí)現(xiàn)。

          通過(guò)ASP.NET Web Services集成,Atlas應(yīng)用程序?qū)⒖梢栽谌魏沃С諼MLHTTP的瀏覽器上通過(guò)Atlas客戶(hù)端將本框架來(lái)直接訪(fǎng)問(wèn)任何宿主于ASP.NET的asmx或Indigo服務(wù)。該框架將會(huì)自動(dòng)處理代理和腳本到對(duì)象、對(duì)象到腳本的序列化問(wèn)題。通過(guò)使用Web Services集成,開(kāi)發(fā)者可以使用單一的編程模型來(lái)編寫(xiě)Web Services,并且在任何應(yīng)用程序中使用它們,不論是基于瀏覽器的站點(diǎn)上還是智能客戶(hù)端應(yīng)用程序中。

          在ASP.NET 2.0中,微軟構(gòu)建了一組豐富的構(gòu)建塊服務(wù)(Building Block Services),這使得構(gòu)建強(qiáng)大、個(gè)性化的Web應(yīng)用程序變得不可思議的簡(jiǎn)單。這些構(gòu)建塊極大地降低了在開(kāi)發(fā)通用的Web應(yīng)用程序過(guò)程中需要編寫(xiě)的代碼數(shù)量,比如管理用戶(hù)、通過(guò)角色驗(yàn)證用戶(hù)和存儲(chǔ)用戶(hù)的個(gè)性化設(shè)置信息等。

          使用Atlas,我們可以在任何瀏覽器上的任何客戶(hù)端應(yīng)用程序中向訪(fǎng)問(wèn)Web Services那樣訪(fǎng)問(wèn)這些功能。例如,如果你正在開(kāi)發(fā)一個(gè)站點(diǎn),來(lái)顯示用戶(hù)的TO-DO項(xiàng)目,你可以使用ASP.NET的Profile服務(wù)來(lái)將他們存放在服務(wù)器上的用戶(hù)自定義配置文件中。這樣即使用戶(hù)從一臺(tái)機(jī)器上轉(zhuǎn)移到另一臺(tái)機(jī)器上,也同樣可以訪(fǎng)問(wèn)這些項(xiàng)目。

          微軟將提供的服務(wù)包括(全部是基于ASP.NET 2.0的):
          - Profile:在服務(wù)器上存放每個(gè)用戶(hù)特有的數(shù)據(jù)
          - UI個(gè)性化:在服務(wù)器上存放個(gè)性化的UI設(shè)置信息
          - 驗(yàn)證:驗(yàn)證用戶(hù)
          - 角色:基于用戶(hù)的角色驗(yàn)證用戶(hù)任務(wù)和提供不同的UI
          由于這些構(gòu)建塊是服務(wù)器端的,開(kāi)發(fā)者需要對(duì)他們應(yīng)用和其他站點(diǎn)一樣的安全模型。這些服務(wù)不需要客戶(hù)端下在任何東西——只要在瀏覽器中引用腳本代理即可。所有的ASP.NET 2.0構(gòu)建塊服務(wù)都是可插拔的,這使用一種通用的提供者模型可擴(kuò)展模式在后臺(tái)實(shí)現(xiàn)。微軟提供的內(nèi)建提供程序允許開(kāi)發(fā)這使用SQL Server數(shù)據(jù)庫(kù)或Active Directory作為存儲(chǔ)容器,開(kāi)發(fā)者也可以很容易地插接自己的提供程序。例如,你可能希望使用集群而不是數(shù)據(jù)庫(kù)服務(wù)器來(lái)存放用戶(hù)的配置文件,這時(shí)你只需將你的提供程序插接近來(lái)即可。

          除了DHTML、JScript和XMLHTTP,微軟還提供了一組附加的服務(wù)來(lái)加強(qiáng)客戶(hù)端的功能并提供增強(qiáng)的體驗(yàn)。對(duì)于這樣的服務(wù),本地瀏覽器緩存就是一個(gè)很好的例子。當(dāng)啟用了本地瀏覽器緩存時(shí),Web站點(diǎn)就可以將內(nèi)容存儲(chǔ)到患從中,并在需要的時(shí)候很快地取出。但瀏覽器并未提供向緩存中存放數(shù)據(jù)的API,而且象Google Map或OWA這樣的應(yīng)用程序不得不通過(guò)很多工作產(chǎn)生一個(gè)唯一的URL才能使瀏覽器緩存它。在Atlas中,微軟提供了可編程的本地存儲(chǔ)/緩存,因此應(yīng)用程序可以很方便、有效并且安全在本地緩存數(shù)據(jù)。

          同其他應(yīng)用程序的集成是檢驗(yàn)Web體驗(yàn)是否豐富的另一個(gè)新的標(biāo)準(zhǔn)。例如,當(dāng)一個(gè)用戶(hù)瀏覽一個(gè)拍賣(mài)網(wǎng)站并對(duì)一件商品出價(jià)時(shí),他可能想隨時(shí)知道這個(gè)拍賣(mài)什么時(shí)候結(jié)束,但他如何才能將這個(gè)事件添加到他們個(gè)人的日歷程序中?Atlas帶來(lái)了一系列客戶(hù)端構(gòu)建塊服務(wù),當(dāng)用于選擇“添加到日歷”時(shí),瀏覽器將調(diào)用接駁點(diǎn)來(lái)獲取日歷數(shù)據(jù),并將其傳遞到本地的日歷程序中。此時(shí)頁(yè)面上無(wú)須下載或運(yùn)行任何特殊的代碼或執(zhí)行任何初始化動(dòng)作,因此,這比ActiveX要安全得多。

          基于Ajax的應(yīng)用程序架構(gòu)

          瀏覽器端框架被劃分成兩大類(lèi):

          ·應(yīng)用程序框架:提供瀏覽器的功能,但是常以包括窗口小部件抽象和另外的部件而出名,其功能主要圍繞桌面GUI框架。

          ·基本結(jié)構(gòu)框架:提供基本的管道和可移植的瀏覽器抽象,讓開(kāi)發(fā)者去創(chuàng)建內(nèi)容。典型的功能:

          * 針對(duì)XMLHttpRequest的包裝器以封裝瀏覽器-服務(wù)器的交互。(所有的框架都提供這一功能)。

          * XML操作和查詢(xún)。

          * 根據(jù)來(lái)自XMLHttpRequest的應(yīng)答執(zhí)行DOM操作。

          * 在一些情況中,與另外的瀏覽器端技術(shù)如Flash(和潛在的Java applets)集成在一起。

          而服務(wù)器端框架通常以下面兩種方式工作(盡管它們?cè)谶@里根據(jù)語(yǔ)言的不同進(jìn)行了分類(lèi)):

          ·HTML/JS生成:服務(wù)器提供完整的HTML/Javascript代碼生成和瀏覽器-服務(wù)器協(xié)調(diào),結(jié)果是只有瀏覽器端編碼可以被定制。

          ·遠(yuǎn)程調(diào)用:Javascript調(diào)用直接被路由到服務(wù)器端功能(例如Java方法)并返回到Javascript回叫處理器;或者Javascript調(diào)用服務(wù)器以提取信息,例如會(huì)話(huà)細(xì)節(jié),數(shù)據(jù)庫(kù)查詢(xún)等。

          1 純Javascript:應(yīng)用程序框架

          1.1 Bindows(自從2003年)

          網(wǎng)址是:http://www.bindows.net,Bindows是一個(gè)軟件開(kāi)發(fā)包(SDK),它,通過(guò)強(qiáng)力聯(lián)合DHTML,JavaScript,CSS和XML等技術(shù),能生成高度交互的互聯(lián)網(wǎng)應(yīng)用程序-成為現(xiàn)代的桌面應(yīng)用程序的強(qiáng)有力對(duì)手。Bindows應(yīng)用程序不要求下載和也不需要在用戶(hù)端安裝-僅要求有一個(gè)瀏覽器(也不需要Java,F(xiàn)lash或者ActiveX)。Bindows有可能領(lǐng)導(dǎo)面向?qū)ο箝_(kāi)發(fā)的AJAX應(yīng)用程序的平臺(tái)。

          ·它是商業(yè)化的,使用來(lái)自于MB的技術(shù)(總部位于GA USA,主要開(kāi)發(fā)中心在瑞典,成立于2002年)。

          Bindows框架提供給你:

          ·基于類(lèi)的面向?qū)ο蟮腁PI

          ·一套完整的窗口系統(tǒng),提供寬范圍的窗口小部件支持,包括菜單、表單、格子、滑動(dòng)條、量程,甚至更多

          ·用于開(kāi)發(fā)zero-footprint SOA客戶(hù)端應(yīng)用程序的領(lǐng)先的工具箱

          ·本機(jī)的XML,SOAP和XML-RPC支持

          ·單用戶(hù)到企業(yè)級(jí)的支持

          ·內(nèi)建的對(duì)AJAX的支持

          Bindows開(kāi)發(fā)環(huán)境:

          ·支持企業(yè)級(jí)規(guī)模的工程開(kāi)發(fā)

          ·跨瀏覽器,跨平臺(tái)支持

          ·服務(wù)器獨(dú)立結(jié)構(gòu)

          ·與新的和現(xiàn)有資源的互操作性

          ·一致性開(kāi)發(fā)方法學(xué)

          1.2 BackBase(自從2003年)

          網(wǎng)址是:http://www.backbase.com,是一個(gè)全面的瀏覽器端框架,支持豐富的瀏覽器功能以及與.NET和Java的集成。

          ·商業(yè)化,來(lái)自于Backbase B.V(總部在Amsterdam,成立于2003年)。

          1.3 DOJO(開(kāi)發(fā)中;自從2004年9月)

          網(wǎng)址是:http://dojotoolkit.org/,提供全面窗口小組件和瀏覽器-服務(wù)器消息支持。

          ·為創(chuàng)建定制的Javascript窗口小組件提供框架支持。

          ·預(yù)置的窗口小組件庫(kù)。

          ·瀏覽器-服務(wù)器消息支持-XMLHttpRequest和另外的機(jī)制。

          ·支持瀏覽器中的URL操縱功能。

          ·開(kāi)源許可(學(xué)術(shù)自由許可2.1(http://opensource.org/licenses/afl-2.1.php)),由JotSpot(http://www.jot.com/)的Alex Russell(http://alex.dojotoolkit.org/)所領(lǐng)導(dǎo)。

          1.4 Open Rico(開(kāi)發(fā)中;自從2005年5月;基于早期的私有框架)

          網(wǎng)址是:http://openrico.org/demos.page,是一多用途框架,支持Ajax基礎(chǔ)結(jié)構(gòu)和用戶(hù)交互。

          ·一個(gè)XMLHttpRequest應(yīng)答能被路由到一個(gè)或者更多回叫操作,DOM對(duì)象,或者Javascript對(duì)象。

          ·容易鼠標(biāo)拖動(dòng)支持。

          ·Ajax動(dòng)畫(huà),例如縮放和變換。

          ·"行為"-實(shí)質(zhì)上是窗口小組件庫(kù)。

          ·使用指南(http://www.mirimar.net/mailbrowser/),由RussMirimar的Yonah所提供

          ·開(kāi)源。源于Sabre航空公司解決方案,由Bill Scott(http://looksgoodworkswell.blogspot.com),Darren James及另外一些人所支持。

          1.5 qooxdoo(開(kāi)發(fā)中;自從2005年5月)

          網(wǎng)址是:http://qooxdoo.sourceforge.net/,是另一個(gè)雄心勃勃的框架,提供寬范圍的UI支持和正在開(kāi)發(fā)中的基礎(chǔ)結(jié)構(gòu)特性。

          ·基礎(chǔ)結(jié)構(gòu):

          * DOM和事件/焦點(diǎn)管理的可移植的抽象。

          * 調(diào)試支持。

          * 易于時(shí)間調(diào)度的Timer類(lèi)。

          * Getter/Setter支持。

          ·UI:

          * 窗口小組件框架和預(yù)置的窗口小組件庫(kù)。

          * 布局管理器。

          * 圖像緩沖和可移植的PNG透明性。

          ·開(kāi)源(LGPL)。來(lái)自多方面的貢獻(xiàn)者。

          1.6 Tibet(開(kāi)發(fā)中;自從2005年6月)

          網(wǎng)址是:http://www.technicalpursuit.com/,目的是提供高度可移植的和全面的Javascript API,結(jié)果是,可能自動(dòng)生成大量的客戶(hù)端代碼。自稱(chēng)是"企業(yè)級(jí)Ajax"。

          ·遠(yuǎn)程腳本運(yùn)行在XMLHttpRequest包裝之上-通過(guò)協(xié)調(diào)調(diào)用結(jié)果支持工作流管理,例如應(yīng)答可以發(fā)生在只有當(dāng)兩個(gè)分離的調(diào)用返回時(shí)。

          ·URI支持。

          ·所有的HTTP方法-不僅是"GET"和"POST"。

          ·低級(jí)的協(xié)議-File://和WebDav以及HTTP。

          ·Web服務(wù)調(diào)用-SOAP,XML-RPC,等等。

          ·預(yù)置的針對(duì)Google API,Amazon API等等服務(wù)的支持。

          ·由高級(jí)Javascript對(duì)象組成一個(gè)巨大的庫(kù)。

          ·許多XML操作。

          ·IDE和開(kāi)發(fā)工具。

          ·開(kāi)源許可(顯然經(jīng)過(guò)OSI認(rèn)證,但是細(xì)節(jié)不多)。

          2 純Javascript:基礎(chǔ)結(jié)構(gòu)框架

          2.1 AjaxCaller(Alpha版本;自從5月2005年)

          網(wǎng)址是:http://ajaxify.com/run/testAjaxCaller/,是一基本的線(xiàn)程安全的XMLHttpRequest包裝器,主要針對(duì)Ajax新手,仍處于原始的alpha開(kāi)發(fā)階段,目前僅與AjaxPatterns的在線(xiàn)搜索范例一起打包。

          ·實(shí)現(xiàn)對(duì)服務(wù)器的調(diào)用(GET/POST/PUT/DELETE),用路由到一個(gè)回叫操作的plain-text或者XML完成。

          ·使用過(guò)的XMLHttpRequest對(duì)象的析構(gòu)。

          ·Response緩沖(計(jì)劃的)。

          ·針對(duì)Ajax新手-并非強(qiáng)調(diào)性能優(yōu)化,該庫(kù)主要用于實(shí)現(xiàn)易讀的基礎(chǔ)代碼并將提供調(diào)試支持。

          ·開(kāi)源許可。由Michael Mahemoff(http://softwareas.com)(具有John Wehr和Richard Schwartz的一些思想)維護(hù)。

          2.2 Flash JavaScript集成包

          網(wǎng)址是:http://www.osflash.org/doku.php?id=flashjs,允許JavaScript和Flash內(nèi)容的集成:

          ·使JavaScript能夠調(diào)用ActionScript功能和反過(guò)來(lái)的實(shí)現(xiàn)。

          ·所有主要的數(shù)據(jù)類(lèi)型能在這兩種環(huán)境之間傳遞。

          ·開(kāi)源許可。由多個(gè)開(kāi)源Flash貢獻(xiàn)者提供支持。

          2.3 Google AJAXSLT(發(fā)行于2005年6月)

          網(wǎng)址是:http://goog-ajaxslt.sourceforge.net/,是一個(gè)Javascript框架,用來(lái)執(zhí)行XSLT轉(zhuǎn)換以及XPath查詢(xún)。

          ·建立在Google地圖工作基礎(chǔ)之上。

          ·開(kāi)源許可(BSD)。由一家創(chuàng)新搜索方案公司支持,自稱(chēng)為"Google"。

          2.4 HTMLHttpRequest(Beta版;始于2005年)

          HtmlHttpRequest(http://www.twinhelix.com/javascript/htmlhttprequest/),它使用了XMLHttpRequest和Iframes以改進(jìn)兼容性。

          ·測(cè)試過(guò)并能工作在:IE6/Win,IE5.5/Win,IE5/Win,IE4/Win,Mozilla/Win,Opera7/Win,Safari/Mac,IE5/Mac。

          ·未測(cè)試,可能能工作在:IE4/Mac,Mozilla/Mac,Opera/Other,Konqueror/Linux。你正在使用這些之一嗎?作者正在請(qǐng)求兼容性信息。

          ·開(kāi)源許可(LGPL)。由Twin Helix Designs(http://www.twinhelix.com/)的Angus Turnbull維護(hù)。

          2.5 交互式網(wǎng)站框架(自從2005年5月)

          交互式網(wǎng)站框架(http://sourceforge.net/projects/iwf/,是一個(gè)項(xiàng)目,目的是從瀏覽器端對(duì)Ajax基礎(chǔ)結(jié)構(gòu)的多方面予以支持。自描述為"使用javascript,css,xml,和html來(lái)創(chuàng)造高度交互網(wǎng)站的框架。包括一個(gè)定制的針對(duì)高度可讀的javascript的xml分析器。實(shí)質(zhì)上,是建立基于AJAX的網(wǎng)站的基礎(chǔ),還有另外一些通用腳本"。

          ·線(xiàn)程安全的XMLHttpRequest實(shí)現(xiàn)。

          ·針對(duì)XML文檔的包裝器,以便你能夠創(chuàng)建更具可讀性的代碼:

          var node = doc.groceries.frozen[0].pizza[0].size;</pre>

          代替手工的導(dǎo)航:

          var node = doc.documentElement.firstChild.firstChild.getAttribute("size");</pre>

          ·開(kāi)源許可。由Weaver(http://circaware.com|Brock)維護(hù)。

          2.6 LibXMLHttpRequest(發(fā)行于2003年6月)

          libXmlRequest(http://www.whitefrost.com/servlet/connector?file=reference/2003/06/17/libXmlRequest.html),是XMLHttpRequest的一個(gè)瘦包裝器。

          ·getXML()和postXML()方法。

          ·XMLHttpRequest對(duì)象池支持。

          ·Response緩沖。

          ·可用源碼(明顯),但是受標(biāo)準(zhǔn)版權(quán)的保護(hù),由Stephen W.Coate(http://www.whitefrost.com/index.jsp)所維護(hù)。

          2.7 RSLite(x)

          網(wǎng)站是:http://www.ashleyit.com/rs/main.htm,是一個(gè)針對(duì)XMLHttpRequest的瘦包裝器。

          ·一個(gè)簡(jiǎn)單的組件,作為Brent Ashley的更全面的遠(yuǎn)程腳本工作(參見(jiàn)Javascript遠(yuǎn)程腳本-JSRS在多語(yǔ)言服務(wù)器端)的一部分發(fā)行。

          2.8 Sack(在開(kāi)發(fā)中,自從2005年5月)

          網(wǎng)站是:http://twilightuniverse.com/2005/05/sack-of-ajax/,是一個(gè)針對(duì)XMLHttpRequest的瘦包裝器。

          ·調(diào)用者能指定回叫函數(shù)或者回叫DOM對(duì)象。借助于回叫DOM,應(yīng)答文本直接被推入到DOM中

          2.9 Sarissa(發(fā)行于2月,2003年)

          網(wǎng)站是:http://sarissa.sf.net,是一種Javascript API,它封裝了在瀏覽器端可以獨(dú)立調(diào)用XML的功能。

          ·可移植的XMLHttpRequest創(chuàng)建

          ·可移植的XPath查詢(xún)

          ·可移植的DOM操作

          ·可移植的XSLT

          ·可移植的XML串行化

          ·開(kāi)源(GPL2.0和LGPL2.1)。來(lái)自多方面貢獻(xiàn)者。

          2.10 XHConn(發(fā)行于自從4月,2005年)

          網(wǎng)站是:http://xkr.us/code/javascript/XHConn/,是一個(gè)對(duì)XMLHttpRequest的瘦包裝器。

          ·例如

          ew XHConn().connect("mypage.php","POST","foo=bar&baz=qux",fnWhenDone);

          ·開(kāi)源許可。由Brad Fults所維護(hù)。

          3 服務(wù)器端:多種語(yǔ)言

          3.1 跨平臺(tái)異步的接口工具箱(5月2005年)

          CPAINT:http://cpaint.sourceforge.net/,是一真正的支持PHP和ASP/Vbscript的Ajax實(shí)現(xiàn)和JSRS(JavaScript遠(yuǎn)程腳本)實(shí)現(xiàn)。CPAINT提供給你需求的代碼在后臺(tái)實(shí)現(xiàn)AJAX和JSRS,而返回的數(shù)據(jù)以JavaScript形式在前臺(tái)操作,格式化和顯示。這允許你創(chuàng)建能提供接近實(shí)時(shí)的反饋給用戶(hù)的web應(yīng)用程序。

          ·支持PHP&ASP

          ·針對(duì)所有函數(shù)的一致的JavaScript文件

          ·支持遠(yuǎn)程腳本和XML

          ·支持本地和遠(yuǎn)程函數(shù)

          ·單個(gè)或者多個(gè)XMLHTTP對(duì)象

          ·以文本或者JavaScript XML/DOM文檔對(duì)象方式返回后臺(tái)數(shù)據(jù)

          ·能支持POST和GET請(qǐng)求

          ·后臺(tái)代理函數(shù)來(lái)訪(fǎng)問(wèn)遠(yuǎn)程函數(shù)和數(shù)據(jù)

          ·在所有的主要瀏覽器上測(cè)試過(guò)

          ·在GNU GPL&LGPL保護(hù)下發(fā)行

          3.2 SAJAX(可用,但是不是1.0版本;自從3月2005年)

          網(wǎng)站是:http://www.modernmethod.com/sajax/,直接把調(diào)用從Javascript發(fā)送到你的服務(wù)器端語(yǔ)言并再次回返。例如,調(diào)用一個(gè)javascript方法x_calculateBudget(),將先到達(dá)服務(wù)器和調(diào)用一個(gè)Java calculateBudget()方法,然后以javascript方式把值返回到x_calculateBudget_cb()。

          ·便利從Javascript代理函數(shù)到后臺(tái)操作的映射。

          ·能夠代理對(duì)眾多服務(wù)器端平臺(tái)(ASP/ColdFusion/Io/Lua/Perl/PHP/Python/Ruby)的調(diào)用。

          ·開(kāi)源許可。來(lái)自多方面貢獻(xiàn)者。

          3.3 Javascipt對(duì)象標(biāo)志(JSON)和JSON-RPC

          JSON(http://www.crockford.com/JSON/index.html),是一個(gè)"胖的自由的XML選擇",而JSON-RPC(http://www.json-rpc.org/)是一種遠(yuǎn)程過(guò)程協(xié)議,類(lèi)似于XML-RPC,強(qiáng)有力支持Javascript客戶(hù)。

          ·實(shí)現(xiàn)多服務(wù)器端平臺(tái)(http://www.json-rpc.org/impl.xhtml):Java,Python,Ruby,Perl。

          ·針對(duì)每種平臺(tái)有獨(dú)立的打包和許可,如JSON-RPC-Java(http://oss.metaparadigm.com/jsonrpc/)。

          3.4 Javascript遠(yuǎn)程腳本(JSRS)(自從2000年)

          網(wǎng)址是:http://www.ashleyit.com/rs/jsrs/test.htm,直接把調(diào)用從Javascript發(fā)送到你的服務(wù)器端語(yǔ)言并再次回返。

          ·知名的瀏覽器:IE4+,NS4.x,NS6.x,Mozilla,Opera7和Galeon。

          ·服務(wù)器端支持:ASP,ColdFusion,PerlCGI,PHP,Python和JSP(servlet)。

          ·開(kāi)源許可。由Brent Ashley(http://www.ashleyit.com/)提供支持。

          4 服務(wù)器端:Java

          注意:許多現(xiàn)有的框架最近正在添加Java支持(例如struts),我將在后面指出。

          4.1 WebORB for Java(自從2005年8月)

          網(wǎng)址:http://www.themidnightcoders.com/weborb/aboutWeborb.htm,是一個(gè)平臺(tái),支持開(kāi)發(fā)AJAX和基于Flash的胖客戶(hù)端應(yīng)用程序,并可以把它們與Java對(duì)象和XML Web服務(wù)相系起來(lái)。在線(xiàn)舉例(http://www.themidnightcoders.com/examples)

          ·WebORB包括一個(gè)稱(chēng)作豐富的客戶(hù)系統(tǒng)(http://www.themidnightcoders.com/rcs/index.htm)的客戶(hù)端庫(kù)。該豐富的客戶(hù)系統(tǒng)提供一簡(jiǎn)單的在線(xiàn)api來(lái)綁定到并調(diào)用任何Java對(duì)象,XML Web服務(wù)或者EJB上的方法。

          ·支持同步的和異步的方法調(diào)用。

          ·并不要求在服務(wù)器端代碼上作任何修改,不需要定制方法屬性,特別的簽名或者參數(shù)類(lèi)型。★不要求設(shè)計(jì)時(shí)生成代理。

          ·同步調(diào)用返回來(lái)自于該調(diào)用(不需要回叫)的數(shù)據(jù)。異步的調(diào)用依賴(lài)于一個(gè)回叫實(shí)現(xiàn)。

          ·任何服務(wù)器端方法能被同步地或者異步地調(diào)用。

          ·客戶(hù)應(yīng)用程序能向服務(wù)器對(duì)象請(qǐng)求指定的活動(dòng)方式。結(jié)果,對(duì)象能被輕易地創(chuàng)建而不需任何特殊的編程。

          ·提供一個(gè)特定API來(lái)處理數(shù)據(jù)庫(kù)查詢(xún)結(jié)果-服務(wù)器代碼能返回Data集合或者Data表,而客戶(hù)端以一個(gè)特殊RecordSet JavaScript對(duì)象來(lái)顯示這個(gè)結(jié)果。該對(duì)象提供一個(gè)方法以檢索列名和行數(shù)據(jù)。

          ·支持?jǐn)?shù)據(jù)分頁(yè)技術(shù)。客戶(hù)應(yīng)用程序能檢索頁(yè)面中的數(shù)據(jù)。

          ·支持所有的服務(wù)器端參數(shù)類(lèi)型并返回值-原型,字符串,復(fù)合類(lèi)型,數(shù)組,本機(jī).net集合,遠(yuǎn)程參考。

          ·共有兩種版本可用:標(biāo)準(zhǔn)版(自由)和專(zhuān)業(yè)版(商業(yè)許可)

          4.2 Echo 2(自從3月2005年)

          網(wǎng)址是:http://www.nextapp.com/products/echo2/,允許你用純Java代碼編寫(xiě)Ajax應(yīng)用軟件(范例(http://demo.nextapp.com/InteractiveTest/ia))。

          自動(dòng)地生成HTML和Javascript。

          ·協(xié)調(diào)瀏覽器和服務(wù)器之間的消息。消息形式為XML。

          ·如果需要,可以手工編寫(xiě)定制的Javascript部件。

          ·開(kāi)源許可(Mozilla公共許可或者GNU LGPL)。源于Next App,Inc.(http://www.nextapp.com/)。

          4.3 Direct Web Remoting (DWR)(2005年)

          網(wǎng)址是:http://www.getahead.ltd.uk/dwr/,是一個(gè)框架,用于直接從Javascript代碼中調(diào)用Java方法。

          ·象SAJAX,能把Javascript中的調(diào)用傳遞到Java方法,并返回到Javascript回叫。

          ·能與任何web框架(Struts,Tapestry,等等)一起使用。

          ·開(kāi)源許可(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年)

          網(wǎng)址是:http://swato.dev.java.net/,是一套可重用的和良好集成的Java/JavaScript庫(kù),它實(shí)現(xiàn)了一種更容易的方式來(lái)改變你的web應(yīng)用程序的交互,它是通過(guò)AJAX方式實(shí)現(xiàn)。

          ·服務(wù)器端Java庫(kù)能被容易地配置到所有的Servlet 2.3+匹配的容器中。

          ·客戶(hù)端JavaScript庫(kù)能工作在支持HttpXMLRequest的各種瀏覽器中。

          ·使用JSON來(lái)在服務(wù)器端編組你的POJO數(shù)據(jù)。這樣你能存取在任何JavaScript環(huán)境(HTML,XUL,SVG)中的遠(yuǎn)程數(shù)據(jù),這種存取可以容易地通過(guò)硬編碼或者與某種成熟的JavaScript庫(kù)集成來(lái)實(shí)現(xiàn)。

          ·提供一個(gè)簡(jiǎn)單的接口來(lái)使你的JavaScript代碼可以與暴露在客戶(hù)端的遠(yuǎn)程POJO交互(RPC等)。

          ·使用web.xml中的<servlet>和<filter>的容易且靈活的配置,并能(但不是依賴(lài))與Spring集成到一起。

          ·提供了幾個(gè)可幫助你快速開(kāi)發(fā)web應(yīng)用程序的組件(如自動(dòng)完成的文本框,在線(xiàn)表單,在線(xiàn)列表,等等)。

          5 服務(wù)器端:Lisp

          5.1 CL-Ajax

          網(wǎng)址:http://cliki.net/cl-ajax,實(shí)現(xiàn)Javascript直接調(diào)用服務(wù)器端Lisp函數(shù)。

          ·如下輸出函數(shù):

          (export-函數(shù) #’my-函數(shù))

          ·可以產(chǎn)生帶有參數(shù)的Javascript代理。

          ·能回叫Javascript函數(shù)或者DOM對(duì)象。

          ·可以被集成進(jìn)SAJAX。

          ·開(kāi)源(定制,非常靈活,許可)。由[Richard Newman](http://www.holygoat.co.uk/)所維護(hù)。

          6 服務(wù)器端:.NET

          6.1 WebORB for.NET(自從8月2005年)

          網(wǎng)址:http://www.themidnightcoders.com/weborb/aboutWeborb.htm,是一個(gè)平臺(tái),用于開(kāi)發(fā)AJAX和基于Flash的胖客戶(hù)端應(yīng)用程序,并能把它們連接到.NET對(duì)象和XML Web服務(wù)。(在線(xiàn)舉例(http://www.themidnightcoders.com/examples))

          ·WebORB包括一個(gè)客戶(hù)端庫(kù),名叫Rich Client System(http://www.themidnightcoders.com/rcs/index.htm)。Rich Client System提供一簡(jiǎn)單的在線(xiàn)api以綁定到和調(diào)用任何.NET對(duì)象或者XML Web服務(wù)上的任何方法。

          ·支持同步和異步的方法調(diào)用

          ·并不要求在服務(wù)器端代碼上作任何修改,不需要定制方法屬性,特別的簽名或者參數(shù)類(lèi)型。**不要求設(shè)計(jì)時(shí)代理生成。

          ·同步調(diào)用返回來(lái)自于該調(diào)用的數(shù)據(jù)(不需要回叫)。異步的調(diào)用依賴(lài)于一個(gè)回叫實(shí)現(xiàn)。

          ·任何服務(wù)器端方法能被同步地或者異步地調(diào)用。

          ·客戶(hù)應(yīng)用程序能向服務(wù)器對(duì)象請(qǐng)求指定的活動(dòng)方式。結(jié)果,對(duì)象能被輕易地創(chuàng)建而不需任何特殊的編程。

          ·提供一個(gè)特定API來(lái)處理數(shù)據(jù)庫(kù)查詢(xún)結(jié)果-服務(wù)器代碼能返回DataSet或者DataTable,而客戶(hù)端以一個(gè)特殊RecordSet JavaScript對(duì)象來(lái)顯示這個(gè)結(jié)果。該對(duì)象提供一個(gè)方法以檢索列名和行數(shù)據(jù)

          ·支持?jǐn)?shù)據(jù)頁(yè)面技術(shù)。客戶(hù)端應(yīng)用程序能檢索頁(yè)面中的數(shù)據(jù)。

          ·支持所有的服務(wù)器端參數(shù)類(lèi)型并返回值-原型,字符串,復(fù)合類(lèi)型,數(shù)組,本機(jī).net集合,遠(yuǎn)程參考

          ·共有兩種版本可用的:標(biāo)準(zhǔn)版(自由)和專(zhuān)業(yè)版(商業(yè)許可)

          6.2 Ajax.NET(自從3月2005年)

          網(wǎng)址是:http://ajax.schwarz-interactive.de/,是一個(gè)庫(kù),實(shí)現(xiàn)從Javascript到服務(wù)器端.NET的存取。

          ·象SAJAX,能把Javascript中的調(diào)用傳遞到.NET方法,并返回到Javascript回叫。

          ·能存取來(lái)自于JavaScript的會(huì)話(huà)數(shù)據(jù)。

          ·緩存結(jié)果

          ·自由使用,可用的源碼,未指定使用許可。由Michael Schwarz(http://weblogs.asp.net/mschwarz/)所維護(hù)。

          ·不允許改變?cè)创a,用屬性標(biāo)記方法

          ·完整的類(lèi)支持以返回客戶(hù)端JavaScript值

          ·使用HtmlControls來(lái)進(jìn)行輸入和返回值

          ·可以返回?cái)?shù)據(jù)表,數(shù)據(jù)集,數(shù)據(jù)視圖,數(shù)組和集合

          7 服務(wù)器端:PHP

          7.1 AjaxAC(自從2005年4月)

          網(wǎng)址是:http://ajax.zervaas.com.au/,用單個(gè)的PHP類(lèi)封裝了完整的應(yīng)用程序。

          ·所有的應(yīng)用程序代碼是自包含在單個(gè)類(lèi)中(附加另外一些JavaScript庫(kù))

          ·干凈利索地調(diào)用PHP文件/HTML頁(yè)面。只需創(chuàng)建應(yīng)用程序類(lèi),然后參照應(yīng)用程序JavaScript和依附任何需要的HTML元素到該應(yīng)用程序。

          ·容易地處理JavaScript事件的內(nèi)嵌功能

          ·創(chuàng)建子需要并處理它們的內(nèi)嵌功能

          ·允許定制的配置值,因此某些單元能在運(yùn)行時(shí)間設(shè)置

          ·無(wú)凌亂的JavaScript代碼夾雜在調(diào)用HTML的代碼中-所有的事件是被動(dòng)態(tài)依附的

          ·由于以上兩個(gè)原因容易和模板引擎集成到一起

          ·容易鉤到(hook in to)已有的PHP類(lèi)或者M(jìn)ySQL數(shù)據(jù)庫(kù)以返回來(lái)自于子需求的數(shù)據(jù)

          ·能夠容易地進(jìn)一步生成JavaScript對(duì)象的可擴(kuò)展的窗口小組件結(jié)構(gòu)(但是還需要做一些工作)

          背景:

          ·開(kāi)源許可(Apache2.0)。由Zervaas Enterprises(http://ajax.zervaas.com.au/)支持

          7.2 JPSpan

          網(wǎng)址是:http://jpspan.sourceforge.net/wiki/doku.php,直接把Javascript調(diào)用傳遞到PHP函數(shù)。

          ·進(jìn)行了嚴(yán)肅的單元測(cè)試。

          ·開(kāi)源許可(PHP)。

          7.3 XAJAX

          網(wǎng)址是:http://xajax.sf.net,直接把Javascript調(diào)用傳遞到PHP函數(shù)。

          ·使用Javascript代理來(lái)調(diào)用PHP腳本。

          ·開(kāi)源。由J.Max Wilson所創(chuàng)。

          8 服務(wù)器端:Ruby

          Ruby On Rails(http://www.rubyonrails.org/)是一個(gè)通常的強(qiáng)力支持Ajax的web框架:

          ·當(dāng)Ajax出現(xiàn)的時(shí)候Rails還處于其發(fā)展的早期,因此Ajax可能逐漸成為Rails框架的核心。

          ·生成瀏覽器中大多數(shù)/全部的窗口小組件和動(dòng)畫(huà)的Javascript腳本。

          ·支持服務(wù)器端調(diào)用。

          ·調(diào)度支持。 

          ·開(kāi)源許可。

          posted on 2006-01-13 12:50 TrampEagle 閱讀(506) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): AJAX

          只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 望都县| 东港市| 寿宁县| 深泽县| 时尚| 彭阳县| 梅河口市| 阿合奇县| 安图县| 正阳县| 时尚| 濮阳县| 繁峙县| 闽清县| 赫章县| 澄城县| 绿春县| 保定市| 措勤县| 阳西县| 竹溪县| 科技| 青川县| 宁海县| 邢台县| 邛崃市| 准格尔旗| 密山市| 江安县| 额济纳旗| 贺州市| 南康市| 沭阳县| 翁源县| 建德市| 平和县| 漳州市| 湖北省| 泸州市| 湘阴县| 邵阳市|