越來越多成功的comet范例已挖出一個時髦詞,這在90年代后半期是非常受歡迎的: Push技術(shù)。為了使故事短,實際情況是,一個十幾年前被視為無用的和低效的技術(shù)在現(xiàn)代網(wǎng)絡(luò)開發(fā)技術(shù)的幫助下被重新發(fā)現(xiàn)。那么,什么是Push技術(shù)?這個詞是在1996年創(chuàng)造的,并在市場營銷的角度看,很快成為非常成功的一種新的、前沿的互聯(lián)網(wǎng)技術(shù)。這可能是源于短語“pushpolling”,這是被新聞媒體在1996年美國總統(tǒng)選舉時用來暗指一種不正當(dāng)?shù)睦奔夹g(shù):在其中游說者假裝進行電話民意調(diào)查,使用這種電話調(diào)查行為推動候選人的優(yōu)勢[ 1 ] 。從根本上說,推技術(shù)是指任何技術(shù)解決方案(例如彗星) ,其目標(biāo)是扭轉(zhuǎn)傳統(tǒng)的拉動的數(shù)據(jù)給用戶的網(wǎng)絡(luò)模式。下列術(shù)語被作為同義詞或部分相同的邏輯類別:
拉動,同步模式,請求/響應(yīng)
推送,異步模式,發(fā)布/訂閱
圖1顯示了兩個類別之間的典型差異。在典型的基于拉動的網(wǎng)絡(luò)模式上,每封服務(wù)器制作的郵件必須是由客戶端請求的。此外,在客戶端發(fā)出一個請求后,在等待答復(fù)的過程中,他們的執(zhí)行線程通常會被封鎖。而推送技術(shù),用戶只需顯示出對某種形式的信息(通過訂閱所謂的主題,對象,渠道,或項目)的興趣,然后在任何時候,都可獲得來自服務(wù)器的異步信息。這意味著客戶端是不會阻塞在等待請求答復(fù)的過程中,尤其服務(wù)器能夠自己自由裁量提供的訊息(也就是說,當(dāng)實際新鮮的數(shù)據(jù)可用時),而不是等待客戶端要求更新。
圖1。同步和異步模式
一個最古老的推送技術(shù)的例子(包含更廣泛的含義,而不是僅限于網(wǎng)絡(luò))是郵件。傳統(tǒng)意義的推送技術(shù)( 1996年至2000年),主要提到的技術(shù)也被稱為網(wǎng)播,窄播,或竄。一個頻道是關(guān)聯(lián)于某些類別的信息,并且一旦用戶注冊一個或多個渠道,他們將自動獲得信息,顯示于專用客戶端軟件(厚應(yīng)用程序,瀏覽器擴展,或特殊的屏幕保護程序)上。在1996年,PointCast,第一個基于渠道的推送技術(shù)系統(tǒng),已建立。不久之后,超過30家公司進入這個市場,其中包括微軟和Netscape。首先,用戶不喜歡安裝特殊的軟件在電腦上。其次,推進系統(tǒng)不僅耗盡了用戶的互聯(lián)網(wǎng)連接帶寬,而且還造成主要互聯(lián)網(wǎng)服務(wù)提供商的瓶頸。第三,也是最重要的,用戶從未有真正需要每天早上找到成堆的資料下載到他們的電腦,并且其中大多數(shù)他們永遠不會閱讀。有人把第一代的Push技術(shù)比擬為每天早上把大堆的報紙扔在您的家門口。
在2000年,一種新的Push技術(shù)被創(chuàng)建。它與第一代在用途和它的技術(shù)實現(xiàn)上截然不同。網(wǎng)上安全交易系統(tǒng)的成功創(chuàng)造了一個新的對實時數(shù)據(jù)被推到用戶瀏覽器的需求。低延遲市場價格數(shù)據(jù)運送從基礎(chǔ)上證明創(chuàng)造高品質(zhì)的貿(mào)易門戶的可行性。其中一個與第一代Push技術(shù)的不同在于數(shù)據(jù)更新的粒度與實時的程度。被推動的內(nèi)容已不再是一堆離線閱讀的資料,而是一系列細粒度的實時更新的網(wǎng)頁。這意味著,用戶使用請求/響應(yīng)模式下載一個靜態(tài)頁面,然后頁面開始通過公布/校隊模式接收實時更新,并有能力單獨更新網(wǎng)頁中的每個單獨單元。圖2顯示了在一個HTML表中顯示和更新市場數(shù)據(jù)的典型例子(服務(wù)器推數(shù)據(jù)往往強調(diào)短時間的更新以引起用戶的注意)。
圖2 。 comet式Push技術(shù)例子
這個新一代的Push技術(shù)就是現(xiàn)在的Comet。首兩個Comet實現(xiàn)是 Pushlets[ 2 ]和Lightstreamer [ 3 ] ,都創(chuàng)建于2000年。在此期間其他參與者也產(chǎn)生了,如KnowNow [ 4 ],它隨后孵化了Mod-PubSub [ 5]的倡議。在這些系統(tǒng)中引入的Push技術(shù)上的革命包含在他們的去applet方式中。其他的Push解決方案合并了網(wǎng)頁中的Javaapplets,以管理Push功能。在某些情況下,一個applet只用于管理網(wǎng)絡(luò)層,而JavaScript和DOM被用來操縱HTML網(wǎng)頁;在其他情況下,applet也管理了視覺層。由于一些原因,applets的使用已越來越多地被認為是不好的做法:JVM的兼容性問題,網(wǎng)頁運轉(zhuǎn)延遲,難以調(diào)試,以及對開發(fā)的網(wǎng)站混雜的技能要求??偛课挥谟墓荆褂胊pplet來推動實時數(shù)據(jù)到他們的客戶,去年也遷移到Commet的解決方案[6 ] ,結(jié)果是對其技術(shù)客戶支持服務(wù)的電話大幅度減少了。
在2005年Jesse JamesGarrett創(chuàng)造了AJAX,然后在2006年中期AlexRussell創(chuàng)造了Comet。這些總括的迅速采用被證明是有益的,它能夠幫助開發(fā)著明確區(qū)分新Push技術(shù)與傳統(tǒng)的Push技術(shù)(有必要再次強調(diào),術(shù)語Comet產(chǎn)生于2006年,正是建立了Push技術(shù)10年后,但實際上 Comet技術(shù)自2000年以來就已經(jīng)存在)。在2006年一個新的Comet的實現(xiàn),名為Cometd , [ 7]被創(chuàng)建。
在下個部分,我們將深入Comet更具體的細節(jié),如不同的Comet模型和先進的推送功能,如數(shù)據(jù)過濾、合并、以及帶寬和頻率控制。