CN103152363B - 用于状态快照的自适应产生的方法和系统 - Google Patents
用于状态快照的自适应产生的方法和系统 Download PDFInfo
- Publication number
- CN103152363B CN103152363B CN201310104680.7A CN201310104680A CN103152363B CN 103152363 B CN103152363 B CN 103152363B CN 201310104680 A CN201310104680 A CN 201310104680A CN 103152363 B CN103152363 B CN 103152363B
- Authority
- CN
- China
- Prior art keywords
- grouping
- protocol engine
- protocol
- data
- playback
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 141
- 230000006978 adaptation Effects 0.000 title claims description 11
- 230000005540 biological transmission Effects 0.000 claims abstract description 46
- 230000000694 effects Effects 0.000 claims description 63
- 230000003139 buffering effect Effects 0.000 claims description 62
- 238000012986 modification Methods 0.000 claims description 17
- 230000004048 modification Effects 0.000 claims description 17
- 238000012544 monitoring process Methods 0.000 claims description 17
- 238000009826 distribution Methods 0.000 claims description 12
- 230000000007 visual effect Effects 0.000 claims description 2
- 238000010422 painting Methods 0.000 claims 1
- 238000004904 shortening Methods 0.000 claims 1
- 230000008929 regeneration Effects 0.000 abstract description 49
- 238000011069 regeneration method Methods 0.000 abstract description 49
- 230000003993 interaction Effects 0.000 description 89
- 238000004364 calculation method Methods 0.000 description 40
- 230000008569 process Effects 0.000 description 33
- 230000006870 function Effects 0.000 description 32
- 238000003860 storage Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 23
- 230000004044 response Effects 0.000 description 17
- 239000000203 mixture Substances 0.000 description 15
- 238000001514 detection method Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 11
- 230000008447 perception Effects 0.000 description 11
- 230000001172 regenerating effect Effects 0.000 description 10
- 230000010076 replication Effects 0.000 description 10
- 238000004519 manufacturing process Methods 0.000 description 9
- 244000078534 Vaccinium myrtillus Species 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 230000008786 sensory perception of smell Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 230000004913 activation Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 238000007689 inspection Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 235000003095 Vaccinium corymbosum Nutrition 0.000 description 3
- 235000017537 Vaccinium myrtillus Nutrition 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 235000021014 blueberries Nutrition 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000008030 elimination Effects 0.000 description 2
- 238000003379 elimination reaction Methods 0.000 description 2
- 238000009434 installation Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 239000003973 paint Substances 0.000 description 2
- 238000011176 pooling Methods 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 238000007790 scraping Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000000859 sublimation Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- IRLPACMLTUPBCL-KQYNXXCUSA-N 5'-adenylyl sulfate Chemical compound C1=NC=2C(N)=NC=NC=2N1[C@@H]1O[C@H](COP(O)(=O)OS(O)(=O)=O)[C@@H](O)[C@H]1O IRLPACMLTUPBCL-KQYNXXCUSA-N 0.000 description 1
- 241000501754 Astronotus ocellatus Species 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 239000003795 chemical substances by application Substances 0.000 description 1
- 238000005056 compaction Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 210000000630 fibrocyte Anatomy 0.000 description 1
- VZCCETWTMQHEPK-QNEBEIHSSA-N gamma-linolenic acid Chemical compound CCCCC\C=C/C\C=C/C\C=C/CCCCC(O)=O VZCCETWTMQHEPK-QNEBEIHSSA-N 0.000 description 1
- RGNPBRKPHBKNKX-UHFFFAOYSA-N hexaflumuron Chemical compound C1=C(Cl)C(OC(F)(F)C(F)F)=C(Cl)C=C1NC(=O)NC(=O)C1=C(F)C=CC=C1F RGNPBRKPHBKNKX-UHFFFAOYSA-N 0.000 description 1
- 230000001771 impaired effect Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005039 memory span Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 230000008022 sublimation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/61—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio
- H04L65/613—Network streaming of media packets for supporting one-way streaming services, e.g. Internet radio for the control of the source by the destination
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/60—Network streaming of media packets
- H04L65/75—Media network packet handling
- H04L65/765—Media network packet handling intermediate
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/328—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the presentation layer [OSI layer 6]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/76—Television signal recording
- H04N5/765—Interface circuits between an apparatus for recording and another apparatus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N9/00—Details of colour television systems
- H04N9/79—Processing of colour television signals in connection with recording
- H04N9/80—Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback
- H04N9/82—Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback the individual colour picture signal components being recorded simultaneously only
- H04N9/8205—Transformation of the television signal for recording, e.g. modulation, frequency changing; Inverse transformation for playback the individual colour picture signal components being recorded simultaneously only involving the multiplexing of an additional signal and the colour video signal
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Security & Cryptography (AREA)
- Television Signal Processing For Recording (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
一种方法包括由记录器在表示层协议数据流从第一装置到第二装置的传输期间拦截包括多个分组并表示显示数据的上述表示层协议数据流的步骤。协议引擎使用与至少一个复制的分组相关联的信息再生由至少一个复制的分组表示的显示数据。另一方面,前台协议引擎接收用于呈现包括已经接收的第一多个分组和尚待接收的第二多个分组的表示层协议数据流中的分组内容的请求。前台协议引擎在表示层协议数据流从第一装置到第二装置的传输期间,根据识别出的其相关时间戳在所请求的分组的时间戳之前的状态快照显示请求的分组。
Description
本申请为申请号为200780047081.9、申请日为2007年10月18日、发明名称为“用于表示层协议数据流的记录及实时回放和搜索的方法和系统”的申请的分案申请。
技术领域
本发明涉及用于提供实时回放的方法和系统,尤其是用于提供对表示层协议数据的记录和实时回放的方法和系统。
背景技术
对协议数据流(例如由位于Ft.Lauderdale,Florida的CitrixSystems公司发明的ICA协议,由X.orgFoundation的X协议,AT&T公司的虚拟网络计算(VirtualNetworkComputing)协议,或者由位于Redmond,Washington的微软公司发明的RDP协议)的服务器端记录可以用于创作培训材料、提供服务台支持、启动教程或者用于难以将软件分发到各个客户端工作站的环境。但是,很多用于记录协议数据流的传统方法的缺陷是诸如对计算机屏幕活动进行低效且无损失的编码。记录并将文件单独存储在服务器上可能产生与处理大量并发会话有关的问题。很多传统系统通常的缺陷是所记录的数据比将要回顾的多得多,由此带来了复杂的记录过程或产生过大的文件。
有些用于记录协议数据流的传统方法不限于远程表示协议自身。很多这样的解决方案涉及屏幕抓取/采集技术或对客户端图形引擎的钩取,带来的问题是为了回放需要处理器密集型的编码或译码过程。
其它用于记录用户屏幕活动的方法对客户端装置上的图形输出进行编码。通常,这些方法只限于从Windows客户端工作站取得周期性的不连续屏幕快照。Microsoft(微软)提供了屏幕采集API作为WindowsMediaEncoderSDK的一部分,但这个方法的缺陷是专注于对培训和视频显示市场的客户端装置记录。大多数方法需要客户端软件组件并且缺乏进行服务器端记录的能力。
另外,远程表示协议自身是有状态协议。为了查看所记录的表示协议数据流中的特定点,对该流的回放必须从流的最开始处开始,并顺序回放直到遇到该特定点。
不按顺序访问所记录的数据流的传统技术通常涉及对关键帧和增量帧的使用。关键帧通常被作为同步点存储在流自身中以使帧能够被快速重现在屏幕上。增量帧通常描述与先前的帧的区别以产生可视视频帧。
因为远程表示协议通常由于它们的有状态的特性而比较紧凑,对关键帧的额外存储将文件大小增加了几个数量级。即使采用现代的数字视频压缩技术,关键帧通常将所记录的表示协议数据流所需的存储增加几个数量级。但是,省略关键帧会产生不可搜索的协议。希望能有一种具备搜索能力而且不会因为所存储的关键帧而使文件过大的方法。
发明内容
这里所说明的方法和系统提供了将远程表示协议(例如由位于Ft.Lauderdale,Florida的CitrixSystems公司发明的ICA协议,由X.orgFoundation的X协议,AT&T公司的虚拟网络计算(VirtualNetworkComputing)协议,或者由位于Redmond,Washington的微软公司发明的RDP协议)记录为流以及在以后能够对所记录的流进行回放。在无需修改现有协议定义的情况下,能够记录最初设计用于将计算机屏幕显示实时显示为无损失的实时屏幕活动抓取的协议。和传统的屏幕抓取技术不同,这种记录不需要发生在客户端装置上,也不需要任何客户端组件。通过允许将记录软件只安装在服务器上而不是安装在许多客户端上,本发明提供的服务器端记录大大简化了部署。例如,在企业级CitrixMetaFrame表示服务器(CitrixMetaFramePresentationServer)环境中,客户端装置对服务器的比例通常高于100比1。所支持的客户端装置的范围使传统的客户端布署问题进一步复杂化。Citrix目前支持WindowsPC上的客户端,UNIX,Linux,基于Java的客户端,DOS,大量的WindowsCE和基于EPOC的手持装置,以及Macintosh。为使服务器端记录能够工作,在任何这样的平台上都不需要平台特有的记录软件或者任何其它改变。因为远程表示协议通常被设计用来通过减小带宽而在相对较低的速度上有效工作,对这样的协议的记录自身也是紧凑的。因为没有译码成另一种视频格式,该记录过程的负载很轻,并且产生的流是对用户在记录时间在他们的屏幕上所看到的内容的真实表示。
另外,这里所说明的方法和系统使远程表示协议可以像视频格式一样被顺序播放,还能够进行随机搜索/浏览并且不使用所存储的关键帧。搜索使观看流的用户在回放期间能够向前或向后跳到该流的任意位置并以应答方式继续回放。这里所说明的方法和系统能够进行非常快速的搜索而无需记录或存储关键帧。
一方面,对表示层协议数据进行记录和实时回放的方法包括由记录器在表示层协议数据流从第一装置向第二装置的传输期间拦截包括多个分组的表示层协议数据流,该表示层协议数据流表示显示数据。分发器发送该表示层协议数据流中的至少一个分组的副本。协议引擎使用与该至少一个复制的分组相关联的信息再生由该至少一个复制的分组所表示的显示数据。拦截表示层协议数据流并发送至少一个分组的副本的步骤一直重复直到第一装置完成了至第二装置的协议数据流的传输。
在一个实施例中,记录器在基本与第一装置向第二装置发送表示层协议数据流的同时拦截该表示层协议数据流。在另一个实施例中,记录器将至少一个复制的分组发送到分发器。在又一个实施例中,重复以使用与该至少一个复制的分组有关联的信息来再生由该至少一个复制的分组所表示的显示数据的步骤。
另一方面,用于表示层协议数据的记录和实时回放的系统包括记录器、分发器以及协议引擎。记录器在表示层协议数据流从第一装置传输到第二装置的期间拦截表示层协议数据流,所述表示层协议数据流表示显示数据并且包括多个分组。分发器发送该表示层协议数据流的至少一个分组的副本。与分发器通信的协议引擎使用与该至少一个复制的分组相关联的信息再生由该至少一个分组表示的显示数据。记录器继续拦截表示层协议数据,分发器继续发送表示层协议数据流的至少一个分组的副本,直到第一装置完成至第二装置的该协议数据流的发送。
在一个实施例中,记录器还包括用于由记录器在基本与第一装置向第二装置发送表示层协议数据流的同时拦截该表示层协议数据流的装置。在另一个实施例中,分发器还包括用于检索该至少一个分组的副本并将该至少一个分组的副本发送到协议引擎的收发器。
又一方面,用于在表示层协议数据流的实时回放期间实时搜索的方法,包括由前台协议引擎接收用于呈现尚待接收的第一多个分组的分组内容的请求。由前台协议引擎识别出其相关时间戳在所请求的分组之前的状态快照。由前台协议引擎在表示层协议数据流从第一装置到第二装置的传输期间根据识别出的状态快照显示所请求的分组。
又一方面,用于产生状态快照的方法和系统使得在包括已经被后台协议引擎接收的第一多个分组和尚待被后台协议引擎接收的第二多个分组的表示层协议数据流的实时回放期间进行实时搜索。后台协议引擎在表示层协议数据流从第一装置到第二装置的传输期间接收该第一多个分组。后台协议引擎产生该第一多个分组的表示。后台协议引擎在读取该第一多个分组中的至少一个分组期间产生至少一个状态快照。在一个实施例中,该状态快照包括在记录器将分组从协议数据流复制到该第一多个分组中的时间点时呈现该协议数据流的协议引擎的状态。后台协议引擎存储所产生的状态快照。后台协议引擎响应接收第二多个分组中的至少一个分组而修改显示数据的产生和该至少一个状态快照。呈现协议数据流内容的前台协议引擎接收搜索由第一多个分组中的分组内容表示的显示数据的请求,并使用状态快照呈现表示所请求的显示数据的内容。后台协议引擎响应接收第二多个分组中的至少一个分组而更新状态快照。
又另一方面,用于状态快照的自适应产生的方法和系统,包括在表示层协议数据流从第一装置向第二装置的传输期间向用户呈现包括已经被后台协议引擎接收的第一多个分组和尚待被后台协议引擎接收的第二多个分组的表示层协议数据流的表示。在一个实施例中,前台协议引擎向用户呈现协议数据流的记录的表示。后台协议引擎在呈现期间监控用户的活动。后台协议引擎响应对活动的监控而开发活动特征。后台协议引擎根据活动特征产生至少一个状态快照。后台协议引擎响应接收第二多个分组中的至少一个分组而修改至少一个状态快照。
附图说明
从下面的详细说明和附图将明了本发明的这些和其它方面,而这些是为了说明本发明而不是限制本发明,其中:
图1A是说明包括与远程机器相互通信的客户端的网络环境的一个实施例的框图;
图1B和1C是说明可以用在和这里所描述的方法和系统相连的计算机的实施例的框图;
图2是说明可实施本发明的网络200的一个实施例的框图;
图3和图4是说明记录器在网络200上的放置的可选实施例的框图;
图5是说明用于再生由协议数据流表示的显示数据的系统的一个实施例的框图;
图6是说明用于记录和重放服务器产生的数据的方法的流程图;
图7是更详细地说明用于记录由协议数据流表示的显示数据的系统中的记录器的框图;
图8说明记录协议数据流的一个实施例;
图9是说明在有状态远程表示协议的回放期间进行实时搜索的方法中所采用步骤的一个实施例的流程图;
图10是说明在产生能够在远程表示协议的回放期间进行实时搜索的状态快照所采用的步骤的一个实施例的流程图;
图11是说明在有状态远程表示协议的回放期间进行实时搜索的系统的框图;
图12是说明为状态快照的自适应产生而采用的步骤的一个实施例的流程图;
图13是说明一个实施例的三种类型的搜索概率分布的图;
图14是说明响应确定的搜索概率分布产生状态快照的一个实施例的图;
图15说明了协议数据流表示的用户的使用模式的一个实施例;
图16是说明用于自适应产生状态快照的系统的一个实施例的框图,该系统包括后台协议引擎、前台协议引擎、协议数据流、活动特征和状态快照;
图17是说明了用于呈现记录会话的系统的一个实施例的框图;
图18的流程图说明了为产生用于回放所记录的计算机会话的回放指令而采取的步骤的一个实施例;
图19是说明了在用于所记录的计算机会话的回放的方法中所采取的步骤的一个实施例的流程图;
图20是说明了为了产生用于呈现记录会话的回放指令而采取的步骤的一个实施例的流程图;
图21说明了响应回放数据结构其内容被呈现的再生的记录流的一个实施例;
图22说明了在包含了表示有意义的用户活动的内容的记录流中特定分组的一个实施例,在这种实施例中鼠标输入表示活动鼠标按钮状态;
图23是说明了在呈现记录会话中为消除不具备有意义的活动的期间而采取的步骤的一个实施例的流程图;
图24是说明了在呈现记录会话中为消除图形更新而采取的步骤的一个实施例的流程图;
图25说明了根据第二图形更新之后的屏幕区域的状态是否不同于第一图形更新之后的屏幕区域的状态呈现再生的记录会话的一个实施例;
图26是说明了在呈现记录会话中为消除交互序列而采取的步骤的一个实施例的流程图;
图27是说明了在呈现所记录的计算机会话中自动时间卷曲的回放中所采取的步骤的一个实施例的流程图;
图28是说明了在呈现所记录的计算机会话中根据识别出的应用为自动时间卷曲回放而采取的步骤的一个实施例的流程图;
图29是说明了在呈现所记录的计算机会话中用于自动时间卷曲回放的系统的一个实施例的框图;
图30A是说明了用于表示协议层数据流的记录和实时回放的系统的一个实施例的框图;
图30B、30C和30D是说明了用于表示协议层数据流的记录和实时回放的系统的可选实施例的框图;
图31是说明了在用于表示协议层数据流的记录和实时回放的方法中所采取的步骤的一个实施例的流程图;
图32是说明了用于在远程表示层协议数据的实时回放期间进行实时搜索的方法中所采取的步骤的一个实施例的流程图;
图33是说明了用于在表示层协议数据流的实时回放期间产生能够进行实时搜索的状态快照的方法中所采取的步骤的一个实施例的流程图;
图34是说明了在用于状态快照的自适应产生的方法中所采取的步骤的一个实施例的流程图。
具体实施方式
本发明的方法和系统提供了对所记录的表示层协议会话的时移回放。在有些实施例中,该技术依赖用于表示层协议会话的记录和回放的方法和系统,这些也将在这里进行说明。
用于表示层协议会话的回放的方法的一些实施例提供了在记录完成之后和所记录的协议数据流产生之后的回放功能。但在其它实施例中,方法和系统提供了在协议数据流的记录期间对协议数据流进行回放的功能。在其中一个实施例中,该方法和系统还提供了对完成的协议数据流记录进行回放的功能。在另一个实施例中,该方法和系统提供了一系列回放控制,包括但不限于从开始观看记录的能力、前进或后退、暂停、快进、逐帧前进等等。
在有些实施例中,这里所说明的方法和系统提供了时移回放(或时移),一个从视频产业借用的术语。被称为DVR(数字视频录像机)的产品例如众所周知的TIVO牌使用时移技术。这些产品向消费者提供比传统VCR更显著的优势,包括在记录结束前就开始观看所记录的TV节目的能力。这个好处也被提供给了这里所说明的方法和系统的用户。用于提供表示层协议数据的记录后回放(也就是用于所记录的表示层协议数据的VCR功能)的方法和系统还可以提供在记录期间的回放。这尤其为该系统打开了新的使用案例和新的市场机会。对于该方法和系统被用于安全目的的实施例,该功能大大增强了这些方法和系统作为监视和监控工具(此时对可疑活动的响应时间尤其重要)的可用性。现在可以在可疑终端用户违反规则或对计算或网络资源的其它不正当使用时将他们抓获。另外,对于该技术被用在客户支持场景中的实施例,支持技术人员现在有能力正确观察用户在他们请求帮助之前究竟做了什么,然后立刻跳回“实况”观看用户将要做什么。这为支持市场提供了巨大的机会,因为现有的会话记录产品没有提供复合的实况和回溯性回放特性。因为这里所说明的方法和系统对系统的性能、可扩展性、可管理性或可用性只有很小(如果有的话)的影响,所以还具有管理上的优势。
在一个实施例中,播放一个实况会话可能在该会话正在被实况观看的时间段内对始发表示服务器有微小的影响。在另一个实施例中,当没有会话正在被实况播放时,对服务器的性能和可扩展性影响与提供记录后回放方案的实施例中相同。
从记录会话的搜索列表,实况记录可以根据诸如动画图标、缺少结束时间、和不断变化的会话持续指示等元素被识别出。在回放期间,用来显示记录的“时间线”的图形元素(例如拉动进度条)可以继续扩展,来表示当来自会话的额外数据被记录时的不断增加的可用于回放的数据。如果用户想要观看实况,在一个实施例中,他们可以点击拉动进度条的最右端。
在有些实施例中,例如在监控或监视场景中,该系统的成功实现可能依赖于协议数据流的接收者难以检测到它们正在被记录。在其中一个实施例中,使用提供时移回放特性的方法和系统不会从指示这些接收者他们的数据和会话被记录或观看的有效会话期间提供任何新“线索”。
在其它实施例中,从管理员的角度,这些方法和系统提供的特性以类似于这里所说明的记录后回放系统和方法的方式运行。在其中一个实施例中,没有额外的安装或配置选项。记录规则和安全特性就像它们在记录后回放系统和方法中所做的那样工作。
现在参看图1A,其中说明了网络环境的一个实施例。简要地说,该网络环境包括通过一个或多个网络104与一个或多个服务器106a-106n(通常也称为服务器106或远程机器106)相互通信的一个或多个客户端102a-102n(通常也称为本地机或客户端102)。
尽管图1A将网络104显示在客户端102和服务器106之间,但客户端102和服务器106可以位于相同网络104中。网络104可以是局域网(LAN,例如公司内部网络),城域网(WAN)或广域网(WAN,例如互联网或万维网)。在有些实施例中,在客户端102和服务器106之间有多个网络104。在其中一个实施例中,网络104'可以是私有网络,网络104可以是公共网络。在其中另一个实施例中,网络104可以是私有网络,网络104'可以是公共网络。在又另一个实施例中,网络104和104'可以都是私有网络。
网络104可以是任意类型和/或形式的网络,并且可以包括下列任意一种:点到点网络,广播网络,广域网,局域网,电信网,数据通信网,计算机网络,ATM(异步传输模式)网络,SONET(同步光纤网络)网络,SDH(同步数字体系)网络,无线网络和有线网络。在有些实施例中,网络104可以包括无线链路,例如红外信道或卫星带。网络104的拓扑结构可以是总线型、星型或环形网络拓扑。网络104和网络拓扑结构可以是例如本领域的技术人员已知的能够支持这里所说明的操作的任意网络或网络拓扑。该网络可以包括使用用来在移动装置之间通信的任意一种或多种协议的移动电话网络(包括AMPS,TDMA,CDMA,GSM,GPRS或UMTS)。在其中一些实施例中,不同类型的数据可以通过不同的协议传输。在其它实施例中,相同类型的数据可以通过不同的协议传输。
在一个实施例中,该系统可以包括多个逻辑上成组的服务器106。在这些实施例中,服务器的逻辑组可以被称为服务器群组38。在其中一些实施例中,服务器106可以在地理位置上分散。在有些情况下,群组38可以被作为一个单个实体进行管理。在其它实施例中,服务器群组38包括多个服务器群组38。在一个实施例中,服务器群组代表一个或多个客户端102执行一个或多个应用程序。
各个群组38中的服务器106可以是不同种类的。服务器106中的一个或多个可以根据一种类型的操作系统平台(例如,由位于Redmond,Washington的微软公司开发的WINDOWSNT)运行,而其它服务器106中的一个或多个可以根据另一种类型的操作系统平台(例如Unix或Linux)运行。各个群组38中的服务器106不需要在物理上邻近相同群组38中的另一个服务器106。因而,逻辑上分组作为群组38的服务器106组可以用广域网(WAN)连接或城域网(MAN)连接来互联。例如,群组38可以包括物理上位于不同大洲或大洲、国家、州、城市、校园或房间的不同区域的服务器106。如果服务器106由局域网(LAN)连接或某种直连形式相连,可以提高群组38中的服务器106之间的数据传输速度。
服务器106可以是文件服务器、应用服务器、web服务器、proxy服务器、装置、网络装置、网关、应用网关、网关服务器、虚拟化服务器、布署服务器、SSLVPN服务器或防火墙。在有些实施例中,服务器106可以有充当应用服务器或者主应用程序器工作的能力。在一个实施例中,服务器106可以包括活动目录。远程机器30可以是应用加速装置。对于远程机器30是应用加速装置的实施例,远程机器30可以提供包括防火墙功能、应用防火墙功能或负载平衡功能在内的功能。在有些实施例中,远程机器30包括例如由下列公司生产的系列产品之一:位于SanJose,CA的CitrixApplicationNetworkingGroup,位于MountainView,CA的SilverPeakSystemsInc.,位于SanFrancisco,CA的RiverbedTechnologyInc.,位于Seattle,WA的F5NetworksInc.,或者位于Sunnyvale,CA的JuniperNetworksInc..
客户端102也可以被称为客户端节点,客户端,终端节点或终端。在有些实施例中,客户端102有能力作为搜索对服务器提供的资源的访问的客户端节点工作,也有能力作为提供对其它客户端102a-102n所寄载的资源的访问的服务器工作。
在有些实施例中,服务器106或服务器群组38可以运行一个或多个应用,例如提供瘦客户端计算或远程显示表示应用。在一个实施例中,服务器106或服务器群组38作为一个应用来执行CitrixSystemsInc.的CitrixAccessSuiteTM的任一部分(例如MetaFrame或CitrixPresentationServerTM),和/或微软公司开发的MICROSOFTWINDOWS终端服务(TerminalServices)中的任意一个。在另一个实施例中,该应用包括由位于Redmond,Washington的微软公司开发的远程桌面(RDP)客户端,或者由开源X.org组织维护的X11客户端。在又一实施例中,服务器106可以运行一个应用,它例如可以是提供电子邮件服务的应用服务器(例如由位于Redmond,Washington的微软公司开发的MICROSOFTEXCHANGE),Web或Internet服务器,桌面共享服务器或协作服务器。在又另一实施例中,这些应用中的任意一种都可以包括任一类型的所寄载的服务或产品,例如由位于SantaBarbara,California的CitrixOnlineDivisionInc.提供的GOTOMEETING,由位于SantaClara,California的WebEXInc.提供的WEBEX,或者由位于Redmond,Washington的微软公司提供的MicrosoftOfficeLIVEMEETING。
客户端102可以执行、运行或以其它方式提供应用,该应用可以是任意类型和/或形式的软件、程序或者可执行指令,例如任何类型和/或形式的web浏览器、基于web的客户端、客户端-服务器应用、瘦客户端计算客户端,ActiveX控件、或者Java程序、或者能够在客户端102上执行的任意其它类型和/或形式的可执行指令。在有些实施例中,该应用可以是由服务器106代表客户端102执行的基于服务器的或基于远程的应用。在一个实施例中,服务器106可以使用瘦客户端或远程显示协议(例如由位于Ft.Lauderdale,Florida的CitrixSystemsInc.开发的独立计算体系结构(ICA)协议,或由位于Redmond,Washington的微软公司开发的远程桌面协议(RDP))来显示输出到客户端102。该应用可以使用任意类型的协议,并且它可为如HTTP客户端,FTP客户端,Oscar客户端或Telnet客户端。在其它实施例中,应用包括与VoIP(VoiceoverInternetProtocol)通信有关的任意类型的软件,例如软IP电话。在进一步的实施例中,该应用包括与实时数据通信有关的任意应用,例如用于流式传输视频和/或音频的应用。
客户端102和服务器106可以被布署为和/或被执行在任意类型和形式的计算装置上,例如能够在任意类型和形式的网络上通信并执行这里所说明的操作的计算机、网络装置或装置。图1B和1C描述了可以用于实现客户端102或服务器106的一个实施例的计算装置100的框图。如图1B和1C所示,每个计算装置100包括中央处理单元121和主存储器单元122。如图1B中所示,计算装置100可以包括显示装置124,键盘126和/或定点装置127,例如鼠标。如图1C中所示,每个计算装置100还可以包括其它可选部件,例如一个或多个输入/输出装置130a-130b(一般用引用编号130来指代),以及与中央处理单元121通信的高速缓冲存储器140。
中央处理单元121是响应并处理取自主存储器单元122的指令的任意逻辑电路。在很多实施例中,中央处理单元由微处理器单元提供,例如:由位于MountainView,California的Intel公司生产的微处理器;由位于Schaumburg,Illinois的Motorola公司生产的微处理器;由位于SantaClara,California的Transmeta公司生产的微处理器;由位于WhitePlains,NewYork的国际商用机器公司(IBM)生产的微处理器RS/6000;由位于Sunnyvale,California的超微装置(AMD)公司生产的微处理器。计算装置100可以基于任意的这些处理器或者能够进行如此处描述操作的任意其它处理器。
主存储器单元122可以是能够存储数据并允许微处理器121直接访问其任意存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发(Burst)SRAM或同步突发(SynchBurst)SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页面模式(FastPageMode)DRAM(FPMDRAM)、增强型DRAM(EDRAM)、扩展数据输出(ExtendedDataOutput)RAM(EDORAM)、扩展数据输出DRAM(EDODRAM)、突发扩展数据输出DRAM(BEDODRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDECSRAM、PC100SDRAM、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、直接内存总线(Rambus)DRAM(DRDRAM)或铁电RAM(FRAM)。主存储器122可以基于上述存储芯片中的任意一种,或者能够按照这里所述操作的任一其它可用存储芯片。在图1B所示实施例中,处理器121通过系统总线150(下面将对其进行更详细的说明)与主存储器122通信。图1B描述了计算装置100的一个实施例,其中处理器通过存储器端口103直接与主存储器122通信。例如,在图1B中主存储器122可以是DRDRAM。
图1C描绘的实施例中,主存储器121通过次级总线(有时也称为背端总线)直接与高速缓冲存储器140通信。在其它实施例中,主处理器121使用系统总线150与高速缓冲存储器140通信。高速缓冲存储器140通常具有比主存储器122更快的响应时间,并且一般由SRAM、BSRAM或EDRAM提供。在图1C所示的实施例中,处理器121通过本地系统总线150与各种I/O装置130通信。可以使用各种总线将中央处理单元121连接到任意I/O装置130,包括VESAVL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或者NuBus。对于其中的I/O装置是视频显示器124的实施例,处理器121可以使用高级图形端口(AGP)与显示器124通信。图1C描述了计算机100的一个实施例,其中主处理器121通过超级传输总线(HyperTransport)、快速(Rapid)I/O或InfiniBand直接与I/O装置130b通信。图1C还描述了一个实施例,其中混合了本地总线和直接通信:处理器121使用本地互联总线与I/O装置130a通信,而直接与I/O装置130b通信。
计算装置100可以支持任意适当的安装装置116,例如用于接收软盘(如3.5英寸或5.25英寸)或ZIP盘的软驱、CD-ROM驱动器CD-R/RW驱动器、DVD-ROM驱动器、各种格式的磁带驱动器、USB装置、硬盘驱动器或适合安装软件和程序(如任一客户端代理120或其中一部分)的任意其它装置。计算装置100还可以包括存储装置,例如一个或多个硬盘驱动器或独立磁盘的随机阵列,用于存储操作系统和其它相关软件,并用于存储应用软件程序,例如与客户端代理120有关的任意程序。可选地,任意安装装置116也可以用作存储装置。另外,操作系统和软件可以从可引导介质上被运行,例如一种用于GNU/Linux的可引导CD,该可引导CD可从knoppix.net作为GNU/Linux分发获得。
此外,计算装置100可以包括网络接口118以通过多种连接(包括但不限于标准电话线、LAN或WAN链路(如802.11,T1,T3,56kb,X.25)、宽带连接(如ISDN、帧中继、ATM)、无线连接或上述任意或全部的一些组合)对接到局域网(LAN)、广域网(WAN)或Internet。网络接口118可以包括内置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调整解调器或适合将计算装置100对接到能够通信并执行此处所述操作的任一类型网络的任一其它装置。
计算装置100中可以有多种I/O装置130a-130n。输入装置包括键盘、鼠标、轨迹板、轨迹球、麦克风和绘画板。输出装置包括视频显示器、扬声器、喷墨打印机、激光打印机和染料升华(dye-sublimation)打印机。I/O装置可以如图1B中所示由I/O控制器123控制。I/O控制器可以控制一个或多个I/O装置,例如键盘126和定点装置127(例如鼠标或光学笔)。此外,I/O装置也可以为计算装置100提供存储和/或安装介质116。在另其它实施例中,计算装置100可以提供USB连接以接收手持USB存储装置,例如由位于LosAlamitos,California的TwintechIndustryInc.生产的USB闪存驱动器系列装置。
在有些实施例中,计算装置100可以包括多个显示装置124a-124n或与其相连,这些显示装置可以是相同或不同的类型和/或形式。同样,I/O装置130a-130n中的任一个和/或I/O控制器123可以包括任意类型和/或形式的适当的硬件、软件或软硬件组合以支持、启用或提供计算装置100对多个显示装置124a-124n的连接和使用。例如,计算装置100可以包括任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以与显示装置124a-124n对接、通信、连接或者使用显示装置124a-124n。在一个实施例中,视频适配器可以包括多个连接器以与多个显示装置124a-124n对接。在其它实施例中,计算装置100可以包括多个视频适适配器,每个视频适配器连接到显示装置124a-124n中的一个或多个。在一些实施例中,计算装置100的操作系统的任一部分都可以被配置用于使用多个显示器124a-124n。在其它实施例中,显示装置124a-124n中的一个或多个可以由一个或多个其它计算装置提供,诸如(例如通过网络)与计算装置100相连的计算装置100a和100b提供。这些实施例可以包括设计和构造的任一类型的软件,以使用另一个计算机的显示装置作为计算装置100的第二显示装置124a。本领域的技术人员将认识和意识到计算装置100可以被配置为有多个显示装置124a-124n的各种方式和实施例。
在进一步的实施例中,I/O装置130可以是系统总线150和外部通信总线间的桥接器,外部通信总线例如为USB总线、AppleDesktop总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、Ethernet总线AppleTalk总线、GigabitEthernet总线、ATM总线、HIPPI总线、超级(Super)HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel总线或者串行连接(SerialAttached)小型计算机系统接口总线。
图1B和1C中所示类型的计算装置100通常在操作系统的控制下运行,该控制系统控制任务的调度和对系统资源的访问。装置100可以运行任意操作系统,例如任意版本的MICROSOFTWINDOWS操作系统,不同发行版本的Unix和Linux操作系统,用于Macintosh计算机的任意版本的MACOS,任意嵌入式操作系统,任意实时操作系统,任意开源操作系统,任意专有操作系统,任意用于移动计算装置的操作系统,或者任意其它能够在计算装置上运行并完成这里所述操作的操作系统。典型的操作系统包括:WINDOWS3.x,WINDOWS95,WINDOWS98,WINDOWS200,WINDOWSNT3.51,WINDOWSNT4.0,WINDOWSCE和WINDOWSXP,所有这些都由位于Redmond,Washington的微软公司开发;由位于Cupertino,California的苹果计算机公司开发的MACOS;由位于Armond,NewYork的国际商用机器公司开发的OS/2;以及Linux,由位于SaltLakeCity,Utah的Caldera公司发布的可自由获得的操作系统,或者除此之外任意类型和/或形式的Unix操作系统。
在有些实施例中,计算装置100可以有与该装置相容的不同的处理器、操作系统以及输入装置。例如,在一个实施例中,计算装置100是由PalmInc.公司生产的Treo180、270、600、650、680、700p或700w智能手机。在其中一些实施例中,Treo智能手机在PalmOS操作系统的控制下运行,并且包括触针输入装置以及五向导航装置。
在其它实施例中,计算装置100是移动装置,例如启用了JAVA的蜂窝电话或个人数字助理(PDA),例如由位于Schaumburg,Illinois的Motorola公司生产的i55sr,i58sr,i85s,i88s,i90c,i95cl或im11000,由位于Kyoto,Japan的Kyocera生产的6035或7135,或者由位于Seoul,Korea的Samsung电子有限公司生产的i300或i330。
在另外其它实施例中,计算装置100是黑莓掌中宝(Blackberryhandheld)或智能手机,例如由ResearchInMotion有限公司生产的装置,包括黑莓7100系列、8700系列、7700系列、7200系列、黑莓7520或黑莓珍珠(BlackberryPearl)8100。在其它实施例中,计算装置100是智能手机、掌上电脑、掌上电脑电话或者支持MicrosoftWindowsMobile软件的其它手持移动装置。此外,计算装置100可以是任意工作站、桌面计算机、膝上或笔记本型计算机、服务器、手持计算机、移动电话、任意其它计算机或者能够通信并且有足够的处理器能力和存储器容量来完成这里所述操作的其它形式的计算或电信装置。
现在参看图2,其中的框图描述了在其中实现了本发明的网络200的一个实施例,网络200包括第一装置202、远程表示协议服务器引擎204、记录器206、协议数据流208、记录的协议数据流210、第二装置212、远程表示协议客户端引擎214、显示器216、存储元件218以及记录的协议数据流220。简单地说,记录器206拦截协议数据流208。记录器206从协议数据流复制至少一个分组并用该至少一个复制的分组创建协议数据流210的记录。
现在更详细地参看图2,第一装置202将协议数据流208发送到第二装置212。在一个实施例中,第一装置202使用远程表示协议服务器引擎204将协议数据流208发送到第二装置212。在有些实施例中,第二装置212使用远程表示协议客户端引擎214从第一装置202接收协议数据流208。在有些实施例中,远程表示协议包括瘦客户端协议,例如由位于Ft.Lauderdale,Florida的CitrixSystemsInc.开发的ICA协议,由X.org协会开发的X协议,AT&T公司的虚拟网络计算协议,或由位于Redmond,Washington的微软公司开发的RDP协议。
协议数据流208包括多个分组,其中至少有一些表示显示数据。在有些实施例中,协议数据流208包括与记录会话有关的信息。在一个实施例中,协议数据流208包括元数据。在另一实施例中,协议数据流208包括与记录会话中的用户有关的信息。在又一实施例中,协议数据流208包括与产生所记录的数据的服务器有关的信息。在又另一实施例中,协议数据流208包括时间戳。
在一个实施例中,协议数据流208包括多个信道。在这个实施例中,一个信道包括端到端连接,数据在该连接上被传输。在另一实施例中,协议数据流208包括多个虚拟信道。在这个实施例中,虚拟信道是被包在另一信道中的信道。第二装置212接收协议数据流208并且在有些实施例中使用远程表示协议客户端引擎214再生显示数据。处理协议数据流208使得第二装置212能够通过显示器216将显示呈现给用户。第二装置212可以使用远程表示协议客户端引擎214处理显示数据。该显示包括但不限于听觉、视觉、触觉或嗅觉的演示,或者它们的组合。
记录器206拦截从第一装置202发送到第二装置212的协议数据流208。在一个实施例中,记录器206通过拦截一个或多个信道而拦截协议数据流208。在另一个实施例中,记录器206通过拦截一个或多个虚拟信道而拦截协议数据流208。在有些实施例中,记录器206监控其中第一装置202用来传输协议数据流208到第二装置212的一个或多个虚拟信道。记录器206从协议数据流复制至少一个分组。在一个实施例中,记录器206根据策略决定复制协议数据流的特定分组。在有些实施例中,策略定义分组为记录器206根据分组中包含的数据的类型进行记录。在其它实施例中,记录器206根据该分组是否包含数据的决定来决定复制协议数据流中的分组。在其中一些实施例中,当在其它实施例中记录器206记录空分组时,记录器206不记录空分组。在有些实施例中,记录器206记录协议数据流208中的每个分组。
记录器206使用至少一个复制的分组创建记录的协议数据流210。在一个实施例中,记录器206将信息和该至少一个被复制的分组关联在一起。在一个实施例中,记录器206将时间戳和该至少一个被复制的分组关联在一起。在另一个实施例中,记录器206将数据长度指示符和该分组关联在一起。对于记录器206将信息(例如时间戳或数据长度指示符)与该至少一个被复制的分组关联一起的实施例来说,除分组之外,记录器206可以将这个信息嵌入所记录的协议数据流210,或者记录器206可以将这个信息直接嵌入分组中,或者记录器206可以将该关联存储在独立于分组和所记录的协议数据流210的位置。
如图2中所示,记录器206可以位于第一装置202上。图3所示的实施例中记录器206位于第二装置上,其中位于第二装置212上。图4所示的实施例中记录器206位于第三装置上。可设置记录器206的装置包括客户端计算系统、服务器计算系统、代理服务器计算系统、网络分组监听计算系统、协议分析器计算系统、以及直通服务器(passthroughserver)计算系统。
记录器206使用该至少一个被复制的分组(在有些实施例中,还使用与该至少一个被复制的分组相关联的信息)创建记录的协议数据流210。在有些实施例中,记录器206在创建协议数据流210的记录之后将其存储下来。在其中一些实施例中,记录器206将协议数据流的记录210存储到存储元件218。存储元件218可以包括持久存储器,例如硬盘驱动器、软驱、CD-RW、DVD-RW或在断电时仍然维持数据状态的任意其它装置。在其它实施例中,存储元件可以包括一个或多个易失存储器元件,例如静态随机存取存储器(SRAM)、突发(Burst)SRAM或同步突发(SynchBurst)SRAM(BSRAM)、动态随机存取存储器(DRAM)、快速页模式DRAM(FPMDRAM)、增强型DRAM(EDRAM)、扩展数据输出RAM(EDORAM)、扩展数据输出DRAM(EDODRAM)、突发扩展数据输出DRAM(BEDODRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDECSRAM、PC100SDRAM、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链接DRAM(SLDRAM)、直接内存总线DRAM(DRDRAM)或铁电RAM(FRAM)。
在一个实施例中,存储元件包括网络存储装置。存储元件218可以位于第一装置202或第二装置212上。在其它实施例中,存储元件218位于第三装置上,例如代理服务器计算装置或直通服务器计算装置。在另其它实施例中,存储元件218位于网络上,并且记录器206通过网络访问存储元件218以存储协议数据流220的记录。在其它实施例中,记录器206将协议数据流的记录存储在记录器206所在的相同装置上。
现在参看图5,图中框图描述了从协议数据流506的记录读取至少一个复制的分组并使用与该至少一个复制的分组相关联的信息再生由协议数据流506表示的显示数据的协议引擎502。协议引擎502接收协议数据流506。在有些实施例中,协议引擎502从存储元件504检索(retrieve)协议数据流506。在其它实施例中,协议引擎502从记录器206检索协议数据流506。在另其它实施例中,协议引擎502从另一计算装置检索协议数据流506。
在有些实施例中,协议引擎502包括分组读取器508和显示数据再生单元510。在这些实施例中,分组读取器508从协议数据流506的记录读取至少一个复制的分组。在有些实施例中,分组读取器508从协议数据流506的记录顺序读取该至少一个复制的分组。
协议引擎502处理至少一个复制的分组以及与该至少一个复制的分组相关联的任何信息。在有些实施例中,协议引擎502使用显示数据再生单元510进行处理。该分组包含能够再生呈现给用户的可感知显示的数据。在有些实施例中,第二装置212处理这个数据,如图2中所示。在一个实施例中,处理包括将该至少一个复制的分组中的内容呈送到缓冲区。在另一个实施例中,处理包括以可感知的方式呈送该至少一个复制的分组的内容。再生的显示可以包括但不限于听觉、视觉、触觉或嗅觉的演示或者它们的组合。
在有些实施例中,协议引擎502位于第一装置202上。在其它实施例中,协议引擎502位于第二装置212上。在另其它实施例中,协议引擎位于第三装置上,例如代理服务器计算装置或直通服务器计算装置。
现在向前看图7,图中框图更详细地描述了最初在图2中被描述为记录器206的记录器702。简单地说,记录器702通过对协议数据流710的拦截并通过对协议数据流710的记录712的创建而记录服务器产生的数据。
在一个实施例中,记录器702包括协议数据流拦截器704、分组复制器706和记录发生器708。在一个实施例中,记录器702使用协议数据流拦截器704监控协议数据流710。在另一实施例中,记录器702使用协议数据流拦截器704拦截包括多个从第一装置202发送到第二装置212的分组的协议数据流710。分组复制器706复制协议数据流的至少一个分组。分组复制器706决定是否复制协议数据流中的分组。在有些实施例中,分组复制器706根据策略进行这个判断。在这些实施例中,分组复制器706可以根据分组是否包含任意数据或者根据分组中包含的数据类型决定是否复制该分组。
在一个实施例中,记录器702利用记录发生器708并使用至少一个复制的分组创建协议数据流的记录。记录发生器将该至少一个复制的分组组装成协议数据流710的记录712。在有些实施例中,记录发生器708将信息嵌入协议数据流的记录中。这个信息可以包括但不限于表示何时再生由分组中包含的数据表示的显示数据的时间基准,描述分组中包含的数据的数据长度指示符,或者用来再生由协议数据流710中包含的数据所表示的显示数据的其它类型的信息。
图8描述了协议数据流710的记录712的一个实施例。在所示实施例中,记录发生器708将至少一个复制的分组组成远程表示协议数据块。记录发生器708将时间基准和数据长度与各个远程表示协议数据块关联在一起并将信息和分组一起组合成协议数据流710的记录712。
现在回过去看图7,在一个实施例中,记录器702将协议数据流710的完整记录712存储到存储元件714中。在有些实施例中,存储元件位于网络上,记录器702在网络上将记录712发送到存储元件714。在其它实施例中,存储元件位于代理服务器计算装置上。在另其它实施例中,存储元件位于直通服务器计算装置上。在有些实施例中,存储元件714位于和记录器702相同的装置上。
在一个实施例中,如图7所示,用于协议数据流的记录和回放的系统包括记录器702以及图5中所述的回放装置514。回放装置514包括协议引擎502,它使用分组读取器508从分组数据流的记录712接收和读取至少一个复制的分组并使用内嵌的信息再生由协议数据流的记录712表示的显示数据。在有些实施例中,协议引擎502在再生显示数据中顺序读取分组。
在图7所示另一实施例中,用于记录和重放服务器产生的数据的系统包括记录器702、存储元件714和协议引擎502。记录器702产生协议数据流的记录并将记录712存储在存储元件714中。记录器从协议数据流复制至少一个分组并将信息(包括但不限于时间基准或描述分组中数据长度的数据长度指示符)与至少一个分组关联在一起。协议引擎502与存储元件714通信,从协议数据流的记录读取至少一个分组并使用与至少一个分组相关联的信息再生由协议数据流710的记录712表示的显示数据。
在一个实施例中,记录器702、协议引擎502或存储元件714可以一起或分开位于第一装置202上。在其它实施例中,它们可以一起或分开位于第二装置212上。在另其它实施例中,它们可以一起或分开位于第三装置上,例如代理服务器计算装置,网络分组监听器或直通服务器计算装置。在另其它实施例中,存储元件714可以独立于记录器702和协议引擎502位于存储区网络上。
现在参看图6,所示流程图概述了用于记录和重放服务器产生的数据的方法。简单地说,记录器206拦截包括从第一装置202发送到第二装置212的多个分组的协议数据流208(步骤602)。记录器206从协议数据流208复制至少一个分组(步骤604)并创建协议数据流210的记录(步骤606),随后协议引擎502在再生由所记录的协议数据流210表示的显示数据时使用它(步骤608、610)。
记录器206拦截包括多个分组的、表示自第一装置202发送到第二装置212的显示数据的协议数据流208。记录器206复制协议数据流208的至少一个分组。记录器206使用至少一个复制的分组创建协议数据流的记录。记录器206在有些实施例中将信息与至少一个复制的分组关联在一起。该信息可以包括时间戳或数据长度指示符。在其中一些实施例中,记录器206将与分组相关联的信息嵌入协议数据流210的记录中。在其中的其它实施例中,记录器206将与分组相关的信息存储在单独的协议数据流中。在其中另一些实施例中,记录器将与分组相关联的信息存储在数据存储中。协议引擎502从协议数据流210的记录读取至少一个复制的分组并使用与该至少一个复制的分组相关联的信息再生由协议数据流210表示的显示数据。
现在向前参看图11,其中的框图描述了用于在有状态的远程表示协议的回放中进行实时搜索的系统。简单地说,该图描述了回放装置514(见上面的图5)的一个实施例,包括两个协议引擎502、后台协议引擎1102、前台协议引擎1106、以及状态快照1104和显示器1108。后台协议引擎1102接收协议数据流1110的记录并读取协议数据流1110的记录,其包括多个分组并表示显示数据。在一个实施例中,该回放装置514通过呈送协议数据流1110中的至少一个分组的内容并使用显示器1108显示结果来再生显示数据。该结果包括但不限于可以感知的听觉、视觉、触觉或嗅觉的演示。
现在更详细地参看图11,后台协议引擎1102启动对所呈送的显示数据的接收者以在协议数据流1110的表示期间实时搜索内容。后台协议引擎1102在从协议数据流1110读取至少一个分组时产生至少一个状态快照1104。在一个实施例中,后台协议引擎1102将至少一个分组的内容呈送到缓冲区。在这个实施例中,该缓冲区可以包括离屏缓冲区。在这个实施例中,后台协议引擎1102在它呈送该至少一个分组的内容时产生至少一个状态快照1104。后台协议引擎1102使状态快照1104对前台协议引擎1106可用。
状态快照1104使得能够再生显示数据,因为它存储了呈送协议数据流1110的协议引擎在记录器206从协议数据流208复制至少一个分组到协议数据流1110的记录的时间点的状态。在一个实施例中,状态快照1104包括描述某一时间点上的屏幕状态的数据结构。在另一实施例中,状态快照1104描绘所有变量、图像以及构成协议引擎在协议数据流1110中的参考点上的状态的数据组件。前台协议引擎1106还接收协议数据流1110的记录并且通过重新创建最初呈送协议数据流1110的协议引擎的状态来呈送协议数据流1110中的至少一个分组的内容。在一个实施例中,前台协议引擎1106使用状态快照1104的内容呈送该至少一个分组的内容。
在一个实施例中,状态快照1104包括数据结构。在其它实施例中,状态快照1104包括数据库。在一个实施例中,状态快照1104的内容包括与可视表面的状态有关的显示数据。在另一实施例中,状态快照1104的内容包括与离屏表面的状态有关的显示数据。在又一实施例中,状态快照1104的内容包括与图形对象的状态有关的显示数据。在有些实施例中,状态快照1104的内容包括与调色板的状态有关的显示数据。在其它实施例中,状态快照1104的内容包括与缓存对象的状态有关的显示数据。在另其它实施例中,状态快照1104的内容包括与缓冲区的状态有关的显示数据。
前台协议引擎1106接收协议数据流1110的记录并使用状态快照1104识别包含所请求的数字数据的表示的分组并呈送该分组。在有些实施例,前台协议引擎1106产生协议数据流1110的记录的实时可感知表示以表示给使用显示器1108的观众。在有些实施例中,前台协议引擎1106通过呈送协议数据流1110中的至少一个分组的内容来产生实时可感知表示。可感知表示可以分别包括或一起包括但不限于听觉、视觉、触觉或嗅觉的演示。
在其中一个前台协议引擎1106呈送协议数据流1110中的至少一个分组的内容的实施例中,前台协议引擎1106在由后台协议引擎1102呈送的同时启动对协议数据流1110中的至少一个分组的内容的呈送。但是,后台协议引擎1102只呈送到缓冲区并在由前台协议引擎1106开始的实时可感知呈现完成之前完成呈现和对至少一个状态快照1104的生成,前台协议引擎1106在一个实施例中不仅呈送到缓冲区而且以可感知方式呈现。在一个实施例中,后台协议引擎1102以最大的可能速度呈现协议数据流1110而不管与记录(将以其它方式指定呈现时间)相关的任何时间戳。因此,在其协议数据流1110的记录的实时可感知表示的产生期间,至少一个有状态快照1104对前台协议引擎1106可用。
在一个实施例中,前台协议引擎1106以顺序方式呈现协议数据流1110的记录中多个分组的内容。在这个实施例中,呈现并表示给用户的显示数据以记录协议数据流时发生的顺序表示这些显示。协议数据流1110的记录可以包括信息,例如由前台协议引擎1106在顺序呈现显示数据中使用的时间戳。在有些实施例中,前台协议引擎1106实时呈现显示数据。当前台协议引擎1106接收再生由协议数据流1110的记录中的特定分组表示的特定显示数据的请求时,前台协议引擎1106使用识别出的状态快照1104的内容呈现所请求的显示数据。
在有些实施例中,后台协议引擎1102和前台协议引擎1106位于相同装置上。在其它实施例中,后台协议引擎1102和前台协议引擎1106位于不同装置上。
现在回过去参看图9,其中的流程图描述了用于在有状态远程表示协议的回放期间进行实时搜索的方法中采取的步骤的一个实施例。简单地说,先请求呈现由协议数据流的记录中的分组内容表示的数据显示(步骤902)。通过具有不迟于与所请求的分组相关联的时间戳的相关时间戳的状态快照的第一识别(步骤904)和根据该识别出的状态快照呈现所请求的内容(步骤906),呈现适当分组的内容。
在一个实施例中,前台协议引擎1106接收呈现协议数据流1110的记录中分组的内容的请求。协议数据流1110包括多个其内容表示显示数据的分组。在有些实施例中,在前台协议引擎1106通过向使用显示器1108的观众(且该观众希望搜索特定显示数据)呈现协议数据流1110的记录中的分组内容而再生显示数据时,产生请求。
前台协议引擎1106识别出具有不迟于与所请求的分组相关联的时间戳的相关时间戳的状态快照1104。前台协议引擎1106根据识别出的状态快照1104显示由所请求的分组的内容表示的显示数据。在一个实施例中,识别出的状态快照1104从协议数据流1110指示出正确的分组,前台协议引擎1106可以呈现其内容以向用户提供所请求的显示数据。
在其它实施例中,识别出的状态快照1104包括呈现协议数据流的协议引擎在记录器从协议数据流1110复制分组但所复制的分组的内容表示的显示数据在观众请求的显示数据之前时的某一时间点的状态。在其中一些实施例中,在状态快照和包含所请求的显示数据的表示的分组之间有多个分组。在其中一些实施例中,前台协议引擎1106将中间分组的内容或只将分组呈送到离屏缓冲区。前台协议引擎1106接着将其内容表示显示数据的分组不仅呈送到离屏缓冲区,还以可感知的方式呈现给用户。在一个实施例中,前台协议引擎1106在所请求分组的内容所表示的显示数据之前,提供以可感知的方式由中间分组的内容所表示的显示数据。
现在参看图10,所示流程图描述了为产生能够在远程表示协议的回放期间进行实时搜索的状态快照所采取的步骤的一个实施例。简单地说,后台协议引擎1102接收协议数据流1110的记录,并在再生由协议数据流1110中的多个分组的内容所表示的显示数据时产生至少一个状态快照。
后台协议引擎1102接收包括多个分组的协议数据流1110的记录(步骤1002)。后台协议引擎1102产生协议数据流的记录的表示。在一个实施例中,后台协议引擎1102通过将多个分组的内容呈送给缓冲区来产生表示。在有些实施例中,该缓冲区是离屏缓冲区。
在有些实施例中,前台协议引擎1106也接收协议数据流1110的记录。在这些实施例中,前台协议引擎1106产生协议数据流记录的可由人感知的表示,尽管如上所述前台协议引擎1106不仅呈送到离屏缓冲区,也以可感知方式呈现(步骤1004)。在其中一个实施例中,前台协议引擎1106通过基本与后台协议引擎1102在它读取协议数据流的记录期间产生至少一个状态快照同时呈现多个分组的内容,来产生协议数据流1110的记录的可由人感知的表示。
在读取了协议数据流1110的记录中的至少一个分组后,后台协议引擎1102产生至少一个状态快照(步骤1006)。在一个实施例中,后台协议引擎1102在顺序读取协议数据流1110的记录期间产生至少一个状态快照。在另一实施例中,后台协议引擎1102基本与呈送分组的内容到缓冲区同时读取协议数据流1110的记录中的至少一个分组。在一个实施例中,后台协议引擎1102随后将所产生的状态快照1104存储下来(步骤1008)。在后台协议引擎1102周期性产生多个状态快照的实施例中,状态快照可以充当贯穿协议数据流1110的记录的标记,帮助定位协议数据流1110中特定时间点以及在状态快照1104之前或之后到来的分组。
向前参看图12,其中的流程图描述了为状态快照的自适应产生而采取的步骤的一个实施例。简单地说,后台协议引擎1102监控观众的活动并根据观众的活动级别产生一个或多个状态快照1104。
在将协议数据流1110的记录的表示呈现给用户(步骤1202)期间,后台协议引擎1102监控用户的活动(步骤1204)。在一个实施例中,前台协议引擎1106产生协议数据流1110的记录的表示并且用显示器1108将其呈现给用户。在其它实施例中,后台协议引擎1102产生该表示。在另其它实施例中,第三装置产生该表示。
后台协议引擎1102在表示期间监控用户的活动(步骤1204)。通过监控用户的活动,后台协议引擎1102根据对活动的监控开发出活动特征(步骤1206)。后台协议引擎根据开发出的活动特征产生至少一个状态快照1104(步骤1208)。
在有些实施例中,后台协议引擎1102识别出用户的活动级别。在有些实施例中,后台协议引擎1102识别出不活动期间。在其它实施例中,后台协议引擎1102在显示数据中识别出用户的兴趣区域。活动特征反映了这些识别。
后台协议引擎1102根据活动特征产生至少一个状态快照。在有些实施例中,后台协议引擎1102决定在一个或多个状态快照之间扩展间隔。在其它实施例中,后台协议引擎1102决定在一个或多个状态快照之间缩减间隔。在另其它实施例中,后台协议引擎1102根据活动特征决定移除至少一个状态快照。在另其它实施例中,后台协议引擎1102根据活动特征决定增加至少一个状态快照。
在一个实施例中,后台协议引擎1102识别出搜索概率的预测统计分布。图13是描述了一个实施例的三种类型的搜索概率分布图。在这个实施例中,后台协议引擎1102收集并存储与用户所做的搜索请求有关的数据。在一个实施例中,该数据包括用户如何定期做出搜索请求。在一个实施例中,该数据包括每个搜索请求的范围—所请求的显示数据和通过呈现协议数据流1110的记录中的分组的内容而表示给用户的当前显示数据之间的距离。该范围可以用时间单位描述或者相对于协议数据流1110的整个记录的长度进行描述。在一个实施例中,做出搜索请求的时间戳被记录下来。
图14是描述了根据确定的搜索概率分布产生状态快照的一个实施例的图。后台协议引擎1102使用收集的搜索请求数据产生围绕当前表示的显示数据的搜索概率分布图表。后台协议引擎1102为流中的每个位置分配一个值,该值表示用户将请求搜索与该位置相关联的显示数据的估计概率。使用这个数据,后台协议引擎1102决定将产生的状态快照1104放在何处并根据搜索概率的统计分布产生至少一个状态快照1104。
图15描述了用户使用模式的一个实施例。在一个实施例中,后台协议引擎1102根据用户的使用模式为用户开发出活动特征。使用模式反映识别出的搜索概率。具有较高搜索概率的区域将被提供较高的状态快照密度,具有较低搜索概率的区域将被提供较低的状态快照密度。在有些实施例中,任意一对状态快照之间的距离与它们之间的平均搜索概率成反比。后台协议引擎1102期望用户搜索较高概率区域,因此大部分搜索将很快,因为产生的状态快照1104之间的间距相对较短。为了确保没有个别搜索请求过慢,在一个实施例中,即使搜索概率非常低,后台协议引擎1102将为产生的状态快照的间距强加一个上限。同样,在另一个实施例中,下限防止状态快照在很高概率区域布置得过于接近。在有些实施例中,在决定状态快照布置时,相邻状态快照之间的呈现量被考虑以最小化延迟。
对于具有新用户或没有可区别的使用模式的用户的实施例,后台协议引擎1102应用缺省状态快照产生模式。这个模式假定大多数搜索将靠近任一方向的当前帧发生,但长距离搜索性能必须最佳。典型的用户会期望在当前帧周围来回小幅移动时有好的性能,因为很多小的搜索步骤可以用转轮输入装置实现。搜索长距离不太常见,而且明显的延迟也是可接受的权衡。
如果用户偏离他们被认可的使用模式,后台协议引擎1102在对用户无了解的实况回放期间调节状态快照产生模式。后台协议引擎1102移动状态快照位置以调整为新使用模式。例如,如果通常使用鼠标滚轮小步搜索的用户开始较大范围搜索,后台协议引擎1102减少当前帧附近的状态快照的数量以释放资源从而在较大范围的区域中增加状态快照。
图16概述了在用于状态快照的自适应产生的系统中的上述方法的一个实施例,该系统包括后台协议引擎1602、前台协议引擎1608、协议数据流1612、活动特征1604以及状态快照1606。前台协议引擎1608将协议数据流记录的表示呈现给观众。后台协议引擎1602在表示期间监控观众的活动,根据监控开发出活动特征1604并根据活动特征生成和维护状态快照1606。
现在参看图18,所示流程图描述了为产生用于所记录的计算机会话的回放的回放指令而采取的步骤的一个实施例。简单地说,在第一装置上执行的协议引擎接收记录会话(步骤1802)。记录的流包括表示在第二装置上执行的应用程序产生的显示数据的多个分组。协议引擎为记录的流中的分组决定以人可感知的方式呈现该分组的内容(步骤1804)。随后协议引擎将该决定存储在回放数据结构中(步骤1806)。
在一个实施例中,协议引擎包括上面图5中所述的协议引擎502。在其它实施例中,协议引擎包括如图11中所述的后台协议引擎1102。在又其它实施例中,协议引擎包括如图11中所述的前台协议引擎1106。在协议引擎包括后台协议引擎1102的一些实施例中,该协议引擎可以中断执行后台协议引擎1102的功能并开始执行前台协议引擎1106的功能。在协议引擎包括前台协议引擎1106的一些实施例中,该协议引擎可以中断执行前台协议引擎1106的功能并开始执行后台协议引擎1102的功能。在其它实施例中,该协议引擎包括后台协议引擎1102和前台协议引擎1106。在其中一些实施例中,后台协议引擎1102和前台协议引擎1106位于相同装置上。在其它实施例中,后台协议引擎1102和前台协议引擎1106位于不同装置上。
在一个实施例中,协议引擎为记录流中的分组决定以可以被人感知的方式显示该分组(步骤1804)。该显示包括但不限于听觉、视觉、触觉或嗅觉的演示,或者它们的组合。在有些实施例中,协议引擎根据分组的内容决定显示该分组。在其中一个实施例中,协议引擎根据具有输入焦点的应用程序的指示做出决定。在其中另一个实施例中,协议引擎根据对该分组中存储的用户输入的类型的评估做出决定。在其中一些实施例中,协议引擎根据对该分组中存储的图形更新的类型的评估做出决定。在其中其它实施例中,协议引擎根据对该分组中存储的交互顺序的类型的评估做出决定。
在一个实施例中,协议引擎将该决定存储在回放数据结构中(1806)。在有些实施例中,回放数据结构描述如何再生记录流中包含的显示数据。在一个实施例中,回放数据结构中存储的指令控制呈现显示数据的过程。在一个实施例中,回放数据结构包括用于呈现记录流中分组的内容的时间。在这个实施例中,回放数据结构中包含的时间被用于呈现分组的内容,而且不是与记录的分组相关联的呈现时间(如果有的话)。在一个实施例中,回放数据结构接收改变呈现时间的用户输入。
在有些实施例中,回放数据结构包括说明如何进行对所记录会话的一次或多次回放的元数据。在一个实施例中,回放数据结构由记录流中的每个分组的记录组成,表示在回放期间分组的内容应该在什么相对时间点被呈现。在有些实施例中,元数据还包含分组开始文件中的偏移。
现在回过去参看图17,其中的框图描述了用于呈现记录会话的系统的一个实施例,该系统包括第一装置1702、后台协议引擎1704、回放数据结构1706、前台协议引擎1708、显示器1710、第二装置1712和记录流1714。后台协议引擎1704在第一装置1702上执行并响应接收记录流1714而产生回放数据结构1706,所述记录流1714表示由在第二装置1712或第三装置上执行的应用程序产生的显示数据。前台协议引擎1708接收记录流1714并根据后台协议引擎1704产生的回放数据结构1706而呈现记录流1714。
在一个实施例中,后台协议引擎1704和前台协议引擎1708各自接收记录流1714。在这个实施例中,后台协议引擎1704基本与前台协议引擎1708呈现记录流同时产生回放数据结构。
在一个实施例中,前台协议引擎1708位于第一装置1702上。在另一个实施例上,如图17中的阴影所示,前台协议引擎1708既不位于第一装置1702上也不位于第二装置1712上。在又一实施例中,前台协议引擎1708位于第三装置上。在有些实施例中,前台协议引擎1708包括后台协议引擎1704。在其中一些实施例,后台协议引擎1102和前台协议引擎1106位于相同装置上。在其中其它实施例中,后台协议引擎1102和前台协议引擎1106位于不同装置上。
在一个实施例中,后台协议引擎在回放数据结构中存储了用于呈现记录流中至少一个分组的至少一条指令。在另一实施例中,后台协议引擎将元数据存储在回放数据结构中。在又另一实施例中,后台协议引擎在回放数据结构中存储指示呈现记录会话中至少一个分组的时间的记录。
前台协议引擎1708根据回放数据结构呈现记录会话中的至少一个分组。在一个实施例中,前台协议引擎以可以被人感知的方式将记录会话中的至少一个分组呈送给一个缓冲区。在另一个实施例中,前台协议引擎将记录会话中的至少一个分组呈送给缓冲区。
向前参看图19,所示流程图描述了在用于所记录的计算机会话的回放的方法中所采取的步骤的一个实施例。简单地说,后台协议引擎接收包括多个分组的记录流(步骤1902),这些分组表示由在第二装置上执行的应用程序产生的显示数据。后台协议引擎为记录流中的至少一个分组决定以可以被人感知的方式呈现该分组(步骤1904)。后台协议引擎将该决定存储在回放数据结构中(步骤1906)。前台协议引擎从记录流中检索至少一个分组(步骤1908),访问回放数据结构(步骤1910),并根据回放数据结构呈现该至少一个分组(步骤1912)。
在一个实施例中,协议引擎为记录流中的一个分组决定以可以被人感知的方式显示该分组(步骤1904)。该显示包括但不限于听觉、视觉、触觉或嗅觉的演示,或者它们的组合。在有些实施例中,协议引擎根据分组的内容决定显示该分组。在其中一个实施例中,协议引擎根据具有输入焦点的应用程序的指示做决定。在其中另一个实施例中,协议引擎根据对分组中存储的用户输入类型的评估做决定。在其中一些实施例中,协议引擎根据对分组中存储的图形更新类型的评估做决定。在其中其它实施例中,协议引擎根据对分组中存储的交互序列类型的评估做决定。在一个实施例中,协议引擎将决定存储在回放数据结构中(步骤1906)。
在一个实施例中,前台协议引擎接收记录会话。在其它实施例中,前台协议引擎检索会话。在其中一些实施例中,前台协议引擎从存储元件检索记录会话。
在一个实施例中,前台协议引擎从记录流中检索至少一个分组(步骤1908)。在这个实施例中,前台协议引擎随后访问回放数据结构(步骤1910)并根据回放数据结构呈现该分组的内容(步骤1912)。在有些实施例中,回放数据结构包含以可感知方式呈现该分组的内容的指令。在其中一个实施例中,前台协议引擎将该分组的内容呈现在屏幕上。在有些实施例中,前台协议引擎总是将该至少一个分组的内容呈送给缓冲区。在很多实施例中,当前台协议引擎将分组的内容呈送给一个缓冲区时,该缓冲区是离屏缓冲区。在其中一个实施例中,前台协议引擎按照回放数据结构的指引将分组的内容呈送给离屏缓冲区并将分组内容呈现在屏幕上。
在其它实施例中,回放数据结构包括不以可感知方式呈现分组内容的指令。在其中一个实施例中,在访问回放数据结构时,前台协议引擎不以可感知方式呈现分组的内容,而是将分组内容呈送到缓冲区。
对于前台协议引擎根据回放数据结构将分组内容只呈送到离屏缓冲区的实施例,前台协议引擎可感知地再生不同于记录流的显示数据。在一个实施例中,这导致显示数据的表示比原始记录流要短。在有些实施例中,所呈现的分组内容提供了原始显示数据的流式再生。在其它实施例中,所呈现的分组内容提供了显示数据的定制版本。在一个实施例中,是否以可感知方式呈现分组内容的决定是基于策略或用户请求做出的。这些实施例向用户提供了对记录会话回放的控制。
向前参看图21,描述了以不包含被去除活动的可感知时间间隔呈现记录会话的一个实施例。在这个图中,黑框代表包含用户输入的分组,虚线框代表包含图形命令的分组。由“用户输入”和“图形”箭头中的白框代表的时间间隔没有分组也因此根本没有活动。
去除没有任何活动的可感知时间间隔的方法的一个实施例如下。记录会话中的第一分组被识别出。该记录会话包括多个表示显示数据的分组。与记录会话中的第一分组最近的之前分组作为第二分组被识别出。确定第一时间间隔,该时间间隔发生在所述第一分组和所述第二分组。第一时间间隔超出阈值的决定被做出。以所述第一分组和所述第二分组之间的第二时间间隔短于第一时间间隔呈现分组的内容。
在一个实施例中,协议引擎做出该决定。在有些实施例中,协议引擎将该决定存储在回放数据结构中。在一个实施例中,相同协议引擎根据回放数据结构呈现记录会话。在另一实施例中,做决定的协议引擎包括后台协议引擎,呈现记录会话的协议引擎包括前台协议引擎。
在一个实施例中,当协议引擎确定该时间间隔超出阈值时,协议引擎将该时间间隔归为可感知的时间间隔。如果再生的记录会话的用户能够感知到过去了一段没有活动的时间,该时间间隔就是可感知的。在有些实施例中,阈值由策略决定。在其它实施例中,协议引擎是用预定的阈值硬编码的。在这种实施例中,协议引擎在回放数据结构中存储了指令以呈现第一和第二分组之间的更短的时间间隔而不是原始时间间隔。在另一个实施例中,确定时间间隔超出阈值的协议引擎也呈现记录会话的内容。在这种实施例中,协议引擎在回放数据结构中不存储呈现更短时间间隔的指令。对于没有被归类为可感知的时间间隔,不需要缩短的时间间隔,原始的时间间隔被呈现在第一和第二分组之间。
回过去看图20,所示流程图描述了为产生用于呈现记录会话的回放指令所采取的步骤的一个实施例。简单地说,识别出记录会话中的分组中存储的输入类型(步骤2002),根据该输入类型标记该分组(步骤2004)。随后根据该标记将呈现该分组内容的目的地存储在回放数据结构中。
在一个实施例中,分组所存储的输入类型决定了该分组是否将被呈现。在一个实施例中,该分组不包含内容。在有些实施例中,至少一个分组不包含内容。在这些实施例中,识别出包括至少一个不包含内容的分组的时间间隔。在其中一些实施例中,该时间间隔将不会被呈现。
在有些实施例中,输入类型是指来自特定类型的输入装置的输入,包括但不限于键盘、鼠标、麦克风、或摄像头。在一个实施例中,识别出输入类型的步骤还包括将输入类型识别为来自某种输入装置的输入。在另一个实施例中,识别出输入类型的步骤还包括将输入类型识别为键盘输入。在其它实施例中,输入类型与输入装置无关。在其中一个实施例中,输入类型被识别为命令。
根据分组包含的输入类型,标记包含输入的该分组(步骤2004)。在一个实施例中,分组被根据策略进行标记。在这种实施例中,策略决定导致分组被标记的输入类型。在另一个实施例中,不需要任何标记。
根据标记将用于呈现分组的目的地存储在回放数据结构中(步骤2006)。在有些实施例中,该目的地包括缓冲区。在一个实施例中,指令被存储在回放数据结构中,指引分组的呈送至缓冲区。在一个实施例中,该缓冲区是离屏缓冲区,当分组的内容被呈送到该缓冲区时,这些内容未能被呈现的用户所感知。在一个实施例中,指令被存储在回放数据结构中,指引被标记的分组以可感知的方式呈现或呈送到缓冲区。
在一个实施例中,该方法去除了不包含任何有意义活动的可感知时间间隔。在这个实施例中,由策略识别出特定类型的输入为有意义或无意义。在有些实施例中,该策略可以被硬编码到协议引擎中。在其它实施例中,由管理员配置该策略。
在有些实施例中,如果分组不包含内容,协议引擎就将其识别为无意义的分组。在其中一些实施例中,这样的分组表示没有要被记录到记录流1714的用户活动发生的时间间隔。在这些实施例中,协议引擎将目的地存储在回放数据结构中,该目的地用于以如下方式呈现记录流中多个分组中的每一个分组,其中任何无意义分组不会以可感知的方式呈现。图22描述了根据回放数据结构呈现其内容的再生的记录流的一个实施例。在这个实施例中,根据回放数据结构的呈现使得能够去除不包含有意义活动的时间间隔(由图22中的白色框和条纹框表示),这些时间间隔包括那些根本不包含任何活动的时间间隔。这个呈现将记录会话的更有意义的再生提供给用户,其中由策略决定何时其内容表示有意义的活动。在一个实施例中,表示有意义活动的内容包括用户输入的类型。
在有些实施例中,协议引擎根据先前定义的输入类型(包括可证明的无意义时间)识别出输入类型。在有些实施例中,无意义时间包括其中的分组不包含任何内容的时间间隔。在其它实施例中,策略定义输入类型,而输入类型构成无意义时间。在又其它实施例中,包括可证明的无意义时间的输入类型的定义被硬编码到协议引擎中。
在有些实施例中,分组的内容表示用户活动,但策略将该活动识别为无意义活动。在其中一个实施例中,策略将无意义活动定义为再生的记录会话的用户不感兴趣的活动。在其中另一个实施例中,由策略决定,有意义的分组包含再生的记录会话的用户感兴趣的内容。在一个实施例中,无意义分组不具有有意义地表示与应用交互作用的输入的内容。在另一实施例中,在协议数据流(记录流由此创建)中发送应用数据的装置不发送有意义的屏幕更新。
在一个实施例中,协议引擎为记录会话中的至少一个分组决定该分组的内容是否包括但不限于如键盘输入、鼠标输入或命令消息等输入类型。如果该分组包含例如键盘输入的输入类型,协议引擎就将该分组标记为有意义分组。如果该分组不包含这样的输入类型,协议引擎就将该分组标记为无意义的。在一个实施例中,只有在其所有内容都无意义时该分组才被认为是无意义的。在另一实施例中,分组包含多种输入类型,而其中每一种可能被标记为有意义或无意义。
在一个实施例中,当协议引擎将分组标记为无意义时,协议引擎决定该分组的内容不应该以可感知的方式呈现。在有些实施例中,协议引擎反而决定该分组的内容应该呈送到缓冲区。在其中一个实施例中,缓冲区是离屏缓冲区。如果分组被标记为有意义分组,在一个实施例中,协议引擎决定该分组的内容应该以可感知方式呈现。在有些实施例中,可感知方式包括呈现在屏幕上。在一个实施例中,协议引擎决定该分组应该不仅以可感知方式呈现,而且要呈送到缓冲区。在这个实施例中,该分组的内容不仅呈现到屏幕上显示而且呈送到离屏缓冲区。协议引擎将决定存储在回放数据结构中。
在图22所示的一个实施例中,记录流中的特定分组中具有表示有意义用户活动的内容,在这个实施例中指示活动鼠标按钮状态的鼠标输入由图22中的黑框表示。记录流中的其它分组具有表示指示活动鼠标按钮状态的鼠标输入的内容,由图22的条纹框表示。协议引擎识别出只包含无意义活动的至少一个分组(例如指示不活动鼠标按钮状态的鼠标输入),并将该分组的内容不应以可感知方式呈现的决定存储在回放数据结构中。通过做出这种决定,根据回放数据结构呈现记录流的内容的协议引擎只再生与再生的记录会话的用户有关的显示数据,其中由策略定义相关性或者协议引擎包括相关内容的定义。
现在参看图23,所示流程图描述了在呈现记录会话中为消除没有有意义活动的周期而采取的步骤的一个实施例。确定第一时间间隔,该时间间隔发生在记录会话中标记的分组与最近的前一个标记的分组之间(步骤2302)。该记录会话包括表示显示数据的多个分组。做出决定,其中该第一时间间隔是否超出阀值(步骤2304)。采用该标记的分组和最近的前一个标记的分组之间的、短于第一时间间隔的第二时间间隔,呈现记录会话中的分组的内容(步骤2306)。
在一个实施例中,协议引擎做出决定。在有些实施例中,协议引擎将决定存储在回放数据结构中。在一个实施例中,相同协议引擎根据回放数据结构呈现记录会话。在另一实施例中,做决定的协议引擎包括后台协议引擎,而呈现记录会话的协议引擎包括前台协议引擎。
在有些实施例中,协议引擎在分组根据该分组所包含的输入类型被标记为有意义分组之后,做出第一时间间隔的决定(步骤2302)和第一时间间隔是否超过阀值的决定(步骤2304)。在其中一个实施例中,该分组中包含的输出类型影响着标记该分组的决定。在一个实施例中,协议引擎确定被标记为有意义的分组和其最近的前一个有意义的分组之间的时间间隔,或者如果没有前一个有意义的分组则确定记录的开始。在另一实施例中,协议引擎以标记的分组和前一个分组之间的第二时间间隔呈现记录会话的内容,所述第二时间间隔包括短于第一时间间隔的时间间隔。在另一实施例中,协议引擎以标记的分组和跟随该标记的分组的分组之间的第二时间间隔呈现记录会话的内容,所述第二时间间隔包括比第一时间间隔更短的时间间隔。
在一个实施例中,当协议引擎确定为时间间隔超出阀值时(步骤2304),协议引擎将该时间间隔归类为可感知的时间间隔。如果再生的记录会话的用户能够感知已经过去了一段没有活动的时间,则该时间间隔就是可感知的。在有些实施例中,策略决定阀值。在其它实施例中,协议引擎以预定阀值被硬编码。在这个实施例中,协议引擎在回放数据结构中存储指令以呈现两个有意义分组之间的更短的时间间隔而不是原始时间间隔。在另一实施例中,确定时间间隔超出阀值的协议引擎还呈现记录会话的内容。在这个实施例中,协议引擎不在回放数据结构中存储指令以呈现更短的时间间隔。对于没有被归为可感知类的时间间隔,不需要缩短的时间间隔,在两个有意义的分组之间呈现原始的时间间隔。
在有些实施例中,记录流中分组的内容表示影响屏幕区域的图形更新。在一个实施例中,图形更新包括但不限于闪烁系统托盘图标、标题栏或任务栏项目、闪亮web页面或应用中的文本、时间显示、系统动画、应用动画和证券报价机以及其它周期性更新的信息显示。在有些实施例中,像这样的图形更新都被确定为对记录流再生的用户无意义。在其中一个实施例中,协议引擎包括这个确定。在其中另一个实施例中,策略定义至少一个图形更新为无意义。在这个实施例中,管理员产生策略。在另一实施例中,记录流的再生的用户产生该策略。
现在参看图24,所示流程图描述了在呈现记录会话中为消除图形更新而采取的步骤的一个实施例。简单地说,识别出图形更新(步骤2402),确定该图形更新影响的屏幕区域(步骤2404)。存储受影响屏幕区域的位置和状态指示(步骤2406),识别出影响该屏幕区域的状态的第二图形更新(步骤2408)。然后根据第二图形更新是否改变受第一图形更新影响的区域而指示呈现的目的地和用于呈现的时间间隔(步骤2410和步骤2412)。
在一个实施例中,协议引擎完成图24所示步骤。在这个实施例中,协议引擎识别出记录会话中的分组,所述记录会话表示由应用程序产生的显示数据,所述分组包含第一图形更新。协议引擎确定受该第一图形更新影响的屏幕区域。在一个实施例中,图形更新通过改变显示在部分屏幕上的数据而影响该屏幕区域。协议引擎在第一图形更新和该屏幕区域的位置之后存储该屏幕区域的状态指示。在一个实施例中,协议引擎存储更新后的屏幕区域的副本。在另一实施例中,协议引擎存储更新后的屏幕区域的散列值。
在一个实施例中,协议引擎识别出在时间间隔内影响屏幕区域的第二图形更新。在有些实施例中,由策略决定该时间间隔的长度。在其中一个实施例中,该策略确定接近由应用和操作系统使用的人类级别循环周期(humanscalecyclicperiod)的上限的时间间隔。在一个实施例中,当屏幕的一个区域在被设计为由用户观看的期间(例如,从有效的几分之一秒到几秒)进行循环显示时,该显示包括人类级别循环周期。在有些实施例中,协议引擎包括对时间间隔长度的定义。
在协议引擎识别出影响由第一图形更新影响的屏幕区域的第二图形更新的实施例中,协议引擎决定该屏幕区域在第二图形更新之后的状态是否不同于在第一图形更新之后的状态。如果该屏幕区域在第二图形更新之后没有变化,第二图形更新就不需要在再生的记录会话中呈现。这个实施例中的屏幕图形更新不需要呈现是因为协议引擎决定图形更新正在进行以人类级别速度的绘画命令周期,使得该更新可以由再生的记录会话的用户观察到,但该图形更新为用户带来了无意义的信息。在有些实施例中,该图形更新通过如下但不限于绘画、插入符闪烁、闪烁的任务栏项目、网络活动指示符或滚动的文本来影响屏幕区域。在有些实施例中,由策略决定用那种类型的图形更新影响屏幕区域不构成有意义的活动并且不应该为用户呈现在记录会话的再生中。在其它实施例中,协议引擎包括这个决定。
在一个实施例中,根据屏幕区域在第二屏幕更新后是否有所变化,用于呈现包含影响该屏幕区域的第二图形更新的第二分组的目的地的指示被存储在回放数据结构中。在另一实施例中,根据屏幕区域的状态在第二图形更新之后是否不同于该屏幕区域在第一图形更新之后的状态,与包含了影响该屏幕区域的第二图形更新的第二分组相关联的用于呈现的时间间隔的指示被存储在回放数据结构中。
根据屏幕区域的状态在第二图形更新之后是否不同于该屏幕区域在第一图形更新后的状态,图25描述了根据回放数据结构中存储的指示呈现再生的记录会话的一个实施例。在一个实施例中,受第一图形更新影响的屏幕区域在第二图形更新之后没有变化。在这个实施例中,回放数据结构中存储了不以可感知方式呈现第二图形更新的指示。在一个实施例中,不以可感知方式呈现第二图形更新包括将第二图形更新呈现于离屏(off-screen)而不是在屏幕上(on-screen)。在有些实施例中,不以可感知方式呈现第二图形更新包括将第二图形更新呈送到离屏缓冲区。在一个实施例中,不以可感知方式呈现第二图形更新包括包括不呈现第二图形更新。在有些实施例中,不以可感知方式呈现第二图形更新的决定包括呈现图形更新未被呈现的可感知的指示。在其中一个实施例中,再生的记录会话的用户可以请求以可感知的方式呈现第二图形更新。
图25描述了一个实施例,其中通过确定第二图形更新之后的屏幕区域的状态相对于第一图形更新之后的屏幕区域的状态没有变化来检测循环更新,并根据该循环更新的检测而确定没有呈现第二图形更新。在受第二图形更新影响的屏幕区域的状态不同于第一图形更新之后的屏幕区域的状态的实施例中,做出决定以用可感知方式呈现分组的内容并将其呈送到缓冲区。
在有些实施例中,多个分组的内容表示图形更新。在其中一个实施例中,根据屏幕区域上的超过两个图形更新的效果做出以可感知方式呈现图形更新的决定。在一个实施例中,用于呈现图形更新的目的地的决定响应于所识别的多个分组中的各个分组的内容所表示的图形更新。
在有些实施例中,记录流中的分组内容表示交互序列。在一个实施例中,交互序列包括但不限于登录序列、注销序列或者凭证输入。在有些实施例中,像这样的交互序列被确定为对记录流再生的用户没有意义。在其中一个实施例中,协议引擎包括这个决定。在另一个实施例中,由策略定义至少一个交互序列为无意义。在这个实施例中,管理员产生该策略。在另一个实施例中,记录流再生的用户产生该策略。
现在参看图26,所示流程图描述了在呈现记录会话中为了消除交互序列而采取的步骤的一个实施例。根据策略识别出至少一个分组的交互序列的开始(步骤2602)。在回放数据结构中有该交互序列应该呈现到缓冲区的指示(步骤2604)。识别出至少一个分组的交互序列的结束(步骤2606)。识别出在所识别出的交互序列开始之前的分组和识别出的交互序列结束之后的分组之间的第一时间间隔(步骤2608)。回放数据结构包含呈现比第一时间间隔更短的第二时间间隔的指令(步骤2610)。
在一个实施例中,协议引擎做出识别和指示以消除交互序列。识别出交互序列的开始(步骤2602)。在一个实施例中,通过识别出可视标记,识别出交互序列的开始。在一个实施例中,可视标记包括以相同方式显示给所有会话的凭证窗口。在另一个实施例中,可视标记包括由空白屏幕接着是桌面背景对凭证窗口的替换。在一个实施例中,可视标记包括对可识别图标的显示。
在有些实施例中,通过确定交互序列的开始时间识别出交互序列的开始。在其中一个实施例中,由组件检测交互序列中事件的开始时间。在其中另一个实施例中,该组件检测登录序列的开始时间。在其中其它实施例中,该组件检测注销序列的开始时间。在一个实施例中,对交互序列的开始的识别,响应于以输入焦点识别窗口。
在回放数据结构中做出该交互序列应该呈送到缓冲区的指示(步骤2604)。在这个实施例中,识别出的交互序列不应以可感知方式呈现,该交互序列被呈送到缓冲区。将该交互序列呈送到缓冲区导致交互序列未能被所要呈现的用户感知。对于由策略或用户将交互序列归类为无意义的实施例,这个呈送导致了无意义交互序列被去除。
另外还识别出交互序列的结束(步骤2606)。在有些实施例中,通过识别可视标记而识别出交互序列的结束。在其它实施例中,通过确定交互序列的结束时间而识别出交互序列的结束。在其中一个实施例中,某个组件检测出交互序列中事件的结束时间。在其中另一个实施例中,该组件检测出登录序列的结束时间。在其中其它实施例中,该组件检测出注销序列的结束时间。在另一个实施例中,对于交互序列结束的识别响应于以输入焦点识别窗体。
在有些实施例中,交互序列包括对应用的使用。在其中一个实施例中,由策略识别出包括对不应以可感知方式呈现的应用的使用的交互序列。在一个实施例中,这样的应用包括但不限于word处理文档。
在其中一个实施例中,通过识别出具有输入焦点的应用而识别出交互序列的开始。当分组的内容表示具有焦点的窗口时,根据可靠创建该窗口的进程的应用做出决定。在一个实施例中,表示具有焦点的窗口的分组的内容包括指示输入焦点中的变化的窗口通知消息。如果可靠的应用识别出不应以可感知方式呈现的交互序列的开始,就在回放数据结构中存储将该交互序列呈送到缓冲区的指示。通过识别出与交互序列的应用不相关的进程所拥有的窗口对焦点的捕获而识别该交互序列的结束。
在一个实施例中,第一时间间隔与交互序列相关联。在某种实施例中以可感知方式呈现与交互序列相关联的时间间隔而该交互序列自身不进行呈现,这将导致对所要呈现的用户可感知的一段时间,在该时间段内没有显示数据呈现并且用户在该交互序列之后呈现分组的内容之前等待该时间间隔的经过。一个实施例通过呈现较短的时间间隔代替原始的时间间隔而消除与交互序列相关联的时间间隔。在这个实施例中,识别出在识别出的该交互序列的开始之前的分组和识别出的该交互序列的结束之后的分组之间的第一时间间隔(步骤2608)。回放数据结构包含呈现比第一时间间隔更短的第二时间间隔的指示(步骤2610)。
在有些实施例中,协议引擎呈现记录会话中的分组内容,向用户提供记录会话的再生。在其中一些实施例中,协议引擎自动更改呈现至少一个分组的内容之间的时间间隔,导致了上下文相关的时间卷曲的回放。在这些实施例中,呈现接近于用户理解表示给用户的显示数据的能力。在一个实施例中,当被策略所定义时,当协议引擎确定分组内容所表示的显示数据具有被增加级别的复杂度或重要性时,呈现这些分组内容之间的时间间隔增大。在另一个实施例中,当被策略所定义时,当协议引擎确定分组内容所表示的显示数据具有被降低级别的复杂度或重要性时,呈现这些分组内容之间的时间间隔减小。在这些实施例中,协议引擎接近于用户理解显示数据的能力并且呈现内容以或者用更慢的速度给用户时间去理解该呈现,或者在用户需要较少的理解时间时以更快的速度呈现该内容。
现在参看图7,所示流程图描述了在呈现记录的计算机会话中的自动时间卷曲回放中所采取的步骤的一个实施例。协议引擎接收记录会话(步骤2702),该记录会话包括多个分组并表示显示数据,该协议引擎确定对该记录会话中的多个分组中的至少一些分组所表示的复杂度的量度(步骤2704)。协议引擎识别出记录会话中的多个分组中的至少一些分组之间的时间间隔(步骤2706)并且根据记录会话中的多个分组中的至少一些分组所表示的复杂度的量度而修改该时间间隔(步骤2708)。协议引擎将修改后的时间间隔存储在回放数据结构中(步骤2710),记录数据流根据该回放数据结构而被呈现(步骤2712)。
在有些实施例中,确定复杂度量度、识别时间间隔、修改时间间隔并存储该修改的协议引擎是后台协议引擎。在其中一个实施例中,后台协议引擎也呈现记录流。在其中另一个实施例中,前台协议引擎根据回放数据结构呈现记录流。在有些实施例中,后台协议引擎和前台协议引擎位于相同装置上。在其它实施例中,后台协议引擎和前台协议引擎位于不同装置上。
在有些实施例中,协议引擎确定记录会话中多个分组中的至少一些分组所表示的复杂度的量度(步骤2704)。在其中一些实施例中,协议引擎通过识别键盘输入中的可能的键入序列确定复杂度的量度。在一个实施例中,协议引擎检查所涉及的至少一种类型的键以识别键盘输入中可能的键入序列。在另一个实施例中,协议引擎检查所呈现的至少一个符号的序列以完成对键盘输入中可能的键入序列的启发式近似。
在其中一些实施例中,协议引擎存储由键特征确定的键分类。键特征包括但不限于可打印或不可打印字符、空格、导航键或功能键,并包括特征的组合。在一个实施例中,协议引擎确定包括可打印字符和偶尔出现的导航键的输入段构成普通输入,而大部分是不可视键的段不构成普通输入。在一个实施例中,协议引擎根据识别出的空格数量确定复杂度的量度。在这个实施例中,协议引擎包括对字处理的定义,该定义指示空格键在典型键入模式中平均大约每5-8个字符出现一次。
在一个实施例中,协议引擎使用不可打印字符的出现确定复杂度的量度。在另一个实施例中,协议引擎访问击键序列以识别在时间上紧密出现的非空格可打印字符的序列。在这个实施例中,协议引擎包括比较击键序列和字典以识别有效单词并确定与用户理解有效单词对比无效单词的能力有关的复杂度量度的能力。
在另一个实施例中,协议引擎确定分组的内容包含命令以呈现字符。在这种实施例中,协议引擎使用字符确定显示数据是否表示键入的用户活动。在这个实施例中,如果字符呈现速率接近带有小延迟的键盘输入速率,有可能是击键直接导致字符,由此判断很可能是用户正在键入。在一个实施例中,协议引擎使输入的键与产生的字符相关联。在另一个实施例中,协议引擎确定呈现的字符的空间序列(左至右,右至左)等。在一个实施例中,协议引擎根据分析多个分组内容的结果以及识别出由这些内容表示的模式和活动而确定复杂度的量度。
在其它实施例中,协议引擎根据对鼠标输入类型的识别确定复杂度量度。在一个实施例中,协议引擎确定表示鼠标点击的鼠标输入导致可能需要更慢的呈现速率以让用户理解,尤其是如果该点击跟在一系列键入后面。在另一个实施例中,协议引擎确定不表示鼠标点击的鼠标输入不会影响用户理解显示数据的能力,因而不会影响复杂度的量度。
在其它实施例中,协议引擎根据识别出图形更新复杂度的启发式近似而确定复杂度的量度。在一个实施例中,协议引擎确定图形更新复杂度的启发式近似根据(包括但不限于)正在更新的区域的大小、由图形命令改变的区域面积大小、对单独区域的更新的历史频率、循环图形命令、图形命令的数量、图形命令的频率、其内容中包含图形命令的相邻分组之间的时间间隔或者图形更新的类型。在协议引擎识别出图形更新的低复杂度量度的实施例中,协议引擎确定包含该图形更新的分组所表示的低复杂度的量度。在另一种协议引擎识别出图形更新的高复杂度量度的实施例中,协议引擎确定包含该图形更新的分组所表示的低复杂度的量度。
在一个实施例中,协议引擎识别出记录会话中的多个分组的至少一些分组之间的时间间隔(步骤2706)。在这个实施例中,协议引擎根据确定的复杂度量度修改该时间间隔(步骤2708)。在记录会话的多个分组中至少有一些分组包含表示与高复杂度量度相关联的显示数据的内容的实施例中,协议引擎增加这些分组之间的时间间隔以让用户有增加的呈现时间理解所呈现的显示数据。在另一种记录会话的多个分组中至少有一些分组包含表示与低复杂度量度相关联的显示数据的实施例中,协议引擎缩短这些分组之间的时间间隔以反映用户理解所呈现的显示数据所需时间的减少。在一个实施例中,用户需要呈现的分组内容之间与协议引擎呈现的量不同的时间量。在这个实施例中,用户修改时间间隔以反映用户理解呈现的显示数据所需的时间量。在有些实施例中,协议引擎还识别出多个分组中的至少一些分组与多个分组中的其它分组之间的时间间隔,修改在那些分组组之间识别出的时间间隔。
在有些实施例中,协议引擎识别出与记录会话中的分组相关联的第一标记。在一个实施例中,分组包括标记。在另一个实施例中,记录会话包括标记。
在一个实施例中,呈现显示数据的用户定义标记。在另一个实施例中,协议引擎定义标记。在协议引擎定义标记的实施例中,协议引擎根据第一标记修改时间间隔。在一个实施例中,协议引擎增加时间间隔,该时间间隔向所要呈现的用户提供更多显示数据时间以理解与第一标记相关联的分组的内容。在其它实施例中,协议引擎识别出第二个分组中的第二标记。在这个实施例中,协议引擎根据第一标记和第二标记之间的距离修改时间间隔。在这个实施例中,协议引擎为理解由标记的分组的内容所表示的显示数据提供更多的时间,为理解由未标记的分组的内容所表示的数据提供更少的时间。在一个实施例中,用户为用户感兴趣的显示数据定义标记,并且协议引擎为用户感兴趣的显示数据呈现额外的时间并减少用户不感兴趣的显示数据的呈现时间,如同由标记所决定。
在一个实施例中,协议引擎识别出记录会话中的多个分组中的至少一些分组中的第一标记,所述标记指示记录会话中的多个分组中的至少一些分组中的起始分组。协议引擎根据第一标记修改时间间隔。协议引擎识别出记录会话的多个分组中的至少一些分组中的第二分组中的第二标记,所述第二标记指示记录会话的多个分组中至少一些分组中的最后分组,并根据第一标记和第二标记之间的时间间隔修改时间间隔。
在一个实施例中,协议引擎将修改后的时间间隔存储在回放数据结构中(步骤2710)并且记录流根据回放数据结构的内容而被呈现(步骤2712)。在一个实施例中,协议引擎还根据与修改后的时间间隔有关的回放数据结构指令呈现记录流。在另一个实施例中,由不同的前台协议引擎呈现记录流。
在有些实施例中,确定了有应用的记录交互需要增加的呈现时间以向所要呈现的用户提供增加的时间理解所呈现的显示数据。在其中一些实施例中,确定了需要增加的时间的应用包括比不需要增加的时间的应用更重要的应用。在其中一个实施例中,用户做出该决定。在其中另一个实施例中,由策略做出该决定。在其中又另一个实施例中,协议引擎包括对需要增加的时间的应用的定义。
现在参看图28,所示流程图描述了在呈现记录的计算机会话中为根据识别出的应用进行自动时间卷曲回放而采取的步骤的一个实施例。接收包括多个分组并表示显示数据的记录会话(步骤2802)。识别出包含表示拥有焦点的窗口的内容的第一分组,所述窗口指示应用(步骤2804)。识别出其内容在呈现第一分组的内容之前呈现的第二分组和第三分组(其内容在呈现第一分组的内容之后呈现)之间的时间间隔(步骤2806)。根据所指示的应用修改识别出的时间间隔(步骤2808)。根据该修改呈现记录流中的至少一个分组(步骤2810)。
在一个实施例中,协议引擎接收记录会话(步骤2802)。在这个实施例中,协议引擎还识别出具有表示拥有焦点的窗口的内容的第一分组,所述窗口指示应用(步骤2804)。在一个实施例中,表示拥有焦点的窗口的分组的内容包括指示输入焦点中的变化的窗口通知消息。在一个实施例中,识别出其内容在呈现第一分组的内容之前呈现的第二分组和第三分组(其内容在呈现第一分组的内容之后呈现)之间的时间间隔(步骤2806)。在这个实施例中,协议引擎识别出其内容在呈现表示拥有焦点的应用窗口的内容之前呈现的分组,其内容表示拥有焦点的应用窗口的分组以及其内容表示不再拥有焦点的应用窗口的分组。
在有些实施例中,协议引擎修改拥有焦点的应用之前的时间间隔。在其它实施例中,协议引擎修改拥有焦点的应用之后的时间间隔。在一个实施例中,协议引擎接着确定应用窗口在其中拥有焦点的时间间隔并根据应用类型修改该时间间隔。在一个实施例中,协议引擎增大识别出的时间间隔。在这个实施例中,协议引擎向所要呈现的用户提供更多时间以查看该应用。在另一个实施例中,协议引擎缩短识别出的时间间隔。在这个实施例中,协议引擎向所要呈现的用户提供更少的时间以查看该应用,以反映对该应用的兴趣较少。
在一个实施例中,协议引擎根据修改呈现记录流中的至少一个分组。在一个实施例中,协议引擎将记录流中的至少一个分组的内容呈送到缓冲区。在一个实施例中,呈送到缓冲区并不以可感知的方式呈现分组的内容。在另一个实施例中,协议引擎不仅将记录流中至少一个分组的内容呈送到缓冲区,还以可感知方式呈现。在有些实施例中,协议引擎在回放数据结构中指示修改后的时间间隔,不同的协议引擎根据存储在回放数据结构中的信息呈现记录会话。
现在参看图29,所示框图描述了在呈现记录的计算机会话中用于自动时间卷曲回放的系统的一个实施例,该系统包括协议引擎2902、记录流2910、回放数据结构2904和显示器2908。简单地说,协议引擎2902响应接收记录流2910而产生回放数据结构2904,所述记录流2910包括多个分组,所述协议引擎2902根据产生的回放数据结构2904呈现记录流中的至少一个分组。
在一个实施例中,协议引擎2902包括后台协议引擎和前台协议引擎。在这个实施例中,后台协议引擎接收记录流2910并产生回放数据结构2904。在这个实施例中,前台协议引擎接收记录流2910并根据产生的回放数据结构2904呈现记录流中的至少一个分组。在一个实施例中,后台协议引擎和前台协议引擎位于相同装置上。在另一个实施例中,后台协议引擎位于第一装置上,前台协议引擎位于第二装置上。
在另一个实施例中,该系统包括产生回放数据结构2904并根据产生的回放数据结构2904呈现记录流中的至少一个分组的单一协议引擎2902。
在一个实施例中,协议引擎2902在回放数据结构中存储至少一个用于呈现记录会话的指令。在一个实施例中,该指令包括对识别出的用于呈现记录会话中分组内容的时间间隔的修改。在另一个实施例中,协议引擎将元数据存储在回放数据结构中。在这个实施例中,元数据包括用于呈现分组内容的更高级的指令。
在一个实施例中,协议引擎根据回放数据结构的内容呈现记录会话中的至少一个分组的内容。在一个实施例中,协议引擎不仅以可感知方式呈现记录会话中的至少一个分组而且将其呈送到缓冲区,在另一个实施例中,协议引擎将记录会话中的至少一个分组呈送到缓冲区。
在有些实施例中,所呈现的分组内容提供了原始显示数据的流线式再生。在其它实施例中,所呈现的分组内容提供了显示数据的定制版本。在一个实施例中,以可感知方式呈现分组内容的决定响应于策略或用户请求。这些实施例向用户提供了对记录会话的呈现的控制。
现在参看图30A,所示框图描述了用于表示层协议数据的记录和实时回放的系统的一个实施例。简单地说,该系统包括记录器3010、分发器3020和协议引擎502。在表示层协议数据流208从第一装置106传输到第二装置102的过程中,记录器3010拦截包括多个分组的表示层协议数据流208,表示层协议数据流208表示显示数据。分发器3020发送表示层协议数据流208的至少一个分组的副本。协议引擎502使用与该至少一个复制的分组相关联的信息再生出由该至少一个复制的分组表示的显示数据。记录器3010继续拦截表示层协议数据流,分发器继续发送来自表示层协议数据流的分组的副本,直到第一装置完成了协议数据流到第二装置的传输。
现在更详细地参看图30A,在一个实施例中,记录器3010从表示层协议栈提取数据并缓冲这些数据。在另一个实施例中,第三装置3050将数据记录到盘并对这些数据进行编目。在又一个实施例中,回放装置514将会话记录完整或不完整地显示给用户。
在表示层协议数据流208从第一装置106传输到第二装置102的过程中,记录器3010拦截包括多个分组的表示层协议数据流208,该表示层协议数据流208表示显示数据。在一个实施例中,第一装置106是服务器106,例如应用服务器。在另一个实施例中,第二装置102是客户端102。在又一个实施例中,第一装置106如上结合图2所述发送表示层协议数据流208。在又一个实施例中,表示层协议数据流208是如上结合图2所述的协议数据流208。在进一步的实施例中,记录器3010是如上结合图2所述的记录器206。在有些实施例中,表示层协议数据流208包括一个或多个虚拟信道。在其中一个实施例中,记录器3010拦截虚拟信道。
在一个实施例中,记录器3010位于第一装置106上。在另一个实施例中,记录器3010位于第二装置102上。在又一个实施例中,记录器3010位于第三装置3050上。在又一个实施例中,记录器3010位于代理服务器上。
在一个实施例中,记录器3010位于直通服务器上。在另一个实施例中,记录器3010位于网络分组监听器上。在又一个实施例中,记录器3010位于网络设备、应用网关、应用加速设备或其它设备上。在有些实施例中,记录器3010位于与分发器3020相同的装置上。
在结合图2所述的记录器206的有些实施例中,记录器拦截协议数据流208并使用复制的分组产生记录的协议数据流。在一个实施例中,记录器包括用于从表示层协议数据流复制至少一个分组的装置。在另一个实施例中,记录器包括用于拦截虚拟信道的装置。在又一个实施例中,记录器包括用于基本与第一装置发送表示层协议数据流到第二装置的同时拦截表示层协议数据流的装置。在又一个实施例中,记录器包括用于存储至少一个分组的缓冲区。在有些实施例中,记录器包括用于产生表示层协议数据流或其一部分的记录的记录发生器。
在其它实施例中,如图30A所示,记录器3010在表示层协议数据流208中的附加分组从服务器106到客户端102的传输期间拦截表示层协议数据流208并从表示层协议数据流208复制分组。在其中一个实施例中,记录器3010在基本与服务器106发送表示层协议数据流208到服务器102的同时拦截表示层协议数据流208。在另一个实施例中,记录器3010接收实时回放表示层协议数据流208的请求的指示。在又一个实施例中,记录器3010根据所接收的实时回放的请求指示,从表示层协议数据流208复制分组并在完成对表示层协议数据流208的拦截之前转发该分组。在又一个实施例中,记录器3010不将拦截到的分组的传输延迟到对表示层协议数据流208的记录完成。
在一个实施例中,记录器3010还包括用于将表示层协议数据流208的至少一个分组的副本存储到存储装置中的装置。在有些实施例中,记录器3010在继续拦截来自表示层协议数据流208的后续分组的同时发送复制的、拦截的分组到分发器3020。
在有些实施例中,记录器3010如上结合图2所述确定是否复制分组。在其它实施例中,在表示层协议数据流208从服务器106到客户端102的传输结束时,记录器3010如上结合图2所述产生表示层协议数据流208的记录。
分发器3020发送表示层协议数据流208的至少一个分组的副本。在一个实施例中,分发器还包括用于检索该至少一个分组的副本的收发器。在另一个实施例中,分发器还包括用于将该至少一个分组的副本发送到协议引擎的收发器。
现在参看图30B,所示框图描述了记录器3010将多个分组3030存储在存储装置218上的一个实施例。在这种实施例中,分发器3020从存储装置218检索多个分组3030并将该多个分组3030转发到回放装置514上的协议引擎502。
现在参看图30C,所示框图描述了一个实施例,其中与分发器3020通信的记录器3010将多个分组3030发送到协议引擎502。在有些实施例中,记录器3010从分发器3020接收对表示层协议数据流的实时回放请求的指示。在其中一个实施例中,根据接收的实时回放请求的指示,记录器3010直接将多个分组3030转发到协议引擎502。
现在参看图30D,所示框图描述了记录器3010将多个分组330存储在存储装置218上的一个实施例。在这种实施例中,记录器3010从存储装置218检索多个分组3030并将该多个分组3030转发到回放装置514上的协议引擎502。
现在回过来看图30A,在一个实施例中,分发器3020位于第一装置106上。在另一个实施例中,分发器3020位于第二装置102上。在又一个实施例中,分发器3020位于第三装置3050上。在又一个实施例中,分发器3020位于代理服务器上。
在一个实施例中,如上结合图2所述,分发器3020是远程表示协议服务器引擎204的一部分。在另一个实施例中,分发器3020位于记录服务器上,例如第三装置3050。在又一个实施例中,分发器3020与记录器3010通信。
在一个实施例中,分发器3020位于直通服务器上。在另一个实施例中,分发器3020位于网络分组监听器上。在又一个实施例中,分发器3020位于网络设备、应用网关、应用加速设备或其它设备上。在有些实施例中,分发器3020位于与记录器3010相同的装置上。
在有些实施例中,该系统包括第三装置3050。在其中一个实施例中,第三装置3050被称为日志服务器。在其中另一个实施例中,分发器3020位于日志服务器上。在其中又一个实施例中,日志服务器存储从拦截的表示层协议数据流复制的多个分组以及表示层协议数据流的记录。在其中又另一个实施例中,日志服务器提供用于协调对从拦截的表示层协议数据流复制的多个分组的分发以及对从记录器3010到回放装置的表示层协议数据流的记录的分发的功能。
在有些实施例中,该系统包括回放装置514,它提供了上面结合图5所说明的回放装置514的功能。在其它实施例中,回放装置514和协议引擎502提供上面结合图5所述的功能,并且除了再生来自完成的表示层协议数据流的记录的显示数据之外,还提供再生与不完整的表示层协议数据流的多个分组和部分相关联的显示数据的功能。
在有些实施例中,分发器3020与回放装置514通信。在其中一个实施例中,分发器3020提供表示层协议数据流的编目。在另一个实施例中,分发器3020提供对可通过回放装置514观看的表示层协议数据流枚举。在其中又一个实施例中,分发器3020提供搜索功能,允许回放装置514搜索特定的表示层协议数据流。在其中又另一个实施例中,分发器3020将记录的表示层协议数据流发送到回放装置514。
在一个实施例中,回放装置514请求对可以显示给回放装置514的用户的表示层协议数据流的枚举。在另一个实施例中,回放装置514将该请求发送到分发器3020。在又一个实施例中,回放装置514将该请求发送到记录服务器,例如第三装置3050。在又一个实施例中,回放装置514包括协议引擎502。
在一个实施例中,分发器3020查询可用表示层协议数据流的编目。在另一个实施例中,分发器3020根据接收的请求产生可用表示层协议数据流的枚举。在又一个实施例中,分发器3020将可用表示层协议数据流的枚举发送到回放装置514。
在有些实施例中,该枚举识别出完整记录的表示层协议数据流。在其它实施例中,该枚举识别出记录器3010尚未对其完成记录过程的表示层协议数据流。例如,记录器3010在表示层协议数据流的标识被提供给回放装置时可能尚未完成向表示层协议数据流添加分组的过程。在其中一个实施例中,记录器3010可以在回放装置514访问已经复制到表示层协议数据流中的分组之后向表示层协议数据流的多个复制的分组中添加额外的分组。在其它实施例中,在接收枚举后,回放装置514请求仍然在被记录过程中的枚举的表示层协议数据流。
在一个实施例中,记录器3010拦截包括多个分组的表示层协议数据流。在另一个实施例中,分发器3020将至少一个拦截的分组的副本从表示层协议数据流发送到回放装置514。在又一个实施例中,回放装置514上的协议引擎502使用与至少一个复制的分组相关的信息再生由表示层协议数据流表示的显示数据。在又一个实施例中,记录器3010拦截第二个分组并且分发器3020将第二分组的副本发送到回放装置514。在进一步的实施例中,回放装置514使用与第二复制的分组相关的信息再生由协议数据流表示的附加显示数据。在有些实施例中,拦截分组并将所拦截分组的副本发送给回放装置514显示的步骤继续直到回放装置514接收表示层协议数据流中的所有分组。
在一个实施例中,第三装置3050同时将很多并发的表示层协议会话记录写入盘,更新目录数据库并将文件取出用于回放。在另一个实施例中,记录器3010位于第三装置3050上。在又一个实施例中,第三装置3050从记录器3010转发到第三装置3050的表示层协议数据流接收复制的分组。在有些实施例中,第三装置3050被称为“日志服务器”或“记录服务器”。
在一个实施例中,为了支持对任意特定会话文件的并发记录和回放,文件格式必须支持能够在文件不完整时对其进行播放。在有些实施例中,不完整的文件(可能由于数据丢失或因为会话仍在进行而不完整)总是能够被播放。但是,在其中一个实施例中,该文件不包含数字签名。在其中另一个实施例中,数字签名由第三装置3050在记录完成时计算。在其中又一个实施例中,文件格式被修改以支持下述对空分组的使用。在又一个实施例中,没有文件格式修改发生。
在一个实施例中,第三装置3050提供根据目录数据库中包含的数据定位文件的能力。在一个实施例中,目录数据库中用于每个记录的数据库条目被依次更新三次:文件被创建时,会话元数据变成已知时(例如当终端用户已经成功登录时)和记录结束时。
在一个实施例中,当表示层协议数据流开始时文件被创建。在另一个实施例中,当特权第三方(例如管理员)请求记录开始时文件被创建。在有些实施例中,当包含表示层协议数据流的记录的第一部分的第一文件超出阀值时,第一文件关闭,第二文件被创建,第二文件包含表示层协议数据流的记录的第二部分。在其中一个实施例中,当第一文件超出大小限制时,第一文件超出该阀值。在其中另一个实施例中,当第一文件存储了超出对记录时间长度上的限制的记录的一部分时,第一文件超出该阀值。在其中又一个实施例中,关闭存储了记录的第一部分并超出阀值的第一文件以及创建第二文件以存储记录的第二部分的过程被称为“翻转”。在其中又一个实施例中,正在被记录的基础会话仍然不受影响,并且在文件转换中记录数据没有被丢失。
在有些实施例中,当其会话正在被记录的用户断开时,记录结束。在其它实施例中,在“翻转”过程期间记录结束。在其它实施例中,当特权第三方(例如管理员)请求记录结束时记录终止。
在有些实施例中,只有已经有过全部三次更新的数据库记录能够被搜索;文件必须是完整的才能被搜索。在其它实施例中,本发明的方法和系统允许不够所有更新次数的记录的搜索。在其中一个实施例中,记录只需要有前两次更新就能被搜索。这意味着当元数据可知时该文件可用于搜索和在会话记录早期被下载。在其中一些实施例中,当文件被创建时记录就是可搜索的。但是,在其中其它实施例中,被确定为文件在元数据被识别出之前不可用,因为与该记录有关的信息只有登录的会话的值。
在一个实施例中,第三装置3050跟踪所有发送到回放装置514的实况会话记录,并且随着更多的数据可用而继续将数据流传输到回放装置514。在另一个实施例中,第三装置3050提供跟踪功能,其也支持用于通知如下所述实况播放器的表示服务器的“轮询”消息。
在有些实施例中,在向表示层协议数据流的记录添加分组的过程完成之前发送表示层协议数据流中的分组的功能使得回放装置514的用户能够在对表示层协议数据流的记录期间观看由该分组表示的显示数据。在其中一个实施例中,这个功能使得用户能够在显示数据被创建和记录的同时实况观看显示数据。在其中另一个实施例中,在分组拦截时间和该分组表示的显示数据的再生时间之间可能有延迟。在其中又一个实施例中,被再生显示数据的观众察觉不到该延迟。
在有些实施例中,在对原始表示层协议数据流208的发送完成之前的被拦截的分组的发送使得回放装置能够在分组被产生时显示它们。在其中一个实施例中,这为再生的拦截的分组的观众提供了实时观看表示层协议数据流的功能。在其中另一个实施例中,多个被拦截的分组可以在发送之前被缓冲。但是,在其中一些实施例中,尽管多个分组被缓冲,它们在表示层协议数据流被完全传输之前仍然被发送到回放装置,由此提供了实时或准实时回放的印象。
协议引擎502使用与至少一个复制的分组相关联的信息再生由该至少一个复制的分组所表示的显示数据。记录器3010继续拦截表示层协议数据流,分发器继续发送来自表示层协议数据流的分组的副本直到第一装置完成协议数据流到第二装置的传输。
现在参看图31,所示流程图描述了在用于表示层协议数据流的记录和实时回放的方法中采取的步骤的一个实施例。简单地说,在表示层协议数据流从第一装置到第二装置的传输期间,记录器拦截包括多个分组的表示层协议数据流,表示层协议数据流表示显示数据(步骤3102)。分发器发送表示层协议数据流的至少一个分组的副本(步骤3104)。协议引擎使用与该至少一个复制的分组相关联的信息再生由该至少一个复制的分组表示的显示数据(步骤3106)。拦截表示层协议数据流并发送其中的至少一个分组的副本的步骤重复到第一装置完成协议数据流至第二装置的传输(步骤3108)。
现在更详细地参看图31,在表示层协议数据流从第一装置到第二装置的传输期间,记录器拦截包括多个分组的表示层协议数据流,表示层协议数据流表示显示数据(步骤3102)。在一个实施例中,记录器3010在基本与第一装置向第二装置发送表示层协议数据流的同时拦截表示层协议数据流。在另一个实施例中,记录器拦截虚拟信道。
在有些实施例中,记录器3010确定是否如上结合图2所述复制分组。在其它实施例中,在表示层协议数据流208从服务器106到客户端102的传输结束时,记录器3010如上结合图2所述产生表示层协议数据流208的记录。在其中一个实施例中,记录器3010存储表示层协议数据流的记录。在其它实施例中,记录器3010如上结合图2所述将信息关联到复制的分组或将信息嵌入表示层协议数据流的所复制的部分。
在一个实施例中,与第三装置3050相关联或位于其上的记录器3010可以捕获在虚拟信道上传输的各种数据,并在内核模式下从表示层栈捕获表示层分组(包括优化和加速元数据以及鼠标和键盘分组)。为了减少发送很多小消息到第三装置3050的计算和网络负担,在有些实施例中,记录器3010可以为每个会话局部缓冲这些数据。当记录器3010捕获足够的数据以形成足够大的消息时,或者当超时周期(分钟级)期满时,记录器3010可以将数据转发到存储组件。这种措施为系统提供了对资源的高效利用。
尽管有些实施例因为上述原因而提供了上述缓冲类型,但在一个实施例中,支持实况或时移回放的方法和系统需要立即将数据转发到回放装置514。如果数据被拦阻的时间超出阀值,回放体验将会受损,因为流是不连续的或者不是最新的。数据可以不规律的和不频繁的间隔到达回放装置514。有些接收的数据可能已经是几分钟前的。
在有些实施例中,系统为所有记录会话去除了缓冲功能。但是,对于不被实况或时移观看的会话来说,这种做法降低了性能和可扩展性并且可能极大的浪费资源,例如对可用网络带宽的使用。
在其它实施例中,对先前记录的会话的回放提供了缓冲功能,但对实际正在被实况观看的会话则没有提供。在其中一个实施例中,当回放装置514开始实况会话的回放时,记录器3010接收这个事件的通知并且相应地关闭缓冲机制。在其中另一个实施例中,当回放完成时,表示服务器上对后续会话的记录将回到普通缓冲模式。这种措施意味着可扩展性只有在播放器实际正在播放记录时受影响。这个影响还只存在于提供会话的表示服务器上;群中的其它服务器不受影响。
为了进一步保护可扩展性,在另其它实施例中,对实况会话数据的流传输可以被轻微压制。不是立即发送所有接收的数据,而是将数据缓冲一段非常短的时间。在其中一个实施例中,该时间是预定的。在其中另一个实施例中,缓冲时间期间小于一秒。在其中又一个实施例中,选择了500毫秒,结果是每秒只发送两个网络消息。
在一个实施例中,这里所说明的方法和系统解决了表示层协议数据会话的异步性以及会话中的空闲时间产生的问题。在另一个实施例中,当会话空闲时,没有数据被从服务器106流传输到客户端102,因此没有数据被拦截、记录或转发以进行回放。在又一个实施例中,没有规则的数据流,回放装置514不能确定它是否能够扩展它的时间线以反映这个时间已经过去。当过去某一时间的会话活动数据到达时,就出现了一个通过断定已经过去的那段时间没有任何活动并将其反映在对数据流的观众的指示中所产生的问题。也就是说,回放装置514没有接收数据,断定没有活动发生,向观众指示没有活动发生,然后在指示在那个时间没有活动发生之后显示反应该活动在过去的那个时间点没有实际发生的数据。实际上,回放装置514已经错误地假定发生了“什么都没有”并且已经将当前播放器帧前进得过远。这可能导致记录会话的观众丢失过去发生的活动或者给其带来困惑。
在一个实施例中,回放装置514确定会话数据在过去的时间点已经到达,将该情况指示给观众,并迫使观众返回到该会话活动发生的时间点。在有些实施例中,这个解决方案产生了另外的问题,包括如果记录段过长时或者如果会话活动的类型对观众无足轻重时的可用性问题。
在另一个实施例中,分组被发送到回放装置514表示在特定的时间点没有会话活动发生并且没有会话数据要发送到回放装置514。在又一个实施例中,一种称为“空分组”的分组类型被创建并发送到回放装置514。在又一个实施例中,空分组像所有其它分组一样保存有时间戳但不包含任何有效载荷。如果正在被记录的会话在它的缓冲时间段(例如,前面提到的500毫秒的间隔)内没有接收任何表示层协议数据,记录器3010将空分组插入流中。在有些实施例中,和使用数据缓冲方法一样,空分组将只在时移回放有效时被注入。
在这些实施例中,回放装置514现在接收空分组的稳定流并且能够安全地扩展它的时间线并允许回放到“已知”空闲时段中。
在其中一些实施例中,空分组的传输导致额外的负担,例如记录的文件的大小会有少量增长,以及在会话空闲时的一些资源使用。但是,在其中一个实施例中,空闲分组的长度在4到6个字节之间(通常是5个字符)并且每秒只有2个空闲分组被发送。假定为5字节分组,这等于每个会话每小时额外的36KB。在有些实施例中,因为实况回放很少发生,并且与每会话每小时2MB的典型总体数据率相比,这个额外负担可以认为无足轻重。
在一个实施例中,记录器3010执行在表示服务器上以拦截和记录表示层协议数据。在另一个实施例中,记录器3010接收用户已经请求记录器3010当前正在记录会话的时移回放的指示。在又一个实施例中,该指示的接收向记录器3010指示它应该使用提供时移所需的功能。例如,记录器3010可以先缓冲用于发送的分组直到它接收实况观看的通知,然后在接收该指示后切换到减少缓冲分组的时间量的模式。在另一个例子中,记录器3010不使用上述空分组直到它接收用户已经请求时移会话回放的指示。
在有些实施例中,有各种方法可用于通知记录器3010回放装置514正在为观众播放会话,而记录器3010记录该会话。从支持实况回放会话的通知来说,它可以被看作不适合在记录组件所在的每个服务器上打开新的网络端口以支持这个需求。不是由第三装置3050(它知道所有正在被实况播放的会话)直接通知每个表示服务器,在有些实施例中,本发明的方法和系统实现了反向轮询机制。每个表示服务器将以统一间隔为当前正在被实况播放的会话列表“轮询”第三装置3050。在其中一些实施例中,即使轮询会有比异步通知更大的负担和更慢的响应,也优选这种机制。
轮询不需要表示服务器上的监听端口,但会产生多久轮询一次的问题。在有些实施例中,使用较短的间隔以确保能够及时切换实况会话的缓冲,尽管该间隔可能影响可扩展性。在其它实施例中,较长的间隔有较低的资源影响,但会导致切换缓冲模式中的延迟。在其它实施例中,预定时间间隔由管理员选择。在其它实施例中,10秒的轮询间隔提供了短间隔和长间隔之间的折衷。在其中一个实施例中,轮询间隔的影响很少能够被察觉到,因为大多数被记录会话已经有现有的数据用于下载和立即回放。在其中一个实施例中,具有可用于立即回放的现有数据给了用户时间,以便根据用户想要观看的东西调整自己。在其中另一个实施例中,轮询间隔已经经过了用户已经完成对可用数据的观看并请求新近记录内容的时间。在其中又一个实施例中,用户在轮询间隔完成之前完成对可用内容的观看,可以设置短轮询间隔以使用户只需等待几秒。例如,在轮询间隔被设为10秒的实施例中,如果用户想要观看最新几分钟的记录,用户只需要等待最多10秒(平均为5秒)。
例如,拥有1000个全部都在有效记录的表示服务器的系统等于每秒钟必须处理100个轮询消息的单个第三装置3050。在这样的实施例中,考虑消息较小而且处理每个轮询消息的影响较低,从系统可扩展性角度这是可行的。在一个实施例中,对每个轮询消息的处理不涉及任何I/O,复杂的计算,线程环境切换或进程间通信。在另一个实施例中,如果需要的话也可以通过配置提高轮询间隔。
在有些实施例中,包括“轮询”消息有多个目的。在其中一个实施例中,轮询消息还被用作第三装置3050的“保持有效”(keep-alive)消息。在其中另一个实施例中,第三装置3050现在能够跟踪哪个表示服务器正在有效记录并且当前有多少会话正在被记录。
分发器发送表示层协议数据流的至少一个分组的副本(步骤3104)。在一个实施例中,记录器存储表示层协议数据流208的至少一个分组的副本。在另一个实施例中,记录器3010发送至少一个复制的分组到分发器3020。在又一个实施例中,记录器3010将该至少一个分组的副本复制到缓冲区中。在又一个实施例中,记录器3010将缓冲区中存储的多个分组发送到分发器。
在一个实施例中,分发器3020从存储装置检索表示层协议数据流的至少一个分组的副本。在另一个实施例中,分发器3020从存储装置(例如上面结合图2所述存储装置218)检索分组。在又一个实施例中,分发器从记录器3010检索至少一个分组的副本。
协议引擎使用与至少一个复制的分组相关联的信息再生由该至少一个复制的分组所表示的显示数据(步骤3106)。在一个实施例中,该至少一个复制的分组在协议引擎接收它时被使用。在另一个实施例中,该至少一个分组在协议引擎接收再生被至少一个复制的分组所表示的显示数据的请求时被使用。
拦截表示层协议数据流并发送表示层协议数据流的至少一个分组的副本的步骤重复直到第一装置完成至第二装置的协议数据流传输(步骤3108)。在一个实施例中,使用与该至少一个分组相关联的信息的步骤重复直到协议引擎已经再生了由每个接收的复制分组表示的显示数据。在其它实施例中,协议引擎只为用户已经明确请求的分组再生显示数据。在其它实施例中,协议引擎在接收启动或停止再生的请求指示之后启动和停止显示数据的再生。
在有些实施例中,确保终端用户不能够检测到他们的会话正在被记录或者被实况观看至关重要。在一个实施例中,提供时移回放特性的方法和系统避免了检测到表示层协议数据流的记录的任何额外机会。
在一个实施例中,表示层协议会话的回放不影响表示层协议状态机的运行。用户接收的表示层协议数据流在实况回放下相同。这也意味着在他们的记录中不会有可见的或者其他可感知的人工产物。
在终端用户对提供其表示会话的服务器没有管理员权限的另一个实施例中,没有进程或可访问的系统对象向终端用户指示他们正在被实况观看(甚至被记录)。在又一个实施例中,终端用户还被限制发出他或她自己的“轮询”消息到第三装置3050以找出实况回放会话的列表。即使对于本地管理员用户,这也是难以做到的,因为从这个轮询消息返回的会话ID不是终端会话标识符。在一个实施例中,这包括了由于模糊处理(obfuscation)而带来的安全性,因为将这些内部会话标识符映射到终端会话标识符需要特殊的技能。
在其它实施例中,另一种检测方法包括观察性能下降的周期。但是,在其中一个实施例中,即便对于专用于单一用户的物理机,也难于观察到性能下降,因为性能影响非常轻。在共享的应用服务器上,这也是不可能的。在这些实施例中,终端用户被拒绝访问察看性能计数器或类似的数据相关性能。
总之,在有些实施例中,用于时移回放的方法和系统确保了只有具有普通用户权限的终端用户检测实况回放的可行方式用于进行社会工程攻击。
在一个实施例中,回放装置514发送搜索请求到第三装置3050。在另一个实施例中,回放装置514组件搜索可以显示给观众的会话枚举。在有些实施例中,该枚举只包括那些其完整的会话记录可用的会话。在其它实施例中,该枚举只包括其不完整的会话记录可用的会话。在其它实施例中,枚举包括被完整记录的会话和不完整记录的会话。在其中一个实施例中,回放装置514包括用于区分“实况”记录和“完整”记录的功能,并将这个区别在搜索结果列表控件中告知用户。在其中另一个实施例中,回放装置514可以周期性地向第三装置3050查询列出的每个实况会话的状态更新。在又一个实施例中,搜索列表保持没有用户干预的更新状态。
在一个实施例中,回放装置514的用户可以选择记录数据流进行观看。在另一个实施例中,如果该记录数据流包含与记录器3010仍然正在从表示层协议数据流记录分组的会话相关的数据,就创建信道并保持其在打开状态用于在有额外的记录数据从记录器3010可用时接收它们。在又一个实施例中,在数据被第三装置3050接收时,它将被转发到回放装置514以通过该信道进行处理。在又一个实施例中,如果记录器3010完成了记录完整会话而该会话正在被实况播放,回放装置514将关闭该信道并且回放将不间断地继续。
在有些实施例中,从提供实况回放的功能会产生安全相关的顾虑。例如,在有些实施例中,实况会话文件不能被加密以保存数字权限管理(DRM,digitalrightsmanagement),并且没有任何数字签名验证。为了减轻DRM问题,在其中一些实施例中,回放装置514将试图只从私有存储器处理实况记录。在其中一个实施例中,实况记录不被写入本地文件高速缓存并且试图阻止数据被换出或者相反写入持久存储装置。在其中另一种实施例中,当回放装置514和第三装置3050之间的流量被使用强加密密钥进行SSL/TLS时,对加密转换中的数据丢失不太关注。在其中其它实施例中,为了减轻数字签名问题,在回放开始之前,将向用户显示警告消息表明该文件的来源和内容不能被验证。如果用户想得到了这个可靠性声明,他们就能够在会话完成时重新下载该会话记录。在很多实施例中,这提供了合理的折衷,因为数字签名为记录提供了合法的或司法鉴定(forensic)的价值。
在一个实施例中,当播放器窗口处于活动状态时,当接收新数据时拉动进度条时间线将被扩展并且这个新内容可以立即用于观看。在有些实施例中,回放装置514特性仍然保留,包括为快速搜索生成关键帧的后台处理引擎。提供了用于围绕实况记录搜索的功能。
现在参看图32,所示流程图描述了用于在远程表示层协议数据的实时回放期间进行实时搜索的方法中所采取的步骤的一个实施例。简单地说,前台协议引擎接收呈现包括已经接收的第一多个分组和尚待接收的第二多个分组的表示层协议数据流中的分组内容的请求(步骤3202)。前台协议引擎识别出其相关时间戳在所请求的分组的时间戳之前的状态快照(步骤3204)。前台协议引擎在表示层协议数据流从第一装置到第二装置的传输期间根据识别出的状态快照显示所请求的分组(步骤3206)。
在有些实施例中,所接收的请求在前台协议引擎1106通过向使用显示器的观众呈现第一多个分组中的分组内容而再生显示数据并且观众希望搜索到特定的显示数据时产生。在其它实施例中,前台协议引擎将状态快照和所请求的分组之间的中间分组的内容呈送到缓冲区。
如前结合图11所述,在有些实施例中,呈现的显示数据的接收者可以实时搜索内容。但是,在有些实施例中,如图32所示,呈现的数据的接收者可以在来自尚未被完整记录的表示层协议数据流的分组的表示期间实时搜索内容。在其中一种实施例中,前台协议引擎包括前台协议引擎1106并且如结合图11所述那样提供实时搜索功能。在其中另一个实施例中,前台协议引擎1106还为部分表示层协议数据流(例如第一多个接收的分组,它包含了表示层协议数据流的子集)的实时搜索提供上述功能。在有些实施例中,前台协议引擎1106在表示层协议数据流从第一装置到第二装置的传输期间产生已经接收的要用显示器1108呈现给观众的第一多个分组的实时可感知表示。在其它实施例中,前台协议引擎1106通过呈现协议数据流1110中或者多个接收的分组中的至少一个分组的内容而产生实时可感知表示。可感知表示可以包括但不限于独立或组合的听觉、视觉、触觉或嗅觉的演示。在其它实施例中,前台协议引擎1106为第一多个分组中的实时搜索提供类似于前面结合图9所说明的在记录的协议流中实时搜索的功能。
如前结合图11所述,在有些实施例中,状态快照通过存储呈现表示层协议数据的协议引擎在记录器206从表示层协议数据流208复制至少一个分组的时间点时的状态而使得能够再生显示数据。在一个实施例中,状态快照包括描述那个时间点的屏幕状态的数据结构。
现在参看图33,所示流程图描述了用于产生能够在包括由后台协议引擎已经接收的第一多个分组和由后台协议引擎尚待接收的第二多个分组的表示层协议数据流的实时回放期间进行实时搜索的状态快照的方法中采取的步骤的一个实施例。后台协议引擎在表示层协议数据流从第一装置到第二装置的传输期间接收第一多个分组(步骤3302)。后台协议引擎再生由第一多个分组表示的显示数据(步骤3304)。后台协议引擎在呈现第一多个分组中的至少一个分组期间产生至少一个状态快照(步骤3306)。后台协议引擎存储产生的状态快照(步骤3308)。根据接收第二多个分组中的至少一个分组修改显示数据的再生和至少一个状态快照(步骤3310)。
后台协议引擎在表示层协议数据流从第一装置到第二装置的传输期间接收第一多个分组(步骤3302)。后台协议引擎产生第一多个分组的表示。在一个实施例中,后台协议引擎1102通过将第一多个分组的内容呈送到缓冲区而产生第一多个分组的表示。在有些实施例中,该缓冲区是离屏缓冲区。
后台协议引擎产生由第一多个分组所表示的显示数据(步骤3304)。在一个实施例中,后台协议引擎通过将第一多个分组的内容呈送到缓冲区而产生显示数据。在有些实施例中,该缓冲区是离屏缓冲区。
在有些实施例中,前台协议引擎产生显示数据。在其中一个实施例中,前台协议引擎1106通过呈现第一多个分组的内容,基本与后台协议引擎1102在它读取第一多个分组期间产生至少一个状态快照的同时产生第一多个分组的能够让人感知的表示。
后台协议引擎在读取第一多个分组中的至少一个分组期间产生至少一个状态快照(步骤3306)。在一个实施例中,该至少一个状态快照的产生和第一多个分组的表示基本上同时发生。在另一个实施例中,该至少一个状态快照的产生发生在后台协议引擎顺序读取第一多个分组期间。
后台协议引擎存储产生的状态快照(步骤3308)。在后台协议引擎1102周期性产生多个状态快照的实施例中,状态快照可以充当贯穿第一多个分组的标记,帮助定位第一多个分组中的特定时间点以及在状态快照1104之前或之后到达的分组中的特定时间点。
根据接收第二多个分组中的至少一个分组,显示数据的产生和至少一个状态快照被修改(步骤3310)。在有些实施例中,后台协议引擎从第二多个分组(先前未接收的分组)中检索分组并将该来自第二多个分组的分组存储在第一多个分组中。在其中一个实施例中,后台协议引擎将新接收的分组和先前接收的分组一起存储在缓冲区中。在其中另一个实施例中,对第一多个分组的修改导致对产生的显示数据的修改或重新生成,或者附加显示数据的重新生成。在其中又一个实施例中,从第二多个分组添加分组到第一多个分组导致对状态快照的修改或者附加状态快照的产生。
在有些实施例中,后台协议引擎使用上述为记录的协议数据流产生状态快照的方法为第一多个分组产生状态快照。在其它实施例中,前台协议引擎使用上述再生由记录的协议数据流中的分组表示的显示数据的方法再生由第一多个分组表示的显示数据。
再来看图11,用于在包括已经被后台协议引擎接收的第一多个分组和尚待被后台协议引擎接收的第二多个分组的表示层协议数据流的实时回放期间进行实时搜索的系统,包括后台协议引擎1102、状态快照1104、前台协议引擎1106和协议数据流1110。
后台协议引擎在表示层协议数据流从第一装置到第二装置的传输期间接收第一多个分组。由后台协议引擎产生的状态快照包括在记录器(如记录器3010)从表示层协议数据流复制分组到第一多个分组中的时间点呈现该表示层协议数据流的引擎的状态。前台协议引擎接收第一多个分组,呈现第一多个分组的内容,接收搜索由第一多个分组中的分组内容所表示的显示数据的请求,然后使用状态快照呈现表示所请求的显示数据的内容。在一个实施例中,前台协议引擎在表示层协议数据流从第一装置(例如服务器106)到第二装置(例如客户端102)的传输期间,呈现被请求的显示数据。前台协议引擎根据接收第二多个分组中的至少一个分组更新状态快照。
尽管已经结合图11被描述为完整记录的协议数据流,但协议数据流1110在有些实施例中包括第二协议数据流的一部分。在其中一个实施例中,协议数据流1110是表示显示数据、已经有元数据与其相关联且其中已经嵌入了附加信息的第一多个分组。在另一个实施例中,在从记录器206或分发器3020接收附加分组时,后台协议引擎将那些分组添加到协议数据流1110。在其中又一个实施例中,图11中所述系统提供了在使用协议数据流的一部分实时回放期间进行实时搜索的功能,其方式基本与该系统在完整记录的协议数据流的回放期间提供实时搜索功能的方式类似。
现在看图34,所示流程图描述了用于状态快照的自适应生成的方法中采取的步骤的一个实施例。在表示层协议数据流从第一装置向第二装置的传输期间,包括被后台协议引擎已经接收的第一多个分组和被后台协议引擎尚待接收的第二多个分组的表示层协议数据流的表示被呈现给用户(步骤3402)。后台协议引擎在表示期间监控用户的活动(步骤3404)。后台协议引擎根据对活动的监控开发出活动特征(步骤3406)。后台协议引擎根据活动特征产生至少一个状态快照(步骤3408)。后台协议引擎根据在第二多个分组中接收至少一个分组而修改该至少一个状态快照(步骤3410)。
在有些实施例中,对协议数据的一部分(例如第一多个分组)使用了前面结合图12到15所述的为状态快照的自适应生成而采取的步骤。
在表示层协议数据流从第一装置向第二装置的传输期间,包括被后台协议引擎已经接收的第一多个分组和被后台协议引擎尚待接收的第二多个分组的表示层协议数据流的表示被呈现给用户(步骤3402)。在一个实施例中,在后台协议引擎从第二多个分组接收分组时,后台协议引擎将新接收的分组存储在第一多个分组中。在另一个实施例中,后台协议引擎继续从第二多个分组接收分组直到服务器停止至客户端的表示层协议数据流传输。
后台协议引擎在表示期间监控用户的活动(步骤3404)。在一个实施例中,后台协议引擎1106产生第一多个分组的表示并用显示器1108将其呈现给用户。在其它实施例中,后台协议引擎1102产生该表示。在其它实施例中,第三装置产生该表示。在一个实施例中,后台协议引擎在表示会话的一部分期间(例如表示由第一多个分组表示的重新生成的显示数据期间)监控用户的活动。
后台协议引擎根据对活动的监控开发出活动规律(步骤3406)。在有些实施例中,后台协议引擎1102识别出用户的活动级别。在有些实施例中,后台协议引擎1102识别出不活动周期。在其它实施例中,后台协议引擎1102识别出显示数据中用户感兴趣的区域。活动特征可以反映出这些标识。
后台协议引擎根据活动特征产生至少一个状态快照(步骤3408)。在有些实施例中,后台协议引擎1102决定延长一个或多个状态快照之间的间隔。在其它实施例中,后台协议引擎1102决定缩短一个或多个状态快照之间的间隔。在另其它实施例中,后台协议引擎1102根据活动特征决定去除至少一个状态快照。在另其它实施例中,根据活动特征,后台协议引擎1102决定添加至少一个状态快照。
后台协议引擎根据接收第二多个分组中的至少一个分组修改至少一个状态快照(步骤3410)。在有些实施例中,后台协议引擎根据接收第二多个分组中的至少一个分组而修改活动级别的标识。在其中一个实施例中,第一部分表示层协议数据流的观众在观看表示层协议数据流的不同部分时修改他或她的活动级别。在其中另一个实施例中,后台协议引擎观察活动级别中的修改并且相应地修改或者重新生成状态快照。
如上所述,图16概述了上述在用于状态快照的自适应生成的系统中所使用的方法的一个实施例,该系统包括后台协议引擎1602、前台协议引擎1608、协议数据流1612、活动特征1604和状态快照1606。在另一个实施例中,上述系统还提供了在表示层协议数据流的实时回放期间状态快照的自适应产生。
前台协议引擎在表示层协议数据流从第一装置到第二装置的传输期间将包括已经被后台协议引擎接收的第一多个分组和尚待被后台协议引擎接收的第二多个分组的表示层协议数据流的表示呈现给用户。后台协议引擎在呈现期间监控用户的活动并产生状态快照。后台协议引擎决定活动特征。后台协议引擎根据接收第二多个分组中的至少一个分组修改状态快照和活动特征。
在一个实施例中,后台协议引擎根据监控决定活动特征。在另一个实施例中,后台协议引擎根据活动特征维护状态快照。在又一个实施例中,后台协议引擎根据观察到的活动特征变化而更新状态快照。
在有些实施例中,后台协议引擎观察到对活动特征的修改。在其中一个实施例中,活动特征在观看表示层协议数据流的第一部分和观看表示层协议数据流的第二部分之间有所变化。在其中另一个实施例中,后台协议引擎维护更新的活动特征并相应产生新的状态快照或者修改已有的状态快照。
如前结合图17和18所述,在有些实施例中,回放数据结构可以用在记录的协议数据流的回放中。另外,在有些实施例中,回放数据结构可以用在表示层协议数据流的实时回放中。在表示层协议数据流的传输期间产生用于包括已经被协议引擎接收的第一多个分组和尚待被协议引擎接收的第二多个分组的表示层协议数据流的回放的回放指令的方法,包括由执行在回放装置上的协议引擎接收表示由执行在服务器上的应用程序产生的显示数据的第一多个分组。协议引擎为第一多个分组中的分组进行决定以用人可感知的方式呈现该分组的内容。协议引擎将该决定存储在回放数据结构中。
在有些实施例中,协议引擎根据该分组的内容决定显示第一多个分组中的分组。在其中一个实施例中,协议引擎根据拥有输入焦点的应用程序的指示做出该决定。在其中另一个实施例中,协议引擎根据对该分组中存储的用户输入类型的评估做出该决定。在其中一些实施例中,协议引擎根据对由该分组存储的图形更新类型的评估做出该决定。在其中其它实施例中,协议引擎根据对由该分组存储的交互序列类型的评估做出该决定。
在有些实施例中,回放数据结构描述了如何再生第一多个分组中包含的显示数据。在一个实施例中,回放数据结构中存储的指令控制着呈现显示数据的过程。在一个实施例中,回放数据结构包括用于呈现第一多个分组中的分组内容的时间。在这个实施例中,回放数据结构中包含的时间被用于呈现分组内容,而不是与第一多个分组中的分组相关联的呈现时间(如果有的话)。在一个实施例中,回放数据结构在改变呈现时间中接受用户输入。
在其它实施例中,回放数据结构包含描述如何进行第一多个分组的一次或多次回放的元数据。在一个实施例中,回放数据结构包括针对第一多个分组中的每个分组的记录,表示相应分组的内容在回放期间应该在什么相对时间点被呈现。在有些实施例中,元数据还包含分组开始在文件中的偏移量。
在有些实施例中,随着后台协议引擎接收表示层协议数据流中的附加分组,后台协议引擎产生附加回放数据结构或修改已有的回放数据结构。
在一个实施例中,后台协议引擎执行在回放装置上,并响应于接收第一多个分组产生回放数据结构,所述第一多个分组表示由执行在服务器上的应用程序产生的显示数据。前台协议引擎接收第一多个分组,并且根据后台协议引擎基本上在接收第二多个分组中的至少一个分组并根据接收的第二多个分组中的至少一个分组产生回放数据结构的同时产生的回放数据结构,呈现第一多个分组。另一方面,前台协议引擎接收第一多个分组,并且根据后台协议引擎基本上在接收第一多个分组中的第二分组并根据接收的第一多个分组中的第二分组产生回放数据结构的同时产生的回放数据结构,呈现第一多个分组。
在一个实施例中,后台协议引擎和前台协议引擎各自接收第一多个分组。在另一个实施例中,后台协议引擎基本与前台协议引擎呈现第一多个分组的同时产生回放数据结构。
在一个实施例中,后台协议引擎在回放数据结构中存储至少一条用于呈现第一多个分组中的至少一个分组的指令。在另一个实施例中,后台协议引擎将元数据存储在回放数据结构中。在又一个实施例中,后台协议引擎在回放数据结构中存储表示呈现第一多个分组中的至少一个分组的时间的记录。
前台协议引擎根据回放数据结构呈现第一多个分组中的至少一个分组。在一个实施例中,前台协议引擎不仅以可以为人感知的方式呈现第一多个分组中的至少一个分组,而且还将其呈送到缓冲区。在另一个实施例中,前台协议引擎将第一多个分组中的至少一个分组呈送到缓冲区。
在一个实施例中,后台协议引擎在由服务器将表示层协议数据流传输到客户端的期间,接收表示由执行在服务器上的应用程序产生的显示数据的第一多个分组。后台协议引擎为第一多个分组中的至少一个分组进行决定以用人可感知的方式呈现该分组。后台协议引擎将该决定存储在回放数据结构中。前台协议引擎从第一多个分组中检索至少一个分组,访问回放数据结构,并根据回放数据结构呈现该至少一个分组。这些步骤重复直到服务器完成了表示层协议数据流的传输。在一个实施例中,服务器在表示层协议数据流的传输完成之前停止表示层协议数据流的传输。在另一个实施例中,当表示层协议数据流中的第二多个分组被服务器产生和发送时,表示层协议数据流中的第一多个分组被拦截并且第一多个分组的实时回放发生。
在有些实施例中,后台协议引擎决定显示第一多个分组中的分组并如前结合图19所述产生相应的回放数据结构。在其它实施例中,前台协议引擎根据如前结合图19所述的回放数据结构呈现第一多个分组中的分组内容。
回过去看图21,表示层协议数据流可以被呈现而没有不包含任何活动的可感知的时间间隔。在有些实施例中,如前结合图21所述,表示层协议数据流的完整记录被呈现。但是,在其它实施例中,上述方法可以用来呈现未完整记录的表示层协议数据流的一部分。
在呈现包括已经接收的第一多个分组和尚待接收的第二多个分组的表示层协议数据流中消除不活动期间的方法,包括识别第一多个分组中的第一分组的步骤,所述第一多个分组表示显示数据。第一多个分组中的第二分组被识别出,所述第二分组紧接在第一分组之前。决定第一分组和第二分组之间的第一时间间隔。第一时间间隔超出阀值被决定。在协议数据流从服务器到客户端的传输过程中,第一多个分组的内容被以第一分组和第二分组之间的第二时间间隔呈现,所述第二时间间隔包含比第一时间间隔短的时间间隔。接收第二多个分组中的至少一个分组。
在一个实施例中,第二多个分组中的至少一个分组在被接收时被添加到第一多个分组。为所接收的第二多个分组中的至少一个分组,重复识别第一分组和第一分组之前的第二分组和决定它们两个之间的时间间隔是否超出阀值的步骤。在另一个实施例中,为第一多个分组中的第二分组,重复识别第一分组和第一分组之前的第二分组和决定它们两个之间的时间间隔是否超出阀值的步骤。在有些实施例中,前面结合图21所述的方法被用来从表示层协议数据流的一部分(例如第一多个分组)消除没有活动的可感知的时间间隔。
产生用于呈现包括已经接收的第一多个分组和尚待接收的第二多个分组的表示层协议数据流的回放的回放指令的方法,包括识别由表示应用程序产生的显示数据的第一多个分组中的分组存储的输入类型的步骤。响应于该输入类型,分组被标记。回放数据结构存储了根据标记呈现分组内容的目的地。第二多个分组中的至少一个分组被接收。在一个实施例中,第二多个分组中的至少一个分组在接收之后被添加到第一多个分组。第一多个分组中的第二分组被接收。重复识别由分组存储的输入类型、根据输入类型标记分组、在回放数据结构中存储呈现目的地并接收附加分组的步骤作为新分组被接收,直到服务器完成对表示层协议数据流的传输。
在一个实施例中,由分组存储的输入类型决定该分组是否将被呈现。在一个实施例中,分组不包含任何内容。在有些实施例中,至少一个分组不包含任何内容。在这些实施例中,包括至少一个不包含任何内容的分组的时间间隔被识别出。在其中一些实施例中,该时间间隔将不会被呈现。在其中一个实施例中,如前结合图30A-D和图31所说明的空分组类型被接收并被标识为不包含任何数据的分组。
在有些实施例中,输入类型指来自特定类型的输入装置的输入,包括但不限于键盘、鼠标、麦克风或摄像头。在一个实施例中,识别输入类型的步骤还包括将输入类型识别为来自输入装置的输入。在另一个实施例中,识别输入类型的步骤还包括将输入类型识别为键盘输入。在其它实施例中,输入类型与输入装置无关。在其中一种实施例中,输入类型被识别为命令。
在一个实施例中,该方法消除了不包含任何有意义活动的可感知的时间间隔。在这个实施例中,由策略将特定类型的输入识别为有意义或无意义。在有些实施例中,策略可以被硬编码到协议引擎。在其它实施例中,管理员配置该策略。
在有些实施例中,如果分组不包含任何内容,协议引擎就将该分组识别为无意义。在其中一些实施例中,该分组表示没有任何用户活动发生而要被记录到第一多个分组中的分组中的时间间隔。在其中一个实施例中,协议引擎在回放数据结构中存储以任何无意义分组不以可感知方式呈现的方式呈现第一多个分组中的各个分组的目的地。在另一个实施例中,协议引擎可以产生过去的时间没有活动的指示。例如,表示给观众的表示层协议数据流的时间线可以被更新以反映那段时间已经过去而显示数据没有发生变化。在其中又一个实施例中,协议引擎使用上述空分组类型将分组识别为无意义。
在有些实施例中,上述用于消除所记录的表示层协议数据流中的不包含任何有意义活动的时间周期的方法还被用来消除在表示层协议数据流的一部分(例如,第一多个分组)中不包含任何有意义活动的时间周期。如图22所示,其中描述了其内容根据回放数据结构被呈现的重新生成的记录流的一个实施例,在这个实施例中根据回放数据结构呈现部分协议数据流,允许去除不包含任何有意义活动的时间间隔(如图22中的白框和条纹框所示),它包括不包含任何活动的时间间隔。这个呈现向用户提供了表示层协议数据流中的第一多个分组的更有意义的再生。
在呈现包括已经接收的第一多个分组和尚待接收的第二多个分组的表示层协议数据流中去除不包含任何有意义活动的期间的方法,包括决定第一多个分组中标记的分组和其前面最接近的标记的分组之间的第一时间间隔的步骤,所述第一多个分组表示显示数据。做出决定为该第一时间间隔超出阀值。在协议数据流从服务器到客户端的传输期间,用标记的分组和它前面最接近的标记的分组之间的第二时间间隔呈现第一多个分组的内容,所述第二时间间隔包括比第一时间间隔短的时间间隔。可能接收第二多个分组中的至少一个分组。可能接收第一多个分组中的第二个分组。新接收的分组可以被添加到第一多个分组。决定第一时间间隔超出阈值和用第二时间间隔呈现第一多个分组的内容的步骤被重复,直到服务器完成表示层协议数据流的传输。
在一个实施例中,第一多个分组的内容被以标记的分组和其前面的分组之间的第二时间间隔呈现,所述第二时间间隔包括比第一时间间隔短的时间间隔。在另一个实施例中,第一多个分组的内容被以标记的分组和该标记的分组后面的分组之间的第二时间间隔呈现,所述第二时间间隔包括短于第一时间间隔的时间间隔。在有些实施例中,第一多个分组的内容被使用如上结合图28所述方法呈现。
如前结合图24所述,用于在呈现记录会话中去除图形更新的方法在呈现会话的一部分时也去除图形更新,例如通过去除包括表示层协议数据流的子集的第一多个分组中的图形更新。如同结合图25所述,可以识别出循环更新并做出决定不以人可感知的方式呈现循环更新。同样,这些方法可以识别出部分表示层协议数据流中的循环更新。
在呈现包括已经接收的第一多个分组和尚待接收的第二多个分组的表示层协议数据流中去除图形更新的方法,包括识别出表示由应用程序产生的显示数据的第一多个分组中包含第一图形更新的分组的步骤。受该第一图形更新影响的屏幕区域被确定。屏幕区域在第一图形更新之后的状态指示以及该屏幕区域的位置被存储。识别出在时间间隔内影响该屏幕区域的第二图形更新。根据屏幕区域在第二图形更新之后的状态是否不同于该屏幕区域在第一图形更新之后的状态,回放数据结构指示用于呈现包括影响该屏幕区域的第二图形更新的第一多个分组中第二分组的目的地。回放数据结构根据屏幕区域在第二图形更新后的状态是否不同于该屏幕区域在第一图形更新后的状态,指示用于与包括影响该屏幕区域的第二图形更新的第一多个分组中第二分组有关地呈现的时间间隔。
在一个实施例中,识别出多个分组中包含的图形更新。在另一个实施例中,根据由识别出的多个分组中的各个分组存储的图形更新受影响的屏幕区域被确定。在又一实施例中,存储受该图形更新影响的屏幕区域的副本。在又一实施例中,时间间隔被定义以接近人类级别循环周期的用户上限。在进一步的实施例中,回放数据结构表明以可感知方式呈现分组内容并将其呈送到缓冲区。在又另一实施例中,回放数据结构表明将分组内容呈送到缓冲区。在有些实施例中,后台协议引擎将这些指示存储在回放数据结构中。
在呈现包括已经接收的第一多个分组和尚待接收的第二多个分组的表示层协议数据流中去除图形更新的方法,包括识别第一多个分组中包含第一图形更新的分组的步骤,第一多个分组表示由应用程序产生的的显示数据。受第一图形更新影响的屏幕区域被决定。存储屏幕区域在第一图形更新之后的状态指示和该屏幕区域的位置。识别出在时间间隔内影响该屏幕区域的第二图形更新。根据屏幕区域在第二图形更新之后的状态是否不同于该屏幕区域在第一图形更新之后的状态,回放数据结构指示用于呈现包括影响该屏幕区域的第二图形更新的第二多个分组中分组的目的地。根据屏幕区域在第二图形更新后的状态是否不同于该屏幕区域在第一图形更新后的状态,回放数据结构指示用于与包括影响该屏幕区域的第二图形更新的第二多个分组中分组有关地呈现的时间间隔。
在一个实施例中,识别出第一多个分组中包含的图形更新。在另一个实施例中,根据由识别出的多个分组中的各个分组存储的图形更新受影响的屏幕区域被确定。在又一实施例中,存储受该图形更新影响的屏幕区域的副本。在又一实施例中,时间间隔被定义以接近人类级别循环周期的用户上限。在进一步的实施例中,回放数据结构表明以可感知方式呈现分组内容并将其呈送到缓冲区。在又另一实施例中,回放数据结构表明将分组内容呈送到缓冲区。在有些实施例中,后台协议引擎将这些指示存储在回放数据结构中。
如图26所示,用于去除交互序列的方法可以用于表示层协议数据流。在有些实施例中,如上所述,该方法被用于表示层协议数据流的完整记录。但在其它实施例中,该方法被用于表示层协议数据流的一部分,例如包括表示层协议数据流的分组子集的第一多个分组。
在呈现包括已经接收的第一多个分组和尚待接收的第二多个分组的表示层协议数据流中去除交互序列的方法,包括根据策略识别出由第一多个分组中的至少一个分组表示的交互序列的开始的步骤。回放数据结构表明该交互序列应该呈现到缓冲区。识别出交互序列的结束。交互序列的被识别的开始之前的分组和交互序列的被识别的结束之后的分组之间的第一时间间隔被识别出。回放数据结构指示呈现比第一时间间隔短的第二时间间隔。
在呈现包括已经接收的第一多个分组和尚待接收的第二多个分组的表示层协议数据流中去除交互序列的另一种方法,包括根据策略识别出由第一多个分组中的至少一个分组表示的交互序列的开始的步骤。回放数据结构表明该交互序列应该呈现到缓冲区。接收第二多个分组中的分组。识别出由第二多个分组中接收的分组所表示的交互序列的结束。交互序列的被识别的开始之前的分组和交互序列的被识别的结束之后的分组之间的第一时间间隔被识别出。回放数据结构指示呈现比第一时间间隔要短的第二时间间隔。
在一个实施例中,通过识别可视标记,识别出交互序列的开始。在一个实施例中,可视标记包括以相同方式显示给所有会话的凭证窗口。在另一个实施例中,可视标记包括由空白屏幕然后是由桌面背景对凭证窗口的代替。在一个实施例中,可视标记包括可识别图标的显示。
在有些实施例中,通过确定交互序列的开始时间而识别出交互序列的开始。在其中一个实施例中,由组件来检测交互序列中事件的开始时间。在其中另一个实施例中,该组件检测登录序列的开始时间。在其中其它实施例中,该组件检测注销序列的开始时间。在一个实施例中,对交互序列的开始的识别响应于以输入焦点识别窗口。
在识别出的交互序列不应以可感知方式呈现的实施例中,交互序列被呈送到缓冲区。将交互序列呈送到缓冲区导致所要呈现的用户不能感知交互序列。对于由策略或用户将交互序列归为无意义的实施例来说,这个呈现导致了无意义交互序列的消除。
在有些实施例中,通过识别可视标记识别出交互序列的结束。在其它实施例中,通过确定交互序列的结束时间识别出交互序列的结束。在其中一个实施例中,由组件检测出交互序列中事件的结束时间。在另一个实施例中,该组件检测出登录序列的结束时间。在其中其它实施例中,该组件检测出注销序列的结束时间。在另一个实施例中,识别交互序列的结束响应于以输入焦点识别窗口。
在有些实施例中,交互序列包括对应用的使用。在其中一个实施例中,由策略识别出包括应用的使用的交互序列不应以可感知方式呈现。在一个实施例中,这些应用包括但不限于word处理文档。
在其中一个实施例中,通过识别出有输入焦点的应用而识别出交互序列的开始。当分组的内容表示有焦点的窗口时,就确定了可靠创建该窗口的进程的应用。在一个实施例中,表示有输入焦点的窗口的分组的内容包括表示输入焦点的变化的窗口通知消息。如果可靠的应用识别出不应以可感知方式呈现的交互序列的开始,就在回放数据结构中存储指示以将该交互序列呈送到缓冲区。通过识别出不与交互序列的应用相关联的进程所拥有的窗口获得输入焦点而识别出交互序列的结束。
在一个实施例中,第一时间间隔与交互序列相关联。在交互序列自身不呈现的实施例中以可感知方式呈现与交互序列相关联的时间间隔导致用户能够感知到在一段时间内没有显示数据呈现并且用户在交互序列之后的分组的内容呈现之前要等待该段时间间隔。一个实施例通过呈现较短的时间间隔代替原始时间间隔而去除与交互序列相关联的时间间隔。
在有些实施例中,协议引擎呈现第一多个分组中的至少一个分组的内容,向用户提供第一多个分组的再生。在其中一些实施例中,协议引擎自动更改呈现至少一个分组的内容之间的时间间隔,导致上下文相关的时间卷曲的回放。在这些实施例中,呈现接近于用户理解呈现给用户的显示数据的能力。在一个实施例中,当被策略所定义时,当协议引擎确定分组内容表示的显示数据具有被增加级别的复杂度或重要性时,呈现分组内容之间的时间间隔增达。在另一个实施例中,当被策略所定义时,当协议引擎确定分组内容表示的显示数据具有被降低级别的复杂度或重要性时,呈现分组内容之间的时间间隔减小。在这些实施例中,协议引擎接近用户理解显示数据的能力,并且呈现内容以或者用更慢地给用户时间去理解该呈现,或者在用户需要较少的理解时间时更快地呈现该内容。
在有些实施例中,如前结合图27所述,用于呈现记录的计算机会话的方法提供自动的时间卷曲回放。这些方法还在实时表示层协议数据流的呈现期间提供自动的时间卷曲回放,在实时表示层协议数据流中数据流所表示的会话的记录是不完整的。
实时呈现包括已经由后台协议引擎接收的第一多个分组和由后台协议引擎尚待接收的第二多个分组的表示层协议数据流中进行自动时间卷曲回放的方法,包括由后台协议引擎接收表示显示数据的第一多个分组的步骤。后台协议引擎决定第一多个分组中的至少一些分组表示的复杂度的量度。后台协议引擎识别出第一多个分组中至少一些分组之间的时间间隔。后台协议引擎根据记录会话中的第一多个分组中的至少一些分组所表示的复杂度量度修改时间间隔。后台协议引擎将修改后的时间间隔存储在回放数据结构中。前台协议引擎在表示层协议数据流从第一装置到第二装置的传输期间根据回放数据结构呈现第一多个分组。
在有些实施例中,图27中所述方法的步骤也被用来在表示层协议数据流从第一装置到第二装置的传输期间根据回放数据结构呈现第一多个分组。
在其中一些实施例中,协议引擎通过识别出键盘输入中可能的键入序列而决定复杂度的量度。在一个实施例中,协议引擎检查涉及的至少一种类型的键以识别键盘输入中可能的键入序列。在另一个实施例中,协议引擎检查呈现的至少一个符号的序列以完成对键盘输入中可能的键入序列的启发式渐近。
在其中一些实施例中,协议引擎存储由键特征确定的键归类。键特征包括但不限于可打印或不可打印字符、空格、导航键或功能键,并且它们这些特征的组合。在一个实施例中,协议引擎决定包括可打印字符和偶尔出现的导航键的输入段构成常规输入,而主要包括不可见键的输入段不构成常规输入。在一个实施例中,协议引擎根据识别出的空格数量确定复杂度的量度。在这个实施例中,协议引擎包括对word处理的定义,该定义表示在典型键入模式中平均约每5-8个字符出现空格键。
在一个实施例中,协议引擎使用不可打印字符的出现来决定复杂度的量度。在另一个实施例中,协议引擎访问击键序列以识别在时间上一起出现的非空格可打印字符的序列。在这个实施例中,协议引擎包括比较击键序列和字典以识别有效单词并确定与用户理解有效单词相对无效单词的能力有关的复杂度量度的功能。
在另一个实施例中,协议引擎决定分组内容包含呈现字符的命令。在这个实施例中,协议引擎使用字符决定显示用户是否表示键入的用户活动。在这个实施例中,如果字符呈现速率接近键盘输入速度但带有一个小小的延迟,很可能是击键正在直接产生字符,因而极可能是用户正在输入。在一个实施例中,协议引擎将输入的键和产生的字符关联在一起。在另一个实施例中,协议引擎确定呈现的字符的空间序列(从左至后,从右至左)以确定用户正在键入。在一个实施例中,协议引擎根据分析该多个分组的内容的结果并识别这些内容所表示的模式和活动而决定复杂度的量度。
在其它实施例中,协议引擎根据对鼠标输入类型的识别而决定复杂度的量度。在一个实施例中,协议引擎决定表示鼠标点击的鼠标输入导致需要较慢的呈现速率以让用户理解,尤其是跟随在一系列键入之后的点击。在另一个实施例中,协议引擎决定不表示鼠标点击的鼠标输入不影响用户理解显示数据的能力,因而不影响复杂度的量度。
在其它实施例中,协议引擎根据识别图形更新复杂度的启发式渐近决定复杂度的量度。在一个实施例中,协议引擎根据(但不限于)正在被更新的区域大小、由图形命令改变的区域的面积大小、对单独区域的更新的历史频率、循环图形命令、图形命令的数量、图形命令的频率、其内容包含图形命令的相邻分组之间的时间间隔或者图形更新的类型识别出图形更新复杂度的启发式渐近。在一种协议引擎识别出图形更新的低复杂度的实施例中,协议引擎确定包含图形更新的分组所表示的低复杂度的量度。在协议引擎识别出图形更新的高复杂度量度的实施例中,协议引擎确定包含图形更新的分组表示的高复杂度的量度。
在多个分组中至少有一些分组的内容表示与高复杂度量度相关联的显示数据的实施例中,协议引擎增加分组间的时间间隔以允许用户有增加的呈现时间理解呈现的显示数据。在多个分组中至少有一些分组的内容表示与低复杂度量度相关联的显示数据的实施例中,协议引擎缩短分组间的时间间隔以反映用户需要减少的时间来理解所呈现的显示数据。在一个实施例中,用户需要所呈现的分组内容之间具有不同于由协议引擎所呈现的时间量。在这个实施例中,用户修改时间间隔以反映用户理解呈现的显示数据所需的时间量。在有些实施例中,协议引擎还识别出多个分组中至少一些分组与该多个分组中其它分组之间的时间间隔,修改在那些分组集合之间识别的时间间隔。
在有些实施例中,协议引擎识别出与第一多个分组中的分组相关联的第一标记。在一个实施例中,分组包括标记。在另一个实施例中,所记录的会话包括标记。
在一个实施例中,显示数据的呈现的用户定义标记。在另一个实施例中,协议引擎定义标记。在协议引擎识别出标记的实施例中,协议引擎根据第一标记修改时间间隔。在一个实施例中,协议引擎增加时间间隔,该时间间隔以向显示数据的呈现的用户提供更多时间以理解与第一标记相关联的分组的内容。在其它实施例中,协议引擎识别出第二分组中的第二标记。在这个实施例中,协议引擎根据第一标记和第二标记之间的距离修改时间间隔。在这个实施例中,协议引擎为理解所标记的分组的内容表示的显示数据提供增加的时间,并为理解未标记的分组的内容表示的显示数据提供减少的时间。在一个实施例中,用户为用户感兴趣的显示数据定义标记,当被标记所决定时,协议引擎为用户感兴趣的显示数据呈现额外的时间,而为用户不感兴趣的显示数据呈现减少的时间。
在一个实施例中,协议引擎识别多个分组中至少一些分组中的第一标记,所述标记表示该多个分组中至少一些分组中的起始分组。协议引擎根据第一标记修改时间间隔。协议引擎识别出多个分组中至少一些分组中的第二分组的第二标记,所述第二标记表示该多个分组中至少一些分组中的结束分组,协议引擎还根据第一标记和第二标记之间的时间间隔修改时间间隔。
在一个实施例中,协议引擎还根据与修改后的时间间隔有关的回放数据结构指令呈现多个分组。在另一个实施例中,由各自的前台协议引擎呈现多个分组。
在有些实施例中,确定了有应用的记录交互需要增加的呈现时间以向所要呈现的用户提供增加的时间理解所呈现的显示数据。在其中一些实施例中,确定了需要增加的时间的应用包括比不需要增加的时间的应用更重要的应用。在其中一个实施例中,用户做出该决定。在其中另一个实施例中,由策略做出该决定。在其中又另一个实施例中,协议引擎包括对需要增加的时间的应用的定义。
如结合图28所述,在呈现记录的计算机会话中,一种方法可以根据识别出的应用提供自动的时间卷曲回放。同样,该方法在呈现一部分未完全记录的表示层协议数据会话或者正在被记录中的表示层协议数据会话中根据识别出的应用提供自动的时间卷曲回放。
实时呈现包括已经接收的第一多个分组和尚待接收的第二多个分组的表示层协议数据流中的自动时间卷曲回放的方法包括接收表示显示数据的第一多个分组的步骤。识别出第一多个分组中其内容表示拥有焦点的窗口的第一分组,所述窗口表示应用。识别出第一多个分组中的第二分组(其内容在第一分组内容的呈现之前呈现)和第一多个分组中的第三分组(其内容在第一分组内容的呈现之后呈现)之间的时间间隔。根据所表示的应用修改识别出的时间间隔。在表示层协议流从第一装置到第二装置的传输期间,根据该修改呈现第一多个分组中的至少一个分组。
在一个实施例中,对识别出的时间间隔的修改包括对识别出的时间间隔的增加。在另一个实施例中,对识别出的时间间隔的修改包括对识别出的时间间隔的减少。在又一个实施例中,第一多个分组中的至少一个分组被呈送到缓冲区。在又一个实施例中,第一多个分组中的至少一个分组不仅被呈送到缓冲区而且还被以可感知方式呈现。
如前结合图29所述,系统可以在呈现记录的计算机会话中提供自动的时间卷曲回放。这些系统还可以在呈现包括已经被协议引擎接收的第一多个分组和尚待被协议引擎接收的第二多个分组的表示层协议数据流中提供自动的时间卷曲回放。根据接收第一多个分组产生回放数据结构的协议引擎,在表示层协议数据流从第一装置到第二装置的传输期间根据产生的回放数据结构呈现第一多个分组中的至少一个分组。
在一个实施例中,协议引擎在回放数据结构中存储至少一个用于呈现第一多个分组的指令。在另一实施例中,协议引擎将元数据存储在回放数据结构中。在又一实施例中,协议引擎不仅以可感知方式呈现第一多个分组中的至少一个分组,而且还将其呈送到缓冲区。在又一个实施例中,协议引擎将第一多个分组中的至少一个分组呈送到缓冲区。在进一步的实施例中,第二协议引擎根据产生的回放数据结构呈现第一多个分组中的至少一个分组。
在有些实施例中,表示涉及向客户端或另一服务器提供表示层协议数据的服务器。在其中一个实施例中,该服务器执行应用并向客户端或另一服务器提供产生的应用输出数据。在其中另一个实施例中,服务器提供对与资源(例如多个应用、桌面环境或其它计算环境)相关或由该资源产生的表示层协议数据的访问。在其中又一个实施例中,服务器提供会话(例如资源的执行)的表示层协议数据,会话执行在虚拟机中,该虚拟机执行在管理程序中,该管理程序执行在终端服务会话中,该终端服务会话执行在服务器上。在其中又一个实施例中,执行提供对会话的访问的虚拟机的服务器将表示层协议数据发送到第二服务器,该第二服务器执行终端服务会话并将接收的数据转发到客户端。在其中又一个实施例中,该服务器将执行在虚拟机中的会话的表示层协议数据提供给拥有表示层协议栈并将数据转发给客户端的第二服务器。
在表示层协议会话记录正在被记录时观看它的能力增强了用于先前记录的会话的回放的系统和方法。它增强了这样的系统和方法作为市场领导监控和监视解决方案的地位,并提供了进入支持/帮助市场的重要途径。
上述系统和方法可以被提供为实体化在一种或多种制造物品之上或之内的一个或多个计算机可读程序。制造物品可以是软盘、硬盘、光盘、数字多功能光盘、闪存卡、PROM、RAM、ROM或磁带。一般来说,该计算机可读程序可以用任何编程语言实现。可以使用的语言的一些例子有C、C++、C#或JAVA。该软件程序可以作为目标代码被存储在一个或多个制造物品之上或之内。
已经说明了用于表示层协议数据的记录和实时回放的方法和系统的特定实施例,现在本领域的技术人员将明了也可以使用引入了本发明的概念的其它实施例。因此,本发明不应受限于特定实施例,而是仅受下面的权利要求的精神和范围限制。
Claims (23)
1.一种用于状态快照的自适应产生的方法,该方法包括下列步骤:
(a)在表示层协议数据流从第一装置到第二装置的传输期间,由前台协议引擎将包括已经被后台协议引擎接收的第一多个分组和尚待被所述后台协议引擎接收的第二多个分组的所述表示层协议数据流的表示呈现给用户;
(b)由所述后台协议引擎在呈现期间监控所述用户的活动;
(c)由所述后台协议引擎根据对所述活动的监控开发出活动特征;
(d)由所述后台协议引擎根据所述活动特征产生至少一个状态快照;
(e)由所述后台协议引擎根据接收所述第二多个分组中的至少一个分组修改所述至少一个状态快照。
2.根据权利要求1所述的方法,其中步骤(b)还包括由所述用户识别不活动期间。
3.根据权利要求1所述的方法,其中步骤(c)还包括为所述用户的使用模式开发出活动特征。
4.根据权利要求1所述的方法,其中步骤(d)还包括决定延长一个或多个状态快照之间的间隔。
5.根据权利要求1所述的方法,其中步骤(d)还包括决定缩短一个或多个状态快照之间的间隔。
6.根据权利要求1所述的方法,其中还包括由所述后台协议引擎根据所述活动特征决定去除所述至少一个状态快照的步骤。
7.根据权利要求1所述的方法,其中还包括由所述后台协议引擎根据所述活动特征决定添加至少一个状态快照的步骤。
8.根据权利要求1所述的方法,其中步骤(c)还包括识别搜索概率的统计分布。
9.根据权利要求8所述的方法,其中步骤(d)还包括根据所述搜索概率的统计分布产生所述至少一个状态快照的步骤。
10.一种用于状态快照的自适应产生的系统,包括:
前台协议引擎,用于
在表示层协议数据流从第一装置到第二装置的传输期间,将包括已经被后台协议引擎接收的第一多个分组和尚待被所述后台协议引擎接收的第二多个分组的所述表示层协议数据流的表示呈现给用户;
所述后台协议引擎,用于
在呈现期间监控用户的活动;
根据对所述活动的监控开发出活动特征;
根据所述活动特征产生至少一个状态快照;
根据接收所述第二多个分组中的至少一个分组修改所述至少一个状态快照。
11.根据权利要求10所述的系统,其中所述后台协议引擎根据所述监控决定所述活动特征。
12.根据权利要求10所述的系统,其中所述后台协议引擎根据所述活动特征维护所述状态快照。
13.根据权利要求10所述的系统,其中所述活动特征识别使用模式。
14.根据权利要求10所述的系统,其中所述状态快照还包括描述某个时间点上屏幕状态的数据结构。
15.根据权利要求10所述的系统,其中所述状态快照还包括维护可视界面的状态。
16.根据权利要求10所述的系统,其中所述状态快照还包括维护离屏界面的状态。
17.根据权利要求10所述的系统,其中所述状态快照还包括维护绘画对象的状态。
18.根据权利要求10所述的系统,其中所述状态快照还包括维护调色板的状态。
19.根据权利要求10所述的系统,其中所述状态快照还包括维护缓存对象的状态。
20.根据权利要求10所述的系统,其中所述状态快照还包括维护缓冲区的状态。
21.根据权利要求10所述的系统,其中所述前台协议引擎还包括产生所述第一多个分组的以呈现给用户的实时可感知表示。
22.根据权利要求10所述的系统,其中所述前台协议引擎还包括产生所述第一多个分组的以呈现给用户的实时可视表示。
23.根据权利要求10所述的系统,其中所述前台协议引擎还包括产生所述第一多个分组的以呈现给用户的实时可听表示。
Applications Claiming Priority (10)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US86234906P | 2006-10-20 | 2006-10-20 | |
US60/862,349 | 2006-10-20 | ||
US60/862349 | 2006-10-20 | ||
US11/555615 | 2006-11-01 | ||
US11/555,615 | 2006-11-01 | ||
US11/555,611 | 2006-11-01 | ||
US11/555,615 US7831728B2 (en) | 2005-01-14 | 2006-11-01 | Methods and systems for real-time seeking during real-time playback of a presentation layer protocol data stream |
US11/555611 | 2006-11-01 | ||
US11/555,611 US7996549B2 (en) | 2005-01-14 | 2006-11-01 | Methods and systems for recording and real-time playback of presentation layer protocol data |
CN2007800470819A CN101563907B (zh) | 2006-10-20 | 2007-10-18 | 用于表示层协议数据流的记录及实时回放和搜索的方法和系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800470819A Division CN101563907B (zh) | 2006-10-20 | 2007-10-18 | 用于表示层协议数据流的记录及实时回放和搜索的方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103152363A CN103152363A (zh) | 2013-06-12 |
CN103152363B true CN103152363B (zh) | 2016-01-20 |
Family
ID=39344992
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310104680.7A Expired - Fee Related CN103152363B (zh) | 2006-10-20 | 2007-10-18 | 用于状态快照的自适应产生的方法和系统 |
CN2007800470819A Expired - Fee Related CN101563907B (zh) | 2006-10-20 | 2007-10-18 | 用于表示层协议数据流的记录及实时回放和搜索的方法和系统 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007800470819A Expired - Fee Related CN101563907B (zh) | 2006-10-20 | 2007-10-18 | 用于表示层协议数据流的记录及实时回放和搜索的方法和系统 |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP2074793B1 (zh) |
CN (2) | CN103152363B (zh) |
AU (1) | AU2007313848A1 (zh) |
CA (1) | CA2665784A1 (zh) |
WO (1) | WO2008055005A2 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140258382A1 (en) * | 2013-02-14 | 2014-09-11 | Tibco Software Inc. | Application congestion control |
CN105814409B (zh) * | 2013-12-19 | 2017-10-13 | 三菱电机株式会社 | 图表生成装置、图表显示装置、图表生成方法以及图表显示方法 |
CN104486309A (zh) * | 2014-12-06 | 2015-04-01 | 北京银信长远科技股份有限公司 | 一种终端仿真通讯协议记录的方法 |
US10409564B2 (en) | 2015-08-03 | 2019-09-10 | Microsoft Technology Licensing, Llc | Recording and playback of development sessions |
US11036526B2 (en) * | 2016-12-05 | 2021-06-15 | Google Llc | Automatically selecting and distributing recordings of applications executing on computing devices over networked environments |
CN109413350B (zh) * | 2017-08-18 | 2020-11-27 | 深圳市傲冠软件股份有限公司 | 一种远程桌面录像关键帧创建方法和装置 |
CN109597815B (zh) * | 2018-10-26 | 2023-08-18 | 创新先进技术有限公司 | 一种数据状态更新方法、装置、设备及介质 |
CN114866300B (zh) * | 2022-04-22 | 2024-06-18 | 中国人民解放军国防科技大学 | 一种基于重放分析的网络协议软件状态变量识别方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8145777B2 (en) * | 2005-01-14 | 2012-03-27 | Citrix Systems, Inc. | Method and system for real-time seeking during playback of remote presentation protocols |
US20060161671A1 (en) * | 2005-01-14 | 2006-07-20 | Citrix Systems, Inc. | Method and systems for capture and replay of remote presentation protocol data |
-
2007
- 2007-10-18 CA CA002665784A patent/CA2665784A1/en not_active Abandoned
- 2007-10-18 AU AU2007313848A patent/AU2007313848A1/en not_active Abandoned
- 2007-10-18 EP EP07868489.1A patent/EP2074793B1/en active Active
- 2007-10-18 CN CN201310104680.7A patent/CN103152363B/zh not_active Expired - Fee Related
- 2007-10-18 WO PCT/US2007/081751 patent/WO2008055005A2/en active Application Filing
- 2007-10-18 CN CN2007800470819A patent/CN101563907B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CA2665784A1 (en) | 2008-05-08 |
EP2074793A2 (en) | 2009-07-01 |
CN101563907B (zh) | 2013-04-17 |
CN101563907A (zh) | 2009-10-21 |
AU2007313848A1 (en) | 2008-05-08 |
WO2008055005A3 (en) | 2008-12-24 |
CN103152363A (zh) | 2013-06-12 |
WO2008055005A2 (en) | 2008-05-08 |
EP2074793B1 (en) | 2018-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7831728B2 (en) | Methods and systems for real-time seeking during real-time playback of a presentation layer protocol data stream | |
US7996549B2 (en) | Methods and systems for recording and real-time playback of presentation layer protocol data | |
CN103152363B (zh) | 用于状态快照的自适应产生的方法和系统 | |
US8615159B2 (en) | Methods and systems for cataloging text in a recorded session | |
US8917978B2 (en) | System and methods for automatic time-warped playback in rendering a recorded computer session | |
US8145777B2 (en) | Method and system for real-time seeking during playback of remote presentation protocols | |
US8230096B2 (en) | Methods and systems for generating playback instructions for playback of a recorded computer session | |
US8340130B2 (en) | Methods and systems for generating playback instructions for rendering of a recorded computer session | |
US20060161671A1 (en) | Method and systems for capture and replay of remote presentation protocol data | |
CN112148571B (zh) | 一种网页操作过程记录与回放的方法及装置 | |
US10305964B2 (en) | Generating content fragments for content distribution | |
EP1890428A1 (en) | Methods and systems for capture, replay and real-time seeking in remote presentation protocols | |
CN113873288A (zh) | 在直播过程中生成回放的方法和装置 | |
KR20110070767A (ko) | 네트워크 기반 원격 포렌식 시스템 | |
US9055169B2 (en) | Printing frames of a video | |
US20230409658A1 (en) | Process and system for automatic forensic acquisition of web page content | |
CN118413696A (zh) | 一种基于跨云集成环境的流媒体管理系统 | |
CN115412762A (zh) | 视频业务的数据处理方法、装置、设备及存储介质 | |
EP1836804B1 (en) | Method and system for playback of a recorded computer session | |
CN116821236A (zh) | 一种客群数据共享方法、装置、电子设备及存储介质 | |
Thompson et al. | Virtual worlds: Evaluating CS education activities through automated monitoring |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160120 |