專利名稱:用于表示層協(xié)議數(shù)據(jù)流的記錄及實時回放和搜索的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于提供實時回放的方法和系統(tǒng),尤其是用于提供對表示層協(xié)議數(shù)據(jù)的記錄和實時回放的方法和系統(tǒng)。
背景技術(shù):
對協(xié)議數(shù)據(jù)流(例如由位于Ft.Lauderdale, Florida的Citrix Systems公司發(fā)明的ICA協(xié)議,由X.0rg Foundation的X協(xié)議,AT&T公司的虛擬網(wǎng)絡(luò)計算(Virtual NetworkComputing)協(xié)議,或者由位于Redmond, Washington的微軟公司發(fā)明的RDP協(xié)議)的服務(wù)器端記錄可以用于創(chuàng)作培訓(xùn)材料、提供服務(wù)臺支持、啟動教程或者用于難以將軟件分發(fā)到各個客戶端工作站的環(huán)境。但是,很多用于記錄協(xié)議數(shù)據(jù)流的傳統(tǒng)方法的缺陷是諸如對計算機屏幕活動進行低效且無損失的編碼。記錄并將文件單獨存儲在服務(wù)器上可能產(chǎn)生與處理大量并發(fā)會話有關(guān)的問題。很多傳統(tǒng)系統(tǒng)通常的缺陷是所記錄的數(shù)據(jù)比將要回顧的多得多,由此帶來了復(fù)雜的記錄過程或產(chǎn)生過大的文件。有些用于記錄協(xié)議數(shù)據(jù)流的傳統(tǒng)方法不限于遠程表示協(xié)議自身。很多這樣的解決方案涉及屏幕抓取/采集技術(shù)或?qū)蛻舳藞D形引擎的鉤取,帶來的問題是為了回放需要處理器密集型的編碼或譯碼過程。其它用于記錄用戶屏幕活動的方法對客戶端裝置上的圖形輸出進行編碼。通常,這些方法只限于從Windows客戶端工作站取得周期性的不連續(xù)屏幕快照。Microsoft (微軟)提供了屏幕采集API作為Windows Media Encoder SDK的一部分,但這個方法的缺陷是專注于對培訓(xùn)和視頻顯示市場的客戶端裝置記錄。大多數(shù)方法需要客戶端軟件組件并且缺乏進行服務(wù)器端記錄的能力。另外,遠程表示協(xié)議自身是有狀態(tài)協(xié)議。為了查看所記錄的表示協(xié)議數(shù)據(jù)流中的特定點,對該流的回放必須從流的最開始處開始,并順序回放直到遇到該特定點。不按順序訪問所記錄的數(shù)據(jù)流的傳統(tǒng)技術(shù)通常涉及對關(guān)鍵幀和增量幀的使用。關(guān)鍵幀通常被作為同步點存儲在流自身中以使幀能夠被快速重現(xiàn)在屏幕上。增量幀通常描述與先前的幀的區(qū)別以產(chǎn)生可視視頻幀。因為遠程表示協(xié)議通常由于它們的有狀態(tài)的特性而比較緊湊,對關(guān)鍵幀的額外存儲將文件大小增加了幾個數(shù)量級。即使采用現(xiàn)代的數(shù)字視頻壓縮技術(shù),關(guān)鍵幀通常將所記錄的表示協(xié)議數(shù)據(jù)流所需的存儲增加幾個數(shù)量級。但是,省略關(guān)鍵幀會產(chǎn)生不可搜索的協(xié)議。希望能有一種具備搜索能力而且不會因為所存儲的關(guān)鍵幀而使文件過大的方法
發(fā)明內(nèi)容
這里所說明的方法和系統(tǒng)提供了將遠程表示協(xié)議(例如由位于Ft.Lauderdale, Florida 的 Citrix Systems 公司發(fā)明的 ICA 協(xié)議,由 X.0rg Foundation的X協(xié)議,AT&T公司的虛擬網(wǎng)絡(luò)計算(Virtual Network Computing)協(xié)議,或者由位于Redmond, Washington的微軟公司發(fā)明的RDP協(xié)議)記錄為流以及在以后能夠?qū)λ涗浀牧鬟M行回放。在無需修改現(xiàn)有協(xié)議定義的情況下,能夠記錄最初設(shè)計用于將計算機屏幕顯示實時顯示為無損失的實時屏幕活動抓取的協(xié)議。和傳統(tǒng)的屏幕抓取技術(shù)不同,這種記錄不需要發(fā)生在客戶端裝置上,也不需要任何客戶端組件。通過允許將記錄軟件只安裝在服務(wù)器上而不是安裝在許多客戶端上,本發(fā)明提供的服務(wù)器端記錄大大簡化了部署。例如,在企業(yè)級 Citrix MetaFrame 表不服務(wù)器(Citrix MetaFrame Presentation Server)環(huán)境中,客戶端裝置對服務(wù)器的比例通常高于100比I。所支持的客戶端裝置的范圍使傳統(tǒng)的客戶端布署問題進一步復(fù)雜化。Citrix目前支持Windows PC上的客戶端,UNIX, Linux,基于Java的客戶端,DOS,大量的Windows CE和基于EPOC的手持裝置,以及Macintosh。為使服務(wù)器端記錄能夠工作,在任何這樣的平臺上都不需要平臺特有的記錄軟件或者任何其它改變。因為遠程表示協(xié)議通常被設(shè)計用來通過減小帶寬而在相對較低的速度上有效工作,對這樣的協(xié)議的記錄自身也是緊湊的。因為沒有譯碼成另一種視頻格式,該記錄過程的負載很輕,并且產(chǎn)生的流是對用戶在記錄時間在他們的屏幕上所看到的內(nèi)容的真實表示。另外,這里所說明的方法和系統(tǒng)使遠程表示協(xié)議可以像視頻格式一樣被順序播放,還能夠進行隨機搜索/瀏覽并且不使用所存儲的關(guān)鍵幀。搜索使觀看流的用戶在回放期間能夠向前或向后跳到該流的任意位置并以應(yīng)答方式繼續(xù)回放。這里所說明的方法和系統(tǒng)能夠進行非??焖俚乃阉鞫鵁o需記錄或存儲關(guān)鍵幀。一方面,對表示層協(xié)議數(shù)據(jù)進行記錄和實時回放的方法包括由記錄器在表示層協(xié)議數(shù)據(jù)流從第一裝置向第二裝置的傳輸期間攔截包括多個分組的表示層協(xié)議數(shù)據(jù)流,該表示層協(xié)議數(shù)據(jù)流表示顯示數(shù)據(jù)。分發(fā)器發(fā)送該表示層協(xié)議數(shù)據(jù)流中的至少一個分組的副本。協(xié)議引擎使用與該至少一個復(fù)制的分組相關(guān)聯(lián)的信息再生由該至少一個復(fù)制的分組所表示的顯示數(shù)據(jù)。攔截表示層協(xié)議數(shù)據(jù)流并發(fā)送至少一個分組的副本的步驟一直重復(fù)直到第一裝置完成了至第二裝置的協(xié)議數(shù)據(jù)流的傳輸。在一個實施例中,記錄器在基本與第一裝置向第二裝置發(fā)送表示層協(xié)議數(shù)據(jù)流的同時攔截該表示層協(xié)議數(shù)據(jù)流。在另一個實施例中,記錄器將至少一個復(fù)制的分組發(fā)送到分發(fā)器。在又一個實施例中,重復(fù)以使用與該至少一個復(fù)制的分組有關(guān)聯(lián)的信息來再生由該至少一個復(fù)制的分組所表示的顯示數(shù)據(jù)的步驟。另一方面,用于表示層協(xié)議數(shù)據(jù)的記錄和實時回放的系統(tǒng)包括記錄器、分發(fā)器以及協(xié)議引擎。記錄器在表示層協(xié)議數(shù)據(jù)流從第一裝置傳輸?shù)降诙b置的期間攔截表示層協(xié)議數(shù)據(jù)流,所述表示層協(xié)議數(shù)據(jù)流表示顯示數(shù)據(jù)并且包括多個分組。分發(fā)器發(fā)送該表示層協(xié)議數(shù)據(jù)流的至少一個分組的副本。與分發(fā)器通信的協(xié)議引擎使用與該至少一個復(fù)制的分組相關(guān)聯(lián)的信息再生由該至少一個分組表示的顯示數(shù)據(jù)。記錄器繼續(xù)攔截表示層協(xié)議數(shù)據(jù),分發(fā)器繼續(xù)發(fā)送表示層協(xié)議數(shù)據(jù)流的至少一個分組的副本,直到第一裝置完成至第二裝置的該協(xié)議數(shù)據(jù)流的發(fā)送。在一個實施例中,記錄器還包括用于由記錄器在基本與第一裝置向第二裝置發(fā)送表示層協(xié)議數(shù)據(jù)流的同時攔截該表示層協(xié)議數(shù)據(jù)流的裝置。在另一個實施例中,分發(fā)器還包括用于檢索該至少一個分組的副本并將該至少一個分組的副本發(fā)送到協(xié)議引擎的收發(fā)器。又一方面,用于在表示層協(xié)議數(shù)據(jù)流的實時回放期間實時搜索的方法,包括由前臺協(xié)議引擎接收用于呈現(xiàn)尚待接收的第一多個分組的分組內(nèi)容的請求。由前臺協(xié)議引擎識別出其相關(guān)時間戳在所請求的分組之前的狀態(tài)快照。由前臺協(xié)議引擎在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間根據(jù)識別出的狀態(tài)快照顯示所請求的分組。又一方面,用于產(chǎn)生狀態(tài)快照的方法和系統(tǒng)使得在包括已經(jīng)被后臺協(xié)議引擎接收的第一多個分組和尚待被后臺協(xié)議引擎接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流的實時回放期間進行實時搜索。后臺協(xié)議引擎在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間接收該第一多個分組。后臺協(xié)議引擎產(chǎn)生該第一多個分組的表示。后臺協(xié)議引擎在讀取該第一多個分組中的至少一個分組期間產(chǎn)生至少一個狀態(tài)快照。在一個實施例中,該狀態(tài)快照包括在記錄器將分組從協(xié)議數(shù)據(jù)流復(fù)制到該第一多個分組中的時間點時呈現(xiàn)該協(xié)議數(shù)據(jù)流的協(xié)議引擎的狀態(tài)。后臺協(xié)議引擎存儲所產(chǎn)生的狀態(tài)快照。后臺協(xié)議引擎響應(yīng)接收第二多個分組中的至少一個分組而修改顯示數(shù)據(jù)的產(chǎn)生和該至少一個狀態(tài)快照。呈現(xiàn)協(xié)議數(shù)據(jù)流內(nèi)容的前臺協(xié)議引擎接收搜索由第一多個分組中的分組內(nèi)容表示的顯示數(shù)據(jù)的請求,并使用狀態(tài)快照呈現(xiàn)表示所請求的顯示數(shù)據(jù)的內(nèi)容。后臺協(xié)議引擎響應(yīng)接收第二多個分組中的至少一個分組而更新狀態(tài)快照。又另一方面,用于狀態(tài)快照的自適應(yīng)產(chǎn)生的方法和系統(tǒng),包括在表示層協(xié)議數(shù)據(jù)流從第一裝置向第二裝置的傳輸期間向用戶呈現(xiàn)包括已經(jīng)被后臺協(xié)議引擎接收的第一多個分組和尚待被后臺協(xié)議引擎接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流的表示。在一個實施例中,前臺協(xié)議引擎向用戶呈現(xiàn)協(xié)議數(shù)據(jù)流的記錄的表示。后臺協(xié)議引擎在呈現(xiàn)期間監(jiān)控用戶的活動。后臺協(xié)議引擎響應(yīng)對活動的監(jiān)控而開發(fā)活動特征。后臺協(xié)議引擎根據(jù)活動特征產(chǎn)生至少一個狀態(tài)快照。后臺協(xié)議引擎響應(yīng)接收第二多個分組中的至少一個分組而修改至少一個狀態(tài)快照。
從下面的詳細說明和附圖將明了本發(fā)明的這些和其它方面,而這些是為了說明本發(fā)明而不是限制本發(fā)明,其中:圖1A是說明包括與遠程機器相互通信的客戶端的網(wǎng)絡(luò)環(huán)境的一個實施例的框圖;圖1B和IC是說明可以用在和這里所描述的方法和系統(tǒng)相連的計算機的實施例的框圖;圖2是說明可實施本發(fā)明的網(wǎng)絡(luò)200的一個實施例的框圖;圖3和圖4是說明記錄器在網(wǎng)絡(luò)200上的放置的可選實施例的框圖;圖5是說明用于再生由協(xié)議數(shù)據(jù)流表示的顯示數(shù)據(jù)的系統(tǒng)的一個實施例的框圖;圖6是說明用于記錄和重放服務(wù)器產(chǎn)生的數(shù)據(jù)的方法的流程圖;圖7是更詳細地說明用于記錄由協(xié)議數(shù)據(jù)流表示的顯示數(shù)據(jù)的系統(tǒng)中的記錄器的框圖;圖8說明記錄協(xié)議數(shù)據(jù)流的一個實施例;
圖9是說明在有狀態(tài)遠程表示協(xié)議的回放期間進行實時搜索的方法中所采用步驟的一個實施例的流程圖;圖10是說明在產(chǎn)生能夠在遠程表示協(xié)議的回放期間進行實時搜索的狀態(tài)快照所采用的步驟的一個實施例的流程圖;圖11是說明在有狀態(tài)遠程表示協(xié)議的回放期間進行實時搜索的系統(tǒng)的框圖;圖12是說明為狀態(tài)快照的自適應(yīng)產(chǎn)生而采用的步驟的一個實施例的流程圖;圖13是說明一個實施例的三種類型的搜索概率分布的圖;圖14是說明響應(yīng)確定的搜索概率分布產(chǎn)生狀態(tài)快照的一個實施例的圖;圖15說明了協(xié)議數(shù)據(jù)流表示的用戶的使用模式的一個實施例;圖16是說明用于自適應(yīng)產(chǎn)生狀態(tài)快照的系統(tǒng)的一個實施例的框圖,該系統(tǒng)包括后臺協(xié)議引擎、前臺協(xié)議引擎、協(xié)議數(shù)據(jù)流、活動特征和狀態(tài)快照;圖17是說明了用于呈現(xiàn)記錄會話的系統(tǒng)的一個實施例的框圖;圖18的流程圖說明了為產(chǎn)生用于回放所記錄的計算機會話的回放指令而采取的步驟的一個實施例;圖19是說明了在用于所記錄的計算機會話的回放的方法中所采取的步驟的一個實施例的流程圖;圖20是說明了為了產(chǎn)生用于呈現(xiàn)記錄會話的回放指令而采取的步驟的一個實施例的流程圖;圖21說明了響應(yīng)回放數(shù)據(jù)結(jié)構(gòu)其內(nèi)容被呈現(xiàn)的再生的記錄流的一個實施例;圖22說明了在包含了表示有意義的用戶活動的內(nèi)容的記錄流中特定分組的一個實施例,在這種實施例中鼠標(biāo)輸入表示活動鼠標(biāo)按鈕狀態(tài);圖23是說明了在呈現(xiàn)記錄會話中為消除不具備有意義的活動的期間而采取的步驟的一個實施例的流程圖;圖24是說明了在呈現(xiàn)記錄會話中為消除圖形更新而采取的步驟的一個實施例的流程圖;圖25說明了根據(jù)第二圖形更新之后的屏幕區(qū)域的狀態(tài)是否不同于第一圖形更新之后的屏幕區(qū)域的狀態(tài)呈現(xiàn)再生的記錄會話的一個實施例;圖26是說明了在呈現(xiàn)記錄會話中為消除交互序列而采取的步驟的一個實施例的流程圖;圖27是說明了在呈現(xiàn)所記錄的計算機會話中自動時間卷曲的回放中所采取的步驟的一個實施例的流程圖;圖28是說明了在呈現(xiàn)所記錄的計算機會話中根據(jù)識別出的應(yīng)用為自動時間卷曲回放而采取的步驟的一個實施例的流程圖;圖29是說明了在呈現(xiàn)所記錄的計算機會話中用于自動時間卷曲回放的系統(tǒng)的一個實施例的框圖;圖30A是說明了用于表示協(xié)議層數(shù)據(jù)流的記錄和實時回放的系統(tǒng)的一個實施例的框圖;圖30B、30C和30D是說明了用于表示協(xié)議層數(shù)據(jù)流的記錄和實時回放的系統(tǒng)的可選實施例的框圖31是說明了在用于表示協(xié)議層數(shù)據(jù)流的記錄和實時回放的方法中所采取的步驟的一個實施例的流程圖;圖32是說明了用于在遠程表示層協(xié)議數(shù)據(jù)的實時回放期間進行實時搜索的方法中所采取的步驟的一個實施例的流程圖;圖33是說明了用于在表示層協(xié)議數(shù)據(jù)流的實時回放期間產(chǎn)生能夠進行實時搜索的狀態(tài)快照的方法中所采取的步驟的一個實施例的流程圖;圖34是說明了在用于狀態(tài)快照的自適應(yīng)產(chǎn)生的方法中所采取的步驟的一個實施例的流程圖。
具體實施例方式本發(fā)明的方法和系統(tǒng)提供了對所記錄的表示層協(xié)議會話的時移回放。在有些實施例中,該技術(shù)依賴用于表示層協(xié)議會話的記錄和回放的方法和系統(tǒng),這些也將在這里進行說明。用于表示層協(xié)議會話的回放的方法的一些實施例提供了在記錄完成之后和所記錄的協(xié)議數(shù)據(jù)流產(chǎn)生之后的回放功能。但在其它實施例中,方法和系統(tǒng)提供了在協(xié)議數(shù)據(jù)流的記錄期間對協(xié)議數(shù)據(jù)流進行回放的功能。在其中一個實施例中,該方法和系統(tǒng)還提供了對完成的協(xié)議數(shù)據(jù)流記錄進行回放的功能。在另一個實施例中,該方法和系統(tǒng)提供了一系列回放控制,包括但不限于從開始觀看記錄的能力、前進或后退、暫停、快進、逐幀前進等
坐寸ο在有些實施例中,這里所說明的方法和系統(tǒng)提供了時移回放(或時移),一個從視頻產(chǎn)業(yè)借用的術(shù)語。被稱為DVR (數(shù)字視頻錄像機)的產(chǎn)品例如眾所周知的TIVO牌使用時移技術(shù)。這些產(chǎn)品向消費者提供比傳統(tǒng)VCR更顯著的優(yōu)勢,包括在記錄結(jié)束前就開始觀看所記錄的TV節(jié)目的能力。這個好處也被提供給了這里所說明的方法和系統(tǒng)的用戶。用于提供表示層協(xié)議數(shù)據(jù)的記錄后回放(也就是用于所記錄的表示層協(xié)議數(shù)據(jù)的VCR功能)的方法和系統(tǒng)還可以提供在記錄期間的回放。這尤其為該系統(tǒng)打開了新的使用案例和新的市場機會。對于該方法和系統(tǒng)被用于安全目的的實施例,該功能大大增強了這些方法和系統(tǒng)作為監(jiān)視和監(jiān)控工具(此時對可疑活動的響應(yīng)時間尤其重要)的可用性?,F(xiàn)在可以在可疑終端用戶違反規(guī)則或?qū)τ嬎慊蚓W(wǎng)絡(luò)資源的其它不正當(dāng)使用時將他們抓獲。另外,對于該技術(shù)被用在客戶支持場景中的實施例,支持技術(shù)人員現(xiàn)在有能力正確觀察用戶在他們請求幫助之前究竟做了什么,然后立刻跳回“實況”觀看用戶將要做什么。這為支持市場提供了巨大的機會,因為現(xiàn)有的會話記錄產(chǎn)品沒有提供復(fù)合的實況和回溯性回放特性。因為這里所說明的方法和系統(tǒng)對系統(tǒng)的性能、可擴展性、可管理性或可用性只有很小(如果有的話)的影響,所以還具有管理上的優(yōu)勢。在一個實施例中,播放一個實況會話可能在該會話正在被實況觀看的時間段內(nèi)對始發(fā)表示服務(wù)器有微小的影響。在另一個實施例中,當(dāng)沒有會話正在被實況播放時,對服務(wù)器的性能和可擴展性影響與提供記錄后回放方案的實施例中相同。從記錄會話的搜索列表,實況記錄可以根據(jù)諸如動畫圖標(biāo)、缺少結(jié)束時間、和不斷變化的會話持續(xù)指示等元素被識別出。在回放期間,用來顯示記錄的“時間線”的圖形元素(例如拉動進度條)可以繼續(xù)擴展,來表示當(dāng)來自會話的額外數(shù)據(jù)被記錄時的不斷增加的可用于回放的數(shù)據(jù)。如果用戶想要觀看實況,在一個實施例中,他們可以點擊拉動進度條的最右端。在有些實施例中,例如在監(jiān)控或監(jiān)視場景中,該系統(tǒng)的成功實現(xiàn)可能依賴于協(xié)議數(shù)據(jù)流的接收者難以檢測到它們正在被記錄。在其中一個實施例中,使用提供時移回放特性的方法和系統(tǒng)不會從指示這些接收者他們的數(shù)據(jù)和會話被記錄或觀看的有效會話期間提供任何新“線索”。在其它實施例中,從管理員的角度,這些方法和系統(tǒng)提供的特性以類似于這里所說明的記錄后回放系統(tǒng)和方法的方式運行。在其中一個實施例中,沒有額外的安裝或配置選項。記錄規(guī)則和安全特性就像它們在記錄后回放系統(tǒng)和方法中所做的那樣工作。現(xiàn)在參看圖1A,其中說明了網(wǎng)絡(luò)環(huán)境的一個實施例。簡要地說,該網(wǎng)絡(luò)環(huán)境包括通過一個或多個網(wǎng)絡(luò)104與一個或多個服務(wù)器106a-106n (通常也稱為服務(wù)器106或遠程機器106)相互通信的一個或多個客戶端102a-102n (通常也稱為本地機或客戶端102)。盡管圖1A將網(wǎng)絡(luò)104顯示在客戶端102和服務(wù)器106之間,但客戶端102和服務(wù)器106可以位于相同網(wǎng)絡(luò)104中。網(wǎng)絡(luò)104可以是局域網(wǎng)(LAN,例如公司內(nèi)部網(wǎng)絡(luò)),城域網(wǎng)(WAN)或廣域網(wǎng)(WAN,例如互聯(lián)網(wǎng)或萬維網(wǎng))。在有些實施例中,在客戶端102和服務(wù)器106之間有多個網(wǎng)絡(luò)104。在其中一個實施例中,網(wǎng)絡(luò)104’可以是私有網(wǎng)絡(luò),網(wǎng)絡(luò)104可以是公共網(wǎng)絡(luò)。在其中另一個實施例中,網(wǎng)絡(luò)104可以是私有網(wǎng)絡(luò),網(wǎng)絡(luò)104’可以是公共網(wǎng)絡(luò)。在又另一個實施例中,網(wǎng)絡(luò)104和104’可以都是私有網(wǎng)絡(luò)。網(wǎng)絡(luò)104可以是任意類型和/或形式的網(wǎng)絡(luò),并且可以包括下列任意一種:點到點網(wǎng)絡(luò),廣播網(wǎng)絡(luò),廣域網(wǎng),局域網(wǎng),電信網(wǎng),數(shù)據(jù)通信網(wǎng),計算機網(wǎng)絡(luò),ATM (異步傳輸模式)網(wǎng)絡(luò),SONET (同步光纖網(wǎng)絡(luò))網(wǎng)絡(luò),SDH (同步數(shù)字體系)網(wǎng)絡(luò),無線網(wǎng)絡(luò)和有線網(wǎng)絡(luò)。在有些實施例中,網(wǎng)絡(luò)104可以包括無線鏈路,例如紅外信道或衛(wèi)星帶。網(wǎng)絡(luò)104的拓撲結(jié)構(gòu)可以是總線型、星型或環(huán)形網(wǎng)絡(luò)拓撲。網(wǎng)絡(luò)104和網(wǎng)絡(luò)拓撲結(jié)構(gòu)可以是例如本領(lǐng)域的技術(shù)人員已知的能夠支持這里所說明的操作的任意網(wǎng)絡(luò)或網(wǎng)絡(luò)拓撲。該網(wǎng)絡(luò)可以包括使用用來在移動裝置之間通信的任意一種或多種協(xié)議的移動電話網(wǎng)絡(luò)(包括AMPS,TDMA, CDMA, GSM, GPRS或UMTS)。在其中一些實施例中,不同類型的數(shù)據(jù)可以通過不同的協(xié)議傳輸。在其它實施例中,相同類型的數(shù)據(jù)可以通過不同的協(xié)議傳輸。在一個實施例中,該系統(tǒng)可以包括多個邏輯上成組的服務(wù)器106。在這些實施例中,服務(wù)器的邏輯組可以被稱為服務(wù)器群組38。在其中一些實施例中,服務(wù)器106可以在地理位置上分散。在有些情況下,群組38可以被作為一個單個實體進行管理。在其它實施例中,服務(wù)器群組38包括多個服務(wù)器群組38。在一個實施例中,服務(wù)器群組代表一個或多個客戶端102執(zhí)行一個或多個應(yīng)用程序。各個群組38中的服務(wù)器106可以是不同種類的。服務(wù)器106中的一個或多個可以根據(jù)一種類型的操作系統(tǒng)平臺(例如,由位于Redmond, Washington的微軟公司開發(fā)的WINDOWSNT)運行,而其它服務(wù)器106中的一個或多個可以根據(jù)另一種類型的操作系統(tǒng)平臺(例如Unix或Linux)運行。各個群組38中的服務(wù)器106不需要在物理上鄰近相同群組38中的另一個服務(wù)器106。因而,邏輯上分組作為群組38的服務(wù)器106組可以用廣域網(wǎng)(WAN)連接或城域網(wǎng)(MAN)連接來互聯(lián)。例如,群組38可以包括物理上位于不同大洲或大洲、國家、州、城市、校園或房間的不同區(qū)域的服務(wù)器106。如果服務(wù)器106由局域網(wǎng)(LAN)連接或某種直連形式相連,可以提高群組38中的服務(wù)器106之間的數(shù)據(jù)傳輸速度。服務(wù)器106可以是文件服務(wù)器、應(yīng)用服務(wù)器、web服務(wù)器、proxy服務(wù)器、裝置、網(wǎng)絡(luò)裝置、網(wǎng)關(guān)、應(yīng)用網(wǎng)關(guān)、網(wǎng)關(guān)服務(wù)器、虛擬化服務(wù)器、布署服務(wù)器、SSL VPN服務(wù)器或防火墻。在有些實施例中,服務(wù)器106可以有充當(dāng)應(yīng)用服務(wù)器或者主應(yīng)用程序器工作的能力。在一個實施例中,服務(wù)器106可以包括活動目錄。遠程機器30可以是應(yīng)用加速裝置。對于遠程機器30是應(yīng)用加速裝置的實施例,遠程機器30可以提供包括防火墻功能、應(yīng)用防火墻功能或負載平衡功能在內(nèi)的功能。在有些實施例中,遠程機器30包括例如由下列公司生產(chǎn)的系列產(chǎn)品之一 San Jose, CA 的 Citrix Application Networking Group,位于MountainView, CA 的 Silver Peak Systems Inc.,位于 San Francisco, CA 的 Riverbed TechnologyInc.,位于 Seattle, WA 的 F5Networks Inc.,或者位于 Sunnyvale, CA 的 Juniper NetworksInc..
客戶端102也可以被稱為客戶端節(jié)點,客戶端,終端節(jié)點或終端。在有些實施例中,客戶端102有能力作為搜索對服務(wù)器提供的資源的訪問的客戶端節(jié)點工作,也有能力作為提供對其它客戶端102a-102n所寄載的資源的訪問的服務(wù)器工作。在有些實施例中,服務(wù)器106或服務(wù)器群組38可以運行一個或多個應(yīng)用,例如提供瘦客戶端計算或遠程顯示表示應(yīng)用。在一個實施例中,服務(wù)器106或服務(wù)器群組38作為一個應(yīng)用來執(zhí)行Citrix Systems Inc.的Citrix Access Suite 的任一部分(例如 MetaFrame 或 Citrix Presentation Server ),和 / 或微軟公司開發(fā)的 MICROSOFTWINDOWS終端服務(wù)(Terminal Services)中的任意一個。在另一個實施例中,該應(yīng)用包括由位于Redmond, Washington的微軟公司開發(fā)的遠程桌面(RDP)客戶端,或者由開源X.0rg組織維護的Xll客戶端。在又一實施例中,服務(wù)器106可以運行一個應(yīng)用,它例如可以是提供電子郵件服務(wù)的應(yīng)用服務(wù)器(例如由位于Redmond, Washington的微軟公司開發(fā)的MICR0S0FTEXCHANGE),Web或Internet服務(wù)器,桌面共享服務(wù)器或協(xié)作服務(wù)器。在又另一實施例中,這些應(yīng)用中的任意一種都可以包括任一類型的所寄載的服務(wù)或產(chǎn)品,例如由位于Santa Barbara, California 的 Citrix Online Division Inc.提供的 G0T0MEETING,由位于 Santa Clara, California 的 WebEX Inc.提供的 WEBEX,或者由位于Redmond, Washington的微軟公司提供的 Microsoft Office LIVE MEETING。客戶端102可以執(zhí)行、運行或以其它方式提供應(yīng)用,該應(yīng)用可以是任意類型和/或形式的軟件、程序或者可執(zhí)行指令,例如任何類型和/或形式的web瀏覽器、基于web的客戶端、客戶端-服務(wù)器應(yīng)用、瘦客戶端計算客戶端,ActiveX控件、或者Java程序、或者能夠在客戶端102上執(zhí)行的任意其它類型和/或形式的可執(zhí)行指令。在有些實施例中,該應(yīng)用可以是由服務(wù)器106代表客戶端102執(zhí)行的基于服務(wù)器的或基于遠程的應(yīng)用。在一個實施例中,服務(wù)器106可以使用瘦客戶端或遠程顯示協(xié)議(例如由位于Ft.Lauderdale, Florida的Citrix Systems Inc.開發(fā)的獨立計算體系結(jié)構(gòu)(ICA)協(xié)議,或由位于Redmond, Washington的微軟公司開發(fā)的遠程桌面協(xié)議(RDP))來顯示輸出到客戶端102。該應(yīng)用可以使用任意類型的協(xié)議,并且它可為如HTTP客戶端,F(xiàn)TP客戶端,Oscar客戶端或Telnet客戶端。在其它實施例中,應(yīng)用包括與VoIP (Voice over Internet Protocol)通信有關(guān)的任意類型的軟件,例如軟IP電話。在進一步的實施例中,該應(yīng)用包括與實時數(shù)據(jù)通信有關(guān)的任意應(yīng)用,例如用于流式傳輸視頻和/或音頻的應(yīng)用。
客戶端102和服務(wù)器106可以被布署為和/或被執(zhí)行在任意類型和形式的計算裝置上,例如能夠在任意類型和形式的網(wǎng)絡(luò)上通信并執(zhí)行這里所說明的操作的計算機、網(wǎng)絡(luò)裝置或裝置。圖1B和IC描述了可以用于實現(xiàn)客戶端102或服務(wù)器106的一個實施例的計算裝置100的框圖。如圖1B和IC所示,每個計算裝置100包括中央處理單元121和主存儲器單元122。如圖1B中所示,計算裝置100可以包括顯示裝置124,鍵盤126和/或定點裝置127,例如鼠標(biāo)。如圖1C中所示,每個計算裝置100還可以包括其它可選部件,例如一個或多個輸入/輸出裝置130a-130b (—般用引用編號130來指代),以及與中央處理單元121通信的高速緩沖存儲器140。中央處理單元121是響應(yīng)并處理取自主存儲器單元122的指令的任意邏輯電路。在很多實施例中,中央處理單元由微處理器單元提供,例如:由位于MountainView, California的Intel公司生產(chǎn)的微處理器;由位于Schaumburg, Illinois的Motorola公司生產(chǎn)的微處理器;由位于Santa Clara, California的Transmeta公司生產(chǎn)的微處理器;由位于White Plains, New York的國際商用機器公司(IBM)生產(chǎn)的微處理器RS/6000 ;由位于Sunnyvale, California的超微裝置(AMD)公司生產(chǎn)的微處理器。計算裝置100可以基于任意的這些處理器或者能夠進行如此處描述操作的任意其它處理器。主存儲器單元122可以是能夠存儲數(shù)據(jù)并允許微處理器121直接訪問其任意存儲位置的一個或多個存儲器芯片,例如靜態(tài)隨機存取存儲器(SRAM)、突發(fā)(Burst) SRAM或同步突發(fā)(SynchBurst)SRAM(BSRAM)、動態(tài)隨機存取存儲器(DRAM)、快速頁面模式(Fast PageMode)DRAM (FPM DRAM)、增強型 DRAM (EDRAM)、擴展數(shù)據(jù)輸出(Extended Data Output)RAM(EDO RAM)、擴展數(shù)據(jù)輸出DRAM (EDO DRAM)、突發(fā)擴展數(shù)據(jù)輸出DRAM (BED0 DRAM)、增強型DRAM (EDRAM)、同步 DRAM (SDRAM)、JEDEC SRAM、PC100SDRAM、雙數(shù)據(jù)率 SDRAM (DDR SDRAM)、增強型 SDRAM (ESDRAM)、同步鏈接 DRAM (SLDRAM)、直接內(nèi)存總線(Rambus)DRAM (DRDRAM)或鐵電RAM (FRAM)0主存儲器122可以基于上述存儲芯片中的任意一種,或者能夠按照這里所述操作的任一其它可用存儲芯片。在圖1B所示實施例中,處理器121通過系統(tǒng)總線150 (下面將對其進行更詳細的說明)與主存儲器122通信。圖1B描述了計算裝置100的一個實施例,其中處理器通過存儲器端口 103直接與主存儲器122通信。例如,在圖1B中主存儲器122可以是DRDRAM。圖1C描繪的實施例中,主存儲器121通過次級總線(有時也稱為背端總線)直接與高速緩沖存儲器140通信。在其它實施例中,主處理器121使用系統(tǒng)總線150與高速緩沖存儲器140通信。高速緩沖存儲器140通常具有比主存儲器122更快的響應(yīng)時間,并且一般由SRAM、BSRAM或EDRAM提供。在圖1C所示的實施例中,處理器121通過本地系統(tǒng)總線150與各種1/0裝置130通信??梢允褂酶鞣N總線將中央處理單元121連接到任意1/0裝置130,包括VESA VL總線、ISA總線、EISA總線、微通道體系結(jié)構(gòu)(MCA)總線、PCI總線、PC1-X總線、PC1-Express總線或者NuBus。對于其中的1/0裝置是視頻顯示器124的實施例,處理器121可以使用高級圖形端口(AGP)與顯示器124通信。圖1C描述了計算機100的一個實施例,其中主處理器121通過超級傳輸總線(HyperTransport)、快速(Rapid) I/O或InfiniBand直接與1/0裝置130b通信。圖1C還描述了一個實施例,其中混合了本地總線和直接通信:處理器121使用本地互聯(lián)總線與1/0裝置130a通信,而直接與1/0裝置130b通信。
計算裝置100可以支持任意適當(dāng)?shù)陌惭b裝置116,例如用于接收軟盤(如3.5英寸或5.25英寸)或ZIP盤的軟驅(qū)、⑶-ROM驅(qū)動器⑶-R/RW驅(qū)動器、DVD-ROM驅(qū)動器、各種格式的磁帶驅(qū)動器、USB裝置、硬盤驅(qū)動器或適合安裝軟件和程序(如任一客戶端代理120或其中一部分)的任意其它裝置。計算裝置100還可以包括存儲裝置,例如一個或多個硬盤驅(qū)動器或獨立磁盤的隨機陣列,用于存儲操作系統(tǒng)和其它相關(guān)軟件,并用于存儲應(yīng)用軟件程序,例如與客戶端代理120有關(guān)的任意程序??蛇x地,任意安裝裝置116也可以用作存儲裝置。另外,操作系統(tǒng)和軟件可以從可引導(dǎo)介質(zhì)上被運行,例如KNOPPIX ,一種用于GNU/Linux的可引導(dǎo)⑶,該可引導(dǎo)⑶可從knoppix.net作為GNU/Linux分發(fā)獲得。此外,計算裝置100可以包括網(wǎng)絡(luò)接口 118以通過多種連接(包括但不限于標(biāo)準(zhǔn)電話線、LAN或WAN鏈路(如802.11,Tl,T3,56kb, X.25)、寬帶連接(如ISDN、幀中繼、ATM)、無線連接或上述任意或全部的一些組合)對接到局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)或Internet。網(wǎng)絡(luò)接口 118可以包括內(nèi)置網(wǎng)絡(luò)適配器、網(wǎng)絡(luò)接口卡、PCMCIA網(wǎng)絡(luò)卡、卡總線網(wǎng)絡(luò)適配器、無線網(wǎng)絡(luò)適配器、USB網(wǎng)絡(luò)適配器、調(diào)整解調(diào)器或適合將計算裝置100對接到能夠通信并執(zhí)行此處所述操作的任一類型網(wǎng)絡(luò)的任一其它裝置。計算裝置100中可以有多種I/O裝置130a_130n。輸入裝置包括鍵盤、鼠標(biāo)、軌跡板、軌跡球、麥克風(fēng)和繪畫板。輸出裝置包括視頻顯示器、揚聲器、噴墨打印機、激光打印機和染料升華(dye — sublimation)打印機。I/O裝置可以如圖1B中所示由I/O控制器123控制。I/O控制器可以控制一個或多個I/O裝置,例如鍵盤126和定點裝置127 (例如鼠標(biāo)或光學(xué)筆)。此外,I/O裝置也可以為計算裝置100提供存儲和/或安裝介質(zhì)116。在另其它實施例中,計算裝置100可以提供USB連接以接收手持USB存儲裝置,例如由位于LosAlamitos, California 的 Twintech Industry Inc.生產(chǎn)的 USB 閃存驅(qū)動器系列裝置。在有些實施例中,計算裝置100可以包括多個顯示裝置124a_124n或與其相連,這些顯示裝置可以是相同或不同的類型和/或形式。同樣,I/O裝置130a-130n中的任一個和/或I/O控制器123可以包括任意類型和/或形式的適當(dāng)?shù)挠布?、軟件或軟硬件組合以支持、啟用或提供計算裝置100對多個顯示裝置124a-124n的連接和使用。例如,計算裝置100可以包括任意類型和/或形式的視頻適配器、視頻卡、驅(qū)動器和/或庫,以與顯示裝置124a-124n對接、通信、連接或者使用顯示裝置124a_124n。在一個實施例中,視頻適配器可以包括多個連接器以與多個顯示裝置124a-124n對接。在其它實施例中,計算裝置100可以包括多個視頻適適配器,每個視頻適配器連接到顯示裝置124a-124n中的一個或多個。在一些實施例中,計算裝置100的操作系統(tǒng)的任一部分都可以被配置用于使用多個顯示器124a-124n。在其它實施例中,顯示裝置124a_124n中的一個或多個可以由一個或多個其它計算裝置提供,諸如(例如通過網(wǎng)絡(luò))與計算裝置100相連的計算裝置IOOa和IOOb提供。這些實施例可以包括設(shè)計和構(gòu)造的任一類型的軟件,以使用另一個計算機的顯示裝置作為計算裝置100的第二顯示裝置124a。本領(lǐng)域的技術(shù)人員將認識和意識到計算裝置100可以被配置為有多個顯示裝置124a-124n的各種方式和實施例。在進一步的實施例中,I/O裝置130可以是系統(tǒng)總線150和外部通信總線間的橋接器,外部通信總線例如為USB總線、Apple Desktop總線、RS-232串行連接、SCSI總線、FireWire 總線、Fireffire800 總線、Ethernet 總線 AppleTalk 總線、Gigabit Ethernet總線、ATM 總線、HIPPI 總線、超級(Super) HIPPI 總線、SerialPlus 總線、SCI/LAMP 總線、FibreChannel總線或者串行連接(Serial Attached)小型計算機系統(tǒng)接口總線。圖1B和IC中所示類型的計算裝置100通常在操作系統(tǒng)的控制下運行,該控制系統(tǒng)控制任務(wù)的調(diào)度和對系統(tǒng)資源的訪問。裝置100可以運行任意操作系統(tǒng),例如任意版本的MICROSOFT WINDOWS操作系統(tǒng),不同發(fā)行版本的Unix和Linux操作系統(tǒng),用于Macintosh計算機的任意版本的MAC OS,任意嵌入式操作系統(tǒng),任意實時操作系統(tǒng),任意開源操作系統(tǒng),任意專有操作系統(tǒng),任意用于移動計算裝置的操作系統(tǒng),或者任意其它能夠在計算裝置上運行并完成這里所述操作的操作系統(tǒng)。典型的操作系統(tǒng)包括:WIND0WS3.X,WIND0WS95,WIND0WS98,WIND0WS200,WINDOWS NT3.51,WINDOWS NT4.0,WINDOWS CE和WINDOWS XP,所有這些都由位于Redmond, Washington的微軟公司開發(fā);由位于Cupertino, California的蘋果計算機公司開發(fā)的MAC OS ;由位于Armond, New York的國際商用機器公司開發(fā)的OS/2 ;以及Linux,由位于Salt Lake City, Utah的Caldera公司發(fā)布的可自由獲得的操作系統(tǒng),或者除此之外任意類型和/或形式的Unix操作系統(tǒng)。在有些實施例中,計算裝置100可以有與該裝置相容的不同的處理器、操作系統(tǒng)以及輸入裝置。例如,在一個實施例中,計算裝置100是由Palm Inc.公司生產(chǎn)的Treol80、270、600、650、680、700p或700w智能手機。在其中一些實施例中,Treo智能手機在PalmOS操作系統(tǒng)的控制下運行,并且包括觸針輸入裝置以及五向?qū)Ш窖b置。在其它實施例中,計算裝置100是移動裝置,例如啟用了 JAVA的蜂窩電話或個人數(shù)字助理(PDA),例如由位于Schaumburg, Illinois的Motorola公司生產(chǎn)的i55sr, i58sr, i85s, i88s, i90c, i95cl 或 imllOOO,由位于 Kyoto, Japan 的 Kyocera 生產(chǎn)的6035或7135,或者由位于Seoul, Korea的Samsung電子有限公司生產(chǎn)的i300或i330。在另外其它實施例中,計算裝置100是黑莓掌中寶(Blackberry handheld)或智能手機,例如由Research In Motion有限公司生產(chǎn)的裝置,包括黑莓7100系列、8700系列、7700系列、7200系列、黑莓7520或黑莓珍珠(Blackberry Pearl)8100。在其它實施例中,計算裝置100是智能手機、掌上電腦、掌上電腦電話或者支持Microsoft Windows Mobile軟件的其它手持移動裝置。此外,計算裝置100可以是任意工作站、桌面計算機、膝上或筆記本型計算機、服務(wù)器、手持計算機、移動電話、任意其它計算機或者能夠通信并且有足夠的處理器能力和存儲器容量來完成這里所述操作的其它形式的計算或電信裝置?,F(xiàn)在參看圖2,其中的框圖描述了在其中實現(xiàn)了本發(fā)明的網(wǎng)絡(luò)200的一個實施例,網(wǎng)絡(luò)200包括第一裝置202、遠程表示協(xié)議服務(wù)器引擎204、記錄器206、協(xié)議數(shù)據(jù)流208、記錄的協(xié)議數(shù)據(jù)流210、第二裝置212、遠程表示協(xié)議客戶端引擎214、顯示器216、存儲元件218以及記錄的協(xié)議數(shù)據(jù)流220。簡單地說,記錄器206攔截協(xié)議數(shù)據(jù)流208。記錄器206從協(xié)議數(shù)據(jù)流復(fù)制至少一個分組并用該至少一個復(fù)制的分組創(chuàng)建協(xié)議數(shù)據(jù)流210的記錄?,F(xiàn)在更詳細地參看圖2,第一裝置202將協(xié)議數(shù)據(jù)流208發(fā)送到第二裝置212。在一個實施例中,第一裝置202使用遠程表示協(xié)議服務(wù)器引擎204將協(xié)議數(shù)據(jù)流208發(fā)送到第二裝置212。在有些實施例中,第二裝置212使用遠程表示協(xié)議客戶端引擎214從第一裝置202接收協(xié)議數(shù)據(jù)流208。在有些實施例中,遠程表示協(xié)議包括瘦客戶端協(xié)議,例如由位于 Ft.Lauderdale, Florida 的 Citrix Systems Inc.開發(fā)的 ICA 協(xié)議,由 X.0rg 協(xié)會開發(fā)的X協(xié)議,AT&T公司的虛擬網(wǎng)絡(luò)計算協(xié)議,或由位于Redmond, Washington的微軟公司開發(fā)的RDP協(xié)議。
協(xié)議數(shù)據(jù)流208包括多個分組,其中至少有一些表示顯示數(shù)據(jù)。在有些實施例中,協(xié)議數(shù)據(jù)流208包括與記錄會話有關(guān)的信息。在一個實施例中,協(xié)議數(shù)據(jù)流208包括元數(shù)據(jù)。在另一實施例中,協(xié)議數(shù)據(jù)流208包括與記錄會話中的用戶有關(guān)的信息。在又一實施例中,協(xié)議數(shù)據(jù)流208包括與產(chǎn)生所記錄的數(shù)據(jù)的服務(wù)器有關(guān)的信息。在又另一實施例中,協(xié)議數(shù)據(jù)流208包括時間戳。在一個實施例中,協(xié)議數(shù)據(jù)流208包括多個信道。在這個實施例中,一個信道包括端到端連接,數(shù)據(jù)在該連接上被傳輸。在另一實施例中,協(xié)議數(shù)據(jù)流208包括多個虛擬信道。在這個實施例中,虛擬信道是被包在另一信道中的信道。第二裝置212接收協(xié)議數(shù)據(jù)流208并且在有些實施例中使用遠程表示協(xié)議客戶端引擎214再生顯示數(shù)據(jù)。處理協(xié)議數(shù)據(jù)流208使得第二裝置212能夠通過顯示器216將顯示呈現(xiàn)給用戶。第二裝置212可以使用遠程表示協(xié)議客戶端引擎214處理顯示數(shù)據(jù)。該顯示包括但不限于聽覺、視覺、觸覺或嗅覺的演示,或者它們的組合。記錄器206攔截從第一裝置202發(fā)送到第二裝置212的協(xié)議數(shù)據(jù)流208。在一個實施例中,記錄器206通過攔截一個或多個信道而攔截協(xié)議數(shù)據(jù)流208。在另一個實施例中,記錄器206通過攔截一個或多個虛擬信道而攔截協(xié)議數(shù)據(jù)流208。在有些實施例中,記錄器206監(jiān)控其中第一裝置202用來傳輸協(xié)議數(shù)據(jù)流208到第二裝置212的一個或多個虛擬信道。記錄器206從協(xié)議數(shù)據(jù)流復(fù)制至少一個分組。在一個實施例中,記錄器206根據(jù)策略決定復(fù)制協(xié)議數(shù)據(jù)流的特定分組。在有些實施例中,策略定義分組為記錄器206根據(jù)分組中包含的數(shù)據(jù)的類型進行記錄。在其它實施例中,記錄器206根據(jù)該分組是否包含數(shù)據(jù)的決定來決定復(fù)制協(xié)議數(shù)據(jù)流中的分組。在其中一些實施例中,當(dāng)在其它實施例中記錄器206記錄空分組時,記錄器206不記錄空分組。在有些實施例中,記錄器206記錄協(xié)議數(shù)據(jù)流208中的每個分組。記錄器206使用至少一個復(fù)制的分組創(chuàng)建記錄的協(xié)議數(shù)據(jù)流210。在一個實施例中,記錄器206將信息和該至少一個被復(fù)制的分組關(guān)聯(lián)在一起。在一個實施例中,記錄器206將時間戳和該至少一個被復(fù)制的分組關(guān)聯(lián)在一起。在另一個實施例中,記錄器206將數(shù)據(jù)長度指示符和該分組關(guān)聯(lián)在一起。對于記錄器206將信息(例如時間戳或數(shù)據(jù)長度指示符)與該至少一個被復(fù)制的分組關(guān)聯(lián)一起的實施例來說,除分組之外,記錄器206可以將這個信息嵌入所記錄的協(xié)議數(shù)據(jù)流210,或者記錄器206可以將這個信息直接嵌入分組中,或者記錄器206可以將該關(guān)聯(lián)存儲在獨立于分組和所記錄的協(xié)議數(shù)據(jù)流210的位置。如圖2中所示,記錄器206可以位于第一裝置202上。圖3所示的實施例中記錄器206位于第二裝置上,其中位于第二裝置212上。圖4所示的實施例中記錄器206位于第三裝置上??稍O(shè)置記錄器206的裝置包括客戶端計算系統(tǒng)、服務(wù)器計算系統(tǒng)、代理服務(wù)器計算系統(tǒng)、網(wǎng)絡(luò)分組監(jiān)聽計算系統(tǒng)、協(xié)議分析器計算系統(tǒng)、以及直通服務(wù)器(passthroughserver)計算系統(tǒng)。記錄器206使用該至少一個被復(fù)制的分組(在有些實施例中,還使用與該至少一個被復(fù)制的分組相關(guān)聯(lián)的信息)創(chuàng)建記錄的協(xié)議數(shù)據(jù)流210。在有些實施例中,記錄器206在創(chuàng)建協(xié)議數(shù)據(jù)流210的記錄之后將其存儲下來。在其中一些實施例中,記錄器206將協(xié)議數(shù)據(jù)流的記錄210存儲到存儲元件218。存儲元件218可以包括持久存儲器,例如硬盤驅(qū)動器、軟驅(qū)、CD-RW、DVD-RW或在斷電時仍然維持數(shù)據(jù)狀態(tài)的任意其它裝置。在其它實施例中,存儲元件可以包括一個或多個易失存儲器元件,例如靜態(tài)隨機存取存儲器(SRAM)、突發(fā)(Burst)SRAM或同步突發(fā)(SynchBurst)SRAM (BSRAM)、動態(tài)隨機存取存儲器(DRAM)、快速頁模式DRAM (FPM DRAM)、增強型DRAM (EDRAM)、擴展數(shù)據(jù)輸出RAM (EDO RAM)、擴展數(shù)據(jù)輸出DRAM (EDO DRAM)、突發(fā)擴展數(shù)據(jù)輸出 DRAM (BEDO DRAM)、增強型 DRAM (EDRAM)、同步 DRAM(SDRAM), JEDEC SRAM、PC100SDRAM、雙數(shù)據(jù)率 SDRAM (DDR SDRAM)、增強型 SDRAM (ESDRAM)、同步鏈接DRAM (SLDRAM)、直接內(nèi)存總線DRAM (DRDRAM)或鐵電RAM (FRAM)0在一個實施例中,存儲元件包括網(wǎng)絡(luò)存儲裝置。存儲元件218可以位于第一裝置202或第二裝置212上。在其它實施例中,存儲元件218位于第三裝置上,例如代理服務(wù)器計算裝置或直通服務(wù)器計算裝置。在另其它實施例中,存儲元件218位于網(wǎng)絡(luò)上,并且記錄器206通過網(wǎng)絡(luò)訪問存儲元件218以存儲協(xié)議數(shù)據(jù)流220的記錄。在其它實施例中,記錄器206將協(xié)議數(shù)據(jù)流的記錄存儲在記錄器206所在的相同裝置上?,F(xiàn)在參看圖5,圖中框圖描述了從協(xié)議數(shù)據(jù)流506的記錄讀取至少一個復(fù)制的分組并使用與該至少一個復(fù)制的分組相關(guān)聯(lián)的信息再生由協(xié)議數(shù)據(jù)流506表示的顯示數(shù)據(jù)的協(xié)議弓丨擎502。協(xié)議弓I擎502接收協(xié)議數(shù)據(jù)流506。在有些實施例中,協(xié)議弓I擎502從存儲元件504檢索(retrieve)協(xié)議數(shù)據(jù)流506。在其它實施例中,協(xié)議引擎502從記錄器206檢索協(xié)議數(shù)據(jù)流506。在另其它實施例中,協(xié)議引擎502從另一計算裝置檢索協(xié)議數(shù)據(jù)流506。在有些實施例中,協(xié)議引擎502包括分組讀取器508和顯示數(shù)據(jù)再生單元510。在這些實施例中,分組讀取器508從協(xié)議數(shù)據(jù)流506的記錄讀取至少一個復(fù)制的分組。在有些實施例中,分組讀取器508從協(xié)議數(shù)據(jù)流506的記錄順序讀取該至少一個復(fù)制的分組。協(xié)議引擎502處理至少一個復(fù)制的分組以及與該至少一個復(fù)制的分組相關(guān)聯(lián)的任何信息。在有些實施例中,協(xié)議引擎502使用顯示數(shù)據(jù)再生單元510進行處理。該分組包含能夠再生呈現(xiàn)給用戶的可感知顯示的數(shù)據(jù)。在有些實施例中,第二裝置212處理這個數(shù)據(jù),如圖2中所示。在一個實施例中,處理包括將該至少一個復(fù)制的分組中的內(nèi)容呈送到緩沖區(qū)。在另一個實施例中,處理包括以可感知的方式呈送該至少一個復(fù)制的分組的內(nèi)容。再生的顯示可以包括但不限于聽覺、視覺、觸覺或嗅覺的演示或者它們的組合。在有些實施例中,協(xié)議引擎502位于第一裝置202上。在其它實施例中,協(xié)議引擎502位于第二裝置212上。在另其它實施例中,協(xié)議引擎位于第三裝置上,例如代理服務(wù)器計算裝置或直通服務(wù)器計算裝置?,F(xiàn)在向前看圖7,圖中框圖更詳細地描述了最初在圖2中被描述為記錄器206的記錄器702。簡單地說,記錄器702通過對協(xié)議數(shù)據(jù)流710的攔截并通過對協(xié)議數(shù)據(jù)流710的記錄712的創(chuàng)建而記錄服務(wù)器產(chǎn)生的數(shù)據(jù)。在一個實施例中,記錄器702包括協(xié)議數(shù)據(jù)流攔截器704、分組復(fù)制器706和記錄發(fā)生器708。在一個實施例中,記錄器702使用協(xié)議數(shù)據(jù)流攔截器704監(jiān)控協(xié)議數(shù)據(jù)流710。在另一實施例中,記錄器702使用協(xié)議數(shù)據(jù)流攔截器704攔截包括多個從第一裝置202發(fā)送到第二裝置212的分組的協(xié)議數(shù)據(jù)流710。分組復(fù)制器706復(fù)制協(xié)議數(shù)據(jù)流的至少一個分組。分組復(fù)制器706決定是否復(fù)制協(xié)議數(shù)據(jù)流中的分組。在有些實施例中,分組復(fù)制器706根據(jù)策略進行這個判斷。在這些實施例中,分組復(fù)制器706可以根據(jù)分組是否包含任意數(shù)據(jù)或者根據(jù)分組中包含的數(shù)據(jù)類型決定是否復(fù)制該分組。
在一個實施例中,記錄器702利用記錄發(fā)生器708并使用至少一個復(fù)制的分組創(chuàng)建協(xié)議數(shù)據(jù)流的記錄。記錄發(fā)生器將該至少一個復(fù)制的分組組裝成協(xié)議數(shù)據(jù)流710的記錄712。在有些實施例中,記錄發(fā)生器708將信息嵌入?yún)f(xié)議數(shù)據(jù)流的記錄中。這個信息可以包括但不限于表示何時再生由分組中包含的數(shù)據(jù)表示的顯示數(shù)據(jù)的時間基準(zhǔn),描述分組中包含的數(shù)據(jù)的數(shù)據(jù)長度指示符,或者用來再生由協(xié)議數(shù)據(jù)流710中包含的數(shù)據(jù)所表示的顯示數(shù)據(jù)的其它類型的信息。圖8描述了協(xié)議數(shù)據(jù)流710的記錄712的一個實施例。在所示實施例中,記錄發(fā)生器708將至少一個復(fù)制的分組組成遠程表示協(xié)議數(shù)據(jù)塊。記錄發(fā)生器708將時間基準(zhǔn)和數(shù)據(jù)長度與各個遠程表示協(xié)議數(shù)據(jù)塊關(guān)聯(lián)在一起并將信息和分組一起組合成協(xié)議數(shù)據(jù)流710的記錄712?,F(xiàn)在回過去看圖7,在一個實施例中,記錄器702將協(xié)議數(shù)據(jù)流710的完整記錄712存儲到存儲元件714中。在有些實施例中,存儲元件位于網(wǎng)絡(luò)上,記錄器702在網(wǎng)絡(luò)上將記錄712發(fā)送到存儲元件714。在其它實施例中,存儲元件位于代理服務(wù)器計算裝置上。在另其它實施例中,存儲元件位于直通服務(wù)器計算裝置上。在有些實施例中,存儲元件714位于和記錄器702相同的裝置上。在一個實施例中,如圖7所示,用于協(xié)議數(shù)據(jù)流的記錄和回放的系統(tǒng)包括記錄器702以及圖5中所述的回放裝置514?;胤叛b置514包括協(xié)議引擎502,它使用分組讀取器508從分組數(shù)據(jù)流的記錄712接收和讀取至少一個復(fù)制的分組并使用內(nèi)嵌的信息再生由協(xié)議數(shù)據(jù)流的記錄712表示的顯示數(shù)據(jù)。在有些實施例中,協(xié)議引擎502在再生顯示數(shù)據(jù)中順序讀取分組。在圖7所示另一實施例中,用于記錄和重放服務(wù)器產(chǎn)生的數(shù)據(jù)的系統(tǒng)包括記錄器702、存儲元件714和協(xié)議引擎502。記錄器702產(chǎn)生協(xié)議數(shù)據(jù)流的記錄并將記錄712存儲在存儲元件714中。記錄器從協(xié)議數(shù)據(jù)流復(fù)制至少一個分組并將信息(包括但不限于時間基準(zhǔn)或描述分組中數(shù)據(jù)長度的數(shù)據(jù)長度指示符)與至少一個分組關(guān)聯(lián)在一起。協(xié)議引擎502與存儲元件714通信,從協(xié)議數(shù)據(jù)流的記錄讀取至少一個分組并使用與至少一個分組相關(guān)聯(lián)的信息再生由協(xié)議數(shù)據(jù)流710的記錄712表示的顯示數(shù)據(jù)。在一個實施例中,記錄器702、協(xié)議引擎502或存儲元件714可以一起或分開位于第一裝置202上。在其它實施例中,它們可以一起或分開位于第二裝置212上。在另其它實施例中,它們可以一起或分開位于第三裝置上,例如代理服務(wù)器計算裝置,網(wǎng)絡(luò)分組監(jiān)聽器或直通服務(wù)器計算裝置。在另其它實施例中,存儲元件714可以獨立于記錄器702和協(xié)議引擎502位于存儲區(qū)網(wǎng)絡(luò)上?,F(xiàn)在參看圖6,所示流程圖概述了用于記錄和重放服務(wù)器產(chǎn)生的數(shù)據(jù)的方法。簡單地說,記錄器206攔截包括從第一裝置202發(fā)送到第二裝置212的多個分組的協(xié)議數(shù)據(jù)流208 (步驟602)。記錄器206從協(xié)議數(shù)據(jù)流208復(fù)制至少一個分組(步驟604)并創(chuàng)建協(xié)議數(shù)據(jù)流210的記錄(步驟606),隨后協(xié)議引擎502在再生由所記錄的協(xié)議數(shù)據(jù)流210表示的顯示數(shù)據(jù)時使用它(步驟608、610)。記錄器206攔截包括多個分組的、表示自第一裝置202發(fā)送到第二裝置212的顯示數(shù)據(jù)的協(xié)議數(shù)據(jù)流208。記錄器206復(fù)制協(xié)議數(shù)據(jù)流208的至少一個分組。記錄器206使用至少一個復(fù)制的分組創(chuàng)建協(xié)議數(shù)據(jù)流的記錄。記錄器206在有些實施例中將信息與至少一個復(fù)制的分組關(guān)聯(lián)在一起。該信息可以包括時間戳或數(shù)據(jù)長度指示符。在其中一些實施例中,記錄器206將與分組相關(guān)聯(lián)的信息嵌入?yún)f(xié)議數(shù)據(jù)流210的記錄中。在其中的其它實施例中,記錄器206將與分組相關(guān)的信息存儲在單獨的協(xié)議數(shù)據(jù)流中。在其中另一些實施例中,記錄器將與分組相關(guān)聯(lián)的信息存儲在數(shù)據(jù)存儲中。協(xié)議引擎502從協(xié)議數(shù)據(jù)流210的記錄讀取至少一個復(fù)制的分組并使用與該至少一個復(fù)制的分組相關(guān)聯(lián)的信息再生由協(xié)議數(shù)據(jù)流210表示的顯示數(shù)據(jù)?,F(xiàn)在向前參看圖11,其中的框圖描述了用于在有狀態(tài)的遠程表示協(xié)議的回放中進行實時搜索的系統(tǒng)。簡單地說,該圖描述了回放裝置514 (見上面的圖5)的一個實施例,包括兩個協(xié)議引擎502、后臺協(xié)議引擎1102、前臺協(xié)議引擎1106、以及狀態(tài)快照1104和顯示器1108。后臺協(xié)議引擎1102接收協(xié)議數(shù)據(jù)流1110的記錄并讀取協(xié)議數(shù)據(jù)流1110的記錄,其包括多個分組并表示顯示數(shù)據(jù)。在一個實施例中,該回放裝置514通過呈送協(xié)議數(shù)據(jù)流1110中的至少一個分組的內(nèi)容并使用顯示器1108顯示結(jié)果來再生顯示數(shù)據(jù)。該結(jié)果包括但不限于可以感知的聽覺、視覺、觸覺或嗅覺的演示?,F(xiàn)在更詳細地參看圖11,后臺協(xié)議引擎1102啟動對所呈送的顯示數(shù)據(jù)的接收者以在協(xié)議數(shù)據(jù)流1110的表示期間實時搜索內(nèi)容。后臺協(xié)議引擎1102在從協(xié)議數(shù)據(jù)流1110讀取至少一個分組時產(chǎn)生至少一個狀態(tài)快照1104。在一個實施例中,后臺協(xié)議引擎1102將至少一個分組的內(nèi)容呈送到緩沖區(qū)。在這個實施例中,該緩沖區(qū)可以包括離屏緩沖區(qū)。在這個實施例中,后臺協(xié)議引擎1102在它呈送該至少一個分組的內(nèi)容時產(chǎn)生至少一個狀態(tài)快照1104。后臺協(xié)議引擎1102使?fàn)顟B(tài)快照1104對前臺協(xié)議引擎1106可用。狀態(tài)快照1104使得能夠再生顯示數(shù)據(jù),因為它存儲了呈送協(xié)議數(shù)據(jù)流1110的協(xié)議引擎在記錄器206從協(xié)議數(shù)據(jù)流208復(fù)制至少一個分組到協(xié)議數(shù)據(jù)流1110的記錄的時間點的狀態(tài)。在一個實施例中,狀態(tài)快照1104包括描述某一時間點上的屏幕狀態(tài)的數(shù)據(jù)結(jié)構(gòu)。在另一實施例中,狀態(tài)快照1104描繪所有變量、圖像以及構(gòu)成協(xié)議引擎在協(xié)議數(shù)據(jù)流1110中的參考點上的狀態(tài)的數(shù)據(jù)組件。前臺協(xié)議引擎1106還接收協(xié)議數(shù)據(jù)流1110的記錄并且通過重新創(chuàng)建最初呈送協(xié)議數(shù)據(jù)流1110的協(xié)議引擎的狀態(tài)來呈送協(xié)議數(shù)據(jù)流1110中的至少一個分組的內(nèi)容。在一個實施例中,前臺協(xié)議引擎1106使用狀態(tài)快照1104的內(nèi)容呈送該至少一個分組的內(nèi)容。在一個實施例中,狀態(tài)快照1104包括數(shù)據(jù)結(jié)構(gòu)。在其它實施例中,狀態(tài)快照1104包括數(shù)據(jù)庫。在一個實施例中,狀態(tài)快照1104的內(nèi)容包括與可視表面的狀態(tài)有關(guān)的顯示數(shù)據(jù)。在另一實施例中,狀態(tài)快照1104的內(nèi)容包括與離屏表面的狀態(tài)有關(guān)的顯示數(shù)據(jù)。在又一實施例中,狀態(tài)快照1104的內(nèi)容包括與圖形對象的狀態(tài)有關(guān)的顯示數(shù)據(jù)。在有些實施例中,狀態(tài)快照1104的內(nèi)容包括與調(diào)色板的狀態(tài)有關(guān)的顯示數(shù)據(jù)。在其它實施例中,狀態(tài)快照1104的內(nèi)容包括與緩存對象的狀態(tài)有關(guān)的顯示數(shù)據(jù)。在另其它實施例中,狀態(tài)快照1104的內(nèi)容包括與緩沖區(qū)的狀態(tài)有關(guān)的顯示數(shù)據(jù)。前臺協(xié)議引擎1106接收協(xié)議數(shù)據(jù)流1110的記錄并使用狀態(tài)快照1104識別包含所請求的數(shù)字數(shù)據(jù)的表示的分組并呈送該分組。在有些實施例,前臺協(xié)議引擎1106產(chǎn)生協(xié)議數(shù)據(jù)流1110的記錄的實時可感知表示以表示給使用顯示器1108的觀眾。在有些實施例中,前臺協(xié)議引擎1106通過呈送協(xié)議數(shù)據(jù)流1110中的至少一個分組的內(nèi)容來產(chǎn)生實時可感知表示??筛兄硎究梢苑謩e包括或一起包括但不限于聽覺、視覺、觸覺或嗅覺的演示。
在其中一個前臺協(xié)議弓丨擎1106呈送協(xié)議數(shù)據(jù)流1110中的至少一個分組的內(nèi)容的實施例中,前臺協(xié)議引擎1106在由后臺協(xié)議引擎1102呈送的同時啟動對協(xié)議數(shù)據(jù)流1110中的至少一個分組的內(nèi)容的呈送。但是,后臺協(xié)議引擎1102只呈送到緩沖區(qū)并在由前臺協(xié)議引擎1106開始的實時可感知呈現(xiàn)完成之前完成呈現(xiàn)和對至少一個狀態(tài)快照1104的生成,前臺協(xié)議引擎1106在一個實施例中不僅呈送到緩沖區(qū)而且以可感知方式呈現(xiàn)。在一個實施例中,后臺協(xié)議引擎1102以最大的可能速度呈現(xiàn)協(xié)議數(shù)據(jù)流1110而不管與記錄(將以其它方式指定呈現(xiàn)時間)相關(guān)的任何時間戳。因此,在其協(xié)議數(shù)據(jù)流1110的記錄的實時可感知表示的產(chǎn)生期間,至少一個有狀態(tài)快照1104對前臺協(xié)議引擎1106可用。在一個實施例中,前臺協(xié)議引擎1106以順序方式呈現(xiàn)協(xié)議數(shù)據(jù)流1110的記錄中多個分組的內(nèi)容。在這個實施例中,呈現(xiàn)并表示給用戶的顯示數(shù)據(jù)以記錄協(xié)議數(shù)據(jù)流時發(fā)生的順序表示這些顯示。協(xié)議數(shù)據(jù)流1110的記錄可以包括信息,例如由前臺協(xié)議引擎1106在順序呈現(xiàn)顯示數(shù)據(jù)中使用的時間戳。在有些實施例中,前臺協(xié)議引擎1106實時呈現(xiàn)顯示數(shù)據(jù)。當(dāng)前臺協(xié)議引擎1106接收再生由協(xié)議數(shù)據(jù)流1110的記錄中的特定分組表示的特定顯示數(shù)據(jù)的請求時,前臺協(xié)議引擎1106使用識別出的狀態(tài)快照1104的內(nèi)容呈現(xiàn)所請求的顯示數(shù)據(jù)。在有些實施例中,后臺協(xié)議引擎1102和前臺協(xié)議引擎1106位于相同裝置上。在其它實施例中,后臺協(xié)議引擎1102和前臺協(xié)議引擎1106位于不同裝置上?,F(xiàn)在回過去參看圖9,其中的流程圖描述了用于在有狀態(tài)遠程表示協(xié)議的回放期間進行實時搜索的方法中采取的步驟的一個實施例。簡單地說,先請求呈現(xiàn)由協(xié)議數(shù)據(jù)流的記錄中的分組內(nèi)容表示的數(shù)據(jù)顯示(步驟902)。通過具有不遲于與所請求的分組相關(guān)聯(lián)的時間戳的相關(guān)時間戳的狀態(tài)快照的第一識別(步驟904)和根據(jù)該識別出的狀態(tài)快照呈現(xiàn)所請求的內(nèi)容(步驟906),呈現(xiàn)適當(dāng)分組的內(nèi)容。在一個實施例中,前臺協(xié)議引擎1106接收呈現(xiàn)協(xié)議數(shù)據(jù)流1110的記錄中分組的內(nèi)容的請求。協(xié)議數(shù)據(jù)流1110包括多個其內(nèi)容表示顯示數(shù)據(jù)的分組。在有些實施例中,在前臺協(xié)議引擎1106通過向使用顯示器1108的觀眾(且該觀眾希望搜索特定顯示數(shù)據(jù))呈現(xiàn)協(xié)議數(shù)據(jù)流1110的記錄中的分組內(nèi)容而再生顯示數(shù)據(jù)時,產(chǎn)生請求。前臺協(xié)議引擎1106識別出具有不遲于與所請求的分組相關(guān)聯(lián)的時間戳的相關(guān)時間戳的狀態(tài)快照1104。前臺協(xié)議引擎1106根據(jù)識別出的狀態(tài)快照1104顯示由所請求的分組的內(nèi)容表示的顯示數(shù)據(jù)。在一個實施例中,識別出的狀態(tài)快照1104從協(xié)議數(shù)據(jù)流1110指示出正確的分組,前臺協(xié)議引擎1106可以呈現(xiàn)其內(nèi)容以向用戶提供所請求的顯示數(shù)據(jù)。在其它實施例中,識別出的狀態(tài)快照1104包括呈現(xiàn)協(xié)議數(shù)據(jù)流的協(xié)議引擎在記錄器從協(xié)議數(shù)據(jù)流1110復(fù)制分組但所復(fù)制的分組的內(nèi)容表示的顯示數(shù)據(jù)在觀眾請求的顯示數(shù)據(jù)之前時的某一時間點的狀態(tài)。在其中一些實施例中,在狀態(tài)快照和包含所請求的顯示數(shù)據(jù)的表示的分組之間有多個分組。在其中一些實施例中,前臺協(xié)議引擎1106將中間分組的內(nèi)容或只將分組呈送到離屏緩沖區(qū)。前臺協(xié)議引擎1106接著將其內(nèi)容表示顯示數(shù)據(jù)的分組不僅呈送到離屏緩沖區(qū),還以可感知的方式呈現(xiàn)給用戶。在一個實施例中,前臺協(xié)議引擎1106在所請求分組的內(nèi)容所表示的顯示數(shù)據(jù)之前,提供以可感知的方式由中間分組的內(nèi)容所表示的顯示數(shù)據(jù)?,F(xiàn)在參看圖10,所示流程圖描述了為產(chǎn)生能夠在遠程表示協(xié)議的回放期間進行實時搜索的狀態(tài)快照所采取的步驟的一個實施例。簡單地說,后臺協(xié)議引擎1102接收協(xié)議數(shù)據(jù)流1110的記錄,并在再生由協(xié)議數(shù)據(jù)流1110中的多個分組的內(nèi)容所表示的顯示數(shù)據(jù)時產(chǎn)生至少一個狀態(tài)快照。后臺協(xié)議引擎1102接收包括多個分組的協(xié)議數(shù)據(jù)流1110的記錄(步驟1002)。后臺協(xié)議引擎1102產(chǎn)生協(xié)議數(shù)據(jù)流的記錄的表示。在一個實施例中,后臺協(xié)議引擎1102通過將多個分組的內(nèi)容呈送給緩沖區(qū)來產(chǎn)生表示。在有些實施例中,該緩沖區(qū)是離屏緩沖區(qū)。在有些實施例中,前臺協(xié)議引擎1106也接收協(xié)議數(shù)據(jù)流1110的記錄。在這些實施例中,前臺協(xié)議引擎1106產(chǎn)生協(xié)議數(shù)據(jù)流記錄的可由人感知的表示,盡管如上所述前臺協(xié)議引擎1106不僅呈送到離屏緩沖區(qū),也以可感知方式呈現(xiàn)(步驟1004)。在其中一個實施例中,前臺協(xié)議引擎1106通過基本與后臺協(xié)議引擎1102在它讀取協(xié)議數(shù)據(jù)流的記錄期間產(chǎn)生至少一個狀態(tài)快照同時呈現(xiàn)多個分組的內(nèi)容,來產(chǎn)生協(xié)議數(shù)據(jù)流1110的記錄的可由人感知的表示。在讀取了協(xié)議數(shù)據(jù)流1110的記錄中的至少一個分組后,后臺協(xié)議引擎1102產(chǎn)生至少一個狀態(tài)快照(步驟1006)。在一個實施例中,后臺協(xié)議引擎1102在順序讀取協(xié)議數(shù)據(jù)流1110的記錄期間產(chǎn)生至少一個狀態(tài)快照。在另一實施例中,后臺協(xié)議引擎1102基本與呈送分組的內(nèi)容到緩沖區(qū)同時讀取協(xié)議數(shù)據(jù)流1110的記錄中的至少一個分組。在一個實施例中,后臺協(xié)議引擎1102隨后將所產(chǎn)生的狀態(tài)快照1104存儲下來(步驟1008)。在后臺協(xié)議引擎1102周期性產(chǎn)生多個狀態(tài)快照的實施例中,狀態(tài)快照可以充當(dāng)貫穿協(xié)議數(shù)據(jù)流1110的記錄的標(biāo)記,幫助定位協(xié)議數(shù)據(jù)流1110中特定時間點以及在狀態(tài)快照1104之前或之后到來的分組。向前參看圖12,其中的流程圖描述了為狀態(tài)快照的自適應(yīng)產(chǎn)生而采取的步驟的一個實施例。簡單地說,后臺協(xié)議引擎1102監(jiān)控觀眾的活動并根據(jù)觀眾的活動級別產(chǎn)生一個或多個狀態(tài)快照1104。在將協(xié)議數(shù)據(jù)流1110的記錄的表示呈現(xiàn)給用戶(步驟1202)期間,后臺協(xié)議引擎1102監(jiān)控用戶的活動(步驟1204)。在一個實施例中,前臺協(xié)議引擎1106產(chǎn)生協(xié)議數(shù)據(jù)流1110的記錄的表示并且用顯示器1108將其呈現(xiàn)給用戶。在其它實施例中,后臺協(xié)議引擎1102產(chǎn)生該表示。在另其它實施例中,第三裝置產(chǎn)生該表示。后臺協(xié)議引擎1102在表示期間監(jiān)控用戶的活動(步驟1204)。通過監(jiān)控用戶的活動,后臺協(xié)議引擎1102根據(jù)對活動的監(jiān)控開發(fā)出活動特征(步驟1206)。后臺協(xié)議引擎根據(jù)開發(fā)出的活動特征產(chǎn)生至少一個狀態(tài)快照1104 (步驟1208)。在有些實施例中,后臺協(xié)議引擎1102識別出用戶的活動級別。在有些實施例中,后臺協(xié)議引擎1102識別出不活動期間。在其它實施例中,后臺協(xié)議引擎1102在顯示數(shù)據(jù)中識別出用戶的興趣區(qū)域?;顒犹卣鞣从沉诉@些識別。后臺協(xié)議引擎1102根據(jù)活動特征產(chǎn)生至少一個狀態(tài)快照。在有些實施例中,后臺協(xié)議引擎1102決定在一個或多個狀態(tài)快照之間擴展間隔。在其它實施例中,后臺協(xié)議引擎1102決定在一個或多個狀態(tài)快照之間縮減間隔。在另其它實施例中,后臺協(xié)議引擎1102根據(jù)活動特征決定移除至少一個狀態(tài)快照。在另其它實施例中,后臺協(xié)議引擎1102根據(jù)活動特征決定增加至少一個狀態(tài)快照。在一個實施例中,后臺協(xié)議引擎1102識別出搜索概率的預(yù)測統(tǒng)計分布。圖13是描述了一個實施例的三種類型的搜索概率分布圖。在這個實施例中,后臺協(xié)議引擎1102收集并存儲與用戶所做的搜索請求有關(guān)的數(shù)據(jù)。在一個實施例中,該數(shù)據(jù)包括用戶如何定期做出搜索請求。在一個實施例中,該數(shù)據(jù)包括每個搜索請求的范圍一所請求的顯示數(shù)據(jù)和通過呈現(xiàn)協(xié)議數(shù)據(jù)流1110的記錄中的分組的內(nèi)容而表示給用戶的當(dāng)前顯示數(shù)據(jù)之間的距離。該范圍可以用時間單位描述或者相對于協(xié)議數(shù)據(jù)流1110的整個記錄的長度進行描述。在一個實施例中,做出搜索請求的時間戳被記錄下來。圖14是描述了根據(jù)確定的搜索概率分布產(chǎn)生狀態(tài)快照的一個實施例的圖。后臺協(xié)議引擎1102使用收集的搜索請求數(shù)據(jù)產(chǎn)生圍繞當(dāng)前表示的顯示數(shù)據(jù)的搜索概率分布圖表。后臺協(xié)議引擎1102為流中的每個位置分配一個值,該值表示用戶將請求搜索與該位置相關(guān)聯(lián)的顯示數(shù)據(jù)的估計概率。使用這個數(shù)據(jù),后臺協(xié)議引擎1102決定將產(chǎn)生的狀態(tài)快照1104放在何處并根據(jù)搜索概率的統(tǒng)計分布產(chǎn)生至少一個狀態(tài)快照1104。圖15描述了用戶使用模式的一個實施例。在一個實施例中,后臺協(xié)議引擎1102根據(jù)用戶的使用模式為用戶開發(fā)出活動特征。使用模式反映識別出的搜索概率。具有較高搜索概率的區(qū)域?qū)⒈惶峁┹^高的狀態(tài)快照密度,具有較低搜索概率的區(qū)域?qū)⒈惶峁┹^低的狀態(tài)快照密度。在有些實施例中,任意一對狀態(tài)快照之間的距離與它們之間的平均搜索概率成反比。后臺協(xié)議引擎1102期望用戶搜索較高概率區(qū)域,因此大部分搜索將很快,因為產(chǎn)生的狀態(tài)快照1104之間的間距相對較短。為了確保沒有個別搜索請求過慢,在一個實施例中,即使搜索概率非常低,后臺協(xié)議引擎1102將為產(chǎn)生的狀態(tài)快照的間距強加一個上限。同樣,在另一個實施例中,下限防止?fàn)顟B(tài)快照在很高概率區(qū)域布置得過于接近。在有些實施例中,在決定狀態(tài)快照布置時,相鄰狀態(tài)快照之間的呈現(xiàn)量被考慮以最小化延遲。對于具有新用戶或沒有可區(qū)別的使用模式的用戶的實施例,后臺協(xié)議引擎1102應(yīng)用缺省狀態(tài)快照產(chǎn)生模式。這個模式假定大多數(shù)搜索將靠近任一方向的當(dāng)前幀發(fā)生,但長距離搜索性能必須最佳。典型的用戶會期望在當(dāng)前幀周圍來回小幅移動時有好的性能,因為很多小的搜索步驟可以用轉(zhuǎn)輪輸入裝置實現(xiàn)。搜索長距離不太常見,而且明顯的延遲也是可接受的權(quán)衡。如果用戶偏離他們被認可的使用模式,后臺協(xié)議引擎1102在對用戶無了解的實況回放期間調(diào)節(jié)狀態(tài)快照產(chǎn)生模式。后臺協(xié)議引擎1102移動狀態(tài)快照位置以調(diào)整為新使用模式。例如,如果通常使用鼠標(biāo)滾輪小步搜索的用戶開始較大范圍搜索,后臺協(xié)議引擎1102減少當(dāng)前幀附近的狀態(tài)快照的數(shù)量以釋放資源從而在較大范圍的區(qū)域中增加狀態(tài)快照。圖16概述了在用于狀態(tài)快照的自適應(yīng)產(chǎn)生的系統(tǒng)中的上述方法的一個實施例,該系統(tǒng)包括后臺協(xié)議引擎1602、前臺協(xié)議引擎1608、協(xié)議數(shù)據(jù)流1612、活動特征1604以及狀態(tài)快照1606。前臺協(xié)議引擎1608將協(xié)議數(shù)據(jù)流記錄的表示呈現(xiàn)給觀眾。后臺協(xié)議引擎1602在表示期間監(jiān)控觀眾的活動,根據(jù)監(jiān)控開發(fā)出活動特征1604并根據(jù)活動特征生成和維護狀態(tài)快照1606?,F(xiàn)在參看圖18,所示流程圖描述了為產(chǎn)生用于所記錄的計算機會話的回放的回放指令而采取的步驟的一個實施例。簡單地說,在第一裝置上執(zhí)行的協(xié)議引擎接收記錄會話(步驟1802)。記錄的流包括表示在第二裝置上執(zhí)行的應(yīng)用程序產(chǎn)生的顯示數(shù)據(jù)的多個分組。協(xié)議引擎為記錄的流中的分組決定以人可感知的方式呈現(xiàn)該分組的內(nèi)容(步驟1804)。隨后協(xié)議引擎將該決定存儲在回放數(shù)據(jù)結(jié)構(gòu)中(步驟1806)。在一個實施例中,協(xié)議引擎包括上面圖5中所述的協(xié)議引擎502。在其它實施例中,協(xié)議引擎包括如圖11中所述的后臺協(xié)議引擎1102。在又其它實施例中,協(xié)議引擎包括如圖11中所述的前臺協(xié)議引擎1106。在協(xié)議引擎包括后臺協(xié)議引擎1102的一些實施例中,該協(xié)議引擎可以中斷執(zhí)行后臺協(xié)議引擎1102的功能并開始執(zhí)行前臺協(xié)議引擎1106的功能。在協(xié)議引擎包括前臺協(xié)議引擎1106的一些實施例中,該協(xié)議引擎可以中斷執(zhí)行前臺協(xié)議引擎1106的功能并開始執(zhí)行后臺協(xié)議引擎1102的功能。在其它實施例中,該協(xié)議引擎包括后臺協(xié)議引擎1102和前臺協(xié)議引擎1106。在其中一些實施例中,后臺協(xié)議引擎1102和前臺協(xié)議引擎1106位于相同裝置上。在其它實施例中,后臺協(xié)議引擎1102和前臺協(xié)議引擎1106位于不同裝置上。在一個實施例中,協(xié)議弓丨擎為記錄流中的分組決定以可以被人感知的方式顯示該分組(步驟1804)。該顯示包括但不限于聽覺、視覺、觸覺或嗅覺的演示,或者它們的組合。在有些實施例中,協(xié)議引擎根據(jù)分組的內(nèi)容決定顯示該分組。在其中一個實施例中,協(xié)議引擎根據(jù)具有輸入焦點的應(yīng)用程序的指示做出決定。在其中另一個實施例中,協(xié)議引擎根據(jù)對該分組中存儲的用戶輸入的類型的評估做出決定。在其中一些實施例中,協(xié)議引擎根據(jù)對該分組中存儲的圖形更新的類型的評估做出決定。在其中其它實施例中,協(xié)議引擎根據(jù)對該分組中存儲的交互順序的類型的評估做出決定。在一個實施例中,協(xié)議引擎將該決定存儲在回放數(shù)據(jù)結(jié)構(gòu)中(1806)。在有些實施例中,回放數(shù)據(jù)結(jié)構(gòu)描述如何再生記錄流中包含的顯示數(shù)據(jù)。在一個實施例中,回放數(shù)據(jù)結(jié)構(gòu)中存儲的指令控制呈現(xiàn)顯示數(shù)據(jù)的過程。在一個實施例中,回放數(shù)據(jù)結(jié)構(gòu)包括用于呈現(xiàn)記錄流中分組的內(nèi)容的時間。在這個實施例中,回放數(shù)據(jù)結(jié)構(gòu)中包含的時間被用于呈現(xiàn)分組的內(nèi)容,而且不是與記錄的分組相關(guān)聯(lián)的呈現(xiàn)時間(如果有的話)。在一個實施例中,回放數(shù)據(jù)結(jié)構(gòu)接收改變呈現(xiàn)時間的用戶輸入。在有些實施例中,回放數(shù)據(jù)結(jié)構(gòu)包括說明如何進行對所記錄會話的一次或多次回放的元數(shù)據(jù)。在一個實施例中,回放數(shù)據(jù)結(jié)構(gòu)由記錄流中的每個分組的記錄組成,表示在回放期間分組的內(nèi)容應(yīng)該在什么相對時間點被呈現(xiàn)。在有些實施例中,元數(shù)據(jù)還包含分組開始文件中的偏移。現(xiàn)在回過去參看圖17,其中的框圖描述了用于呈現(xiàn)記錄會話的系統(tǒng)的一個實施例,該系統(tǒng)包括第一裝置1702、后臺協(xié)議引擎1704、回放數(shù)據(jù)結(jié)構(gòu)1706、前臺協(xié)議引擎1708、顯示器1710、第二裝置1712和記錄流1714。后臺協(xié)議引擎1704在第一裝置1702上執(zhí)行并響應(yīng)接收記錄流1714而產(chǎn)生回放數(shù)據(jù)結(jié)構(gòu)1706,所述記錄流1714表示由在第二裝置1712或第三裝置上執(zhí)行的應(yīng)用程序產(chǎn)生的顯示數(shù)據(jù)。前臺協(xié)議引擎1708接收記錄流1714并根據(jù)后臺協(xié)議引擎1704產(chǎn)生的回放數(shù)據(jù)結(jié)構(gòu)1706而呈現(xiàn)記錄流1714。在一個實施例中,后臺協(xié)議引擎1704和前臺協(xié)議引擎1708各自接收記錄流1714。在這個實施例中,后臺協(xié)議引擎1704基本與前臺協(xié)議引擎1708呈現(xiàn)記錄流同時產(chǎn)生回放數(shù)據(jù)結(jié)構(gòu)。在一個實施例中,前臺協(xié)議引擎1708位于第一裝置1702上。在另一個實施例上,如圖17中的陰影所示,前臺協(xié)議引擎1708既不位于第一裝置1702上也不位于第二裝置1712上。在又一實施例中,前臺協(xié)議引擎1708位于第三裝置上。在有些實施例中,前臺協(xié)議引擎1708包括后臺協(xié)議引擎1704。在其中一些實施例,后臺協(xié)議引擎1102和前臺協(xié)議引擎1106位于相同裝置上。在其中其它實施例中,后臺協(xié)議引擎1102和前臺協(xié)議引擎1106位于不同裝置上。在一個實施例中,后臺協(xié)議引擎在回放數(shù)據(jù)結(jié)構(gòu)中存儲了用于呈現(xiàn)記錄流中至少一個分組的至少一條指令。在另一實施例中,后臺協(xié)議引擎將元數(shù)據(jù)存儲在回放數(shù)據(jù)結(jié)構(gòu)中。在又另一實施例中,后臺協(xié)議引擎在回放數(shù)據(jù)結(jié)構(gòu)中存儲指示呈現(xiàn)記錄會話中至少一個分組的時間的記錄。前臺協(xié)議引擎1708根據(jù)回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)記錄會話中的至少一個分組。在一個實施例中,前臺協(xié)議引擎以可以被人感知的方式將記錄會話中的至少一個分組呈送給一個緩沖區(qū)。在另一個實施例中,前臺協(xié)議引擎將記錄會話中的至少一個分組呈送給緩沖區(qū)。向前參看圖19,所示流程圖描述了在用于所記錄的計算機會話的回放的方法中所采取的步驟的一個實施例。簡單地說,后臺協(xié)議引擎接收包括多個分組的記錄流(步驟1902),這些分組表示由在第二裝置上執(zhí)行的應(yīng)用程序產(chǎn)生的顯示數(shù)據(jù)。后臺協(xié)議引擎為記錄流中的至少一個分組決定以可以被人感知的方式呈現(xiàn)該分組(步驟1904)。后臺協(xié)議引擎將該決定存儲在回放數(shù)據(jù)結(jié)構(gòu)中(步驟1906)。前臺協(xié)議引擎從記錄流中檢索至少一個分組(步驟1908),訪問回放數(shù)據(jù)結(jié)構(gòu)(步驟1910),并根據(jù)回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)該至少一個分組(步驟 1912)。在一個實施例中,協(xié)議引擎為記錄流中的一個分組決定以可以被人感知的方式顯示該分組(步驟1904)。該顯示包括但不限于聽覺、視覺、觸覺或嗅覺的演示,或者它們的組合。在有些實施例中,協(xié)議引擎根據(jù)分組的內(nèi)容決定顯示該分組。在其中一個實施例中,協(xié)議引擎根據(jù)具有輸入焦點的應(yīng)用程序的指示做決定。在其中另一個實施例中,協(xié)議引擎根據(jù)對分組中存儲的用戶輸入類型的評估做決定。在其中一些實施例中,協(xié)議引擎根據(jù)對分組中存儲的圖形更新類型的評估做決定。在其中其它實施例中,協(xié)議引擎根據(jù)對分組中存儲的交互序列類型的評估做決定。在一個實施例中,協(xié)議引擎將決定存儲在回放數(shù)據(jù)結(jié)構(gòu)中(步驟1906)。在一個實施例中,前臺協(xié)議引擎接收記錄會話。在其它實施例中,前臺協(xié)議引擎檢索會話。在其中一些實施例中,前臺協(xié)議引擎從存儲元件檢索記錄會話。在一個實施例中,前臺協(xié)議引擎從記錄流中檢索至少一個分組(步驟1908)。在這個實施例中,前臺協(xié)議引擎隨后訪問回放數(shù)據(jù)結(jié)構(gòu)(步驟1910)并根據(jù)回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)該分組的內(nèi)容(步驟1912)。在有些實施例中,回放數(shù)據(jù)結(jié)構(gòu)包含以可感知方式呈現(xiàn)該分組的內(nèi)容的指令。在其中一個實施例中,前臺協(xié)議引擎將該分組的內(nèi)容呈現(xiàn)在屏幕上。在有些實施例中,前臺協(xié)議引擎總是將該至少一個分組的內(nèi)容呈送給緩沖區(qū)。在很多實施例中,當(dāng)前臺協(xié)議引擎將分組的內(nèi)容呈送給一個緩沖區(qū)時,該緩沖區(qū)是離屏緩沖區(qū)。在其中一個實施例中,前臺協(xié)議引擎按照回放數(shù)據(jù)結(jié)構(gòu)的指引將分組的內(nèi)容呈送給離屏緩沖區(qū)并將分組內(nèi)容呈現(xiàn)在屏幕上。在其它實施例中,回放數(shù)據(jù)結(jié)構(gòu)包括不以可感知方式呈現(xiàn)分組內(nèi)容的指令。在其中一個實施例中,在訪問回放數(shù)據(jù)結(jié)構(gòu)時,前臺協(xié)議引擎不以可感知方式呈現(xiàn)分組的內(nèi)容,而是將分組內(nèi)容呈送到緩沖區(qū)。對于前臺協(xié)議引擎根據(jù)回放數(shù)據(jù)結(jié)構(gòu)將分組內(nèi)容只呈送到離屏緩沖區(qū)的實施例,前臺協(xié)議引擎可感知地再生不同于記錄流的顯示數(shù)據(jù)。在一個實施例中,這導(dǎo)致顯示數(shù)據(jù)的表示比原始記錄流要短。在有些實施例中,所呈現(xiàn)的分組內(nèi)容提供了原始顯示數(shù)據(jù)的流式再生。在其它實施例中,所呈現(xiàn)的分組內(nèi)容提供了顯示數(shù)據(jù)的定制版本。在一個實施例中,是否以可感知方式呈現(xiàn)分組內(nèi)容的決定是基于策略或用戶請求做出的。這些實施例向用戶提供了對記錄會話回放的控制。向前參看圖21,描述了以不包含被去除活動的可感知時間間隔呈現(xiàn)記錄會話的一個實施例。在這個圖中,黑框代表包含用戶輸入的分組,虛線框代表包含圖形命令的分組。由“用戶輸入”和“圖形”箭頭中的白框代表的時間間隔沒有分組也因此根本沒有活動。去除沒有任何活動的可感知時間間隔的方法的一個實施例如下。記錄會話中的第一分組被識別出。該記錄會話包括多個表示顯示數(shù)據(jù)的分組。與記錄會話中的第一分組最近的之前分組作為第二分組被識別出。確定第一時間間隔,該時間間隔發(fā)生在所述第一分組和所述第二分組。第一時間間隔超出閾值的決定被做出。以所述第一分組和所述第二分組之間的第二時間間隔短于第一時間間隔呈現(xiàn)分組的內(nèi)容。 在一個實施例中,協(xié)議弓I擎做出該決定。在有些實施例中,協(xié)議弓I擎將該決定存儲在回放數(shù)據(jù)結(jié)構(gòu)中。在一個實施例中,相同協(xié)議引擎根據(jù)回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)記錄會話。在另一實施例中,做決定的協(xié)議引擎包括后臺協(xié)議引擎,呈現(xiàn)記錄會話的協(xié)議引擎包括前臺協(xié)議引擎。在一個實施例中,當(dāng)協(xié)議引擎確定該時間間隔超出閾值時,協(xié)議引擎將該時間間隔歸為可感知的時間間隔。如果再生的記錄會話的用戶能夠感知到過去了一段沒有活動的時間,該時間間隔就是可感知的。在有些實施例中,閾值由策略決定。在其它實施例中,協(xié)議引擎是用預(yù)定的閾值硬編碼的。在這種實施例中,協(xié)議引擎在回放數(shù)據(jù)結(jié)構(gòu)中存儲了指令以呈現(xiàn)第一和第二分組之間的更短的時間間隔而不是原始時間間隔。在另一個實施例中,確定時間間隔超出閾值的協(xié)議引擎也呈現(xiàn)記錄會話的內(nèi)容。在這種實施例中,協(xié)議引擎在回放數(shù)據(jù)結(jié)構(gòu)中不存儲呈現(xiàn)更短時間間隔的指令。對于沒有被歸類為可感知的時間間隔,不需要縮短的時間間隔,原始的時間間隔被呈現(xiàn)在第一和第二分組之間。回過去看圖20,所示流程圖描述了為產(chǎn)生用于呈現(xiàn)記錄會話的回放指令所采取的步驟的一個實施例。簡單地說,識別出記錄會話中的分組中存儲的輸入類型(步驟2002),根據(jù)該輸入類型標(biāo)記該分組(步驟2004)。隨后根據(jù)該標(biāo)記將呈現(xiàn)該分組內(nèi)容的目的地存儲在回放數(shù)據(jù)結(jié)構(gòu)中。在一個實施例中,分組所存儲的輸入類型決定了該分組是否將被呈現(xiàn)。在一個實施例中,該分組不包含內(nèi)容。在有些實施例中,至少一個分組不包含內(nèi)容。在這些實施例中,識別出包括至少一個不包含內(nèi)容的分組的時間間隔。在其中一些實施例中,該時間間隔將不會被呈現(xiàn)。在有些實施例中,輸入類型是指來自特定類型的輸入裝置的輸入,包括但不限于鍵盤、鼠標(biāo)、麥克風(fēng)、或攝像頭。在一個實施例中,識別出輸入類型的步驟還包括將輸入類型識別為來自某種輸入裝置的輸入。在另一個實施例中,識別出輸入類型的步驟還包括將輸入類型識別為鍵盤輸入。在其它實施例中,輸入類型與輸入裝置無關(guān)。在其中一個實施例中,輸入類型被識別為命令。根據(jù)分組包含的輸入類型,標(biāo)記包含輸入的該分組(步驟2004)。在一個實施例中,分組被根據(jù)策略進行標(biāo)記。在這種實施例中,策略決定導(dǎo)致分組被標(biāo)記的輸入類型。在另一個實施例中,不需要任何標(biāo)記。根據(jù)標(biāo)記將用于呈現(xiàn)分組的目的地存儲在回放數(shù)據(jù)結(jié)構(gòu)中(步驟2006)。在有些實施例中,該目的地包括緩沖區(qū)。在一個實施例中,指令被存儲在回放數(shù)據(jù)結(jié)構(gòu)中,指引分組的呈送至緩沖區(qū)。在一個實施例中,該緩沖區(qū)是離屏緩沖區(qū),當(dāng)分組的內(nèi)容被呈送到該緩沖區(qū)時,這些內(nèi)容未能被呈現(xiàn)的用戶所感知。在一個實施例中,指令被存儲在回放數(shù)據(jù)結(jié)構(gòu)中,指引被標(biāo)記的分組以可感知的方式呈現(xiàn)或呈送到緩沖區(qū)。在一個實施例中,該方法去除了不包含任何有意義活動的可感知時間間隔。在這個實施例中,由策略識別出特定類型的輸入為有意義或無意義。在有些實施例中,該策略可以被硬編碼到協(xié)議引擎中。在其它實施例中,由管理員配置該策略。在有些實施例中,如果分組不包含內(nèi)容,協(xié)議引擎就將其識別為無意義的分組。在其中一些實施例中,這樣的分組表示沒有要被記錄到記錄流1714的用戶活動發(fā)生的時間間隔。在這些實施例中,協(xié)議引擎將目的地存儲在回放數(shù)據(jù)結(jié)構(gòu)中,該目的地用于以如下方式呈現(xiàn)記錄流中多個分組中的每一個分組,其中任何無意義分組不會以可感知的方式呈現(xiàn)。圖22描述了根據(jù)回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)其內(nèi)容的再生的記錄流的一個實施例。在這個實施例中,根據(jù)回放數(shù)據(jù)結(jié)構(gòu)的呈現(xiàn)使得能夠去除不包含有意義活動的時間間隔(由圖22中的白色框和條紋框表示),這些時間間隔包括那些根本不包含任何活動的時間間隔。這個呈現(xiàn)將記錄會話的更有意義的再生提供給用戶,其中由策略決定何時其內(nèi)容表示有意義的活動。在一個實施例中,表示有意義活動的內(nèi)容包括用戶輸入的類型。在有些實施例中,協(xié)議引擎根據(jù)先前定義的輸入類型(包括可證明的無意義時間)識別出輸入類型。在有些實施例中,無意義時間包括其中的分組不包含任何內(nèi)容的時間間隔。在其它實施例中,策略定義輸入類型,而輸入類型構(gòu)成無意義時間。在又其它實施例中,包括可證明的無意義時間的輸入類型的定義被硬編碼到協(xié)議引擎中。 在有些實施例中,分組的內(nèi)容表示用戶活動,但策略將該活動識別為無意義活動。在其中一個實施例中,策略將無意義活動定義為再生的記錄會話的用戶不感興趣的活動。在其中另一個實施例中,由策略決定,有意義的分組包含再生的記錄會話的用戶感興趣的內(nèi)容。在一個實施例中,無意義分組不具有有意義地表示與應(yīng)用交互作用的輸入的內(nèi)容。在另一實施例中,在協(xié)議數(shù)據(jù)流(記錄流由此創(chuàng)建)中發(fā)送應(yīng)用數(shù)據(jù)的裝置不發(fā)送有意義的屏幕更新。在一個實施例中,協(xié)議引擎為記錄會話中的至少一個分組決定該分組的內(nèi)容是否包括但不限于如鍵盤輸入、鼠標(biāo)輸入或命令消息等輸入類型。如果該分組包含例如鍵盤輸入的輸入類型,協(xié)議引擎就將該分組標(biāo)記為有意義分組。如果該分組不包含這樣的輸入類型,協(xié)議引擎就將該分組標(biāo)記為無意義的。在一個實施例中,只有在其所有內(nèi)容都無意義時該分組才被認為是無意義的。在另一實施例中,分組包含多種輸入類型,而其中每一種可能被標(biāo)記為有意義或無意義。在一個實施例中,當(dāng)協(xié)議引擎將分組標(biāo)記為無意義時,協(xié)議引擎決定該分組的內(nèi)容不應(yīng)該以可感知的方式呈現(xiàn)。在有些實施例中,協(xié)議引擎反而決定該分組的內(nèi)容應(yīng)該呈送到緩沖區(qū)。在其中一個實施例中,緩沖區(qū)是離屏緩沖區(qū)。如果分組被標(biāo)記為有意義分組,在一個實施例中,協(xié)議引擎決定該分組的內(nèi)容應(yīng)該以可感知方式呈現(xiàn)。在有些實施例中,可感知方式包括呈現(xiàn)在屏幕上。在一個實施例中,協(xié)議引擎決定該分組應(yīng)該不僅以可感知方式呈現(xiàn),而且要呈送到緩沖區(qū)。在這個實施例中,該分組的內(nèi)容不僅呈現(xiàn)到屏幕上顯示而且呈送到離屏緩沖區(qū)。協(xié)議引擎將決定存儲在回放數(shù)據(jù)結(jié)構(gòu)中。在圖22所示的一個實施例中,記錄流中的特定分組中具有表示有意義用戶活動的內(nèi)容,在這個實施例中指示活動鼠標(biāo)按鈕狀態(tài)的鼠標(biāo)輸入由圖22中的黑框表示。記錄流中的其它分組具有表示指示活動鼠標(biāo)按鈕狀態(tài)的鼠標(biāo)輸入的內(nèi)容,由圖22的條紋框表示。協(xié)議引擎識別出只包含無意義活動的至少一個分組(例如指示不活動鼠標(biāo)按鈕狀態(tài)的鼠標(biāo)輸入),并將該分組的內(nèi)容不應(yīng)以可感知方式呈現(xiàn)的決定存儲在回放數(shù)據(jù)結(jié)構(gòu)中。通過做出這種決定,根據(jù)回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)記錄流的內(nèi)容的協(xié)議引擎只再生與再生的記錄會話的用戶有關(guān)的顯示數(shù)據(jù),其中由策略定義相關(guān)性或者協(xié)議引擎包括相關(guān)內(nèi)容的定義?,F(xiàn)在參看圖23,所示流程圖描述了在呈現(xiàn)記錄會話中為消除沒有有意義活動的周期而采取的步驟的一個實施例。確定第一時間間隔,該時間間隔發(fā)生在記錄會話中標(biāo)記的分組與最近的前一個標(biāo)記的分組之間(步驟2302)。該記錄會話包括表示顯示數(shù)據(jù)的多個分組。做出決定,其中該第一時間間隔是否超出閥值(步驟2304)。采用該標(biāo)記的分組和最近的前一個標(biāo)記的分組之間的、短于第一時間間隔的第二時間間隔,呈現(xiàn)記錄會話中的分組的內(nèi)容(步驟2306)。在一個實施例中,協(xié)議引擎做出決定。在有些實施例中,協(xié)議引擎將決定存儲在回放數(shù)據(jù)結(jié)構(gòu)中。在一個實施例中,相同協(xié)議引擎根據(jù)回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)記錄會話。在另一實施例中,做決定的協(xié)議引擎包括后臺協(xié)議引擎,而呈現(xiàn)記錄會話的協(xié)議引擎包括前臺協(xié)議引擎。在有些實施例中,協(xié)議引擎在分組根據(jù)該分組所包含的輸入類型被標(biāo)記為有意義分組之后,做出第一時間間隔的決定(步驟2302)和第一時間間隔是否超過閥值的決定(步驟2304)。在其中一個實施例中,該分組中包含的輸出類型影響著標(biāo)記該分組的決定。在一個實施例中,協(xié)議引擎確定被標(biāo)記為有意義的分組和其最近的前一個有意義的分組之間的時間間隔,或者如果沒有前一個有意義的分組則確定記錄的開始。在另一實施例中,協(xié)議引擎以標(biāo)記的分組和前一個分組之間的第二時間間隔呈現(xiàn)記錄會話的內(nèi)容,所述第二時間間隔包括短于第一時間間隔的時間間隔。在另一實施例中,協(xié)議引擎以標(biāo)記的分組和跟隨該標(biāo)記的分組的分組之間的第二時間間隔呈現(xiàn)記錄會話的內(nèi)容,所述第二時間間隔包括比第一時間間隔更短的時間間隔。在一個實施例中,當(dāng)協(xié)議引擎確定為時間間隔超出閥值時(步驟2304),協(xié)議引擎將該時間間隔歸類為可感知的時間間隔。如果再生的記錄會話的用戶能夠感知已經(jīng)過去了一段沒有活動的時間,則該時間間隔就是可感知的。在有些實施例中,策略決定閥值。在其它實施例中,協(xié)議引擎以預(yù)定閥值被硬編碼。在這個實施例中,協(xié)議引擎在回放數(shù)據(jù)結(jié)構(gòu)中存儲指令以呈現(xiàn)兩個有意義分組之間的更短的時間間隔而不是原始時間間隔。在另一實施例中,確定時間間隔超出閥值的協(xié)議引擎還呈現(xiàn)記錄會話的內(nèi)容。在這個實施例中,協(xié)議引擎不在回放數(shù)據(jù)結(jié)構(gòu)中存儲指令以呈現(xiàn)更短的時間間隔。對于沒有被歸為可感知類的時間間隔,不需要縮短的時間間隔,在兩個有意義的分組之間呈現(xiàn)原始的時間間隔。在有些實施例中,記錄流中分組的內(nèi)容表示影響屏幕區(qū)域的圖形更新。在一個實施例中,圖形更新包括但不限于閃爍系統(tǒng)托盤圖標(biāo)、標(biāo)題欄或任務(wù)欄項目、閃亮web頁面或應(yīng)用中的文本、時間顯示、系統(tǒng)動畫、應(yīng)用動畫和證券報價機以及其它周期性更新的信息顯示。在有些實施例中,像這樣的圖形更新都被確定為對記錄流再生的用戶無意義。在其中一個實施例中,協(xié)議引擎包括這個確定。在其中另一個實施例中,策略定義至少一個圖形更新為無意義。在這個實施例中,管理員產(chǎn)生策略。在另一實施例中,記錄流的再生的用戶產(chǎn)生該策略?,F(xiàn)在參看圖24,所示流程圖描述了在呈現(xiàn)記錄會話中為消除圖形更新而采取的步驟的一個實施例。簡單地說,識別出圖形更新(步驟2402),確定該圖形更新影響的屏幕區(qū)域(步驟2404)。存儲受影響屏幕區(qū)域的位置和狀態(tài)指示(步驟2406),識別出影響該屏幕區(qū)域的狀態(tài)的第二圖形更新(步驟2408)。然后根據(jù)第二圖形更新是否改變受第一圖形更新影響的區(qū)域而指示呈現(xiàn)的目的地和用于呈現(xiàn)的時間間隔(步驟2410和步驟2412)。在一個實施例中,協(xié)議引擎完成圖24所示步驟。在這個實施例中,協(xié)議引擎識別出記錄會話中的分組,所述記錄會話表示由應(yīng)用程序產(chǎn)生的顯示數(shù)據(jù),所述分組包含第一圖形更新。協(xié)議引擎確定受該第一圖形更新影響的屏幕區(qū)域。在一個實施例中,圖形更新通過改變顯示在部分屏幕上的數(shù)據(jù)而影響該屏幕區(qū)域。協(xié)議引擎在第一圖形更新和該屏幕區(qū)域的位置之后存儲該屏幕區(qū)域的狀態(tài)指示。在一個實施例中,協(xié)議引擎存儲更新后的屏幕區(qū)域的副本。在另一實施例中,協(xié)議引擎存儲更新后的屏幕區(qū)域的散列值。在一個實施例中,協(xié)議引擎識別出在時間間隔內(nèi)影響屏幕區(qū)域的第二圖形更新。在有些實施例中,由策略決定該時間間隔的長度。在其中一個實施例中,該策略確定接近由應(yīng)用和操作系統(tǒng)使用的人類級別循環(huán)周期(human scale cyclic period)的上限的時間間隔。在一個實施例中,當(dāng)屏幕的一個區(qū)域在被設(shè)計為由用戶觀看的期間(例如,從有效的幾分之一秒到幾秒)進行循環(huán)顯示時,該顯示包括人類級別循環(huán)周期。在有些實施例中,協(xié)議弓I擎包括對時間間隔長度的定義。在協(xié)議引擎識別出影響由第一圖形更新影響的屏幕區(qū)域的第二圖形更新的實施例中,協(xié)議引擎決定該屏幕區(qū)域在第二圖形更新之后的狀態(tài)是否不同于在第一圖形更新之后的狀態(tài)。如果該屏幕區(qū)域在第二圖形更新之后沒有變化,第二圖形更新就不需要在再生的記錄會話中呈現(xiàn)。這個實施例中的屏幕圖形更新不需要呈現(xiàn)是因為協(xié)議引擎決定圖形更新正在進行以人類級別速度的繪畫命令周期,使得該更新可以由再生的記錄會話的用戶觀察到,但該圖形更新為用戶帶來了無意義的信息。在有些實施例中,該圖形更新通過如下但不限于繪畫、插入符閃爍、閃爍的任務(wù)欄項目、網(wǎng)絡(luò)活動指示符或滾動的文本來影響屏幕區(qū)域。在有些實施例中,由策略決定用那種類型的圖形更新影響屏幕區(qū)域不構(gòu)成有意義的活動并且不應(yīng)該為用戶呈現(xiàn)在記錄會話的再生中。在其它實施例中,協(xié)議引擎包括這個決定。在一個實施例中,根據(jù)屏幕區(qū)域在第二屏幕更新后是否有所變化,用于呈現(xiàn)包含影響該屏幕區(qū)域的第二圖形更新的第二分組的目的地的指示被存儲在回放數(shù)據(jù)結(jié)構(gòu)中。在另一實施例中,根據(jù)屏幕區(qū)域的狀態(tài)在第二圖形更新之后是否不同于該屏幕區(qū)域在第一圖形更新之后的狀態(tài),與包含了影響該屏幕區(qū)域的第二圖形更新的第二分組相關(guān)聯(lián)的用于呈現(xiàn)的時間間隔的指示被存儲在回放數(shù)據(jù)結(jié)構(gòu)中。根據(jù)屏幕區(qū)域的狀態(tài)在第二圖形更新之后是否不同于該屏幕區(qū)域在第一圖形更新后的狀態(tài),圖25描述了根據(jù)回放數(shù)據(jù)結(jié)構(gòu)中存儲的指示呈現(xiàn)再生的記錄會話的一個實施例。在一個實施例中,受第一圖形更新影響的屏幕區(qū)域在第二圖形更新之后沒有變化。在這個實施例中,回放數(shù)據(jù)結(jié)構(gòu)中存儲了不以可感知方式呈現(xiàn)第二圖形更新的指示。在一個實施例中,不以可感知方式呈現(xiàn)第二圖形更新包括將第二圖形更新呈現(xiàn)于離屏(off-screen)而不是在屏幕上(on-screen)。在有些實施例中,不以可感知方式呈現(xiàn)第二圖形更新包括將第二圖形更新呈送到離屏緩沖區(qū)。在一個實施例中,不以可感知方式呈現(xiàn)第二圖形更新包括包括不呈現(xiàn)第二圖形更新。在有些實施例中,不以可感知方式呈現(xiàn)第二圖形更新的決定包括呈現(xiàn)圖形更新未被呈現(xiàn)的可感知的指示。在其中一個實施例中,再生的記錄會話的用戶可以請求以可感知的方式呈現(xiàn)第二圖形更新。圖25描述了一個實施例,其中通過確定第二圖形更新之后的屏幕區(qū)域的狀態(tài)相對于第一圖形更新之后的屏幕區(qū)域的狀態(tài)沒有變化來檢測循環(huán)更新,并根據(jù)該循環(huán)更新的檢測而確定沒有呈現(xiàn)第二圖形更新。在受第二圖形更新影響的屏幕區(qū)域的狀態(tài)不同于第一圖形更新之后的屏幕區(qū)域的狀態(tài)的實施例中,做出決定以用可感知方式呈現(xiàn)分組的內(nèi)容并將其呈送到緩沖區(qū)。在有些實施例中,多個分組的內(nèi)容表示圖形更新。在其中一個實施例中,根據(jù)屏幕區(qū)域上的超過兩個圖形更新的效果做出以可感知方式呈現(xiàn)圖形更新的決定。在一個實施例中,用于呈現(xiàn)圖形更新的目的地的決定響應(yīng)于所識別的多個分組中的各個分組的內(nèi)容所表示的圖形更新。在有些實施例中,記錄流中的分組內(nèi)容表示交互序列。在一個實施例中,交互序列包括但不限于登錄序列、注銷序列或者憑證輸入。在有些實施例中,像這樣的交互序列被確定為對記錄流再生的用戶沒有意義。在其中一個實施例中,協(xié)議引擎包括這個決定。在另一個實施例中,由策略定義至少一個交互序列為無意義。在這個實施例中,管理員產(chǎn)生該策略。在另一個實施例中,記錄流再生的用戶產(chǎn)生該策略?,F(xiàn)在參看圖26,所示流程圖描述了在呈現(xiàn)記錄會話中為了消除交互序列而采取的步驟的一個實施例。根據(jù)策略識別出至少一個分組的交互序列的開始(步驟2602)。在回放數(shù)據(jù)結(jié)構(gòu)中有該交互序列應(yīng)該呈現(xiàn)到緩沖區(qū)的指示(步驟2604)。識別出至少一個分組的交互序列的結(jié)束(步驟2606)。識別出在所識別出的交互序列開始之前的分組和識別出的交互序列結(jié)束之后的分組之間的第一時間間隔(步驟2608)?;胤艛?shù)據(jù)結(jié)構(gòu)包含呈現(xiàn)比第一時間間隔更短的第二時間間隔的指令(步驟2610)。在一個實施例中,協(xié)議弓I擎做出識別和指示以消除交互序列。識別出交互序列的開始(步驟2602)。在一個實施例中,通過識別出可視標(biāo)記,識別出交互序列的開始。在一個實施例中,可視標(biāo)記包括以相同方式顯示給所有會話的憑證窗口。在另一個實施例中,可視標(biāo)記包括由空白屏幕接著是桌面背景對憑證窗口的替換。在一個實施例中,可視標(biāo)記包括對可識別圖標(biāo)的顯示。在有些實施例中,通過確定交互序列的開始時間識別出交互序列的開始。在其中一個實施例中,由組件檢測交互序列中事件的開始時間。在其中另一個實施例中,該組件檢測登錄序列的開始時間。在其中其它實施例中,該組件檢測注銷序列的開始時間。在一個實施例中,對交互序列的開始的識別,響應(yīng)于以輸入焦點識別窗口。在回放數(shù)據(jù)結(jié)構(gòu)中做出該交互序列應(yīng)該呈送到緩沖區(qū)的指示(步驟2604)。在這個實施例中,識別出的交互序列不應(yīng)以可感知方式呈現(xiàn),該交互序列被呈送到緩沖區(qū)。將該交互序列呈送到緩沖區(qū)導(dǎo)致交互序列未能被所要呈現(xiàn)的用戶感知。對于由策略或用戶將交互序列歸類為無意義的實施例,這個呈送導(dǎo)致了無意義交互序列被去除。另外還識別出交互序列的結(jié)束(步驟2606)。在有些實施例中,通過識別可視標(biāo)記而識別出交互序列的結(jié)束。在其它實施例中,通過確定交互序列的結(jié)束時間而識別出交互序列的結(jié)束。在其中一個實施例中,某個組件檢測出交互序列中事件的結(jié)束時間。在其中另一個實施例中,該組件檢測出登錄序列的結(jié)束時間。在其中其它實施例中,該組件檢測出注銷序列的結(jié)束時間。在另一個實施例中,對于交互序列結(jié)束的識別響應(yīng)于以輸入焦點識別窗體。在有些實施例中,交互序列包括對應(yīng)用的使用。在其中一個實施例中,由策略識別出包括對不應(yīng)以可感知方式呈現(xiàn)的應(yīng)用的使用的交互序列。在一個實施例中,這樣的應(yīng)用包括但不限于word處理文檔。在其中一個實施例中,通過識別出具有輸入焦點的應(yīng)用而識別出交互序列的開始。當(dāng)分組的內(nèi)容表示具有焦點的窗口時,根據(jù)可靠創(chuàng)建該窗口的進程的應(yīng)用做出決定。在一個實施例中,表示具有焦點的窗口的分組的內(nèi)容包括指示輸入焦點中的變化的窗口通知消息。如果可靠的應(yīng)用識別出不應(yīng)以可感知方式呈現(xiàn)的交互序列的開始,就在回放數(shù)據(jù)結(jié)構(gòu)中存儲將該交互序列呈送到緩沖區(qū)的指示。通過識別出與交互序列的應(yīng)用不相關(guān)的進程所擁有的窗口對焦點的捕獲而識別該交互序列的結(jié)束。在一個實施例中,第一時間間隔與交互序列相關(guān)聯(lián)。在某種實施例中以可感知方式呈現(xiàn)與交互序列相關(guān)聯(lián)的時間間隔而該交互序列自身不進行呈現(xiàn),這將導(dǎo)致對所要呈現(xiàn)的用戶可感知的一段時間,在該時間段內(nèi)沒有顯示數(shù)據(jù)呈現(xiàn)并且用戶在該交互序列之后呈現(xiàn)分組的內(nèi)容之前等待該時間間隔的經(jīng)過。一個實施例通過呈現(xiàn)較短的時間間隔代替原始的時間間隔而消除與交互序列相關(guān)聯(lián)的時間間隔。在這個實施例中,識別出在識別出的該交互序列的開始之前的分組和識別出的該交互序列的結(jié)束之后的分組之間的第一時間間隔(步驟2608)。回放數(shù)據(jù)結(jié)構(gòu)包含呈現(xiàn)比第一時間間隔更短的第二時間間隔的指示(步驟2610)。在有些實施例中,協(xié)議引擎呈現(xiàn)記錄會話中的分組內(nèi)容,向用戶提供記錄會話的再生。在其中一些實施例中,協(xié)議引擎自動更改呈現(xiàn)至少一個分組的內(nèi)容之間的時間間隔,導(dǎo)致了上下文相關(guān)的時間卷曲的回放。在這些實施例中,呈現(xiàn)接近于用戶理解表示給用戶的顯示數(shù)據(jù)的能力。在一個實施例中,當(dāng)被策略所定義時,當(dāng)協(xié)議引擎確定分組內(nèi)容所表示的顯示數(shù)據(jù)具有被增加級別的復(fù)雜度或重要性時,呈現(xiàn)這些分組內(nèi)容之間的時間間隔增大。在另一個實施例中,當(dāng)被策略所定義時,當(dāng)協(xié)議引擎確定分組內(nèi)容所表示的顯示數(shù)據(jù)具有被降低級別的復(fù)雜度或重要性時,呈現(xiàn)這些分組內(nèi)容之間的時間間隔減小。在這些實施例中,協(xié)議引擎接近于用戶理解顯示數(shù)據(jù)的能力并且呈現(xiàn)內(nèi)容以或者用更慢的速度給用戶時間去理解該呈現(xiàn),或者在用戶需要較少的理解時間時以更快的速度呈現(xiàn)該內(nèi)容?,F(xiàn)在參看圖7,所示流程圖描述了在呈現(xiàn)記錄的計算機會話中的自動時間卷曲回放中所采取的步驟的一個實施例。協(xié)議引擎接收記錄會話(步驟2702),該記錄會話包括多個分組并表示顯示數(shù)據(jù),該協(xié)議引擎確定對該記錄會話中的多個分組中的至少一些分組所表示的復(fù)雜度的量度(步驟2704)。協(xié)議引擎識別出記錄會話中的多個分組中的至少一些分組之間的時間間隔(步驟2706)并且根據(jù)記錄會話中的多個分組中的至少一些分組所表示的復(fù)雜度的量度而修改該時間間隔(步驟2708)。協(xié)議引擎將修改后的時間間隔存儲在回放數(shù)據(jù)結(jié)構(gòu)中(步驟2710),記錄數(shù)據(jù)流根據(jù)該回放數(shù)據(jù)結(jié)構(gòu)而被呈現(xiàn)(步驟2712)。在有些實施例中,確定復(fù)雜度量度、識別時間間隔、修改時間間隔并存儲該修改的協(xié)議引擎是后臺協(xié)議引擎。在其中一個實施例中,后臺協(xié)議引擎也呈現(xiàn)記錄流。在其中另一個實施例中,前臺協(xié)議引擎根據(jù)回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)記錄流。在有些實施例中,后臺協(xié)議引擎和前臺協(xié)議引擎位于相同裝置上。在其它實施例中,后臺協(xié)議引擎和前臺協(xié)議引擎位于不同裝置上。在有些實施例中,協(xié)議引擎確定記錄會話中多個分組中的至少一些分組所表示的復(fù)雜度的量度(步驟2704)。在其中一些實施例中,協(xié)議引擎通過識別鍵盤輸入中的可能的鍵入序列確定復(fù)雜度的量度。在一個實施例中,協(xié)議引擎檢查所涉及的至少一種類型的鍵以識別鍵盤輸入中可能的鍵入序列。在另一個實施例中,協(xié)議引擎檢查所呈現(xiàn)的至少一個符號的序列以完成對鍵盤輸入中可能的鍵入序列的啟發(fā)式近似。在其中一些實施例中,協(xié)議引擎存儲由鍵特征確定的鍵分類。鍵特征包括但不限于可打印或不可打印字符、空格、導(dǎo)航鍵或功能鍵,并包括特征的組合。在一個實施例中,協(xié)議引擎確定包括可打印字符和偶爾出現(xiàn)的導(dǎo)航鍵的輸入段構(gòu)成普通輸入,而大部分是不可視鍵的段不構(gòu)成普通輸入。在一個實施例中,協(xié)議引擎根據(jù)識別出的空格數(shù)量確定復(fù)雜度的量度。在這個實施例中,協(xié)議引擎包括對字處理的定義,該定義指示空格鍵在典型鍵入模式中平均大約每5-8個字符出現(xiàn)一次。在一個實施例中,協(xié)議引擎使用不可打印字符的出現(xiàn)確定復(fù)雜度的量度。在另一個實施例中,協(xié)議引擎訪問擊鍵序列以識別在時間上緊密出現(xiàn)的非空格可打印字符的序列。在這個實施例中,協(xié)議引擎包括比較擊鍵序列和字典以識別有效單詞并確定與用戶理解有效單詞對比無效單詞的能力有關(guān)的復(fù)雜度量度的能力。在另一個實施例中,協(xié)議引擎確定分組的內(nèi)容包含命令以呈現(xiàn)字符。在這種實施例中,協(xié)議引擎使用字符確定顯示數(shù)據(jù)是否表示鍵入的用戶活動。在這個實施例中,如果字符呈現(xiàn)速率接近帶有小延遲的鍵盤輸入速率,有可能是擊鍵直接導(dǎo)致字符,由此判斷很可能是用戶正在鍵入。在一個實施例中,協(xié)議引擎使輸入的鍵與產(chǎn)生的字符相關(guān)聯(lián)。在另一個實施例中,協(xié)議引擎確定呈現(xiàn)的字符的空間序列(左至右,右至左)等。在一個實施例中,協(xié)議引擎根據(jù)分析多個分組內(nèi)容的結(jié)果以及識別出由這些內(nèi)容表示的模式和活動而確定復(fù)雜度的量度。在其它實施例中,協(xié)議引擎根據(jù)對鼠標(biāo)輸入類型的識別確定復(fù)雜度量度。在一個實施例中,協(xié)議引擎確定表示鼠標(biāo)點擊的鼠標(biāo)輸入導(dǎo)致可能需要更慢的呈現(xiàn)速率以讓用戶理解,尤其是如果該點擊跟在一系列鍵入后面。在另一個實施例中,協(xié)議引擎確定不表示鼠標(biāo)點擊的鼠標(biāo)輸入不會影響用戶理解顯示數(shù)據(jù)的能力,因而不會影響復(fù)雜度的量度。在其它實施例中,協(xié)議引擎根據(jù)識別出圖形更新復(fù)雜度的啟發(fā)式近似而確定復(fù)雜度的量度。在一個實施例中,協(xié)議引擎確定圖形更新復(fù)雜度的啟發(fā)式近似根據(jù)(包括但不限于)正在更新的區(qū)域的大小、由圖形命令改變的區(qū)域面積大小、對單獨區(qū)域的更新的歷史頻率、循環(huán)圖形命令、圖形命令的數(shù)量、圖形命令的頻率、其內(nèi)容中包含圖形命令的相鄰分組之間的時間間隔或者圖形更新的類型。在協(xié)議引擎識別出圖形更新的低復(fù)雜度量度的實施例中,協(xié)議引擎確定包含該圖形更新的分組所表示的低復(fù)雜度的量度。在另一種協(xié)議引擎識別出圖形更新的高復(fù)雜度量度的實施例中,協(xié)議引擎確定包含該圖形更新的分組所表示的低復(fù)雜度的量度。在一個實施例中,協(xié)議引擎識別出記錄會話中的多個分組的至少一些分組之間的時間間隔(步驟2706)。在這個實施例中,協(xié)議引擎根據(jù)確定的復(fù)雜度量度修改該時間間隔(步驟2708)。在記錄會話的多個分組中至少有一些分組包含表示與高復(fù)雜度量度相關(guān)聯(lián)的顯示數(shù)據(jù)的內(nèi)容的實施例中,協(xié)議引擎增加這些分組之間的時間間隔以讓用戶有增加的呈現(xiàn)時間理解所呈現(xiàn)的顯示數(shù)據(jù)。在另一種記錄會話的多個分組中至少有一些分組包含表示與低復(fù)雜度量度相關(guān)聯(lián)的顯示數(shù)據(jù)的實施例中,協(xié)議引擎縮短這些分組之間的時間間隔以反映用戶理解所呈現(xiàn)的顯示數(shù)據(jù)所需時間的減少。在一個實施例中,用戶需要呈現(xiàn)的分組內(nèi)容之間與協(xié)議引擎呈現(xiàn)的量不同的時間量。在這個實施例中,用戶修改時間間隔以反映用戶理解呈現(xiàn)的顯示數(shù)據(jù)所需的時間量。在有些實施例中,協(xié)議引擎還識別出多個分組中的至少一些分組與多個分組中的其它分組之間的時間間隔,修改在那些分組組之間識別出的時間間隔。在有些實施例中,協(xié)議引擎識別出與記錄會話中的分組相關(guān)聯(lián)的第一標(biāo)記。在一個實施例中,分組包括標(biāo)記。在另一個實施例中,記錄會話包括標(biāo)記。在一個實施例中,呈現(xiàn)顯示數(shù)據(jù)的用戶定義標(biāo)記。在另一個實施例中,協(xié)議弓I擎定義標(biāo)記。在協(xié)議引擎定義標(biāo)記的實施例中,協(xié)議引擎根據(jù)第一標(biāo)記修改時間間隔。在一個實施例中,協(xié)議引擎增加時間間隔,該時間間隔向所要呈現(xiàn)的用戶提供更多顯示數(shù)據(jù)時間以理解與第一標(biāo)記相關(guān)聯(lián)的分組的內(nèi)容。在其它實施例中,協(xié)議引擎識別出第二個分組中的第二標(biāo)記。在這個實施例中,協(xié)議弓I擎根據(jù)第一標(biāo)記和第二標(biāo)記之間的距離修改時間間隔。在這個實施例中,協(xié)議引擎為理解由標(biāo)記的分組的內(nèi)容所表示的顯示數(shù)據(jù)提供更多的時間,為理解由未標(biāo)記的分組的內(nèi)容所表示的數(shù)據(jù)提供更少的時間。在一個實施例中,用戶為用戶感興趣的顯示數(shù)據(jù)定義標(biāo)記,并且協(xié)議引擎為用戶感興趣的顯示數(shù)據(jù)呈現(xiàn)額外的時間并減少用戶不感興趣的顯示數(shù)據(jù)的呈現(xiàn)時間,如同由標(biāo)記所決定。在一個實施例中,協(xié)議弓I擎識別出記錄會話中的多個分組中的至少一些分組中的第一標(biāo)記,所述標(biāo)記指示記錄會話中的多個分組中的至少一些分組中的起始分組。協(xié)議引擎根據(jù)第一標(biāo)記修改時間間隔。協(xié)議引擎識別出記錄會話的多個分組中的至少一些分組中的第二分組中的第二標(biāo)記,所述第二標(biāo)記指示記錄會話的多個分組中至少一些分組中的最后分組,并根據(jù)第一標(biāo)記和第二標(biāo)記之間的時間間隔修改時間間隔。在一個實施例中,協(xié)議引擎將修改后的時間間隔存儲在回放數(shù)據(jù)結(jié)構(gòu)中(步驟2710)并且記錄流根據(jù)回放數(shù)據(jù)結(jié)構(gòu)的內(nèi)容而被呈現(xiàn)(步驟2712)。在一個實施例中,協(xié)議引擎還根據(jù)與修改后的時間間隔有關(guān)的回放數(shù)據(jù)結(jié)構(gòu)指令呈現(xiàn)記錄流。在另一個實施例中,由不同的前臺協(xié)議引擎呈現(xiàn)記錄流。在有些實施例中,確定了有應(yīng)用的記錄交互需要增加的呈現(xiàn)時間以向所要呈現(xiàn)的用戶提供增加的時間理解所呈現(xiàn)的顯示數(shù)據(jù)。在其中一些實施例中,確定了需要增加的時間的應(yīng)用包括比不需要增加的時間的應(yīng)用更重要的應(yīng)用。在其中一個實施例中,用戶做出該決定。在其中另一個實施例中,由策略做出該決定。在其中又另一個實施例中,協(xié)議引擎包括對需要增加的時間的應(yīng)用的定義。現(xiàn)在參看圖28,所示流程圖描述了在呈現(xiàn)記錄的計算機會話中為根據(jù)識別出的應(yīng)用進行自動時間卷曲回放而采取的步驟的一個實施例。接收包括多個分組并表示顯示數(shù)據(jù)的記錄會話(步驟2802)。識別出包含表示擁有焦點的窗口的內(nèi)容的第一分組,所述窗口指示應(yīng)用(步驟2804)。識別出其內(nèi)容在呈現(xiàn)第一分組的內(nèi)容之前呈現(xiàn)的第二分組和第三分組(其內(nèi)容在呈現(xiàn)第一分組的內(nèi)容之后呈現(xiàn))之間的時間間隔(步驟2806 )。根據(jù)所指示的應(yīng)用修改識別出的時間間隔(步驟2808)。根據(jù)該修改呈現(xiàn)記錄流中的至少一個分組(步驟2810)。在一個實施例中,協(xié)議弓I擎接收記錄會話(步驟2802 )。在這個實施例中,協(xié)議弓I擎還識別出具有表示擁有焦點的窗口的內(nèi)容的第一分組,所述窗口指示應(yīng)用(步驟2804)。在一個實施例中,表示擁有焦點的窗口的分組的內(nèi)容包括指示輸入焦點中的變化的窗口通知消息。在一個實施例中,識別出其內(nèi)容在呈現(xiàn)第一分組的內(nèi)容之前呈現(xiàn)的第二分組和第三分組(其內(nèi)容在呈現(xiàn)第一分組的內(nèi)容之后呈現(xiàn))之間的時間間隔(步驟2806)。在這個實施例中,協(xié)議引擎識別出其內(nèi)容在呈現(xiàn)表示擁有焦點的應(yīng)用窗口的內(nèi)容之前呈現(xiàn)的分組,其內(nèi)容表示擁有焦點的應(yīng)用窗口的分組以及其內(nèi)容表示不再擁有焦點的應(yīng)用窗口的分組。在有些實施例中,協(xié)議引擎修改擁有焦點的應(yīng)用之前的時間間隔。在其它實施例中,協(xié)議弓I擎修改擁有焦點的應(yīng)用之后的時間間隔。在一個實施例中,協(xié)議弓I擎接著確定應(yīng)用窗口在其中擁有焦點的時間間隔并根據(jù)應(yīng)用類型修改該時間間隔。在一個實施例中,協(xié)議引擎增大識別出的時間間隔。在這個實施例中,協(xié)議引擎向所要呈現(xiàn)的用戶提供更多時間以查看該應(yīng)用。在另一個實施例中,協(xié)議引擎縮短識別出的時間間隔。在這個實施例中,協(xié)議引擎向所要呈現(xiàn)的用戶提供更少的時間以查看該應(yīng)用,以反映對該應(yīng)用的興趣較少。在一個實施例中,協(xié)議引擎根據(jù)修改呈現(xiàn)記錄流中的至少一個分組。在一個實施例中,協(xié)議引擎將記錄流中的至少一個分組的內(nèi)容呈送到緩沖區(qū)。在一個實施例中,呈送到緩沖區(qū)并不以可感知的方式呈現(xiàn)分組的內(nèi)容。在另一個實施例中,協(xié)議引擎不僅將記錄流中至少一個分組的內(nèi)容呈送到緩沖區(qū),還以可感知方式呈現(xiàn)。在有些實施例中,協(xié)議引擎在回放數(shù)據(jù)結(jié)構(gòu)中指示修改后的時間間隔,不同的協(xié)議引擎根據(jù)存儲在回放數(shù)據(jù)結(jié)構(gòu)中的信息呈現(xiàn)記錄會話。現(xiàn)在參看圖29,所示框圖描述了在呈現(xiàn)記錄的計算機會話中用于自動時間卷曲回放的系統(tǒng)的一個實施例,該系統(tǒng)包括協(xié)議引擎2902、記錄流2910、回放數(shù)據(jù)結(jié)構(gòu)2904和顯示器2908。簡單地說,協(xié)議引擎2902響應(yīng)接收記錄流2910而產(chǎn)生回放數(shù)據(jù)結(jié)構(gòu)2904,所述記錄流2910包括多個分組,所述協(xié)議引擎2902根據(jù)產(chǎn)生的回放數(shù)據(jù)結(jié)構(gòu)2904呈現(xiàn)記錄流中的至少一個分組。在一個實施例中,協(xié)議引擎2902包括后臺協(xié)議引擎和前臺協(xié)議引擎。在這個實施例中,后臺協(xié)議引擎接收記錄流2910并產(chǎn)生回放數(shù)據(jù)結(jié)構(gòu)2904。在這個實施例中,前臺協(xié)議引擎接收記錄流2910并根據(jù)產(chǎn)生的回放數(shù)據(jù)結(jié)構(gòu)2904呈現(xiàn)記錄流中的至少一個分組。在一個實施例中,后臺協(xié)議引擎和前臺協(xié)議引擎位于相同裝置上。在另一個實施例中,后臺協(xié)議引擎位于第一裝置上,前臺協(xié)議引擎位于第二裝置上。在另一個實施例中,該系統(tǒng)包括產(chǎn)生回放數(shù)據(jù)結(jié)構(gòu)2904并根據(jù)產(chǎn)生的回放數(shù)據(jù)結(jié)構(gòu)2904呈現(xiàn)記錄流中的至少一個分組的單一協(xié)議引擎2902。在一個實施例中,協(xié)議引擎2902在回放數(shù)據(jù)結(jié)構(gòu)中存儲至少一個用于呈現(xiàn)記錄會話的指令。在一個實施例中,該指令包括對識別出的用于呈現(xiàn)記錄會話中分組內(nèi)容的時間間隔的修改。在另一個實施例中,協(xié)議引擎將元數(shù)據(jù)存儲在回放數(shù)據(jù)結(jié)構(gòu)中。在這個實施例中,元數(shù)據(jù)包括用于呈現(xiàn)分組內(nèi)容的更高級的指令。在一個實施例中,協(xié)議引擎根據(jù)回放數(shù)據(jù)結(jié)構(gòu)的內(nèi)容呈現(xiàn)記錄會話中的至少一個分組的內(nèi)容。在一個實施例中,協(xié)議引擎不僅以可感知方式呈現(xiàn)記錄會話中的至少一個分組而且將其呈送到緩沖區(qū),在另一個實施例中,協(xié)議引擎將記錄會話中的至少一個分組呈送到緩沖區(qū)。在有些實施例中,所呈現(xiàn)的分組內(nèi)容提供了原始顯示數(shù)據(jù)的流線式再生。在其它實施例中,所呈現(xiàn)的分組內(nèi)容提供了顯示數(shù)據(jù)的定制版本。在一個實施例中,以可感知方式呈現(xiàn)分組內(nèi)容的決定響應(yīng)于策略或用戶請求。這些實施例向用戶提供了對記錄會話的呈現(xiàn)的控制?,F(xiàn)在參看圖30A,所示框圖描述了用于表示層協(xié)議數(shù)據(jù)的記錄和實時回放的系統(tǒng)的一個實施例。簡單地說,該系統(tǒng)包括記錄器3010、分發(fā)器3020和協(xié)議引擎502。在表示層協(xié)議數(shù)據(jù)流208從第一裝置106傳輸?shù)降诙b置102的過程中,記錄器3010攔截包括多個分組的表示層協(xié)議數(shù)據(jù)流208,表示層協(xié)議數(shù)據(jù)流208表示顯示數(shù)據(jù)。分發(fā)器3020發(fā)送表示層協(xié)議數(shù)據(jù)流208的至少一個分組的副本。協(xié)議引擎502使用與該至少一個復(fù)制的分組相關(guān)聯(lián)的信息再生出由該至少一個復(fù)制的分組表示的顯示數(shù)據(jù)。記錄器3010繼續(xù)攔截表示層協(xié)議數(shù)據(jù)流,分發(fā)器繼續(xù)發(fā)送來自表示層協(xié)議數(shù)據(jù)流的分組的副本,直到第一裝置完成了協(xié)議數(shù)據(jù)流到第二裝置的傳輸?,F(xiàn)在更詳細地參看圖30A,在一個實施例中,記錄器3010從表示層協(xié)議棧提取數(shù)據(jù)并緩沖這些數(shù)據(jù)。在另一個實施例中,第三裝置3050將數(shù)據(jù)記錄到盤并對這些數(shù)據(jù)進行編目。在又一個實施例中,回放裝置514將會話記錄完整或不完整地顯示給用戶。在表示層協(xié)議數(shù)據(jù)流208從第一裝置106傳輸?shù)降诙b置102的過程中,記錄器3010攔截包括多個分組的表示層協(xié)議數(shù)據(jù)流208,該表示層協(xié)議數(shù)據(jù)流208表示顯示數(shù)據(jù)。在一個實施例中,第一裝置106是服務(wù)器106,例如應(yīng)用服務(wù)器。在另一個實施例中,第二裝置102是客戶端102。在又一個實施例中,第一裝置106如上結(jié)合圖2所述發(fā)送表示層協(xié)議數(shù)據(jù)流208。在又一個實施例中,表示層協(xié)議數(shù)據(jù)流208是如上結(jié)合圖2所述的協(xié)議數(shù)據(jù)流208。在進一步的實施例中,記錄器3010是如上結(jié)合圖2所述的記錄器206。在有些實施例中,表示層協(xié)議數(shù)據(jù)流208包括一個或多個虛擬信道。在其中一個實施例中,記錄器3010攔截虛擬信道。在一個實施例中,記錄器3010位于第一裝置106上。在另一個實施例中,記錄器3010位于第二裝置102上。在又一個實施例中,記錄器3010位于第三裝置3050上。在又一個實施例中,記錄器3010位于代理服務(wù)器上。在一個實施例中,記錄器3010位于直通服務(wù)器上。在另一個實施例中,記錄器3010位于網(wǎng)絡(luò)分組監(jiān)聽器上。在又一個實施例中,記錄器3010位于網(wǎng)絡(luò)設(shè)備、應(yīng)用網(wǎng)關(guān)、應(yīng)用加速設(shè)備或其它設(shè)備上。在有些實施例中,記錄器3010位于與分發(fā)器3020相同的裝置上。在結(jié)合圖2所述的記錄器206的有些實施例中,記錄器攔截協(xié)議數(shù)據(jù)流208并使用復(fù)制的分組產(chǎn)生記錄的協(xié)議數(shù)據(jù)流。在一個實施例中,記錄器包括用于從表示層協(xié)議數(shù)據(jù)流復(fù)制至少一個分組的裝置。在另一個實施例中,記錄器包括用于攔截虛擬信道的裝置。在又一個實施例中,記錄器包括用于基本與第一裝置發(fā)送表示層協(xié)議數(shù)據(jù)流到第二裝置的同時攔截表示層協(xié)議數(shù)據(jù)流的裝置。在又一個實施例中,記錄器包括用于存儲至少一個分組的緩沖區(qū)。在有些實施例中,記錄器包括用于產(chǎn)生表示層協(xié)議數(shù)據(jù)流或其一部分的記錄的記錄發(fā)生器。在其它實施例中,如圖30A所示,記錄器3010在表示層協(xié)議數(shù)據(jù)流208中的附加分組從服務(wù)器106到客戶端102的傳輸期間攔截表示層協(xié)議數(shù)據(jù)流208并從表示層協(xié)議數(shù)據(jù)流208復(fù)制分組。在其中一個實施例中,記錄器3010在基本與服務(wù)器106發(fā)送表示層協(xié)議數(shù)據(jù)流208到服務(wù)器102的同時攔截表示層協(xié)議數(shù)據(jù)流208。在另一個實施例中,記錄器3010接收實時回放表示層協(xié)議數(shù)據(jù)流208的請求的指示。在又一個實施例中,記錄器3010根據(jù)所接收的實時回放的請求指示,從表示層協(xié)議數(shù)據(jù)流208復(fù)制分組并在完成對表示層協(xié)議數(shù)據(jù)流208的攔截之前轉(zhuǎn)發(fā)該分組。在又一個實施例中,記錄器3010不將攔截到的分組的傳輸延遲到對表示層協(xié)議數(shù)據(jù)流208的記錄完成。在一個實施例中,記錄器3010還包括用于將表示層協(xié)議數(shù)據(jù)流208的至少一個分組的副本存儲到存儲裝置中的裝置。在有些實施例中,記錄器3010在繼續(xù)攔截來自表示層協(xié)議數(shù)據(jù)流208的后續(xù)分組的同時發(fā)送復(fù)制的、攔截的分組到分發(fā)器3020。在有些實施例中,記錄器3010如上結(jié)合圖2所述確定是否復(fù)制分組。在其它實施例中,在表示層協(xié)議數(shù)據(jù)流208從服務(wù)器106到客戶端102的傳輸結(jié)束時,記錄器3010如上結(jié)合圖2所述產(chǎn)生表示層協(xié)議數(shù)據(jù)流208的記錄。分發(fā)器3020發(fā)送表示層協(xié)議數(shù)據(jù)流208的至少一個分組的副本。在一個實施例中,分發(fā)器還包括用于檢索該至少一個分組的副本的收發(fā)器。在另一個實施例中,分發(fā)器還包括用于將該至少一個分組的副本發(fā)送到協(xié)議引擎的收發(fā)器?,F(xiàn)在參看圖30B,所示框圖描述了記錄器3010將多個分組3030存儲在存儲裝置218上的一個實施例。在這種實施例中,分發(fā)器3020從存儲裝置218檢索多個分組3030并將該多個分組3030轉(zhuǎn)發(fā)到回放裝置514上的協(xié)議引擎502?,F(xiàn)在參看圖30C,所示框圖描述了一個實施例,其中與分發(fā)器3020通信的記錄器3010將多個分組3030發(fā)送到協(xié)議引擎502。在有些實施例中,記錄器3010從分發(fā)器3020接收對表示層協(xié)議數(shù)據(jù)流的實時回放請求的指示。在其中一個實施例中,根據(jù)接收的實時回放請求的指示,記錄器3010直接將多個分組3030轉(zhuǎn)發(fā)到協(xié)議引擎502?,F(xiàn)在參看圖30D,所示框圖描述了記錄器3010將多個分組330存儲在存儲裝置218上的一個實施例。在這種實施例中,記錄器3010從存儲裝置218檢索多個分組3030并將該多個分組3030轉(zhuǎn)發(fā)到回放裝置514上的協(xié)議引擎502。現(xiàn)在回過來看圖30A,在一個實施例中,分發(fā)器3020位于第一裝置106上。在另一個實施例中,分發(fā)器3020位于第二裝置102上。在又一個實施例中,分發(fā)器3020位于第三裝置3050上。在又一個實施例中,分發(fā)器3020位于代理服務(wù)器上。在一個實施例中,如上結(jié)合圖2所述,分發(fā)器3020是遠程表示協(xié)議服務(wù)器引擎204的一部分。在另一個實施例中,分發(fā)器3020位于記錄服務(wù)器上,例如第三裝置3050。在又一個實施例中,分發(fā)器3020與記錄器3010通信。在一個實施例中,分發(fā)器3020位于直通服務(wù)器上。在另一個實施例中,分發(fā)器3020位于網(wǎng)絡(luò)分組監(jiān)聽器上。在又一個實施例中,分發(fā)器3020位于網(wǎng)絡(luò)設(shè)備、應(yīng)用網(wǎng)關(guān)、應(yīng)用加速設(shè)備或其它設(shè)備上。在有些實施例中,分發(fā)器3020位于與記錄器3010相同的裝置上。在有些實施例中,該系統(tǒng)包括第三裝置3050。在其中一個實施例中,第三裝置3050被稱為日志服務(wù)器。在其中另一個實施例中,分發(fā)器3020位于日志服務(wù)器上。在其中又一個實施例中,日志服務(wù)器存儲從攔截的表示層協(xié)議數(shù)據(jù)流復(fù)制的多個分組以及表示層協(xié)議數(shù)據(jù)流的記錄。在其中又另一個實施例中,日志服務(wù)器提供用于協(xié)調(diào)對從攔截的表示層協(xié)議數(shù)據(jù)流復(fù)制的多個分組的分發(fā)以及對從記錄器3010到回放裝置的表示層協(xié)議數(shù)據(jù)流的記錄的分發(fā)的功能。在有些實施例中,該系統(tǒng)包括回放裝置514,它提供了上面結(jié)合圖5所說明的回放裝置514的功能。在其它實施例中,回放裝置514和協(xié)議引擎502提供上面結(jié)合圖5所述的功能,并且除了再生來自完成的表示層協(xié)議數(shù)據(jù)流的記錄的顯示數(shù)據(jù)之外,還提供再生與不完整的表示層協(xié)議數(shù)據(jù)流的多個分組和部分相關(guān)聯(lián)的顯示數(shù)據(jù)的功能。在有些實施例中,分發(fā)器3020與回放裝置514通信。在其中一個實施例中,分發(fā)器3020提供表示層協(xié)議數(shù)據(jù)流的編目。在另一個實施例中,分發(fā)器3020提供對可通過回放裝置514觀看的表示層協(xié)議數(shù)據(jù)流枚舉。在其中又一個實施例中,分發(fā)器3020提供搜索功能,允許回放裝置514搜索特定的表示層協(xié)議數(shù)據(jù)流。在其中又另一個實施例中,分發(fā)器3020將記錄的表示層協(xié)議數(shù)據(jù)流發(fā)送到回放裝置514。在一個實施例中,回放裝置514請求對可以顯示給回放裝置514的用戶的表示層協(xié)議數(shù)據(jù)流的枚舉。在另一個實施例中,回放裝置514將該請求發(fā)送到分發(fā)器3020。在又一個實施例中,回放裝置514將該請求發(fā)送到記錄服務(wù)器,例如第三裝置3050。在又一個實施例中,回放裝置514包括協(xié)議引擎502。在一個實施例中,分發(fā)器3020查詢可用表示層協(xié)議數(shù)據(jù)流的編目。在另一個實施例中,分發(fā)器3020根據(jù)接收的請求產(chǎn)生可用表示層協(xié)議數(shù)據(jù)流的枚舉。在又一個實施例中,分發(fā)器3020將可用表示層協(xié)議數(shù)據(jù)流的枚舉發(fā)送到回放裝置514。在有些實施例中,該枚舉識別出完整記錄的表示層協(xié)議數(shù)據(jù)流。在其它實施例中,該枚舉識別出記錄器3010尚未對其完成記錄過程的表示層協(xié)議數(shù)據(jù)流。例如,記錄器3010在表示層協(xié)議數(shù)據(jù)流的標(biāo)識被提供給回放裝置時可能尚未完成向表示層協(xié)議數(shù)據(jù)流添加分組的過程。在其中一個實施例中,記錄器3010可以在回放裝置514訪問已經(jīng)復(fù)制到表示層協(xié)議數(shù)據(jù)流中的分組之后向表示層協(xié)議數(shù)據(jù)流的多個復(fù)制的分組中添加額外的分組。在其它實施例中,在接收枚舉后,回放裝置514請求仍然在被記錄過程中的枚舉的表示層協(xié)議數(shù)據(jù)流。在一個實施例中,記錄器3010攔截包括多個分組的表示層協(xié)議數(shù)據(jù)流。在另一個實施例中,分發(fā)器3020將至少一個攔截的分組的副本從表示層協(xié)議數(shù)據(jù)流發(fā)送到回放裝置514。在又一個實施例中,回放裝置514上的協(xié)議引擎502使用與至少一個復(fù)制的分組相關(guān)的信息再生由表示層協(xié)議數(shù)據(jù)流表示的顯示數(shù)據(jù)。在又一個實施例中,記錄器3010攔截第二個分組并且分發(fā)器3020將第二分組的副本發(fā)送到回放裝置514。在進一步的實施例中,回放裝置514使用與第二復(fù)制的分組相關(guān)的信息再生由協(xié)議數(shù)據(jù)流表示的附加顯示數(shù)據(jù)。在有些實施例中,攔截分組并將所攔截分組的副本發(fā)送給回放裝置514顯示的步驟繼續(xù)直到回放裝置514接收表示層協(xié)議數(shù)據(jù)流中的所有分組。在一個實施例中,第三裝置3050同時將很多并發(fā)的表示層協(xié)議會話記錄寫入盤,更新目錄數(shù)據(jù)庫并將文件取出用于回放。在另一個實施例中,記錄器3010位于第三裝置3050上。在又一個實施例中,第三裝置3050從記錄器3010轉(zhuǎn)發(fā)到第三裝置3050的表示層協(xié)議數(shù)據(jù)流接收復(fù)制的分組。在有些實施例中,第三裝置3050被稱為“日志服務(wù)器”或“記錄服務(wù)器”。在一個實施例中,為了支持對任意特定會話文件的并發(fā)記錄和回放,文件格式必須支持能夠在文件不完整時對其進行播放。在有些實施例中,不完整的文件(可能由于數(shù)據(jù)丟失或因為會話仍在進行而不完整)總是能夠被播放。但是,在其中一個實施例中,該文件不包含數(shù)字簽名。在其中另一個實施例中,數(shù)字簽名由第三裝置3050在記錄完成時計算。在其中又一個實施例中,文件格式被修改以支持下述對空分組的使用。在又一個實施例中,沒有文件格式修改發(fā)生。在一個實施例中,第三裝置3050提供根據(jù)目錄數(shù)據(jù)庫中包含的數(shù)據(jù)定位文件的能力。在一個實施例中,目錄數(shù)據(jù)庫中用于每個記錄的數(shù)據(jù)庫條目被依次更新三次:文件被創(chuàng)建時,會話元數(shù)據(jù)變成已知時(例如當(dāng)終端用戶已經(jīng)成功登錄時)和記錄結(jié)束時。在一個實施例中,當(dāng)表示層協(xié)議數(shù)據(jù)流開始時文件被創(chuàng)建。在另一個實施例中,當(dāng)特權(quán)第三方(例如管理員)請求記錄開始時文件被創(chuàng)建。在有些實施例中,當(dāng)包含表示層協(xié)議數(shù)據(jù)流的記錄的第一部分的第一文件超出閥值時,第一文件關(guān)閉,第二文件被創(chuàng)建,第二文件包含表示層協(xié)議數(shù)據(jù)流的記錄的第二部分。在其中一個實施例中,當(dāng)?shù)谝晃募龃笮∠拗茣r,第一文件超出該閥值。在其中另一個實施例中,當(dāng)?shù)谝晃募鎯α顺鰧τ涗洉r間長度上的限制的記錄的一部分時,第一文件超出該閥值。在其中又一個實施例中,關(guān)閉存儲了記錄的第一部分并超出閥值的第一文件以及創(chuàng)建第二文件以存儲記錄的第二部分的過程被稱為“翻轉(zhuǎn)”。在其中又一個實施例中,正在被記錄的基礎(chǔ)會話仍然不受影響,并且在文件轉(zhuǎn)換中記錄數(shù)據(jù)沒有被丟失。在有些實施例中,當(dāng)其會話正在被記錄的用戶斷開時,記錄結(jié)束。在其它實施例中,在“翻轉(zhuǎn)”過程期間記錄結(jié)束。在其它實施例中,當(dāng)特權(quán)第三方(例如管理員)請求記錄結(jié)束時記錄終止。在有些實施例中,只有已經(jīng)有過全部三次更新的數(shù)據(jù)庫記錄能夠被搜索;文件必須是完整的才能被搜索。在其它實施例中,本發(fā)明的方法和系統(tǒng)允許不夠所有更新次數(shù)的記錄的搜索。在其中一個實施例中,記錄只需要有前兩次更新就能被搜索。這意味著當(dāng)元數(shù)據(jù)可知時該文件可用于搜索和在會話記錄早期被下載。在其中一些實施例中,當(dāng)文件被創(chuàng)建時記錄就是可搜索的。但是,在其中其它實施例中,被確定為文件在元數(shù)據(jù)被識別出之前不可用,因為與該記錄有關(guān)的信息只有登錄的會話的值。在一個實施例中,第三裝置3050跟蹤所有發(fā)送到回放裝置514的實況會話記錄,并且隨著更多的數(shù)據(jù)可用而繼續(xù)將數(shù)據(jù)流傳輸?shù)交胤叛b置514。在另一個實施例中,第三裝置3050提供跟蹤功能,其也支持用于通知如下所述實況播放器的表示服務(wù)器的“輪詢”消
肩、O在有些實施例中,在向表示層協(xié)議數(shù)據(jù)流的記錄添加分組的過程完成之前發(fā)送表示層協(xié)議數(shù)據(jù)流中的分組的功能使得回放裝置514的用戶能夠在對表示層協(xié)議數(shù)據(jù)流的記錄期間觀看由該分組表示的顯示數(shù)據(jù)。在其中一個實施例中,這個功能使得用戶能夠在顯示數(shù)據(jù)被創(chuàng)建和記錄的同時實況觀看顯示數(shù)據(jù)。在其中另一個實施例中,在分組攔截時間和該分組表示的顯示數(shù)據(jù)的再生時間之間可能有延遲。在其中又一個實施例中,被再生顯示數(shù)據(jù)的觀眾察覺不到該延遲。在有些實施例中,在對原始表示層協(xié)議數(shù)據(jù)流208的發(fā)送完成之前的被攔截的分組的發(fā)送使得回放裝置能夠在分組被產(chǎn)生時顯示它們。在其中一個實施例中,這為再生的攔截的分組的觀眾提供了實時觀看表示層協(xié)議數(shù)據(jù)流的功能。在其中另一個實施例中,多個被攔截的分組可以在發(fā)送之前被緩沖。但是,在其中一些實施例中,盡管多個分組被緩沖,它們在表示層協(xié)議數(shù)據(jù)流被完全傳輸之前仍然被發(fā)送到回放裝置,由此提供了實時或準(zhǔn)實時回放的印象。協(xié)議引擎502使用與至少一個復(fù)制的分組相關(guān)聯(lián)的信息再生由該至少一個復(fù)制的分組所表示的顯示數(shù)據(jù)。記錄器3010繼續(xù)攔截表示層協(xié)議數(shù)據(jù)流,分發(fā)器繼續(xù)發(fā)送來自表示層協(xié)議數(shù)據(jù)流的分組的副本直到第一裝置完成協(xié)議數(shù)據(jù)流到第二裝置的傳輸。現(xiàn)在參看圖31,所示流程圖描述了在用于表示層協(xié)議數(shù)據(jù)流的記錄和實時回放的方法中采取的步驟的一個實施例。簡單地說,在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間,記錄器攔截包括多個分組的表示層協(xié)議數(shù)據(jù)流,表示層協(xié)議數(shù)據(jù)流表示顯示數(shù)據(jù)(步驟3102)。分發(fā)器發(fā)送表示層協(xié)議數(shù)據(jù)流的至少一個分組的副本(步驟3104)。協(xié)議引擎使用與該至少一個復(fù)制的分組相關(guān)聯(lián)的信息再生由該至少一個復(fù)制的分組表示的顯示數(shù)據(jù)(步驟3106)。攔截表示層協(xié)議數(shù)據(jù)流并發(fā)送其中的至少一個分組的副本的步驟重復(fù)到第一裝置完成協(xié)議數(shù)據(jù)流至第二裝置的傳輸(步驟3108)。現(xiàn)在更詳細地參看圖31,在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間,記錄器攔截包括多個分組的表示層協(xié)議數(shù)據(jù)流,表示層協(xié)議數(shù)據(jù)流表示顯示數(shù)據(jù)(步驟3102)。在一個實施例中,記錄器3010在基本與第一裝置向第二裝置發(fā)送表示層協(xié)議數(shù)據(jù)流的同時攔截表示層協(xié)議數(shù)據(jù)流。在另一個實施例中,記錄器攔截虛擬信道。在有些實施例中,記錄器3010確定是否如上結(jié)合圖2所述復(fù)制分組。在其它實施例中,在表示層協(xié)議數(shù)據(jù)流208從服務(wù)器106到客戶端102的傳輸結(jié)束時,記錄器3010如上結(jié)合圖2所述產(chǎn)生表示層協(xié)議數(shù)據(jù)流208的記錄。在其中一個實施例中,記錄器3010存儲表示層協(xié)議數(shù)據(jù)流的記錄。在其它實施例中,記錄器3010如上結(jié)合圖2所述將信息關(guān)聯(lián)到復(fù)制的分組或?qū)⑿畔⑶度氡硎緦訁f(xié)議數(shù)據(jù)流的所復(fù)制的部分。在一個實施例中,與第三裝置3050相關(guān)聯(lián)或位于其上的記錄器3010可以捕獲在虛擬信道上傳輸?shù)母鞣N數(shù)據(jù),并在內(nèi)核模式下從表示層棧捕獲表示層分組(包括優(yōu)化和加速元數(shù)據(jù)以及鼠標(biāo)和鍵盤分組)。為了減少發(fā)送很多小消息到第三裝置3050的計算和網(wǎng)絡(luò)負擔(dān),在有些實施例中,記錄器3010可以為每個會話局部緩沖這些數(shù)據(jù)。當(dāng)記錄器3010捕獲足夠的數(shù)據(jù)以形成足夠大的消息時,或者當(dāng)超時周期(分鐘級)期滿時,記錄器3010可以將數(shù)據(jù)轉(zhuǎn)發(fā)到存儲組件。這種措施為系統(tǒng)提供了對資源的高效利用。盡管有些實施例因為上述原因而提供了上述緩沖類型,但在一個實施例中,支持實況或時移回放的方法和系統(tǒng)需要立即將數(shù)據(jù)轉(zhuǎn)發(fā)到回放裝置514。如果數(shù)據(jù)被攔阻的時間超出閥值,回放體驗將會受損,因為流是不連續(xù)的或者不是最新的。數(shù)據(jù)可以不規(guī)律的和不頻繁的間隔到達回放裝置514。有些接收的數(shù)據(jù)可能已經(jīng)是幾分鐘前的。在有些實施例中,系統(tǒng)為所有記錄會話去除了緩沖功能。但是,對于不被實況或時移觀看的會話來說,這種做法降低了性能和可擴展性并且可能極大的浪費資源,例如對可用網(wǎng)絡(luò)帶寬的使用。在其它實施例中,對先前記錄的會話的回放提供了緩沖功能,但對實際正在被實況觀看的會話則沒有提供。在其中一個實施例中,當(dāng)回放裝置514開始實況會話的回放時,記錄器3010接收這個事件的通知并且相應(yīng)地關(guān)閉緩沖機制。在其中另一個實施例中,當(dāng)回放完成時,表示服務(wù)器上對后續(xù)會話的記錄將回到普通緩沖模式。這種措施意味著可擴展性只有在播放器實際正在播放記錄時受影響。這個影響還只存在于提供會話的表示服務(wù)器上;群中的其它服務(wù)器不受影響。為了進一步保護可擴展性,在另其它實施例中,對實況會話數(shù)據(jù)的流傳輸可以被輕微壓制。不是立即發(fā)送所有接收的數(shù)據(jù),而是將數(shù)據(jù)緩沖一段非常短的時間。在其中一個實施例中,該時間是預(yù)定的。在其中另一個實施例中,緩沖時間期間小于一秒。在其中又一個實施例中,選擇了 500毫秒,結(jié)果是每秒只發(fā)送兩個網(wǎng)絡(luò)消息。在一個實施例中,這里所說明的方法和系統(tǒng)解決了表示層協(xié)議數(shù)據(jù)會話的異步性以及會話中的空閑時間產(chǎn)生的問題。在另一個實施例中,當(dāng)會話空閑時,沒有數(shù)據(jù)被從服務(wù)器106流傳輸?shù)娇蛻舳?02,因此沒有數(shù)據(jù)被攔截、記錄或轉(zhuǎn)發(fā)以進行回放。在又一個實施例中,沒有規(guī)則的數(shù)據(jù)流,回放裝置514不能確定它是否能夠擴展它的時間線以反映這個時間已經(jīng)過去。當(dāng)過去某一時間的會話活動數(shù)據(jù)到達時,就出現(xiàn)了一個通過斷定已經(jīng)過去的那段時間沒有任何活動并將其反映在對數(shù)據(jù)流的觀眾的指示中所產(chǎn)生的問題。也就是說,回放裝置514沒有接收數(shù)據(jù),斷定沒有活動發(fā)生,向觀眾指示沒有活動發(fā)生,然后在指示在那個時間沒有活動發(fā)生之后顯示反應(yīng)該活動在過去的那個時間點沒有實際發(fā)生的數(shù)據(jù)。實際上,回放裝置514已經(jīng)錯誤地假定發(fā)生了“什么都沒有”并且已經(jīng)將當(dāng)前播放器幀前進得過遠。這可能導(dǎo)致記錄會話的觀眾丟失過去發(fā)生的活動或者給其帶來困惑。在一個實施例中,回放裝置514確定會話數(shù)據(jù)在過去的時間點已經(jīng)到達,將該情況指示給觀眾,并迫使觀眾返回到該會話活動發(fā)生的時間點。在有些實施例中,這個解決方案產(chǎn)生了另外的問題,包括如果記錄段過長時或者如果會話活動的類型對觀眾無足輕重時的可用性問題。在另一個實施例中,分組被發(fā)送到回放裝置514表示在特定的時間點沒有會話活動發(fā)生并且沒有會話數(shù)據(jù)要發(fā)送到回放裝置514。在又一個實施例中,一種稱為“空分組”的分組類型被創(chuàng)建并發(fā)送到回放裝置514。在又一個實施例中,空分組像所有其它分組一樣保存有時間戳但不包含任何有效載荷。如果正在被記錄的會話在它的緩沖時間段(例如,前面提到的500毫秒的間隔)內(nèi)沒有接收任何表示層協(xié)議數(shù)據(jù),記錄器3010將空分組插入流中。在有些實施例中,和使用數(shù)據(jù)緩沖方法一樣,空分組將只在時移回放有效時被注入。在這些實施例中,回放裝置514現(xiàn)在接收空分組的穩(wěn)定流并且能夠安全地擴展它的時間線并允許回放到“已知”空閑時段中。在其中一些實施例中,空分組的傳輸導(dǎo)致額外的負擔(dān),例如記錄的文件的大小會有少量增長,以及在會話空閑時的一些資源使用。但是,在其中一個實施例中,空閑分組的長度在4到6個字節(jié)之間(通常是5個字符)并且每秒只有2個空閑分組被發(fā)送。假定為5字節(jié)分組,這等于每個會話每小時額外的36KB。在有些實施例中,因為實況回放很少發(fā)生,并且與每會話每小時2MB的典型總體數(shù)據(jù)率相比,這個額外負擔(dān)可以認為無足輕重。在一個實施例中,記錄器3010執(zhí)行在表示服務(wù)器上以攔截和記錄表示層協(xié)議數(shù)據(jù)。在另一個實施例中,記錄器3010接收用戶已經(jīng)請求記錄器3010當(dāng)前正在記錄會話的時移回放的指示。在又一個實施例中,該指示的接收向記錄器3010指示它應(yīng)該使用提供時移所需的功能。例如,記錄器3010可以先緩沖用于發(fā)送的分組直到它接收實況觀看的通知,然后在接收該指示后切換到減少緩沖分組的時間量的模式。在另一個例子中,記錄器3010不使用上述空分組直到它接收用戶已經(jīng)請求時移會話回放的指示。在有些實施例中,有各種方法可用于通知記錄器3010回放裝置514正在為觀眾播放會話,而記錄器3010記錄該會話。從支持實況回放會話的通知來說,它可以被看作不適合在記錄組件所在的每個服務(wù)器上打開新的網(wǎng)絡(luò)端口以支持這個需求。不是由第三裝置3050 (它知道所有正在被實況播放的會話)直接通知每個表示服務(wù)器,在有些實施例中,本發(fā)明的方法和系統(tǒng)實現(xiàn)了反向輪詢機制。每個表示服務(wù)器將以統(tǒng)一間隔為當(dāng)前正在被實況播放的會話列表“輪詢”第三裝置3050。在其中一些實施例中,即使輪詢會有比異步通知更大的負擔(dān)和更慢的響應(yīng),也優(yōu)選這種機制。輪詢不需要表示服務(wù)器上的監(jiān)聽端口,但會產(chǎn)生多久輪詢一次的問題。在有些實施例中,使用較短的間隔以確保能夠及時切換實況會話的緩沖,盡管該間隔可能影響可擴展性。在其它實施例中,較長的間隔有較低的資源影響,但會導(dǎo)致切換緩沖模式中的延遲。在其它實施例中,預(yù)定時間間隔由管理員選擇。在其它實施例中,10秒的輪詢間隔提供了短間隔和長間隔之間的折衷。在其中一個實施例中,輪詢間隔的影響很少能夠被察覺到,因為大多數(shù)被記錄會話已經(jīng)有現(xiàn)有的數(shù)據(jù)用于下載和立即回放。在其中一個實施例中,具有可用于立即回放的現(xiàn)有數(shù)據(jù)給了用戶時間,以便根據(jù)用戶想要觀看的東西調(diào)整自己。在其中另一個實施例中,輪詢間隔已經(jīng)經(jīng)過了用戶已經(jīng)完成對可用數(shù)據(jù)的觀看并請求新近記錄內(nèi)容的時間。在其中又一個實施例中,用戶在輪詢間隔完成之前完成對可用內(nèi)容的觀看,可以設(shè)置短輪詢間隔以使用戶只需等待幾秒。例如,在輪詢間隔被設(shè)為10秒的實施例中,如果用戶想要觀看最新幾分鐘的記錄,用戶只需要等待最多10秒(平均為5秒)。例如,擁有1000個全部都在有效記錄的表示服務(wù)器的系統(tǒng)等于每秒鐘必須處理100個輪詢消息的單個第三裝置3050。在這樣的實施例中,考慮消息較小而且處理每個輪詢消息的影響較低,從系統(tǒng)可擴展性角度這是可行的。在一個實施例中,對每個輪詢消息的處理不涉及任何1/0,復(fù)雜的計算,線程環(huán)境切換或進程間通信。在另一個實施例中,如果需要的話也可以通過配置提高輪詢間隔。在有些實施例中,包括“輪詢”消息有多個目的。在其中一個實施例中,輪詢消息還被用作第三裝置3050的“保持有效”(ke印-alive)消息。在其中另一個實施例中,第三裝置3050現(xiàn)在能夠跟蹤哪個表示服務(wù)器正在有效記錄并且當(dāng)前有多少會話正在被記錄。分發(fā)器發(fā)送表示層協(xié)議數(shù)據(jù)流的至少一個分組的副本(步驟3104)。在一個實施例中,記錄器存儲表示層協(xié)議數(shù)據(jù)流208的至少一個分組的副本。在另一個實施例中,記錄器3010發(fā)送至少一個復(fù)制的分組到分發(fā)器3020。在又一個實施例中,記錄器3010將該至少一個分組的副本復(fù)制到緩沖區(qū)中。在又一個實施例中,記錄器3010將緩沖區(qū)中存儲的多個分組發(fā)送到分發(fā)器。在一個實施例中,分發(fā)器3020從存儲裝置檢索表示層協(xié)議數(shù)據(jù)流的至少一個分組的副本。在另一個實施例中,分發(fā)器3020從存儲裝置(例如上面結(jié)合圖2所述存儲裝置218)檢索分組。在又一個實施例中,分發(fā)器從記錄器3010檢索至少一個分組的副本。
協(xié)議引擎使用與至少一個復(fù)制的分組相關(guān)聯(lián)的信息再生由該至少一個復(fù)制的分組所表示的顯示數(shù)據(jù)(步驟3106)。在一個實施例中,該至少一個復(fù)制的分組在協(xié)議引擎接收它時被使用。在另一個實施例中,該至少一個分組在協(xié)議引擎接收再生被至少一個復(fù)制的分組所表示的顯示數(shù)據(jù)的請求時被使用。攔截表示層協(xié)議數(shù)據(jù)流并發(fā)送表示層協(xié)議數(shù)據(jù)流的至少一個分組的副本的步驟重復(fù)直到第一裝置完成至第二裝置的協(xié)議數(shù)據(jù)流傳輸(步驟3108)。在一個實施例中,使用與該至少一個分組相關(guān)聯(lián)的信息的步驟重復(fù)直到協(xié)議引擎已經(jīng)再生了由每個接收的復(fù)制分組表示的顯示數(shù)據(jù)。在其它實施例中,協(xié)議引擎只為用戶已經(jīng)明確請求的分組再生顯示數(shù)據(jù)。在其它實施例中,協(xié)議引擎在接收啟動或停止再生的請求指示之后啟動和停止顯示數(shù)據(jù)的再生。在有些實施例中,確保終端用戶不能夠檢測到他們的會話正在被記錄或者被實況觀看至關(guān)重要。在一個實施例中,提供時移回放特性的方法和系統(tǒng)避免了檢測到表示層協(xié)議數(shù)據(jù)流的記錄的任何額外機會。在一個實施例中,表示層協(xié)議會話的回放不影響表示層協(xié)議狀態(tài)機的運行。用戶接收的表示層協(xié)議數(shù)據(jù)流在實況回放下相同。這也意味著在他們的記錄中不會有可見的或者其他可感知的人工產(chǎn)物。在終端用戶對提供其表示會話的服務(wù)器沒有管理員權(quán)限的另一個實施例中,沒有進程或可訪問的系統(tǒng)對象向終端用戶指示他們正在被實況觀看(甚至被記錄)。在又一個實施例中,終端用戶還被限制發(fā)出他或她自己的“輪詢”消息到第三裝置3050以找出實況回放會話的列表。即使對于本地管理員用戶,這也是難以做到的,因為從這個輪詢消息返回的會話ID不是終端會話標(biāo)識符。在一個實施例中,這包括了由于模糊處理(obfuscation)而帶來的安全性,因為將這些內(nèi)部會話標(biāo)識符映射到終端會話標(biāo)識符需要特殊的技能。在其它實施例中,另一種檢測方法包括觀察性能下降的周期。但是,在其中一個實施例中,即便對于專用于單一用戶的物理機,也難于觀察到性能下降,因為性能影響非常輕。在共享的應(yīng)用服務(wù)器上,這也是不可能的。在這些實施例中,終端用戶被拒絕訪問察看性能計數(shù)器或類似的數(shù)據(jù)相關(guān)性能。總之,在有些實施例中,用于時移回放的方法和系統(tǒng)確保了只有具有普通用戶權(quán)限的終端用戶檢測實況回放的可行方式用于進行社會工程攻擊。在一個實施例中,回放裝置514發(fā)送搜索請求到第三裝置3050。在另一個實施例中,回放裝置514組件搜索可以顯示給觀眾的會話枚舉。在有些實施例中,該枚舉只包括那些其完整的會話記錄可用的會話。在其它實施例中,該枚舉只包括其不完整的會話記錄可用的會話。在其它實施例中,枚舉包括被完整記錄的會話和不完整記錄的會話。在其中一個實施例中,回放裝置514包括用于區(qū)分“實況”記錄和“完整”記錄的功能,并將這個區(qū)別在搜索結(jié)果列表控件中告知用戶。在其中另一個實施例中,回放裝置514可以周期性地向第三裝置3050查詢列出的每個實況會話的狀態(tài)更新。在又一個實施例中,搜索列表保持沒有用戶干預(yù)的更新狀態(tài)。在一個實施例中,回放裝置514的用戶可以選擇記錄數(shù)據(jù)流進行觀看。在另一個實施例中,如果該記錄數(shù)據(jù)流包含與記錄器3010仍然正在從表示層協(xié)議數(shù)據(jù)流記錄分組的會話相關(guān)的數(shù)據(jù),就創(chuàng)建信道并保持其在打開狀態(tài)用于在有額外的記錄數(shù)據(jù)從記錄器3010可用時接收它們。在又一個實施例中,在數(shù)據(jù)被第三裝置3050接收時,它將被轉(zhuǎn)發(fā)到回放裝置514以通過該信道進行處理。在又一個實施例中,如果記錄器3010完成了記錄完整會話而該會話正在被實況播放,回放裝置514將關(guān)閉該信道并且回放將不間斷地繼續(xù)。在有些實施例中,從提供實況回放的功能會產(chǎn)生安全相關(guān)的顧慮。例如,在有些實施例中,實況會話文件不能被加密以保存數(shù)字權(quán)限管理(DRM,digital rightsmanagement),并且沒有任何數(shù)字簽名驗證。為了減輕DRM問題,在其中一些實施例中,回放裝置514將試圖只從私有存儲器處理實況記錄。在其中一個實施例中,實況記錄不被寫入本地文件高速緩存并且試圖阻止數(shù)據(jù)被換出或者相反寫入持久存儲裝置。在其中另一種實施例中,當(dāng)回放裝置514和第三裝置3050之間的流量被使用強加密密鑰進行SSL/TLS時,對加密轉(zhuǎn)換中的數(shù)據(jù)丟失不太關(guān)注。在其中其它實施例中,為了減輕數(shù)字簽名問題,在回放開始之前,將向用戶顯示警告消息表明該文件的來源和內(nèi)容不能被驗證。如果用戶想得到了這個可靠性聲明,他們就能夠在會話完成時重新下載該會話記錄。在很多實施例中,這提供了合理的折衷,因為數(shù)字簽名為記錄提供了合法的或司法鑒定(forensic)的價值。在一個實施例中,當(dāng)播放器窗口處于活動狀態(tài)時,當(dāng)接收新數(shù)據(jù)時拉動進度條時間線將被擴展并且這個新內(nèi)容可以立即用于觀看。在有些實施例中,回放裝置514特性仍然保留,包括為快速搜索生成關(guān)鍵幀的后臺處理引擎。提供了用于圍繞實況記錄搜索的功倉泛。現(xiàn)在參看圖32,所示流程圖描述了用于在遠程表示層協(xié)議數(shù)據(jù)的實時回放期間進行實時搜索的方法中所采取的步驟的一個實施例。簡單地說,前臺協(xié)議引擎接收呈現(xiàn)包括已經(jīng)接收的第一多個分組和尚待接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流中的分組內(nèi)容的請求(步驟3202)。前臺協(xié)議引擎識別出其相關(guān)時間戳在所請求的分組的時間戳之前的狀態(tài)快照(步驟3204)。前臺協(xié)議引擎在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間根據(jù)識別出的狀態(tài)快照顯示所請求的分組(步驟3206)。在有些實施例中,所接收的請求在前臺協(xié)議引擎1106通過向使用顯示器的觀眾呈現(xiàn)第一多個分組中的分組內(nèi)容而再生顯示數(shù)據(jù)并且觀眾希望搜索到特定的顯示數(shù)據(jù)時產(chǎn)生。在其它實施例中,前臺協(xié)議引擎將狀態(tài)快照和所請求的分組之間的中間分組的內(nèi)容呈送到緩沖區(qū)。如前結(jié)合圖11所述,在有些實施例中,呈現(xiàn)的顯示數(shù)據(jù)的接收者可以實時搜索內(nèi)容。但是,在有些實施例中,如圖32所示,呈現(xiàn)的數(shù)據(jù)的接收者可以在來自尚未被完整記錄的表示層協(xié)議數(shù)據(jù)流的分組的表示期間實時搜索內(nèi)容。在其中一種實施例中,前臺協(xié)議引擎包括前臺協(xié)議引擎1106并且如結(jié)合圖11所述那樣提供實時搜索功能。在其中另一個實施例中,前臺協(xié)議引擎1106還為部分表示層協(xié)議數(shù)據(jù)流(例如第一多個接收的分組,它包含了表示層協(xié)議數(shù)據(jù)流的子集)的實時搜索提供上述功能。在有些實施例中,前臺協(xié)議引擎1106在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間產(chǎn)生已經(jīng)接收的要用顯示器1108呈現(xiàn)給觀眾的第一多個分組的實時可感知表示。在其它實施例中,前臺協(xié)議引擎1106通過呈現(xiàn)協(xié)議數(shù)據(jù)流1110中或者多個接收的分組中的至少一個分組的內(nèi)容而產(chǎn)生實時可感知表示??筛兄硎究梢园ǖ幌抻讵毩⒒蚪M合的聽覺、視覺、觸覺或嗅覺的演示。在其它實施例中,前臺協(xié)議引擎1106為第一多個分組中的實時搜索提供類似于前面結(jié)合圖9所說明的在記錄的協(xié)議流中實時搜索的功能。
如前結(jié)合圖11所述,在有些實施例中,狀態(tài)快照通過存儲呈現(xiàn)表示層協(xié)議數(shù)據(jù)的協(xié)議引擎在記錄器206從表示層協(xié)議數(shù)據(jù)流208復(fù)制至少一個分組的時間點時的狀態(tài)而使得能夠再生顯示數(shù)據(jù)。在一個實施例中,狀態(tài)快照包括描述那個時間點的屏幕狀態(tài)的數(shù)據(jù)結(jié)構(gòu)。現(xiàn)在參看圖33,所示流程圖描述了用于產(chǎn)生能夠在包括由后臺協(xié)議引擎已經(jīng)接收的第一多個分組和由后臺協(xié)議引擎尚待接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流的實時回放期間進行實時搜索的狀態(tài)快照的方法中采取的步驟的一個實施例。后臺協(xié)議引擎在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間接收第一多個分組(步驟3302)。后臺協(xié)議引擎再生由第一多個分組表示的顯示數(shù)據(jù)(步驟3304)。后臺協(xié)議引擎在呈現(xiàn)第一多個分組中的至少一個分組期間產(chǎn)生至少一個狀態(tài)快照(步驟3306)。后臺協(xié)議引擎存儲產(chǎn)生的狀態(tài)快照(步驟3308)。根據(jù)接收第二多個分組中的至少一個分組修改顯示數(shù)據(jù)的再生和至少一個狀態(tài)快照(步驟3310)。后臺協(xié)議引擎在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間接收第一多個分組(步驟3302)。后臺協(xié)議引擎產(chǎn)生第一多個分組的表示。在一個實施例中,后臺協(xié)議引擎1102通過將第一多個分組的內(nèi)容呈送到緩沖區(qū)而產(chǎn)生第一多個分組的表示。在有些實施例中,該緩沖區(qū)是離屏緩沖區(qū)。后臺協(xié)議引擎產(chǎn)生由第一多個分組所表示的顯示數(shù)據(jù)(步驟3304)。在一個實施例中,后臺協(xié)議引擎通過將第一多個分組的內(nèi)容呈送到緩沖區(qū)而產(chǎn)生顯示數(shù)據(jù)。在有些實施例中,該緩沖區(qū)是離屏緩沖區(qū)。在有些實施例中,前臺協(xié)議引擎產(chǎn)生顯示數(shù)據(jù)。在其中一個實施例中,前臺協(xié)議引擎1106通過呈現(xiàn)第一多個分組的內(nèi)容,基本與后臺協(xié)議引擎1102在它讀取第一多個分組期間產(chǎn)生至少一個狀態(tài)快照的同時產(chǎn)生第一多個分組的能夠讓人感知的表示。后臺協(xié)議引擎在讀取第一多個分組中的至少一個分組期間產(chǎn)生至少一個狀態(tài)快照(步驟3306)。在一個實施例中,該至少一個狀態(tài)快照的產(chǎn)生和第一多個分組的表示基本上同時發(fā)生。在另一個實施例中,該至少一個狀態(tài)快照的產(chǎn)生發(fā)生在后臺協(xié)議引擎順序讀取第一多個分組期間。后臺協(xié)議引擎存儲產(chǎn)生的狀態(tài)快照(步驟3308)。在后臺協(xié)議引擎1102周期性產(chǎn)生多個狀態(tài)快照的實施例中,狀態(tài)快照可以充當(dāng)貫穿第一多個分組的標(biāo)記,幫助定位第一多個分組中的特定時間點以及在狀態(tài)快照1104之前或之后到達的分組中的特定時間點。根據(jù)接收第二多個分組中的至少一個分組,顯示數(shù)據(jù)的產(chǎn)生和至少一個狀態(tài)快照被修改(步驟3310)。在有些實施例中,后臺協(xié)議引擎從第二多個分組(先前未接收的分組)中檢索分組并將該來自第二多個分組的分組存儲在第一多個分組中。在其中一個實施例中,后臺協(xié)議引擎將新接收的分組和先前接收的分組一起存儲在緩沖區(qū)中。在其中另一個實施例中,對第一多個分組的修改導(dǎo)致對產(chǎn)生的顯示數(shù)據(jù)的修改或重新生成,或者附加顯示數(shù)據(jù)的重新生成。在其中又一個實施例中,從第二多個分組添加分組到第一多個分組導(dǎo)致對狀態(tài)快照的修改或者附加狀態(tài)快照的產(chǎn)生。在有些實施例中,后臺協(xié)議引擎使用上述為記錄的協(xié)議數(shù)據(jù)流產(chǎn)生狀態(tài)快照的方法為第一多個分組產(chǎn)生狀態(tài)快照。在其它實施例中,前臺協(xié)議引擎使用上述再生由記錄的協(xié)議數(shù)據(jù)流中的分組表示的顯示數(shù)據(jù)的方法再生由第一多個分組表示的顯示數(shù)據(jù)。
再來看圖11,用于在包括已經(jīng)被后臺協(xié)議引擎接收的第一多個分組和尚待被后臺協(xié)議引擎接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流的實時回放期間進行實時搜索的系統(tǒng),包括后臺協(xié)議引擎1102、狀態(tài)快照1104、前臺協(xié)議引擎1106和協(xié)議數(shù)據(jù)流1110。后臺協(xié)議引擎在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間接收第一多個分組。由后臺協(xié)議引擎產(chǎn)生的狀態(tài)快照包括在記錄器(如記錄器3010)從表示層協(xié)議數(shù)據(jù)流復(fù)制分組到第一多個分組中的時間點呈現(xiàn)該表示層協(xié)議數(shù)據(jù)流的引擎的狀態(tài)。前臺協(xié)議引擎接收第一多個分組,呈現(xiàn)第一多個分組的內(nèi)容,接收搜索由第一多個分組中的分組內(nèi)容所表示的顯示數(shù)據(jù)的請求,然后使用狀態(tài)快照呈現(xiàn)表示所請求的顯示數(shù)據(jù)的內(nèi)容。在一個實施例中,前臺協(xié)議引擎在表示層協(xié)議數(shù)據(jù)流從第一裝置(例如服務(wù)器106)到第二裝置(例如客戶端102)的傳輸期間,呈現(xiàn)被請求的顯示數(shù)據(jù)。前臺協(xié)議引擎根據(jù)接收第二多個分組中的至少一個分組更新狀態(tài)快照。盡管已經(jīng)結(jié)合圖11被描述為完整記錄的協(xié)議數(shù)據(jù)流,但協(xié)議數(shù)據(jù)流1110在有些實施例中包括第二協(xié)議數(shù)據(jù)流的一部分。在其中一個實施例中,協(xié)議數(shù)據(jù)流1110是表示顯示數(shù)據(jù)、已經(jīng)有元數(shù)據(jù)與其相關(guān)聯(lián)且其中已經(jīng)嵌入了附加信息的第一多個分組。在另一個實施例中,在從記錄器206或分發(fā)器3020接收附加分組時,后臺協(xié)議引擎將那些分組添加到協(xié)議數(shù)據(jù)流1110。在其中又一個實施例中,圖11中所述系統(tǒng)提供了在使用協(xié)議數(shù)據(jù)流的一部分實時回放期間進行實時搜索的功能,其方式基本與該系統(tǒng)在完整記錄的協(xié)議數(shù)據(jù)流的回放期間提供實時搜索功能的方式類似。現(xiàn)在看圖34,所示流程圖描述了用于狀態(tài)快照的自適應(yīng)生成的方法中采取的步驟的一個實施例。在表示層協(xié)議數(shù)據(jù)流從第一裝置向第二裝置的傳輸期間,包括被后臺協(xié)議引擎已經(jīng)接收的第一多個分組和被后臺協(xié)議引擎尚待接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流的表示被呈現(xiàn)給用戶(步驟3402)。后臺協(xié)議引擎在表示期間監(jiān)控用戶的活動(步驟3404)。后臺協(xié)議引擎根據(jù)對活動的監(jiān)控開發(fā)出活動特征(步驟3406)。后臺協(xié)議引擎根據(jù)活動特征產(chǎn)生至少一個狀態(tài)快照(步驟3408)。后臺協(xié)議引擎根據(jù)在第二多個分組中接收至少一個分組而修改該至少一個狀態(tài)快照(步驟3410)。在有些實施例中,對協(xié)議數(shù)據(jù)的一部分(例如第一多個分組)使用了前面結(jié)合圖12到15所述的為狀態(tài)快照的自適應(yīng)生成而采取的步驟。在表示層協(xié)議數(shù)據(jù)流從第一裝置向第二裝置的傳輸期間,包括被后臺協(xié)議引擎已經(jīng)接收的第一多個分組和被后臺協(xié)議引擎尚待接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流的表示被呈現(xiàn)給用戶(步驟3402)。在一個實施例中,在后臺協(xié)議引擎從第二多個分組接收分組時,后臺協(xié)議引擎將新接收的分組存儲在第一多個分組中。在另一個實施例中,后臺協(xié)議引擎繼續(xù)從第二多個分組接收分組直到服務(wù)器停止至客戶端的表示層協(xié)議數(shù)據(jù)流傳輸。后臺協(xié)議引擎在表示期間監(jiān)控用戶的活動(步驟3404)。在一個實施例中,后臺協(xié)議引擎1106產(chǎn)生第一多個分組的表示并用顯示器1108將其呈現(xiàn)給用戶。在其它實施例中,后臺協(xié)議弓丨擎1102產(chǎn)生該表示。在其它實施例中,第三裝置產(chǎn)生該表示。在一個實施例中,后臺協(xié)議引擎在表示會話的一部分期間(例如表示由第一多個分組表示的重新生成的顯示數(shù)據(jù)期間)監(jiān)控用戶的活動。后臺協(xié)議引擎根據(jù)對活動的監(jiān)控開發(fā)出活動規(guī)律(步驟3406)。在有些實施例中,后臺協(xié)議引擎1102識別出用戶的活動級別。在有些實施例中,后臺協(xié)議引擎1102識別出不活動周期。在其它實施例中,后臺協(xié)議引擎1102識別出顯示數(shù)據(jù)中用戶感興趣的區(qū)域?;顒犹卣骺梢苑从吵鲞@些標(biāo)識。后臺協(xié)議引擎根據(jù)活動特征產(chǎn)生至少一個狀態(tài)快照(步驟3408)。在有些實施例中,后臺協(xié)議引擎1102決定延長一個或多個狀態(tài)快照之間的間隔。在其它實施例中,后臺協(xié)議引擎1102決定縮短一個或多個狀態(tài)快照之間的間隔。在另其它實施例中,后臺協(xié)議引擎1102根據(jù)活動特征決定去除至少一個狀態(tài)快照。在另其它實施例中,根據(jù)活動特征,后臺協(xié)議引擎1102決定添加至少一個狀態(tài)快照。后臺協(xié)議引擎根據(jù)接收第二多個分組中的至少一個分組修改至少一個狀態(tài)快照(步驟3410)。在有些實施例中,后臺協(xié)議引擎根據(jù)接收第二多個分組中的至少一個分組而修改活動級別的標(biāo)識。在其中一個實施例中,第一部分表示層協(xié)議數(shù)據(jù)流的觀眾在觀看表示層協(xié)議數(shù)據(jù)流的不同部分時修改他或她的活動級別。在其中另一個實施例中,后臺協(xié)議引擎觀察活動級別中的修改并且相應(yīng)地修改或者重新生成狀態(tài)快照。如上所述,圖16概述了上述在用于狀態(tài)快照的自適應(yīng)生成的系統(tǒng)中所使用的方法的一個實施例,該系統(tǒng)包括后臺協(xié)議引擎1602、前臺協(xié)議引擎1608、協(xié)議數(shù)據(jù)流1612、活動特征1604和狀態(tài)快照1606。在另一個實施例中,上述系統(tǒng)還提供了在表示層協(xié)議數(shù)據(jù)流的實時回放期間狀態(tài)快照的自適應(yīng)產(chǎn)生。前臺協(xié)議引擎在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間將包括已經(jīng)被后臺協(xié)議引擎接收的第一多個分組和尚待被后臺協(xié)議引擎接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流的表示呈現(xiàn)給用戶。后臺協(xié)議引擎在呈現(xiàn)期間監(jiān)控用戶的活動并產(chǎn)生狀態(tài)快照。后臺協(xié)議引擎決定活動特征。后臺協(xié)議引擎根據(jù)接收第二多個分組中的至少一個分組修改狀態(tài)快照和活動特征。在個實施例中,后臺協(xié)議引擎根據(jù)監(jiān)控決定活動特征。在另個實施例中,后臺協(xié)議引擎根據(jù)活動特征維護狀態(tài)快照。在又一個實施例中,后臺協(xié)議引擎根據(jù)觀察到的活動特征變化而更新狀態(tài)快照。在有些實施例中,后臺協(xié)議引擎觀察到對活動特征的修改。在其中一個實施例中,活動特征在觀看表示層協(xié)議數(shù)據(jù)流的第一部分和觀看表示層協(xié)議數(shù)據(jù)流的第二部分之間有所變化。在其中另一個實施例中,后臺協(xié)議引擎維護更新的活動特征并相應(yīng)產(chǎn)生新的狀態(tài)快照或者修改已有的狀態(tài)快照。如前結(jié)合圖17和18所述,在有些實施例中,回放數(shù)據(jù)結(jié)構(gòu)可以用在記錄的協(xié)議數(shù)據(jù)流的回放中。另外,在有些實施例中,回放數(shù)據(jù)結(jié)構(gòu)可以用在表示層協(xié)議數(shù)據(jù)流的實時回放中。在表示層協(xié)議數(shù)據(jù)流的傳輸期間產(chǎn)生用于包括已經(jīng)被協(xié)議引擎接收的第一多個分組和尚待被協(xié)議引擎接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流的回放的回放指令的方法,包括由執(zhí)行在回放裝置上的協(xié)議引擎接收表示由執(zhí)行在服務(wù)器上的應(yīng)用程序產(chǎn)生的顯示數(shù)據(jù)的第一多個分組。協(xié)議引擎為第一多個分組中的分組進行決定以用人可感知的方式呈現(xiàn)該分組的內(nèi)容。協(xié)議引擎將該決定存儲在回放數(shù)據(jù)結(jié)構(gòu)中。在有些實施例中,協(xié)議引擎根據(jù)該分組的內(nèi)容決定顯示第一多個分組中的分組。在其中一個實施例中,協(xié)議引擎根據(jù)擁有輸入焦點的應(yīng)用程序的指示做出該決定。在其中另一個實施例中,協(xié)議引擎根據(jù)對該分組中存儲的用戶輸入類型的評估做出該決定。在其中一些實施例中,協(xié)議引擎根據(jù)對由該分組存儲的圖形更新類型的評估做出該決定。在其中其它實施例中,協(xié)議引擎根據(jù)對由該分組存儲的交互序列類型的評估做出該決定。在有些實施例中,回放數(shù)據(jù)結(jié)構(gòu)描述了如何再生第一多個分組中包含的顯示數(shù)據(jù)。在一個實施例中,回放數(shù)據(jù)結(jié)構(gòu)中存儲的指令控制著呈現(xiàn)顯示數(shù)據(jù)的過程。在一個實施例中,回放數(shù)據(jù)結(jié)構(gòu)包括用于呈現(xiàn)第一多個分組中的分組內(nèi)容的時間。在這個實施例中,回放數(shù)據(jù)結(jié)構(gòu)中包含的時間被用于呈現(xiàn)分組內(nèi)容,而不是與第一多個分組中的分組相關(guān)聯(lián)的呈現(xiàn)時間(如果有的話)。在一個實施例中,回放數(shù)據(jù)結(jié)構(gòu)在改變呈現(xiàn)時間中接受用戶輸入。在其它實施例中,回放數(shù)據(jù)結(jié)構(gòu)包含描述如何進行第一多個分組的一次或多次回放的元數(shù)據(jù)。在一個實施例中,回放數(shù)據(jù)結(jié)構(gòu)包括針對第一多個分組中的每個分組的記錄,表示相應(yīng)分組的內(nèi)容在回放期間應(yīng)該在什么相對時間點被呈現(xiàn)。在有些實施例中,元數(shù)據(jù)還包含分組開始在文件中的偏移量。在有些實施例中,隨著后臺協(xié)議引擎接收表示層協(xié)議數(shù)據(jù)流中的附加分組,后臺協(xié)議引擎產(chǎn)生附加回放數(shù)據(jù)結(jié)構(gòu)或修改已有的回放數(shù)據(jù)結(jié)構(gòu)。在一個實施例中,后臺協(xié)議引擎執(zhí)行在回放裝置上,并響應(yīng)于接收第一多個分組產(chǎn)生回放數(shù)據(jù)結(jié)構(gòu),所述第一多個分組表示由執(zhí)行在服務(wù)器上的應(yīng)用程序產(chǎn)生的顯示數(shù)據(jù)。前臺協(xié)議引擎接收第一多個分組,并且根據(jù)后臺協(xié)議引擎基本上在接收第二多個分組中的至少一個分組并根據(jù)接收的第二多個分組中的至少一個分組產(chǎn)生回放數(shù)據(jù)結(jié)構(gòu)的同時產(chǎn)生的回放數(shù)據(jù)結(jié)構(gòu),呈現(xiàn)第一多個分組。另一方面,前臺協(xié)議引擎接收第一多個分組,并且根據(jù)后臺協(xié)議引擎基本上在接收第一多個分組中的第二分組并根據(jù)接收的第一多個分組中的第二分組產(chǎn)生回放數(shù)據(jù)結(jié)構(gòu)的同時產(chǎn)生的回放數(shù)據(jù)結(jié)構(gòu),呈現(xiàn)第一多個分組。在一個實施例中,后臺協(xié)議引擎和前臺協(xié)議引擎各自接收第一多個分組。在另一個實施例中,后臺協(xié)議引擎基本與前臺協(xié)議引擎呈現(xiàn)第一多個分組的同時產(chǎn)生回放數(shù)據(jù)結(jié)構(gòu)。在一個實施例中,后臺協(xié)議引擎在回放數(shù)據(jù)結(jié)構(gòu)中存儲至少一條用于呈現(xiàn)第一多個分組中的至少一個分組的指令。在另一個實施例中,后臺協(xié)議引擎將元數(shù)據(jù)存儲在回放數(shù)據(jù)結(jié)構(gòu)中。在又一個實施例中,后臺協(xié)議引擎在回放數(shù)據(jù)結(jié)構(gòu)中存儲表示呈現(xiàn)第一多個分組中的至少一個分組的時間的記錄。前臺協(xié)議引擎根據(jù)回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)第一多個分組中的至少一個分組。在一個實施例中,前臺協(xié)議引擎不僅以可以為人感知的方式呈現(xiàn)第一多個分組中的至少一個分組,而且還將其呈送到緩沖區(qū)。在另一個實施例中,前臺協(xié)議引擎將第一多個分組中的至少一個分組呈送到緩沖區(qū)。在一個實施例中,后臺協(xié)議引擎在由服務(wù)器將表示層協(xié)議數(shù)據(jù)流傳輸?shù)娇蛻舳说钠陂g,接收表示由執(zhí)行在服務(wù)器上的應(yīng)用程序產(chǎn)生的顯示數(shù)據(jù)的第一多個分組。后臺協(xié)議引擎為第一多個分組中的至少一個分組進行決定以用人可感知的方式呈現(xiàn)該分組。后臺協(xié)議引擎將該決定存儲在回放數(shù)據(jù)結(jié)構(gòu)中。前臺協(xié)議引擎從第一多個分組中檢索至少一個分組,訪問回放數(shù)據(jù)結(jié)構(gòu),并根據(jù)回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)該至少一個分組。這些步驟重復(fù)直到服務(wù)器完成了表不層協(xié)議數(shù)據(jù)流的傳輸。在一個實施例中,服務(wù)器在表不層協(xié)議數(shù)據(jù)流的傳輸完成之前停止表示層協(xié)議數(shù)據(jù)流的傳輸。在另一個實施例中,當(dāng)表示層協(xié)議數(shù)據(jù)流中的第二多個分組被服務(wù)器產(chǎn)生和發(fā)送時,表不層協(xié)議數(shù)據(jù)流中的第一多個分組被攔截并且第一多個分組的實時回放發(fā)生。在有些實施例中,后臺協(xié)議引擎決定顯示第一多個分組中的分組并如前結(jié)合圖19所述產(chǎn)生相應(yīng)的回放數(shù)據(jù)結(jié)構(gòu)。在其它實施例中,前臺協(xié)議引擎根據(jù)如前結(jié)合圖19所述的回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)第一多個分組中的分組內(nèi)容?;剡^去看圖21,表示層協(xié)議數(shù)據(jù)流可以被呈現(xiàn)而沒有不包含任何活動的可感知的時間間隔。在有些實施例中,如前結(jié)合圖21所述,表示層協(xié)議數(shù)據(jù)流的完整記錄被呈現(xiàn)。但是,在其它實施例中,上述方法可以用來呈現(xiàn)未完整記錄的表示層協(xié)議數(shù)據(jù)流的一部分。在呈現(xiàn)包括已經(jīng)接收的第一多個分組和尚待接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流中消除不活動期間的方法,包括識別第一多個分組中的第一分組的步驟,所述第一多個分組表示顯示數(shù)據(jù)。第一多個分組中的第二分組被識別出,所述第二分組緊接在第一分組之前。決定第一分組和第二分組之間的第一時間間隔。第一時間間隔超出閥值被決定。在協(xié)議數(shù)據(jù)流從服務(wù)器到客戶端的傳輸過程中,第一多個分組的內(nèi)容被以第一分組和第二分組之間的第二時間間隔呈現(xiàn),所述第二時間間隔包含比第一時間間隔短的時間間隔。接收第二多個分組中的至少一個分組。在一個實施例中,第二多個分組中的至少一個分組在被接收時被添加到第一多個分組。為所接收的第二多個分組中的至少一個分組,重復(fù)識別第一分組和第一分組之前的第二分組和決定它們兩個之間的時間間隔是否超出閥值的步驟。在另一個實施例中,為第一多個分組中的第二分組,重復(fù)識別第一分組和第一分組之前的第二分組和決定它們兩個之間的時間間隔是否超出閥值的步驟。在有些實施例中,前面結(jié)合圖21所述的方法被用來從表示層協(xié)議數(shù)據(jù)流的一部分(例如第一多個分組)消除沒有活動的可感知的時間間隔。產(chǎn)生用于呈現(xiàn)包括已經(jīng)接收的第一多個分組和尚待接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流的回放的回放指令的方法,包括識別由表示應(yīng)用程序產(chǎn)生的顯示數(shù)據(jù)的第一多個分組中的分組存儲的輸入類型的步驟。響應(yīng)于該輸入類型,分組被標(biāo)記?;胤艛?shù)據(jù)結(jié)構(gòu)存儲了根據(jù)標(biāo)記呈現(xiàn)分組內(nèi)容的目的地。第二多個分組中的至少一個分組被接收。在一個實施例中,第二多個分組中的至少一個分組在接收之后被添加到第一多個分組。第一多個分組中的第二分組被接收。重復(fù)識別由分組存儲的輸入類型、根據(jù)輸入類型標(biāo)記分組、在回放數(shù)據(jù)結(jié)構(gòu)中存儲呈現(xiàn)目的地并接收附加分組的步驟作為新分組被接收,直到服務(wù)器完成對表示層協(xié)議數(shù)據(jù)流的傳輸。在一個實施例中,由分組存儲的輸入類型決定該分組是否將被呈現(xiàn)。在一個實施例中,分組不包含任何內(nèi)容。在有些實施例中,至少一個分組不包含任何內(nèi)容。在這些實施例中,包括至少一個不包含任何內(nèi)容的分組的時間間隔被識別出。在其中一些實施例中,該時間間隔將不會被呈現(xiàn)。在其中一個實施例中,如前結(jié)合圖30A-D和圖31所說明的空分組類型被接收并被標(biāo)識為不包含任何數(shù)據(jù)的分組。在有些實施例中,輸入類型指來自特定類型的輸入裝置的輸入,包括但不限于鍵盤、鼠標(biāo)、麥克風(fēng)或攝像頭。在一個實施例中,識別輸入類型的步驟還包括將輸入類型識別為來自輸入裝置的輸入。在另一個實施例中,識別輸入類型的步驟還包括將輸入類型識別為鍵盤輸入。在其它實施例中,輸入類型與輸入裝置無關(guān)。在其中一種實施例中,輸入類型被識別為命令。在一個實施例中,該方法消除了不包含任何有意義活動的可感知的時間間隔。在這個實施例中,由策略將特定類型的輸入識別為有意義或無意義。在有些實施例中,策略可以被硬編碼到協(xié)議引擎。在其它實施例中,管理員配置該策略。在有些實施例中,如果分組不包含任何內(nèi)容,協(xié)議引擎就將該分組識別為無意義。在其中一些實施例中,該分組表示沒有任何用戶活動發(fā)生而要被記錄到第一多個分組中的分組中的時間間隔。在其中一個實施例中,協(xié)議引擎在回放數(shù)據(jù)結(jié)構(gòu)中存儲以任何無意義分組不以可感知方式呈現(xiàn)的方式呈現(xiàn)第一多個分組中的各個分組的目的地。在另一個實施例中,協(xié)議引擎可以產(chǎn)生過去的時間沒有活動的指示。例如,表示給觀眾的表示層協(xié)議數(shù)據(jù)流的時間線可以被更新以反映那段時間已經(jīng)過去而顯示數(shù)據(jù)沒有發(fā)生變化。在其中又一個實施例中,協(xié)議引擎使用上述空分組類型將分組識別為無意義。在有些實施例中,上述用于消除所記錄的表示層協(xié)議數(shù)據(jù)流中的不包含任何有意義活動的時間周期的方法還被用來消除在表示層協(xié)議數(shù)據(jù)流的一部分(例如,第一多個分組)中不包含任何有意義活動的時間周期。如圖22所示,其中描述了其內(nèi)容根據(jù)回放數(shù)據(jù)結(jié)構(gòu)被呈現(xiàn)的重新生成的記錄流的一個實施例,在這個實施例中根據(jù)回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)部分協(xié)議數(shù)據(jù)流,允許去除不包含任何有意義活動的時間間隔(如圖22中的白框和條紋框所示),它包括不包含任何活動的時間間隔。這個呈現(xiàn)向用戶提供了表示層協(xié)議數(shù)據(jù)流中的第一多個分組的更有意義的再生。在呈現(xiàn)包括已經(jīng)接收的第一多個分組和尚待接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流中去除不包含任何有意義活動的期間的方法,包括決定第一多個分組中標(biāo)記的分組和其前面最接近的標(biāo)記的分組之間的第一時間間隔的步驟,所述第一多個分組表示顯示數(shù)據(jù)。做出決定為該第一時間間隔超出閥值。在協(xié)議數(shù)據(jù)流從服務(wù)器到客戶端的傳輸期間,用標(biāo)記的分組和它前面最接近的標(biāo)記的分組之間的第二時間間隔呈現(xiàn)第一多個分組的內(nèi)容,所述第二時間間隔包括比第一時間間隔短的時間間隔??赡芙邮盏诙鄠€分組中的至少一個分組??赡芙邮盏谝欢鄠€分組中的第二個分組。新接收的分組可以被添加到第一多個分組。決定第一時間間隔超出閾值和用第二時間間隔呈現(xiàn)第一多個分組的內(nèi)容的步驟被重復(fù),直到服務(wù)器完成表示層協(xié)議數(shù)據(jù)流的傳輸。在一個實施例中,第一多個分組的內(nèi)容被以標(biāo)記的分組和其前面的分組之間的第二時間間隔呈現(xiàn),所述第二時間間隔包括比第一時間間隔短的時間間隔。在另一個實施例中,第一多個分組的內(nèi)容被以標(biāo)記的分組和該標(biāo)記的分組后面的分組之間的第二時間間隔呈現(xiàn),所述第二時間間隔包括短于第一時間間隔的時間間隔。在有些實施例中,第一多個分組的內(nèi)容被使用如上結(jié)合圖28所述方法呈現(xiàn)。如前結(jié)合圖24所述,用于在呈現(xiàn)記錄會話中去除圖形更新的方法在呈現(xiàn)會話的一部分時也去除圖形更新,例如通過去除包括表示層協(xié)議數(shù)據(jù)流的子集的第一多個分組中的圖形更新。如同結(jié)合圖25所述,可以識別出循環(huán)更新并做出決定不以人可感知的方式呈現(xiàn)循環(huán)更新。同樣,這些方法可以識別出部分表示層協(xié)議數(shù)據(jù)流中的循環(huán)更新。在呈現(xiàn)包括已經(jīng)接收的第一多個分組和尚待接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流中去除圖形更新的方法,包括識別出表示由應(yīng)用程序產(chǎn)生的顯示數(shù)據(jù)的第一多個分組中包含第一圖形更新的分組的步驟。受該第一圖形更新影響的屏幕區(qū)域被確定。屏幕區(qū)域在第一圖形更新之后的狀態(tài)指示以及該屏幕區(qū)域的位置被存儲。識別出在時間間隔內(nèi)影響該屏幕區(qū)域的第二圖形更新。根據(jù)屏幕區(qū)域在第二圖形更新之后的狀態(tài)是否不同于該屏幕區(qū)域在第一圖形更新之后的狀態(tài),回放數(shù)據(jù)結(jié)構(gòu)指示用于呈現(xiàn)包括影響該屏幕區(qū)域的第二圖形更新的第一多個分組中第二分組的目的地?;胤艛?shù)據(jù)結(jié)構(gòu)根據(jù)屏幕區(qū)域在第二圖形更新后的狀態(tài)是否不同于該屏幕區(qū)域在第一圖形更新后的狀態(tài),指示用于與包括影響該屏幕區(qū)域的第二圖形更新的第一多個分組中第二分組有關(guān)地呈現(xiàn)的時間間隔。在一個實施例中,識別出多個分組中包含的圖形更新。在另一個實施例中,根據(jù)由識別出的多個分組中的各個分組存儲的圖形更新受影響的屏幕區(qū)域被確定。在又一實施例中,存儲受該圖形更新影響的屏幕區(qū)域的副本。在又一實施例中,時間間隔被定義以接近人類級別循環(huán)周期的用戶上限。在進一步的實施例中,回放數(shù)據(jù)結(jié)構(gòu)表明以可感知方式呈現(xiàn)分組內(nèi)容并將其呈送到緩沖區(qū)。在又另一實施例中,回放數(shù)據(jù)結(jié)構(gòu)表明將分組內(nèi)容呈送到緩沖區(qū)。在有些實施例中,后臺協(xié)議引擎將這些指示存儲在回放數(shù)據(jù)結(jié)構(gòu)中。在呈現(xiàn)包括已經(jīng)接收的第一多個分組和尚待接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流中去除圖形更新的方法,包括識別第一多個分組中包含第一圖形更新的分組的步驟,第一多個分組表示由應(yīng)用程序產(chǎn)生的的顯示數(shù)據(jù)。受第一圖形更新影響的屏幕區(qū)域被決定。存儲屏幕區(qū)域在第一圖形更新之后的狀態(tài)指示和該屏幕區(qū)域的位置。識別出在時間間隔內(nèi)影響該屏幕區(qū)域的第二圖形更新。根據(jù)屏幕區(qū)域在第二圖形更新之后的狀態(tài)是否不同于該屏幕區(qū)域在第一圖形更新之后的狀態(tài),回放數(shù)據(jù)結(jié)構(gòu)指示用于呈現(xiàn)包括影響該屏幕區(qū)域的第二圖形更新的第二多個分組中分組的目的地。根據(jù)屏幕區(qū)域在第二圖形更新后的狀態(tài)是否不同于該屏幕區(qū)域在第一圖形更新后的狀態(tài),回放數(shù)據(jù)結(jié)構(gòu)指示用于與包括影響該屏幕區(qū)域的第二圖形更新的第二多個分組中分組有關(guān)地呈現(xiàn)的時間間隔。在一個實施例中,識別出第一多個分組中包含的圖形更新。在另一個實施例中,根據(jù)由識別出的多個分組中的各個分組存儲的圖形更新受影響的屏幕區(qū)域被確定。在又一實施例中,存儲受該圖形更新影響的屏幕區(qū)域的副本。在又一實施例中,時間間隔被定義以接近人類級別循環(huán)周期的用戶上限。在進一步的實施例中,回放數(shù)據(jù)結(jié)構(gòu)表明以可感知方式呈現(xiàn)分組內(nèi)容并將其呈送到緩沖區(qū)。在又另一實施例中,回放數(shù)據(jù)結(jié)構(gòu)表明將分組內(nèi)容呈送到緩沖區(qū)。在有些實施例中,后臺協(xié)議引擎將這些指示存儲在回放數(shù)據(jù)結(jié)構(gòu)中。如圖26所示,用于去除交互序列的方法可以用于表示層協(xié)議數(shù)據(jù)流。在有些實施例中,如上所述,該方法被用于表示層協(xié)議數(shù)據(jù)流的完整記錄。但在其它實施例中,該方法被用于表示層協(xié)議數(shù)據(jù)流的一部分,例如包括表示層協(xié)議數(shù)據(jù)流的分組子集的第一多個分組。在呈現(xiàn)包括已經(jīng)接收的第一多個分組和尚待接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流中去除交互序列的方法,包括根據(jù)策略識別出由第一多個分組中的至少一個分組表示的交互序列的開始的步驟?;胤艛?shù)據(jù)結(jié)構(gòu)表明該交互序列應(yīng)該呈現(xiàn)到緩沖區(qū)。識別出交互序列的結(jié)束。交互序列的被識別的開始之前的分組和交互序列的被識別的結(jié)束之后的分組之間的第一時間間隔被識別出?;胤艛?shù)據(jù)結(jié)構(gòu)指示呈現(xiàn)比第一時間間隔短的第二時間間隔。在呈現(xiàn)包括已經(jīng)接收的第一多個分組和尚待接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流中去除交互序列的另一種方法,包括根據(jù)策略識別出由第一多個分組中的至少一個分組表示的交互序列的開始的步驟?;胤艛?shù)據(jù)結(jié)構(gòu)表明該交互序列應(yīng)該呈現(xiàn)到緩沖區(qū)。接收第二多個分組中的分組。識別出由第二多個分組中接收的分組所表示的交互序列的結(jié)束。交互序列的被識別的開始之前的分組和交互序列的被識別的結(jié)束之后的分組之間的第一時間間隔被識別出?;胤艛?shù)據(jù)結(jié)構(gòu)指示呈現(xiàn)比第一時間間隔要短的第二時間間隔。在一個實施例中,通過識別可視標(biāo)記,識別出交互序列的開始。在一個實施例中,可視標(biāo)記包括以相同方式顯示給所有會話的憑證窗口。在另一個實施例中,可視標(biāo)記包括由空白屏幕然后是由桌面背景對憑證窗口的代替。在一個實施例中,可視標(biāo)記包括可識別圖標(biāo)的顯示。在有些實施例中,通過確定交互序列的開始時間而識別出交互序列的開始。在其中一個實施例中,由組件來檢測交互序列中事件的開始時間。在其中另一個實施例中,該組件檢測登錄序列的開始時間。在其中其它實施例中,該組件檢測注銷序列的開始時間。在一個實施例中,對交互序列的開始的識別響應(yīng)于以輸入焦點識別窗口。在識別出的交互序列不應(yīng)以可感知方式呈現(xiàn)的實施例中,交互序列被呈送到緩沖區(qū)。將交互序列呈送到緩沖區(qū)導(dǎo)致所要呈現(xiàn)的用戶不能感知交互序列。對于由策略或用戶將交互序列歸為無意義的實施例來說,這個呈現(xiàn)導(dǎo)致了無意義交互序列的消除。在有些實施例中,通過識別可視標(biāo)記識別出交互序列的結(jié)束。在其它實施例中,通過確定交互序列的結(jié)束時間識別出交互序列的結(jié)束。在其中一個實施例中,由組件檢測出交互序列中事件的結(jié)束時間。在另一個實施例中,該組件檢測出登錄序列的結(jié)束時間。在其中其它實施例中,該組件檢測出注銷序列的結(jié)束時間。在另一個實施例中,識別交互序列的結(jié)束響應(yīng)于以輸入焦點識別窗口。在有些實施例中,交互序列包括對應(yīng)用的使用。在其中一個實施例中,由策略識別出包括應(yīng)用的使用的交互序列不應(yīng)以可感知方式呈現(xiàn)。在一個實施例中,這些應(yīng)用包括但不限于word處理文檔。在其中一個實施例中,通過識別出有輸入焦點的應(yīng)用而識別出交互序列的開始。當(dāng)分組的內(nèi)容表示有焦點的窗口時,就確定了可靠創(chuàng)建該窗口的進程的應(yīng)用。在一個實施例中,表不有輸入焦點的窗口的分組的內(nèi)容包括表不輸入焦點的變化的窗口通知消息。如果可靠的應(yīng)用識別出不應(yīng)以可感知方式呈現(xiàn)的交互序列的開始,就在回放數(shù)據(jù)結(jié)構(gòu)中存儲指示以將該交互序列呈送到緩沖區(qū)。通過識別出不與交互序列的應(yīng)用相關(guān)聯(lián)的進程所擁有的窗口獲得輸入焦點而識別出交互序列的結(jié)束。在一個實施例中,第一時間間隔與交互序列相關(guān)聯(lián)。在交互序列自身不呈現(xiàn)的實施例中以可感知方式呈現(xiàn)與交互序列相關(guān)聯(lián)的時間間隔導(dǎo)致用戶能夠感知到在一段時間內(nèi)沒有顯示數(shù)據(jù)呈現(xiàn)并且用戶在交互序列之后的分組的內(nèi)容呈現(xiàn)之前要等待該段時間間隔。一個實施例通過呈現(xiàn)較短的時間間隔代替原始時間間隔而去除與交互序列相關(guān)聯(lián)的時間間隔。在有些實施例中,協(xié)議引擎呈現(xiàn)第一多個分組中的至少一個分組的內(nèi)容,向用戶提供第一多個分組的再生。在其中一些實施例中,協(xié)議引擎自動更改呈現(xiàn)至少一個分組的內(nèi)容之間的時間間隔,導(dǎo)致上下文相關(guān)的時間卷曲的回放。在這些實施例中,呈現(xiàn)接近于用戶理解呈現(xiàn)給用戶的顯示數(shù)據(jù)的能力。在一個實施例中,當(dāng)被策略所定義時,當(dāng)協(xié)議引擎確定分組內(nèi)容表示的顯示數(shù)據(jù)具有被增加級別的復(fù)雜度或重要性時,呈現(xiàn)分組內(nèi)容之間的時間間隔增達。在另一個實施例中,當(dāng)被策略所定義時,當(dāng)協(xié)議引擎確定分組內(nèi)容表示的顯示數(shù)據(jù)具有被降低級別的復(fù)雜度或重要性時,呈現(xiàn)分組內(nèi)容之間的時間間隔減小。在這些實施例中,協(xié)議引擎接近用戶理解顯示數(shù)據(jù)的能力,并且呈現(xiàn)內(nèi)容以或者用更慢地給用戶時間去理解該呈現(xiàn),或者在用戶需要較少的理解時間時更快地呈現(xiàn)該內(nèi)容。在有些實施例中,如前結(jié)合圖27所述,用于呈現(xiàn)記錄的計算機會話的方法提供自動的時間卷曲回放。這些方法還在實時表示層協(xié)議數(shù)據(jù)流的呈現(xiàn)期間提供自動的時間卷曲回放,在實時表示層協(xié)議數(shù)據(jù)流中數(shù)據(jù)流所表示的會話的記錄是不完整的。實時呈現(xiàn)包括已經(jīng)由后臺協(xié)議引擎接收的第一多個分組和由后臺協(xié)議引擎尚待接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流中進行自動時間卷曲回放的方法,包括由后臺協(xié)議引擎接收表示顯示數(shù)據(jù)的第一多個分組的步驟。后臺協(xié)議引擎決定第一多個分組中的至少一些分組表示的復(fù)雜度的量度。后臺協(xié)議引擎識別出第一多個分組中至少一些分組之間的時間間隔。后臺協(xié)議引擎根據(jù)記錄會話中的第一多個分組中的至少一些分組所表示的復(fù)雜度量度修改時間間隔。后臺協(xié)議引擎將修改后的時間間隔存儲在回放數(shù)據(jù)結(jié)構(gòu)中。前臺協(xié)議引擎在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間根據(jù)回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)第一多個分組。在有些實施例中,圖27中所述方法的步驟也被用來在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間根據(jù)回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)第一多個分組。在其中一些實施例中,協(xié)議引擎通過識別出鍵盤輸入中可能的鍵入序列而決定復(fù)雜度的量度。在一個實施例中,協(xié)議引擎檢查涉及的至少一種類型的鍵以識別鍵盤輸入中可能的鍵入序列。在另一個實施例中,協(xié)議引擎檢查呈現(xiàn)的至少一個符號的序列以完成對鍵盤輸入中可能的鍵入序列的啟發(fā)式漸近。在其中一些實施例中,協(xié)議引擎存儲由鍵特征確定的鍵歸類。鍵特征包括但不限于可打印或不可打印字符、空格、導(dǎo)航鍵或功能鍵,并且它們這些特征的組合。在一個實施例中,協(xié)議引擎決定包括可打印字符和偶爾出現(xiàn)的導(dǎo)航鍵的輸入段構(gòu)成常規(guī)輸入,而主要包括不可見鍵的輸入段不構(gòu)成常規(guī)輸入。在一個實施例中,協(xié)議引擎根據(jù)識別出的空格數(shù)量確定復(fù)雜度的量度。在這個實施例中,協(xié)議引擎包括對word處理的定義,該定義表示在典型鍵入模式中平均約每5-8個字符出現(xiàn)空格鍵。在一個實施例中,協(xié)議引擎使用不可打印字符的出現(xiàn)來決定復(fù)雜度的量度。在另一個實施例中,協(xié)議引擎訪問擊鍵序列以識別在時間上一起出現(xiàn)的非空格可打印字符的序列。在這個實施例中,協(xié)議引擎包括比較擊鍵序列和字典以識別有效單詞并確定與用戶理解有效單詞相對無效單詞的能力有關(guān)的復(fù)雜度量度的功能。在另一個實施例中,協(xié)議引擎決定分組內(nèi)容包含呈現(xiàn)字符的命令。在這個實施例中,協(xié)議引擎使用字符決定顯示用戶是否表示鍵入的用戶活動。在這個實施例中,如果字符呈現(xiàn)速率接近鍵盤輸入速度但帶有一個小小的延遲,很可能是擊鍵正在直接產(chǎn)生字符,因而極可能是用戶正在輸入。在一個實施例中,協(xié)議引擎將輸入的鍵和產(chǎn)生的字符關(guān)聯(lián)在一起。在另一個實施例中,協(xié)議引擎確定呈現(xiàn)的字符的空間序列(從左至后,從右至左)以確定用戶正在鍵入。在一個實施例中,協(xié)議引擎根據(jù)分析該多個分組的內(nèi)容的結(jié)果并識別這些內(nèi)容所表示的模式和活動而決定復(fù)雜度的量度。在其它實施例中,協(xié)議引擎根據(jù)對鼠標(biāo)輸入類型的識別而決定復(fù)雜度的量度。在一個實施例中,協(xié)議引擎決定表示鼠標(biāo)點擊的鼠標(biāo)輸入導(dǎo)致需要較慢的呈現(xiàn)速率以讓用戶理解,尤其是跟隨在一系列鍵入之后的點擊。在另一個實施例中,協(xié)議引擎決定不表示鼠標(biāo)點擊的鼠標(biāo)輸入不影響用戶理解顯示數(shù)據(jù)的能力,因而不影響復(fù)雜度的量度。在其它實施例中,協(xié)議引擎根據(jù)識別圖形更新復(fù)雜度的啟發(fā)式漸近決定復(fù)雜度的量度。在一個實施例中,協(xié)議引擎根據(jù)(但不限于)正在被更新的區(qū)域大小、由圖形命令改變的區(qū)域的面積大小、對單獨區(qū)域的更新的歷史頻率、循環(huán)圖形命令、圖形命令的數(shù)量、圖形命令的頻率、其內(nèi)容包含圖形命令的相鄰分組之間的時間間隔或者圖形更新的類型識別出圖形更新復(fù)雜度的啟發(fā)式漸近。在一種協(xié)議引擎識別出圖形更新的低復(fù)雜度的實施例中,協(xié)議引擎確定包含圖形更新的分組所表示的低復(fù)雜度的量度。在協(xié)議引擎識別出圖形更新的高復(fù)雜度量度的實施例中,協(xié)議弓I擎確定包含圖形更新的分組表示的高復(fù)雜度的量度。在多個分組中至少有一些分組的內(nèi)容表示與高復(fù)雜度量度相關(guān)聯(lián)的顯示數(shù)據(jù)的實施例中,協(xié)議引擎增加分組間的時間間隔以允許用戶有增加的呈現(xiàn)時間理解呈現(xiàn)的顯示數(shù)據(jù)。在多個分組中至少有一些分組的內(nèi)容表示與低復(fù)雜度量度相關(guān)聯(lián)的顯示數(shù)據(jù)的實施例中,協(xié)議引擎縮短分組間的時間間隔以反映用戶需要減少的時間來理解所呈現(xiàn)的顯示數(shù)據(jù)。在一個實施例中,用戶需要所呈現(xiàn)的分組內(nèi)容之間具有不同于由協(xié)議引擎所呈現(xiàn)的時間量。在這個實施例中,用戶修改時間間隔以反映用戶理解呈現(xiàn)的顯示數(shù)據(jù)所需的時間量。在有些實施例中,協(xié)議弓I擎還識別出多個分組中至少一些分組與該多個分組中其它分組之間的時間間隔,修改在那些分組集合之間識別的時間間隔。在有些實施例中,協(xié)議引擎識別出與第一多個分組中的分組相關(guān)聯(lián)的第一標(biāo)記。在一個實施例中,分組包括標(biāo)記。在另一個實施例中,所記錄的會話包括標(biāo)記。在一個實施例中,顯示數(shù)據(jù)的呈現(xiàn)的用戶定義標(biāo)記。在另一個實施例中,協(xié)議引擎定義標(biāo)記。在協(xié)議引擎識別出標(biāo)記的實施例中,協(xié)議引擎根據(jù)第一標(biāo)記修改時間間隔。在一個實施例中,協(xié)議引擎增加時間間隔,該時間間隔以向顯示數(shù)據(jù)的呈現(xiàn)的用戶提供更多時間以理解與第一標(biāo)記相關(guān)聯(lián)的分組的內(nèi)容。在其它實施例中,協(xié)議引擎識別出第二分組中的第二標(biāo)記。在這個實施例中,協(xié)議弓I擎根據(jù)第一標(biāo)記和第二標(biāo)記之間的距離修改時間間隔。在這個實施例中,協(xié)議弓I擎為理解所標(biāo)記的分組的內(nèi)容表示的顯示數(shù)據(jù)提供增加的時間,并為理解未標(biāo)記的分組的內(nèi)容表示的顯示數(shù)據(jù)提供減少的時間。在一個實施例中,用戶為用戶感興趣的顯示數(shù)據(jù)定義標(biāo)記,當(dāng)被標(biāo)記所決定時,協(xié)議引擎為用戶感興趣的顯示數(shù)據(jù)呈現(xiàn)額外的時間,而為用戶不感興趣的顯示數(shù)據(jù)呈現(xiàn)減少的時間。在一個實施例中,協(xié)議引擎識別多個分組中至少一些分組中的第一標(biāo)記,所述標(biāo)記表示該多個分組中至少一些分組中的起始分組。協(xié)議引擎根據(jù)第一標(biāo)記修改時間間隔。協(xié)議引擎識別出多個分組中至少一些分組中的第二分組的第二標(biāo)記,所述第二標(biāo)記表示該多個分組中至少一些分組中的結(jié)束分組,協(xié)議引擎還根據(jù)第一標(biāo)記和第二標(biāo)記之間的時間間隔修改時間間隔。在一個實施例中,協(xié)議引擎還根據(jù)與修改后的時間間隔有關(guān)的回放數(shù)據(jù)結(jié)構(gòu)指令呈現(xiàn)多個分組。在另一個實施例中,由各自的前臺協(xié)議引擎呈現(xiàn)多個分組。在有些實施例中,確定了有應(yīng)用的記錄交互需要增加的呈現(xiàn)時間以向所要呈現(xiàn)的用戶提供增加的時間理解所呈現(xiàn)的顯示數(shù)據(jù)。在其中一些實施例中,確定了需要增加的時間的應(yīng)用包括比不需要增加的時間的應(yīng)用更重要的應(yīng)用。在其中一個實施例中,用戶做出該決定。在其中另一個實施例中,由策略做出該決定。在其中又另一個實施例中,協(xié)議引擎包括對需要增加的時間的應(yīng)用的定義。
如結(jié)合圖28所述,在呈現(xiàn)記錄的計算機會話中,一種方法可以根據(jù)識別出的應(yīng)用提供自動的時間卷曲回放。同樣,該方法在呈現(xiàn)一部分未完全記錄的表示層協(xié)議數(shù)據(jù)會話或者正在被記錄中的表示層協(xié)議數(shù)據(jù)會話中根據(jù)識別出的應(yīng)用提供自動的時間卷曲回放。實時呈現(xiàn)包括已經(jīng)接收的第一多個分組和尚待接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流中的自動時間卷曲回放的方法包括接收表示顯示數(shù)據(jù)的第一多個分組的步驟。識別出第一多個分組中其內(nèi)容表不擁有焦點的窗口的第一分組,所述窗口表不應(yīng)用。識別出第一多個分組中的第二分組(其內(nèi)容在第一分組內(nèi)容的呈現(xiàn)之前呈現(xiàn))和第一多個分組中的第三分組(其內(nèi)容在第一分組內(nèi)容的呈現(xiàn)之后呈現(xiàn))之間的時間間隔。根據(jù)所表示的應(yīng)用修改識別出的時間間隔。在表示層協(xié)議流從第一裝置到第二裝置的傳輸期間,根據(jù)該修改呈現(xiàn)第一多個分組中的至少一個分組。在一個實施例中,對識別出的時間間隔的修改包括對識別出的時間間隔的增加。在另一個實施例中,對識別出的時間間隔的修改包括對識別出的時間間隔的減少。在又一個實施例中,第一多個分組中的至少一個分組被呈送到緩沖區(qū)。在又一個實施例中,第一多個分組中的至少一個分組不僅被呈送到緩沖區(qū)而且還被以可感知方式呈現(xiàn)。如前結(jié)合圖29所述,系統(tǒng)可以在呈現(xiàn)記錄的計算機會話中提供自動的時間卷曲回放。這些系統(tǒng)還可以在呈現(xiàn)包括已經(jīng)被協(xié)議引擎接收的第一多個分組和尚待被協(xié)議引擎接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流中提供自動的時間卷曲回放。根據(jù)接收第一多個分組產(chǎn)生回放數(shù)據(jù)結(jié)構(gòu)的協(xié)議引擎,在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間根據(jù)產(chǎn)生的回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)第一多個分組中的至少一個分組。在一個實施例中,協(xié)議引擎在回放數(shù)據(jù)結(jié)構(gòu)中存儲至少一個用于呈現(xiàn)第一多個分組的指令。在另一實施例中,協(xié)議引擎將元數(shù)據(jù)存儲在回放數(shù)據(jù)結(jié)構(gòu)中。在又一實施例中,協(xié)議引擎不僅以可感知方式呈現(xiàn)第一多個分組中的至少一個分組,而且還將其呈送到緩沖區(qū)。在又一個實施例中,協(xié)議引擎將第一多個分組中的至少一個分組呈送到緩沖區(qū)。在進一步的實施例中,第二協(xié)議弓I擎根據(jù)產(chǎn)生的回放數(shù)據(jù)結(jié)構(gòu)呈現(xiàn)第一多個分組中的至少一個分組。在有些實施例中,表示涉及向客戶端或另一服務(wù)器提供表示層協(xié)議數(shù)據(jù)的服務(wù)器。在其中一個實施例中,該服務(wù)器執(zhí)行應(yīng)用并向客戶端或另一服務(wù)器提供產(chǎn)生的應(yīng)用輸出數(shù)據(jù)。在其中另一個實施例中,服務(wù)器提供對與資源(例如多個應(yīng)用、桌面環(huán)境或其它計算環(huán)境)相關(guān)或由該資源產(chǎn)生的表示層協(xié)議數(shù)據(jù)的訪問。在其中又一個實施例中,服務(wù)器提供會話(例如資源的執(zhí)行)的表示層協(xié)議數(shù)據(jù),會話執(zhí)行在虛擬機中,該虛擬機執(zhí)行在管理程序中,該管理程序執(zhí)行在終端服務(wù)會話中,該終端服務(wù)會話執(zhí)行在服務(wù)器上。在其中又一個實施例中,執(zhí)行提供對會話的訪問的虛擬機的服務(wù)器將表示層協(xié)議數(shù)據(jù)發(fā)送到第二服務(wù)器,該第二服務(wù)器執(zhí)行終端服務(wù)會話并將接收的數(shù)據(jù)轉(zhuǎn)發(fā)到客戶端。在其中又一個實施例中,該服務(wù)器將執(zhí)行在虛擬機中的會話的表示層協(xié)議數(shù)據(jù)提供給擁有表示層協(xié)議棧并將數(shù)據(jù)轉(zhuǎn)發(fā)給客戶端的第二服務(wù)器。在表示層協(xié)議會話記錄正在被記錄時觀看它的能力增強了用于先前記錄的會話的回放的系統(tǒng)和方法。它增強了這樣的系統(tǒng)和方法作為市場領(lǐng)導(dǎo)監(jiān)控和監(jiān)視解決方案的地位,并提供了進入支持/幫助市場的重要途徑。上述系統(tǒng)和方法可以被提供為實體化在一種或多種制造物品之上或之內(nèi)的一個或多個計算機可讀程序。制造物品可以是軟盤、硬盤、光盤、數(shù)字多功能光盤、閃存卡、PROM、RAM、ROM或磁帶。一般來說,該計算機可讀程序可以用任何編程語言實現(xiàn)??梢允褂玫恼Z言的一些例子有C、C++、C#或JAVA。該軟件程序可以作為目標(biāo)代碼被存儲在一個或多個制造物品之上或之內(nèi)。已經(jīng)說明了用于表示層協(xié)議數(shù)據(jù)的記錄和實時回放的方法和系統(tǒng)的特定實施例,現(xiàn)在本領(lǐng)域的技術(shù)人員將明了也可以使用引入了本發(fā)明的概念的其它實施例。因此,本發(fā)明不應(yīng)受限于特定實施例,而是僅受下面的權(quán)利要求的精神和范圍限制。
權(quán)利要求
1.一種用于狀態(tài)快照的自適應(yīng)產(chǎn)生的方法,其使得能夠在從應(yīng)用服務(wù)器發(fā)送的表示層協(xié)議數(shù)據(jù)流的實時回放期間實時搜索,所述應(yīng)用服務(wù)器用于(i)為客戶端執(zhí)行應(yīng)用以及(ii)將所述應(yīng)用生成的輸出顯示流式傳輸?shù)剿隹蛻舳?,該方法包括下列步驟: Ca)在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間,由前臺協(xié)議引擎呈現(xiàn)包括已經(jīng)被后臺協(xié)議引擎接收的第一多個分組和尚待被所述后臺協(xié)議引擎接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流; (b)由所述后臺協(xié)議引擎在呈現(xiàn)期間監(jiān)控用戶的活動; (c)由所述后臺協(xié)議引擎根據(jù)對所述活動的監(jiān)控開發(fā)出活動特征; Cd)由所述后臺協(xié)議引擎收集和存儲與用戶的活動相關(guān)的數(shù)據(jù); Ce)由所述后臺協(xié)議引擎根據(jù)所收集的與用戶的活動相關(guān)的數(shù)據(jù)修改所述活動特征; Cf)由所述后臺協(xié)議引擎根據(jù)所述活動特征產(chǎn)生所述后臺協(xié)議引擎的至少一個狀態(tài)快昭.(g)由所述后臺協(xié)議引擎根據(jù)接收所述第二多個分組中的至少一個分組修改所述至少一個狀態(tài)快照; (h)由所述前臺協(xié)議引擎識別所述至少一個狀態(tài)快照;以及 (i)當(dāng)所述后臺協(xié)議引擎在所述表示層協(xié)議數(shù)據(jù)流的傳輸期間接收所述第二多個分組時,由所述前臺協(xié)議引擎顯示來自所述至少一個狀態(tài)快照的表示層協(xié)議數(shù)據(jù)流。
2.根據(jù)權(quán)利要求1所述的方法,其中步驟(b)還包括由所述用戶識別不活動期間。
3.根據(jù)權(quán)利要求1所述的方法,其中步驟(c)還包括為所述用戶的使用模式開發(fā)出活動特征。
4.根據(jù)權(quán)利要求1所述的方法,其中步驟(d)還包括決定延長一個或多個狀態(tài)快照之間的間隔。
5.根據(jù)權(quán)利要求1所述的方法,其中步驟(d)還包括決定縮短一個或多個狀態(tài)快照之間的間隔。
6.根據(jù)權(quán)利要求1所述的方法,其中還包括由所述后臺協(xié)議引擎根據(jù)所述活動特征決定去除所述至少一個狀態(tài)快照的步驟。
7.根據(jù)權(quán)利要求1所述的方法,其中還包括由所述后臺協(xié)議引擎根據(jù)所述活動特征決定添加至少一個狀態(tài)快照的步驟。
8.根據(jù)權(quán)利要求1所述的方法,其中步驟(c)還包括識別搜索概率的統(tǒng)計分布。
9.根據(jù)權(quán)利要求8所述的方法,其中步驟(d)還包括根據(jù)所述搜索概率的統(tǒng)計分布產(chǎn)生所述至少一個狀態(tài)快照的步驟。
10.一種用于狀態(tài)快照的自適應(yīng)產(chǎn)生的系統(tǒng),其使得能夠在從應(yīng)用服務(wù)器發(fā)送的表示層協(xié)議數(shù)據(jù)流的實時回放期間實時搜索,所述應(yīng)用服務(wù)器用于(i)為客戶端執(zhí)行應(yīng)用以及(ii)將所述應(yīng)用生成的輸出顯示流式傳輸?shù)剿隹蛻舳耍鱿到y(tǒng)包括: 在計算機器上執(zhí)行的前臺協(xié)議引擎,用于 在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間,呈現(xiàn)包括已經(jīng)被后臺協(xié)議引擎接收的第一多個分組和尚待被所述后臺協(xié)議引擎接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流; 識別至少一個狀態(tài)快照;以及當(dāng)所述后臺協(xié)議引擎在所述表示層協(xié)議數(shù)據(jù)流的傳輸期間接收所述第二多個分組時,顯示來自所述至少一個狀態(tài)快照的表示層協(xié)議數(shù)據(jù)流;在所述計算機器上執(zhí)行的所述后臺協(xié)議引擎,用于 在呈現(xiàn)期間監(jiān)控用戶的活動; 根據(jù)對所述活動的監(jiān)控開發(fā)出活動特征; 收集和存儲與用戶的活動相關(guān)的數(shù)據(jù); 根據(jù)所述活動特征產(chǎn)生所述后臺協(xié)議引擎的狀態(tài)快照; 根據(jù)所收集的與用戶的活動相關(guān)的數(shù)據(jù)修改所述活動特征;以及活動特征,其由所述后臺協(xié)議引擎開發(fā); 其中所述后臺協(xié)議引擎根據(jù)接收所述第二多個分組中的至少一個分組修改所述狀態(tài)快照和所述活動特征。
11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述后臺協(xié)議引擎根據(jù)所述監(jiān)控決定所述活動特征。
12.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述后臺協(xié)議引擎根據(jù)所述活動特征維護所述狀態(tài)快照。
13.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述活動特征識別使用模式。
14.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述狀態(tài)快照還包括描述某個時間點上屏幕狀態(tài)的數(shù)據(jù)結(jié)構(gòu)。
15.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述狀態(tài)快照還包括維護可視界面的狀態(tài)。
16.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述狀態(tài)快照還包括維護離屏界面的狀態(tài)。
17.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述狀態(tài)快照還包括維護繪畫對象的狀態(tài)。
18.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述狀態(tài)快照還包括維護調(diào)色板的狀態(tài)。
19.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述狀態(tài)快照還包括維護緩存對象的狀態(tài)。
20.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述狀態(tài)快照還包括維護緩沖區(qū)的狀態(tài)。
21.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述前臺協(xié)議引擎還包括產(chǎn)生所述第一多個分組的以呈現(xiàn)給用戶的實時可感知表示。
22.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述前臺協(xié)議引擎還包括產(chǎn)生所述第一多個分組的以呈現(xiàn)給用戶的實時可視表示。
23.根據(jù)權(quán)利要求10所述的系統(tǒng),其中所述前臺協(xié)議引擎還包括產(chǎn)生所述第一多個分組的以呈現(xiàn)給用戶的實時可聽表示。
24.一種具有體現(xiàn)在其上的以非暫時方式存儲的計算機可讀指令的制品,所述計算機可讀指令用于狀態(tài)快照的自適應(yīng)產(chǎn)生,其使得能夠在從應(yīng)用服務(wù)器發(fā)送的表示層協(xié)議數(shù)據(jù)流的實時回放期間實時搜索,所述應(yīng)用服務(wù)器用于(i)為客戶端執(zhí)行應(yīng)用以及(ii)將所述應(yīng)用生成的輸出顯示流式傳輸?shù)剿隹蛻舳?,該制品包? 用于在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間,使得前臺協(xié)議引擎呈現(xiàn)包括已經(jīng)被后臺協(xié)議引擎接收的第一多個分組和尚待被所述后臺協(xié)議引擎接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流的計算機可讀指令; 用于使得所述后臺協(xié)議引擎在呈現(xiàn)期間監(jiān)控所述用戶的活動的計算機可讀指令; 用于使得所述后臺協(xié)議引擎根據(jù)對所述活動的監(jiān)控開發(fā)出活動特征的計算機可讀指令; 用于使得所述后臺協(xié)議引擎收集和存儲與用戶的活動相關(guān)的數(shù)據(jù)的計算機可讀指令; 用于使得所述后臺協(xié)議引擎根據(jù)所收集的與用戶的活動相關(guān)的數(shù)據(jù)修改所述活動特征的計算機可讀指令; 用于使得所述后臺協(xié)議引擎根據(jù)所述活動特征產(chǎn)生所述后臺協(xié)議引擎的至少一個狀態(tài)快照的計算機可讀指令; 用于使得所述后臺協(xié)議引擎根據(jù)接收所述第二多個分組中的至少一個分組修改所述至少一個狀態(tài)快照的計算機可讀指令; 用于使得所述前臺協(xié)議引擎識別所述至少一個狀態(tài)快照的計算機可讀指令;以及用于當(dāng)所述后臺協(xié)議引擎在所述表示層協(xié)議數(shù)據(jù)流的傳輸期間接收所述第二多個分組時,使得所述前臺協(xié)議引擎顯示來自所述至少一個狀態(tài)快照的表示層協(xié)議數(shù)據(jù)流的計算機可讀指 令。
全文摘要
一種方法包括由記錄器在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間攔截包括多個分組并表示顯示數(shù)據(jù)的上述表示層協(xié)議數(shù)據(jù)流的步驟。協(xié)議引擎使用與至少一個復(fù)制的分組相關(guān)聯(lián)的信息再生由至少一個復(fù)制的分組表示的顯示數(shù)據(jù)。另一方面,前臺協(xié)議引擎接收用于呈現(xiàn)包括已經(jīng)接收的第一多個分組和尚待接收的第二多個分組的表示層協(xié)議數(shù)據(jù)流中的分組內(nèi)容的請求。前臺協(xié)議引擎在表示層協(xié)議數(shù)據(jù)流從第一裝置到第二裝置的傳輸期間,根據(jù)識別出的其相關(guān)時間戳在所請求的分組的時間戳之前的狀態(tài)快照顯示請求的分組。
文檔編號H04L29/08GK103152363SQ201310104680
公開日2013年6月12日 申請日期2007年10月18日 優(yōu)先權(quán)日2006年10月20日
發(fā)明者P·賴曼 申請人:思杰系統(tǒng)有限公司