細(xì)看Web 2.0的三大技術(shù)特征
盡管對于Web 2.0的定義不僅僅只有一種,但是它的核心是互聯(lián)網(wǎng),扮演著社交網(wǎng)絡(luò)的一個平臺,在這個平臺上面信息是可以被創(chuàng)建的,并且可以在有趣的社區(qū)里面與大家分享。因?yàn)橥ㄟ^提供一些更加有效的用戶界面來實(shí)現(xiàn)增強(qiáng)平臺的性能,豐富的互聯(lián)網(wǎng)應(yīng)用軟件(RIAs)與Web 2.0的概念才能相結(jié)合。
AJAX與Web 2.0相結(jié)合是因?yàn)樗軌蛑С质褂靡环N輕便的方法來開發(fā)RIA,通過一種單一的普遍存在的界面——Web瀏覽器,就能執(zhí)行。
對于現(xiàn)有社交網(wǎng)絡(luò)平臺,比如wiki和博客的互動模式的一個調(diào)查顯示他們?nèi)狈φ嬲膶?shí)時的人機(jī)交互。這是一個偽同步網(wǎng)絡(luò)模型,當(dāng)我們考慮預(yù)想中的Web 2.0系列的下一代平臺的時候,這是必須要克服的一個問題?;诨ヂ?lián)網(wǎng)的交流就是Web2.0所需要的,近乎瞬時互動的最基礎(chǔ)的例子,但是即便是這些基礎(chǔ)能力,升級,輕便,以瀏覽器為基礎(chǔ)的機(jī)制都是大多數(shù)AJAX無法實(shí)現(xiàn)的。
基礎(chǔ)內(nèi)容之基于Web的推動
工業(yè)上并沒有為機(jī)制定型,或者是為異步數(shù)據(jù)設(shè)定一個名稱,推動其到瀏覽器上。在AJAX領(lǐng)域內(nèi),技術(shù)的成長伴隨著各種各樣的名稱,包括AJAX Push、 Comet和 Reverse AJAX,但是不管你稱呼其什么,各種做法都有一個共同的特征。唯一可用于瀏覽器的輕量級的交流機(jī)制就是HTTP協(xié)議,但是HTTP協(xié)議只能減輕一些困難,這些困難主要是執(zhí)行從瀏覽器到服務(wù)器的標(biāo)準(zhǔn)請求/回答交流機(jī)制。為了交付異步響應(yīng),通過在服務(wù)器中支持一個開放式的請求來達(dá)到反轉(zhuǎn)HTTP協(xié)議的目的的操作是非常有必要的,并且當(dāng)一個更新操作可用的時候,徹底的執(zhí)行這個請求。標(biāo)準(zhǔn)AJAX請求處理與進(jìn)棧的倒轉(zhuǎn)機(jī)制請求之間的不同,如圖一所示。
為了支持異步進(jìn)棧,預(yù)期的基于服務(wù)器的事件中我們必須保持開放的瀏覽器連接,這將會導(dǎo)致瀏覽器外表的變化。直覺告訴我們這里能夠提供這種方法,并且在這種情況下,當(dāng)我們面對瀏覽器和服務(wù)器上面關(guān)于連接的問題的時候,直覺做得很好。
瀏覽器連接限制
異步Web技術(shù)所要面對的主要問題中的一個是由典型的瀏覽器“雙連接限制”所引起的。為了減輕服務(wù)器負(fù)載,用戶代理確定的HTTP規(guī)范建議每服務(wù)器最多連接兩個瀏覽器,但是異步技術(shù)消耗掉了其中的一條連接,將其作為通知渠道。考慮到這樣一種情況,多重瀏覽器窗口在一樣的Web頁面打開,如果每一個窗口都嘗試著確定它自己的連接,我們很快就會造成可用連接的飽和。在這些限制條件內(nèi)工作,單一的一個連接肯定會被分享,但是為了確保安全,各種不同的瀏覽器窗口的腳本環(huán)境都是獨(dú)立的,這使得彼此之間協(xié)調(diào)分享連接變得非常困難。一種可以使用于此處的技術(shù)利用一個可共用的HTTP cookie,這個HTTP cookie于所有的HTTP關(guān)聯(lián),與一個給定的服務(wù)器共同工作。Cookie被共用于交叉的窗口上,并且通過Java腳本的操作可以被用于跨窗口的交流。
在門戶網(wǎng)站環(huán)境中這個問題會被擴(kuò)大,因?yàn)閭鹘y(tǒng)的門戶網(wǎng)站引擎不支持必須的異步通信途徑。為了推動多重門戶網(wǎng)站的工作,不僅僅是需要分享瀏覽器連接,而且一個單一的共享服務(wù)器連接被要求排列異步請求。如果門戶網(wǎng)站的部署是來自于多重的WAR,這里將會產(chǎn)生一個額外的難題,因?yàn)楣蚕頇C(jī)制必須在多重Web應(yīng)用程序之間并列協(xié)調(diào),并且將會要求一些IPC機(jī)制來實(shí)現(xiàn)這個操作。當(dāng)我們評估了不同的推進(jìn)機(jī)制,自從它變得越來越復(fù)雜,超過了典型的應(yīng)用開發(fā)人員應(yīng)該接觸的范圍,了解它們是如何標(biāo)記連接共享問題就變得非常重要了。順便說一句,瀏覽器供應(yīng)商將會徹底的降低共享連接的復(fù)雜性,他們將會通過控制HTTP流水線操作來實(shí)現(xiàn)降低共享連接的復(fù)雜性,因此可以允許不同的窗口共享一個單一的連接。
應(yīng)用服務(wù)器可擴(kuò)展性
當(dāng)我們審查來自應(yīng)用服務(wù)器方面的開放連接的問題,我們發(fā)現(xiàn)這個問題發(fā)生了變化。結(jié)果是現(xiàn)代的應(yīng)用服務(wù)器可以應(yīng)付很多的高效連接,但是在現(xiàn)有的servlet模型下,每一個這樣的連接都要求一個線程的執(zhí)行。如果這些連接變的持續(xù)時間很長,由于服務(wù)器發(fā)起的更新,服務(wù)器的可擴(kuò)展性將會被線程池用盡這樣的情況所拖累。
盡管在JSR 315中,標(biāo)準(zhǔn)活動在servlet模型進(jìn)展中是與異步通信相關(guān)聯(lián)的,在工業(yè)上解決這個問題的方法是根本不相同的,沒有標(biāo)準(zhǔn)的。標(biāo)準(zhǔn)機(jī)制的缺乏是十分令人失望的,因?yàn)槿魏慰缮壍耐七M(jìn)機(jī)制都需要緊緊地與基礎(chǔ)服務(wù)機(jī)制相結(jié)合,這一切要求部署的具體實(shí)施。好的消息就是多種多樣的解決方案已經(jīng)出現(xiàn)了,跨越開源的應(yīng)用服務(wù)器,哪一個我們需要考察?
結(jié)論
我們描述Web 2.0的特征,如自發(fā)的平臺,實(shí)時的社交網(wǎng)絡(luò),審閱與使用輕量級基于Web技術(shù)的交付時候必須的入棧模式性能連接的復(fù)雜性,傳遞信息性能方面一些開源的技術(shù)開始出現(xiàn)。所以,Web 2.0在今天很有可能就是伴隨著現(xiàn)有的開源技術(shù)。更遠(yuǎn)一些來說,標(biāo)準(zhǔn)化的制定將會有所幫助,下一階段的瀏覽器執(zhí)行將會最終緩解這種復(fù)雜性。如果入棧模式的Web應(yīng)用和Web 2.0在你的預(yù)料之中,投入進(jìn)去看看什么即將會發(fā)生吧。有一點(diǎn)需要謹(jǐn)慎,你需要謹(jǐn)慎的檢查現(xiàn)有開發(fā)的***方法和強(qiáng)制部署,設(shè)計(jì)出一種方法能夠準(zhǔn)許你把重點(diǎn)放在應(yīng)用開發(fā)上面,而不是那些低級別的入棧之類的基礎(chǔ)開發(fā)。
【編輯推薦】