用于表示层协议数据流的记录及实时回放和搜索的方法和系统的制作方法

文档序号:7680731阅读:395来源:国知局
专利名称:用于表示层协议数据流的记录及实时回放和搜索的方法和系统的制作方法
技术领域
本发明涉及用于提供实时回放的方法和系统,尤其是用于提供^t表示 层协议数据的记录和实时回放的方法和系统。
背景技术
(2) 対1办议数据流(例如由位于Ft. Lauderdale, Florida的Citrix Systems公 司发明的ICA协议,由X.org Foundation的X协议,AT&T公司的虚拟网络计 算(Virtual Network Computing)切、议,或者由位于Redmond, Washington的微软 公司发明的RDP助议)的服务器端记录可以用于仓'」作培训材料、提供服务台支 持、启动教程或者用于难以将软件分发到各个客户端工作站的环境。但是,很多 用于记录协议数据流的传统方法的缺陷是诸如对计算机屏幕活动进行低效且无 损失的编码。记录并将文件单独存储在服务器上可能产生与处理大量并发会话有
关的问题。很多传统系统通常的缺陷是戶;n己录的数据比将要回顾的多得多,由此 带来了复杂的记录过程或产生过大的文件。
(3) 有些用于记录协议数据流的传统方法不限于远程表示协议自身。很多 这样的解决方案涉及屏幕抓耳x/采集技术或对客户端图形弓i擎的钩取,带来的问 题是为了回放需要处理器密集型的编码或译码过程。
(4) 其它用于记录用户屏幕活动的方法对客户端装置上的图形输出进行 编码。通常,这些方法只限于从Windows客户端工作站取得周期性的不连续屏 幕快照。Microsoft (微软)提供了屏幕采集API作为Windows Media Encoder SDK 的一部分,但这个方法的缺陷是专注于对培训和视频显示市场的客户端装置记 录。大多数方法需要客户端软件组件并且缺乏进行服务器端记录的能力。
(5) 另外,远程表示协议自身是有状态协议。为了查看戶;n己录的表示协议 数据流中的特定点,对该流的回放必须从流的最开始处开始,并顺序回放直到遇 到该特定点。
(6) 不按顺序访问所记录的数据流的传统技术通常涉及对关键帧和增量
帧的使用。关键帧通常被作为同步点存储在流自身中以使帧倉的多被快速重现在屏 幕上。增量帧通常描述与先前的帧的区别以产生可视视频帧。
8(7) 因为远程表示协议通常由于它们的有状态的特性而比较紧凑,对关 键帧的额外存储将文件大小增加了几个数量级。g卩〗,用现代的数字视频压缩技
术,关键帧通常将附己录的表示协议i娥流所需的存储增加几个数量级。但是,
省略关键帧会产生不可搜索的协议。希望能有一种具备搜索能力而且不会因为所 存储的关键帧而使文件过大的方法。

发明内容
(8) 这里所说明的方法和系统提供了将远程表示协议(例如由位于Ft.
Lauderdale, Florida的Citrix Systems公司发明的ICA协议,由X.org Foundation 的X幼、议,AT&T公司的虚拟网络计算(Virtual Network Computing)协议,或 者由位于Redmond, Washington的微软公司发明的RDP协议)记录为流以及在
以后能够对戶;n己录的流进行回放。在无需修改现有协议定义的情况下,能够记录
最初设计用于将计t^几屏幕显示实时显示为无损失的实时屏幕活动抓取的协议。
和传统的屏幕抓取技术不同,这种记录不需要发生在客户端装置上,也不需要任 何客户端组件。通过允许将记录软件只安装在服务器上而不是安装在许多客户端
上,本发明提供的服务器端记录大大简化了部署。例如,在企业级Citrix MetaFrame表示服务教Citrix MetaFrame Presentation Server)环境中,客户端装置 对服务器的比例通常高于100比1。所支持的客户端装置的范围使传统的客户端 布署问题进一步复杂化。Citrix目前支持Windows PC上的客户端,UNIX, Linux, 基于Java的客户端,DOS,大量的Windows CE和基于EPOC的手持装置,以 及Macintosh。为{别艮务器端记录能够工作,在任何这样的平台上都不需要平台 特有的记录软件或者任何其它改变。因为远程表示协议通常被设计用^31过减小 带宽而在相X寸较低的速度上有效工作,对这样的协议的记录自身也是紧凑的。因 为没有译码成另一种视频格式,该记录过程的负载很轻,并且产生的流是对用户 在记录时间在他们的屏幕上所看到的内容的真实表示。
(9) 另外,这里所说明的方法和系统使远程表示协议可以像视频格式一 样被顺序播放,还能够进行随机搜索/浏览并且不使用所存储的关键帧。搜索使 观看流的用户在回放期间能够向前或向后跳到该流的任意位置并以应答方式继 续回放。这里所说明的方法和系统能够謝亍非常快速的搜索而无需记录或存储关 键帧。
(10) —方面,对表示层协议数据进fiH己录和实时回放的方法包括由记录 器在表示层协议数据流从第一装置向第二装置的传输期间拦截包括多个分组的表示层协议数据流,该表示层协议数据流表示显示数据。分发器发送该表示层协 议数据流中的至少一个分组的副本。协议引擎使用与该至少一个复制的分组相关 联的信息再生由该至少一个复制的分组所表示的显示数据。拦截表示层协议数据 流并发送至少一个分组的副本的步骤一直重复直到第一装置完成了至第二装置 的协议数据流的传输。
(11) 在一个实施例中,记录器在基本与第一装置向第二装置发送表示层 助、议数据流的同时拦截该表示层协议数据流。在另一个实施例中,记录器将至少 一个复制的分组发送到分发器。在又一个实施例中,重复以使用与该至少一个复 制的分组有关联的信息来再生由该至少一个复制的分组所表示的显示数据的步 骤。
(12) 另一方面,用于表示层协议数据的记录和实时回放的系统包 舌记录 器、分发器以及协议引擎。记录器在表示层协议数据流从第一装置传输到第二装 置的期间拦截表示层协议数据流,所述表示层协议数据流表示显示数据并且包括 多个分组。分发器发送该表示层协议数据流的至少一个分组的副本。与分发器通 信的协议引擎使用与该至少一个复制的分组相关联的信息再生由该至少一个分 组表示的显示数据。记录器继续拦截表示层协议数据,分发器继续发送表示层协 议数据流的至少一个分组的副本,直到第一装置完成至第二装置的该协议数据流 的发送。
(13) 在一个实施例中,记录器还包括用于由记录器在基本与第一装置向 第二装置发送表示层助、议数据流的同时拦截该表示层协议数据流的装置。在另一 个实施例中,分发器还包括用于检索该至少一个分组的副本并将该至少一个分组 的副本发送到协议弓l擎的收发器。
(14) 又一方面,用于在表示层协议数据流的实时回放期间实时搜索的方
法,包括由前台助议弓l擎接收用于呈现尚待接收的第一多个分组的分组内容的请
求。由前台协议引擎识别出其相关时间戳在所i青求的分组之前的状态快照。由前
台协议引擎在表示层协议数据流从第一装置至勝二装置的传输期间根据识别出 的状态快照显示戶斥请求的分组。
(15) 又一方面,用于产生状态快照的方法和系统使得在包括已经被后台 协议弓l擎接收的第一多个分组和尚待被后台协议弓l擎接收的第二多个分组的表 示层协议数据流的实时回放期间进行实时搜索。后台协议弓l擎在表示层协议数据 流从第一装置至ij第二装置的传输期间接收该第一多个分组。后台协议引擎产生该 第一多个分组的表示。后台协议引擎在读取该第一多个分组中的至少一个分组期间产生至少一个状态快照。在一个实施例中,该状态快照包括在记录器将分组从 协议数据流复制到该第一多个分组中的时间点时呈现该协议数据流的协议弓摩 的状态。后台幼议引擎存储所产生的状态快照。后台协议弓摩响应接收第二多个 分组中的至少一个分组而修改显示数据的产生和该至少一个状态快照。呈现协议 数据流内容的前台协议弓摩接收搜索由第一多个分组中的分组内容表示的显示 数据的请求,并使用状态快照呈现表示所请求的显示数据的内容。后台协议引擎 响应接收第二多个分组中的至少一个分组而更新状态快照。
(16) 又另一方面,用于状态快照的自适应产生的方法和系统,包括在表 示层协议数据流从第一装置向第二装置的传输期间向用户呈现包括已经被后台 协议弓l擎接收的第一多个分组和尚待被后台协议弓i擎接收的第二多个分组的表 示层幼、议数据流的表示。在一个实施例中,前台协议引擎向用户呈现协议数据流 的记录的表示。后台协议引擎在呈现期间监控用户的活动。后台协议引擎响/^X寸 活动的监控而开发活动特征。后台协议弓摩根据活动特征产生至少一个状态快 照。后台协议引擎响应接收第二多个分组中的至少一个分组而修改至少一个状态 快照。


(17) 从下面的详细说明和附图将明了本发明的这些和其它方面,而这些 是为了说明本发明而不是限制本发明,其中
图1A是说明包括与远程机器相互通信的客户端的网络环境的一个实施例 的框图1B和1C是说明可以用在和这里所描述的方法和系统相连的计算机的实 施例的框图2是说明可实施本发明的网络200的一个实施例的框图3和图4是说明记录器在网络200上的放置的可选实施例的框图5是说明用于再生由协议数据流表示的显示数据的系统的一个实施例的
框图6是说明用于记录和1^文服务器产生的数据的方法的流程图; 图7是更详细地说明用于记录由幼、议数据流表示的显示数据的系统中的记 录器的框图8说明记录助、议 流的一个实施例;
图9是说明在有状态远程表示协议的回放期间进行实时搜索的方法中所采 用步骤的一个实施例的流程图;图10是说明在产生能够在远程表示协议的回放期间进行实时搜索的状态快 照所采用的步骤的一个实施例的流程图11是说明在有状态远程表示协议的回放期间进行实时搜索的系统的框
图12是说明为状态快照的自适应产生而采用的步骤的一个实施例的流程
图13是说明一个实施例的三种类型的搜索概率分布的图14是说明响应确定的搜索概率分布产生状态快照的一个实施例的图15说明了助、议数据流表示的用户的使用模式的一个实施例;
图16是说明用于自适应产生状态快照的系统的一个实施例的框图,该系统
包括后台协议引擎、前台助、议引擎、幼、议数据流、活动特征和状态快照; 图17是说明了用于呈现记录会话的系统的一个实施例的框图; 图18的流程图说明了为产生用于回放戶/H己录的计算机会话的回放指令而采
取的步骤的一个实施例;
图19是说明了在用于所记录的计算机会话的回放的方法中所采取的步骤的
一个实施例的流程图20是说明了为了产生用于呈现记录会话的回放指令而采取的步骤的一个
实施例的流程图21说明了响应回放数据结构其内容被呈现的再生的记录流的一个实施
图22说明了在包含了表示有意义的用户活动的内容的记录流中特定分组的 一个实施例,在这种实施例中鼠标 俞入表示活动鼠标按钮状态;
图23是说明了在呈现记录会话中为消除不具备有意义的活动的期间而采取 的步骤的一个实施例的流程图24是说明了在呈现记录会话中为消除图形更新而采取的步骤的一个实施 例的流程图25说明了根据第二图形更新之后的屏幕区域的状态是否不同于第一图形 更新之后的屏幕区域的状态呈现再生的记录会话的一个实施例;
图26是说明了在呈现记录会话中为消除交互序列而采取的步骤的一个实施 例的流程图27是说明了在呈i^f记录的计算机会话中自动时间巻曲的回放中所采取 的步骤的一个实施例的流程图;图28是说明了在呈现戶形己录的计算机会话中根据识别出的应用为自动时间 巻曲回放而采取的步骤的一个实施例的流程图29是说明了在呈现戶;n己录的计算机会话中用于自动时间巻曲回放的系统
的一个实施例的框图30A是说明了用于表示幼、议层数据流的记录和实时回放的系统的一个实 施例的框图30B、 30C和30D是说明了用于表示协议层数据流的记录和实时回放的 系统的可选实施例的框图31是说明了在用于表示协议层数据流的记录和实时回放的方法中所采取 的步骤的一个实施例的流程图32是说明了用于在远程表示层协议数据的实时回放期间进行实时搜索的 方法中所采取的步骤的一个实施例的流程图33是说明了用于在表示层协议数据流的实时回放期间产生能够进行实时 搜索的状态快照的方法中所采取的步骤的一个实施例的流程图34是说明了在用于状态快照的自适应产生的方法中所采取的步骤的一个 实施例的流,呈图。
具体实施例方式
(is)本发明的方法禾係统劍共了对戶;n己录的表示层协议会话的时移回放。
在有些实施例中,该技术依赖用于表示层协议会话的记录和回放的方法和系统, 这些也将在这里进行说明。
(19) 用于表示层协议会话的回放的方法的一些实施例提供了在记录完成 之后和戶形己录的助、议数据流产生之后的回放功能。但在其它实施例中,方法和系 统提供了在协议数据流的记录期间对协议数据流进行回放的功能。在其中一个实 施例中,该方法和系统还掛共了对完成的协议数据流记,行回放的功能。在另 一个实施例中,该方法和系统提供了一系列回放控制,包括但不限于从开始观看 记录的能力、前进離退、暂停、快进、逐帧前进等等。
(20) 在有些实施例中,这里所说明的方法和系统J^共了时移回放(或时 移), 一个从视频产业借用的术语。被称为DVR (数字视频录像机)的产品例 如众所周知的TIVO牌使用时移技术。这些产品向消费者提供比传统VCR更显 著的优势,包括在记录结束前就开始观看F/H己录的TV节目的能力。这个好处也 被掛共给了这里所说明的方法和系统的用户。用于掛共表示层协议数据的记录后回放(也就是用于戶;n己录的表示层协议数据的vcR功能)的方法和系统还可以
J^共在记录期间的回放。这尤其为该系统打开了新的使用案例和新的市场机会。 对于该方法和系统被用于安全目的的实施例,该功能大大增强了这些方法和系统 作为监视和监控工具(此时对可疑活动的响应时间尤其重要)的可用性。现在可 以在可疑终端用户违反规则或对计算或网络资源的其它不正当使用时将j也们抓 获。另外,对于该技术被用在客户支持场景中的实施例,支持技术人员现在有能 力正确观察用户在他们请求帮助之前究竟做了什么,然后立亥鹏〖回"实况"观看 用户将要做什么。这为支持市场掛共了巨大的机会,因为现有的会话记录产品没 有提供复合的实况和回溯性回放特性。因为这里所说明的方法和系统对系统的性 能、可扩展性、可管理性或可用性只有很小(如果有的话)的影响,所以还具有 管理上的优势。
(21) 在一个实施例中,播放一个实况会话可能在该会话正在被实况观看 的时间段内对始发表示服务器有微小的影响。在另一个实施例中,当没有会话正 在被实况播放时,对服务器的性能和可扩展性影响与提供记录后回放方案的实施 例中相同。
(22) 从记录会话的搜索列表,实况记录可以根据诸如动画图标、缺少结
束时间、和不断变化的会话持续指示等元素被识别出。在回放期间,用来显翁己 录的"时间线"的图形元素(例如拉动进度条)可以继续扩展,来表示当来自会 话的额外数据被记录时的不断增加的可用于回放的数据。如果用户想要观看实 况,在一个实施例中,他们可以点击拉动进度条的最右端。
(23) 在有些实施例中,例如在监控或监视场景中,该系统的成功实现可
能依赖于助、议数据流的接收者难以检测到它们正在被记录。在其中一个实施例 中,使用提供时移回放特性的方法和系统不会从指示这些接收者他们的数据和会 话被记录或观看的有效会话期间提供任何新"线索"。
(24) 在其它实施例中,从管理员的角度,这些方法和系统提供的特性以 类似于这里所说明的记录后回放系统和方法的方式运行。在其中一个实施例中, 没有额外的安装或配置选项。记录规则和安全特性就像它们在记录后回放系统和 方法中所做的那样工作。
(25) 现在参看图1A,其中说明了网络环境的一个实施例。简要地说, 该网络环境包括通过一个或多个网络104与一个或多个服务器106a-106n (通常 也称为服务器106或远程机器106)相互通信的一个或多个客户端102a-102n(通 常也称为本地机或客户端102)。(26) 尽管图1A将网络104显示在客户端102和服务器106之间,但客 户端102和服务器106可以位于相同网络104中。网络104可以是局域网(LAN, 例如公司内部网络),城域网(WAN)或广域网(WAN,例如互联网或万乡隹网)。 在有些实施例中,在客户端102和服务器106之间有多个网络104。在其中一个 实施例中,网络104'可以是私有网络,网络104可以是公共网络。在其中另一个 实施例中,网络104可以是私有网络,网络104'可以是公共网络。在又另一个实 施例中,网络104和104'可以都是私有网络。
(27) 网络104可以是任意类型禾t]减形式的网络,并且可以包括下列任意 一种点到点网络,广播网络,广域网,局域网,电信网, 通信网,计算机 网络,ATM (异步传输模式)网络,SONET (同步光纤网络)网络,SDH (同 步数字体系)网络,无线网络和有线网络。在有些实施例中,网络104可以包括 无线链路,例如红外信道或卫星带。网络104的拓扑结构可以是总线型、星型或 环形网络拓扑。网络104和网络拓扑结构可以是例如本领域的技术人员已知的能 够支持这里所说明的操作的任意网络或网络拓扑。该网络可以包括使用用来在移 动装置之间通信的任意一种或多种协议的移动电话网络(包括AMPS, TDMA, CDMA, GSM, GPRS或UMTS)。在其中一些实施例中,不同类型的数据可 以通过不同的协议传输。在其它实施例中,相同类型的数据可以通过不同的协议 传输。
(28) 在一个实施例中,该系统可以包括多个逻辑上成组的服务器106。 在这些实施例中,服务器的逻辑组可以被称为服务器群组38。在其中一些实施 例中,服务器106可以在地理位置上分散。在有些情况下,群组38可以被作为 一个单个实体进行管理。在其它实施例中,服务器群组38包括多个服务器群组 38。在一个实施例中,服务器群组代表一个或多个客户端102执行一个或多个应 用辦。
(29) 各个群组38中的服务器106可以是不同种类的。服务器106中的 一个或多个可以根据一种类型的操作系统平台(例如,由位于Redmond, Washington的微软公司开发的WINDOWS NT)运行,而其它服务器106中的一 个或多个可以根据另一种类型的操作系统平台(例如Unix或Linux)运行。各 个群组38中的服务器106不需要在物理上邻近相同群组38中的另一个服务器 106。因而,逻辑上分组作为群组38的服务器106组可以用广域网(WAN)连 接或城域网(MAN)连接来互联。例如,群组38可以包括物理上位于不同大洲 或大洲、国家、州、城市、校园或房间的不同区域的服务器106。如果服务器106
15由局域网(LAN)连接g种直连形式相连,可以提高群组38中的服务器106
之间的数据传输速度。
(30) 服务器106可以是文件服务器、应用服务器、web服务器、proxy 服务器、装置、网络装置、网关、应用网关、网关服务器、虚拟化服务器、布署 服务器、SSL VPN服务器或防火墙。在有些实施例中,服务器106可以有充当 应用服务器或者主应用,歸器工作的能力。在一个实施例中,服务器106可以包 括活动目录。远程机器30可以是应用加速装置。对于远程机器30是应用加速装 置的实施例,远程机器30可以提供包括防火墙功能、应用防火墙功能或负载平 衡功能在内的功能。在有些实施例中,远程机器30包括例如由下歹忪司生产的 系歹ll产品之一位于San Jose, CA的Citrix Application Networking Group, {立于 Mountain View, CA的Silver Peak Systems Inc.,位于San Francisco, CA的Riverbed Technology Inc. , {立于Seattle, WA的F5 Networks Inc.,或者4立于Sunnyvale, CA 的Juniper Networks Inc..
(31) 客户端102也可以被称为客户端节点,客户端,终端节点或终端。 在有些实施例中,客户端102有能力作为搜索对服务器掛共的资源的访问的客户 端节点工作,也有能力作为提供对其它客户端102a-102n所寄载的资源的访问的 服务器工作。
(32) 在有些实施例中,服务器106劍艮务器群组38可以运行一个或多 个应用,例如J^共痩客户端计算或远禾IM示表示应用。在一个实施例中,服务器 106或服务器群组38作为一个应用来执行Citrix Systems Inc.的Citrix Access Suite 的任一部分(例如MetaFrame或Citrix Presentation Server ),禾口/或微软 公司开发的MICROSOFT WINDOWS终端服务(Terminal Services)中的{壬意一 个。在另一个实施例中,该应用包括由位于Redmond, Washington的微软公司开 发的远程桌面(RDP)客户端,或者由开源X.org组织维护的Xll客户端。在又 一实施例中,服务器106可以运行一个应用,它例如可以是提供电子邮件服务的 应用服务器(例如由位于Redmond, Washington的微软公司开发的MICROSOFT EXCHANGE) , Web或Internet服务器,桌面共享月艮务器或助、作服务器。在又 另一实施例中,这些应用中的任意一种都可以包括任一类型的所寄载的服务或产 品,例如由位于Santa Barbae California的Citrix Online Division Inc.提供的 GOTOMEETING,由位于Santa Clara^ California的WebEX Inc.Jif共白勺WEBEX, 或者由位于Redmond, Washington的微软公司提供的Microsoft O伍ce LIVE MEETING。(33) 客户端102可以执行、运行或以其它方式提供应用,该应用可以是
任意类型和/或形式的软件、,旨或者可执行指令,例如任何类型和/或形式的web 浏览器、基于web的客户端、客户端-服务器应用、瘦客户端计算客户端,ActiveX 控件、或者Java,i^、或者能够在客户端102上执行的任意其它类型和/或形式 的可执行指令。在有些实施例中,该应用可以是由服务器106代表客户端102 执行的基于服务器的或基于远程的应用。在一个实施例中,服务器106可以使用 瘦客户端或远禾tM示协议(例如由位于Ft. Lauderdale, Florida的Citrix Systems Inc. 开发的独立计算体系结构(ICA)幼、议,或由位于Redmond, Washington的微软 公司开发的远程桌面协议(RDP))来显示输出到客户端102。该应用可以使用 任意类型的协议,并且它可为如HTTP客户端,FTP客户端,Oscar客户端或Telnet 客户端。在其它实施例中,应用包括与VoIP (Voice over Internet Protocol)通信 有关的任意类型的软件,例如软IP电话。在进一步的实施例中,该应用包括与 实时数据通信有关的任意应用,例如用于流式传输视频和/或音频的应用。
(34) 客户端102和服务器106可以被布署为和/或被执行在任意类型和形 式的计算装置上,例如能够在任意类型和形式的网络上通信^#1行这里所说明的 操作的计算机、网络装置或装置。图IB和1C描述了可以用于实现客户端102 或服务器106的一个实施例的计算装置100的框图。如图1B和1C所示,齡 计算装置100包括中央处理单元121和主存储器单元122。如图IB中所示,计 算装置100可以包括显示装置124,键盘126和/或定点装置127,例如鼠t示。如 图1C中所示,每个计算装置100还可以包括其它可选部件,例如一个或多个输 A/输出装置130a-130b (—般用引用编号130来指代),以及与中央处理单元121 通信的高速缓冲存储器140。.
(35) 中央处理单元121是响应并处理取自主存储器单元122的指令的任 意逻辑电路。在很多实施例中,中央处理单元由微处理器单元^f共,例如由位 于Mountain View, California的Intel公司生产的微处理器;由位于Schaumburg, Illinois的Motorola公司生产的微处理器;由位于Santa Clar^ California的 Transmeta公司生产的微处理器;由位于White Plains, New York的国际商用机器 公司(E3M)生产的微处理器RS/6000;由位于Sunnyvale, California的超微装置
(AMD)公司生产的微处理器。计算装置100可以基于任意的这些处理器或者 能够进行如此处描述操作的任意其它处理器。
(36) 主存储器单元122可以是能够存储数据并允许微处理器121直接访 问其任意存储位置的一个或多个存储器芯片,例如静态随机存取存储器(SRAM)、突发(Burst) SRAM或同步突发(SynchBurst) SRAM (BSRAM)、 动态随机存取存储器(DRAM)、快速页面模式(Fast Page Mode) DRAM (FPM DRAM)、增强型DRAM (EDRAM)、扩展数据输出(Extended Data Output) RAM (EDO RAM)、扩展数据输出DRAM (EDODRAM)、突发扩展数据输 出DRAM(BEDO DRAM)、增强型DRAM (EDRAM)、同步DRAM(SDRAM)、 JEDECSRAM、 PC100SDRAM、双数据率SDRAM (DDR SDRAM)、增强型 SDRAM (ESDRAM)、同步链接DRAM (SLDRAM)、直接内存总线(Rambus) DRAM (DRDRAM)或铁电RAM (FRAM)。主存储器122可以基于上述存 储芯片中的任意一种,或者能够按照这里所述操作的任一其它可用存储芯片。在 图IB所示实施例中,处理器121通过系统总线150 (下面将对其进行更详细的 说明)与主存储器122通信。图1B描述了计算装置100的一个实施例,其中处 理器通过存储器端口 103直接与主存储器122通信。例如,在图IB中主存储器 122可以是DRDRAM。
(37) 图1C描绘的实施例中,主存储器121通过次级总线(有时也称为 背端总线)直接与高速缓冲存储器140通信。在其它实施例中,主处理器121 使用系统总线150与高速缓冲存储器140通信。高速缓冲存储器140通常具有比 主存储器122更快的响应时间,并且一般由SRAM、 BSRAM或EDRAM提供。 在图1C所示的实施例中,处理器121通过本地系统总线150与各种I/O装置130 通信。可以使用各种总线将中央处理单元121连接到任意I/O装置130,包括 VESA VL总线、ISA总线、EISA总线、微MJt体系结构(MCA)总线、PCI 总线、PCI-X总线、PCI-Express总线或者NuBus。对于其中的I/O装置是视频显 示器124的实施例,处理器121可以使用高级图形端口 (AGP)与显示器124 通信。图1C描述了计算机100的一个实施例,其中主处理器121通过超级传输 总线(HyperTransport)、快速(R邵id) I/O或InfiniBand直接与I/O装置130b通信。
图1C还描述了一个实施例,其中混合了本地总线和直接通信处理器121使用
本地互联总线与I/O装置130a通信,而直接与I/O装置130b通信。
(38) 计算装置100可以支持任意适当的安装装置116,例如用于接收软 盘(如3.5英寸或5.25英寸)或ZIP盘的软驱、CD-ROM驱动器CD-R/RW驱 动器、DVD-ROM驱动器、各种格式的磁带驱动器、USB装置、硬盘驱动器或 适合安装软件和禾ii^(如任一客户端代理120或其中一部分)的任意其它装置。 计算装置100还可以包括存储装置,例如一个或多个5,驱动器或独立磁盘的随 机阵列,用于存储操作系统和其它相关软件,并用于存储应用软件f旨,例如与客户端代理120有关的任意程序。可选地,任意安装装置116也可以用作存储装 置。另外,操作系统和软件可以从可引导介质上被运行,例如認OPPIX⑧,一
种用于GNU/Linux的可弓1导CD ,该可引导CD可从knoppix.net作为GNU/Linux
分发获得。
(39) 此外,计算装置100可以包括网络接口 118以通过多种连接(包括 但不限于标准电话线、LAN或WAN链路(如802.11,Tl,T3,56kb,X.25)、宽 带连接(如ISDN、帧中继、ATM)、无线连接或上述任意或全部的一些组合) 对接到局域网(LAN)、广域网(WAN)或Internet。网络接口 118可以包括内 置网络适配器、网络接口卡、PCMCIA网络卡、卡总线网络适配器、无线网络 适配器、USB网络适配器、调翻军调器或适合将计算装置100对接到能够通信 射丸行此处所述操作的任一类型网络的任一其它装置。
(40) 计算装置100中可以有多种I/0装置130a-130n。输A^置包括键盘、 鼠标、轨迹板、轨迹球、麦克风和绘画板。输出装置包括视频显示器、扬声器、 喷墨打印机、激光打印机和染料升华(dye—sublimation)打印机。1/0装置可以 如图1B中所示由I/O控制器123控制。1/0控制器可以控制一个或多个1/0装置, 例如键盘126和定点装置127 (例如鼠标或光学笔)。此外,1/0装置也可以为 计算装置100提供存储和/或安装介质116。在另其它实施例中,计算装置100 可以提供USB连接以接收手持USB存储装置,例如由位于Los Akmitos, California的Twintech Industry Inc.生产的USB闪存驱动器系列装置。
(41) 在有些实施例中,计算装置100可以包括多个显示装置124a-124n 或与其相连,这些显示装置可以是相同或不同的类型和/或形式。同样,IZO装置 130a-130n中的任一个和/或1/0控制器123可以包括任意类型和减形式的适当的 硬件、软件或软硬件组合以支持、启用或提供计算装置100对多个显示装置 124a-124n的连接和使用。例如,计算装置100可以包括任意类型和减形式的视 频适配器、视频卡、驱动器和/或库,以与显示装置124a-124n对接、通信、连接 或者使用显示装置124a-124n。在一个实施例中,视频适配器可以包括多个连接 器以与多个显示装置124a-124n对接。在其它实施例中,计算装置100可以包括 多个视频适适配器,^视频适配器连接到显示装置124a-124n中的一个或多个。 在一些实施例中,计算装置100的操作系统的任一部分都可以被配置用于使用多 个显示器124a-124n。在其它实施例中,显示装置124a-124n中的一个或多个可 以由一个或多个其它计算装置提供,诸如(例如通过网络)与计算装置100相连 的计算装置100a和100b提供。这些实施例可以包括设计和构造的任一类型的软件,以^顿另一个计算机的显示装置作为计算装置腦的第二显示装置124a。 本领域的技术人员将认识和意识到计算装置100可以被配置为有多个显示装置 124a-124n的各种方式和实施例。
(42) 在进一步的实施例中,I/O装置130可以是系统总线150和外部通信 总线间的桥接器,外部通信总线例如为USB总线、Apple Desktop总线、RS-232 串《琉接、SCSI总线、Fire Wire总线、FireWire 800总线、Ethernet总线AppleTalk 总线、Gigabit Ethernet总线、ATM总线、HIPPI总线、超级(Super) HIPPI总 线、SerialPlus总线、SCI/LAMP总线、FibreChannd总线或者串行连接(Serial Attached)小型计算机系统接口总线。
(43) 图IB和1C中所示类型的计算装置100通常在操作系统的控制下 运行,该控制系统控制任务的调度和对系统资源的访问。装置100可以运行任意 操作系统,例如任意版本的MICROSOFT WINDOWS操作系统,不同发行版本 的Unix和Linux操作系统,用于Macintosh计算机的任意版本的MAC OS,任 意^A式操作系统,任意实时操作系统,任意开源操作系统,任意专有操作系统, 任意用于移动计算装置的操作系统,或者任意其它能够在计算装置上运行并完成 这里所述操作的操作系统。典型的操作系统包括WINDOWS 3.x, WINDOWS 95, WINDOWS 98, WINDOWS 200, WINDOWS NT 3.51, WINDOWS NT 4.0, WINDOWS CE禾卩WINDOWS XP, 所有这些都由位于Redmond, Washington的微软公司开发;由位于Cupertino, California的苹果计算机公司开发 的MAC OS;由位于Armond, New York的国际商用机器公司幵发的OS/2;以及 Linux,由位于Salt Lake City, Utah的Caldera公司发布的可自由获得的操作系统, 或者除此之外任意类型和/或形式的Unix操作系统。
(44) 在有些实施例中,计算装置100可以有与该装置相容的不同的处理 器、操作系统以及输入装置。例如,在一个实施例中,计算装置100是由Palm Inc. 公司生产的Treo 180、 270、 600、 650、 680、 700p或700w智能手机。在其中 一些实施例中,Treo智能手机在PalmOS操作系统的控制下运行,并且包,刮鹏十 输入装置以及五向导航装置。
(45) 在其它实施例中,计算装置100是移动装置,例如启用了JAVA的 蜂窝电话或个人数字助理(PDA),例如由位于Schaumburg, Illinois的Motorola 公司生产的i55sr, i58sr, i85s, i88s, i90c, i95cl或iml 1000,由位于Kyoto, Japan的 Kyocera生产的6035或7135,或者由位于Seoul, Korea的Samsung电子有限公 司生产的i300或i330。(46) 在另外其它实施例中,计算装置100是黑莓掌中宝(Blackberry handheld)或智能手机,例如由Research In Motion有限公司生产的装置,包括黑 莓7100系列、8700系列、7700系列、7200系列、黑莓7520或黑莓珍珠(Blackbeny Pearl) 8100。在其它实施例中,计算装置100是智能手机、掌上电脑、掌上电脑 电话或者支持Microsoft Windows Mobile软件的其它手持移动装置。此外,计算 装置100可以是任意工作站、桌面计t^几、膝上或笔记本型计算机、服务器、 手持计算机、移动电话、任意其它计算机或者能够通信并且有足够的处理器能 力和存储器容量来完成这里所述操作的其它形式的计算或电信装置。
(47) 现在参看图2,其中的框图描述了在其中实现了本发明的网络200 的一个实施例,网络200包括第一装置202、远程表示助、议服务器引擎204、记 录器206、协、议数据流208、记录的协议数据流210、第二装置212、远程表示协 议客户端引擎214、显示器216、存储元件218以及记录的幼议数据流220。简 单地说,记录器206拦截协议数据流208。记录器206从协议数据流复制至少一 个分组并用该至少一个复制的分组创建协议数据流210的记录。
(48) 现在更详细地参看图2,第一装置202将协议数据流208发送到第 二装置212。在一个实施例中,第一装置202使用远程表示协议服务器引擎204 将协议数据流208发送到第二装置212。在有些实施例中,第二装置212使用远 程表示协议客户端弓摩214从第一装置202接收协议数据流208。在有些实施例 中,远程表示助、议包括瘦客户端助、议,例如由位于Ft. Lauderdale, Florida的Citrix Systems Inc.开发的ICA协议,由X.org幼、会开发的X协议,AT&T公司的虚拟 网络计算助、议,或由位于Redmond, Washington的微软公司开发的RDP协议。
(49) 协议数据流208包括多个分组,其中至少有一些表示显示数据。在 有些实施例中,协议数据流208包括与记录会话有关的信息。在一个实施例中, 协议数据流208包括元数据。在另一实施例中,协议数据流208包括与记录会话 中的用户有关的信息。在又一实施例中,协议数据流208包括与产生所记录的数 据的服务器有关的信息。在又另一实施例中,助、议数据流208包括时间戳。
(50) 在一个实施例中,协议数据流208包括多个信道。在这个实施例中, 一个信道包括端到端连接,数据在该连接上被传输。在另一实施例中,协议数据 流208包括多个虚拟信道。在这个实施例中,虚拟信道是被包在另一信道中的信 道。第二装置212接收协议数据流208并且在有些实施例中4柳远程表示协议客 户端引擎214再生显示数据。处理协议数据流208使得第二装置212能够通过 显示器216将显示呈现给用户。第二装置212可以使用远程表示协议客户端引擎214处理显示数据。该显示包括但不限于听觉、视觉、触觉或嗅觉的演示,或者 它们的组合。
(51) 记录器206拦截从第一装置202发送到第二装置212的协议数据流 208。在一个实施例中,记录器206通过拦截一个或多个信道而拦截协议数据流 208。在另一个实施例中,记录器206通过拦截一个或多个虚拟信道而拦截协议 数据流208。在有些实施例中,记录器206监控其中第一装置202用来传 俞协议 数据流208到第二装置212的一个或多个虚拟信道。记录器206从协议数据流复 制至少一个分组。在一个实施例中,记录器206根据策略决定复制协议数据流的 特定分组。在有些实施例中,策略定义分组为记录器206根据分组中包含的数据 的类型进行记录。在其它实施例中,记录器206根据该分组是否包含数据的决定 来决定复制协议数据流中的分组。在其中一些实施例中,当在其它实施例中记录 器206记录空分组时,记录器206不记录空分组。在有些实施例中,记录器206 记录助、议数据流208中的每个分组。
(52) 记录器206使用至少一个复制的分组创建记录的协议数据流210。 在一个实施例中,记录器206将信息和该至少一个被复制的分组关联在一起。在 一个实施例中,记录器206将时间戳和该至少一个被复制的分组关联在一起。在 另一个实施例中,记录器206将数据长度指示符和该分组关联在一起。对于记录 器206将信息(例如时间戳或数据长度指示符)与该至少一个被复制的分组关联 一起的实施例来说,除分组之外,记录器206可以将这个信息^A戶;fi己录的协议 数据流210,或者记录器206可以将这个信息直接嵌入分组中,或者记录器206 可以将该关联存储在独立于分组和所记录的协议数据流210的位置。
(53) 如图2中所示,记录器206可以位于第一装置202上。图3所示的 实施例中记录器206位于第二装置上,其中位于第二装置212上。图4所示的实 施例中记录器206位于第三装置上。可设置记录器206的装置包括客户端计算系 统、服务器计算系统、代理服务器计算系统、网络分组监听计算系统、协议分析 器计算系统、以及直通服务器(passthrough server)计算系统。
(54) 记录器206使用该至少一个被复制的分组(在有些实施例中,还使 用与该至少一个被复制的分组相关联的信息)创建记录的协议数据流210。在有 些实施例中,记录器206在创建协议数据流210的记录之后将,储下来。在其 中一些实施例中,记录器206将助、议数据流的记录210存储到存储元件218。存 储元件218可以包括持久存储器,例如硬盘驱动器、软驱、CD-RW、 DVD-RW 或在断电时仍然维持数据状态的任意其它装置。在其它实施例中,存储元件可以包括一个或多个易失存储器元件,例如静态随机存取存储器(SRAM)、突发
(Burst) SRAM或同步突发(SynchBurst) SRAM (BSRAM)、动态随机存取 存储器(DRAM)、快速页模式DRAM(FPM DRAM)、增强型DRAM(EDRAM)、 扩展数据输出RAM (EDO RAM)、扩展数据输出DRAM (EDO DRAM)、 突发扩展数据输出DRAM (BEDODRAM)、增强型DRAM (EDRAM)、同 步DRAM (SDRAM)、正DEC SRAM、 PC100 SDRAM、双数据率SDRAM (DDR SDRAM)、增强型SDRAM (ESDRAM)、同步链接DRAM (SLDRAM)、 直接内存总线DRAM (DRDRAM)或铁电RAM (FRAM)。
(55) 在一个实施例中,存储元件包括网络存储装置。存储元件218可以 位于第一装置202或第二装置212上。在其它实施例中,存储元件218位于第 三装置上,例如代理月艮务器计算装置或直通服务器计算装置。在另其它实施例中, 存储元件218位于网络上,并且记录器206通过网络访问存储元件218以存储协 议数据流220的记录。在其它实施例中,记录器206将协议数据流的记录存储在 记录器206所在的相同装置上。
(56) 现在参看图5,图中框图描述了从协议数据流506的记录读取至少 一个复制的分组并使用与该至少一个复制的分组相关联的信息再生由协议数据 流506表示的显示数据的协议引擎502。协议引擎502接收协议数据流506。在 有些实施例中,协议引擎502从存储元件504检索(retrieve)协议数据流506。 在其它实施例中,协议引擎502从记录器206检索协议数据流506。在另其它实 施例中,协议弓l擎502从另一计算装置检索协议数据流506。
(57) 在有些实施例中,协议引擎502包括分组读取器508和显示数据再 生单元510。在这些实施例中,分组读取器508从协议数据流506的记录读取至 少一个复制的分组。在有些实施例中,分组读取器508从协议数据流506的记录 顺序读取该至少一个复制的分组。
(58) 协议弓|擎502处理至少一个复制的分组以及与该至少一个复制的分 组相关联的任何信息。在有些实施例中,协议引擎502使用显示数据再生单元 510进行处理。该分组包含能够再生呈现给用户的可感知显示的数据。在有些实 施例中,第二装置212处理这个数据,如图2中所示。在一个实施例中,处理 包括将该至少一个复制的分组中的内容呈送到缓冲区。在另一个实施例中,处理 包括以可感知的方式呈送该至少一个复制的分组的内容。再生的显示可以包括但 不限于听觉、视觉、触觉或嗅觉的演示或者它们的组合。
(59) 在有些实施例中,协议引擎502位于第一装置202上。在其它实施例中,协议引擎502位于第二装置212上。在另其它实施例中,协议引擎位于第 三装置上,例如代理服务器计算装置或直通服务器计算装置。
(60) 现在向前看图7,图中框图更详细地描述了最初在图2中被描述为 记录器206的记录器702。简单地说,记录器702通ii)(tt办议数据流710的拦截 并通i!Xtt办议数据流710的记录712的创建而记录服务器产生的数据。
(61) 在一个实施例中,记录器702包括协议数据流拦截器704、分组复 制器706和记录发生器708。在一个实施例中,记录器702使用协议数据流拦截 器704监控协议数据流710。在另一实施例中,记录器702使用协议数据流拦截 器704拦截包括多个从第一装置202发送到第二装置212的分组的协议数据流 710。分组复制器706复制协议数据流的至少一个分组。分组复制器706决定是 否复制幼、议数据流中的分组。在有些实施例中,分组复制器706根据策略进纟m 个判断。在这些实施例中,分组复制器706可以根据分组是否包含任意数据或者 根据分组中包含的数据类型决定是否复制该分组。
(62) 在一个实施例中,记录器702利用记录发生器708并使用至少一个 复制的分组创建协议数据流的记录。记录发生器将该至少一个复制的分组组装成 协议数据流710的记录712。在有些实施例中,记录发生器708将信息嵌入协议 数据流的记录中。这个信息可以包括但不限于表示何时再生由分组中包含的数据 表示的显示数据的时间基准,描述分组中包含的数据的数据长度指示符,或者用 来再生由协议数据流710中包含的数据所表示的显示数据的其它类型的信息。
(63) 图8描述了幼、议数据流710的记录712的一个实施例。在所示实施 例中,记录发生器708将至少一个复制的分组组成远程表示协议数据块。记录发 生器708将时间基准和数据长度与各怖程表莉办议数据i央关联在一起荆每信 息和分组一起组合成助、议数据流710的记录712。
(64) 现在回过去看图7,在一个实施例中,记录器702将幼、议数据流710 的完整记录712存储到存储元件714中。在有些实施例中,存储元側立于网络上, 记录器702在网络上将记录712发送到存储元件714。在其它实施例中,存储元
件位于代理服务器计算装置上。在另其它实施例中,存储元fH立于直通服务器计 算装置上。在有些实施例中,存储元件714位于和记录器702相同的装置上。
(65) 在一个实施例中,如图7所示,用于协议数据流的记录和回放的系 统包 封己录器702以及图5中所述的回放装置514。回放装置514包括幼、议引擎 502,它使用分组读取器508从分组数据流的记录712接收和读取至少一个复制 的分组并使用内嵌的信息再生由协议数据流的记录712表示的显示数据。在有些实施例中,协议弓l擎502在再生显示数据中顺序读取分组。
(66) 在图7所示另一实施例中,用于记录和m^文服务器产生的数据的系 统包銜己录器702、存储元件714和协议引擎502。记录器702产生协议数据流 的记录并将记录712存储在存储元件714中。记录器从协议数据流复制至少一个 分组并将信息(包括但不限于时间基准或描述分组中数据长度的数据长度指示 符)与至少一个分组关联在一起。协议引擎502与存储元件714通信,从协议数 据流的记录读取至少一个分组并使用与至少一个分组相关联的信息再生由协议 数据流710的记录712表示的显示数据。
(67) 在一个实施例中,记录器702、协议弓|擎502或存储元件714可以 一起或分开位于第一装置202上。在其它实施例中,它们可以一起或分开位于 第二装置212上。在另其它实施例中,它们可以一起或分开位于第;置上, 例如代理服务器计算装置,网络分组监听器或直通服务器计算装置。在另其它实 施例中,存储元件714可以独立于记录器702和协议弓|擎502位于存储区网络上。
(68) 现在参看图6,所示流程图概述了用于记录和重放服务器产生的数 据的方法。简单地说,记录器206拦截包括从第一装置202发送到第二装置212 的多个分组的协议数据流208 (步骤602)。记录器206从协议数据流208复制 至少一个分组(步骤604)并创建协议数据流210的记录(步骤606),随后协 议引擎502在再生由所记录的协议数据流210表示的显示数据时使用它(步骤 608、 610)。
(69) 记录器206拦截包括多个分组的、表示自第一装置202发送到第二 装置212的显示数据的协议数据流208。记录器206复制协、议数据流208的至少 一个分组。记录器206使用至少一个复制的分组创建协议数据流的记录。记录器 206在有些实施例中将信息与至少一个复制的分组关联在一起。该信息可以包括 时间戳或数据长度指示符。在其中一些实施例中,记录器206将与分组相关联的 信息^A助、议数据流210的记录中。在其中的其它实施例中,记录器206将与分 组相关的信息存储在单独的幼、议数据流中。在其中另一些实施例中,记录器将与 分组相关联的信息存储在数据存储中。协议引擎502从协议 流210的记录读 取至少一个复制的分组并使用与该至少一个复制的分组相关联的信息再生由协 议数据流210表示的显示数据。
(70) 现在向前参看图ll,其中的框图描述了用于在有状态的远程表示协 议的回放中进行实时搜索的系统。简单地说,该图描述了回放装置514 (见上面 的图5)的一个实施例,包括两个协议引擎502、后台助、议引擎1102、前台协议引擎1106、以及状态快照1104和显示器1108。后台协议引擎1102接收协议数 据流1110的记录并读取协议数据流1110的记录,其包括多个分组并表示显示数 据。在一个实施例中,该回放装置514M:呈送助、议数据流1110中的至少一个 分组的内容并使用显示器1108显示结果来再生显示数据。该结果包括但不限于 可以感知的听觉、视觉、触觉或嗅觉的演示。
(71) 现在更详细地参看图11 ,后台协议弓摩1102启动对所呈送的显示 数据的接收者以在协议数据流1110的表示期间实时搜索内容。后台协议引擎 1102在从协议数据流1110读取至少一个分组时产生至少一个状态快照1104。在 一个实施例中,后台协议引擎1102将至少一个分组的内容呈送到缓冲区。在这 个实施例中,该缓冲区可以包括离屏缓冲区。在这个实施例中,后台协议引擎 1102在它呈送该至少一个分组的内容时产生至少一个状态快照1104。后台协议 引擎1102使状态快照1104对前台协议弓摩1106可用。
(72) 状态快照1104使得能够再生显示数据,因为它存储了呈送协议数 据流1110的助、议弓l擎在记录器206从协议数据流208复制至少一个分组到协议 数据流1110的记录的时间点的状态。在一个实施例中,状态快照1104包括描述 某一时间点上的屏幕状态的数据结构。在另一实施例中,状态快照1104描绘所 有变量、图像以及构成协议弓l擎在协议数据流1110中的参考点上的状态的数据 组件。前台协议引擎1106还接收协议数据流1110的记录并且通过重新创建最初 呈送协、议数据流1110的切、议弓l擎的状态来呈送助、议数据流1110中的至少一个分 组的内容。在一个实施例中,前台协议引擎1106使用状态快照1104的内容呈送 该至少一个分组的内容。
(73) 在一个实施例中,状态快照1104包括数据结构。在其它实施例中, 状态快照1104包括数据库。在一个实施例中,状态快照1104的内容包括与可视 表面的状态有关的显示数据。在另一实施例中,状态快照1104的内容包括与离 屏表面的状态有关的显示数据。在又一实施例中,状态快照1104的内容包括与 图形对象的状态有关的显示数据。在有些实施例中,状态快照1104的内容包括 与调色板的状态有关的显示数据。在其它实施例中,状态快照1104的内容包括 与缓存对象的状态有关的显示数据。在另其它实施例中,状态快照1104的内容 包括与缓冲区的状态有关的显示数据。
(74) 前台协议引擎1106接收协议数据流1110的记录并使用状态快照
1104识别包含戶;f请求的数字数据的表示的分组并呈送该分组。在有些实施例,
前台协议弓l擎1106产生协议数据流1110的记录的实时可感知表示以表示给使用显示器1108的观众。在有些实施例中,前台协议引擎1106通过呈送协议数据流 1110中的至少一个分组的内容来产生实时可感知表示。可感知表示可以分别包 括或一起包括但不限于听觉、视觉、触觉或嗅觉的演示。
(75) 在其中一个前台协议引擎1106呈送协议数据流1110中的至少一个 分组的内容的实施例中,前台协议引擎1106在由后台协议引擎1102呈送的同时 启动对协议数据流1110中的至少一个分组的内容的呈送。但是,后台协议弓摩 1102只呈送到缓冲区并在由前台协议弓摩1106开始的实时可感知呈现完成之前 完成呈现和对至少一个状态快照1104的生成,前台协议弓摩1106在一个实施例 中不仅呈送到缓冲区而且以可感知方式呈现。在一个实施例中,后台协议引擎 1102以最大的可會腿度呈现协议数据流1110而不管与记录(将以其它方式指定 呈现时间)相关的ftf可时间戳。因此,在其协议数据流1110的记录的实时可感 知表示的产生期间,至少一个有状态快照1104对前台助议引擎1106可用。
(76) 在一个实施例中,前台协议引擎1106以顺序方式呈现协议数据流 1110的记录中多个分组的内容。在这个实施例中,呈现并表示给用户的显示数 据以记录协议数据流时发生的顺序表示这些显示。协议数据流1110的记录可以 包括信息,例如由前台幼议引擎1106拍顿序呈现显示数据中使用的时间戳。在 有些实施例中,前台幼、议引擎1106实时呈现显示数据。当前台助、议引擎1106 接收再生由协议数据流1110的记录中的特定分组表示的特定显示数据的请求 时,前台协议引擎1106使用识别出的状态快照1104的内容呈现所请求的显示数 据。
(77) 在有些实施例中,后台协议引擎1102和前台协议引擎1106位于相 同装置上。在其它实施例中,后台协议弓摩1102和前台协议弓摩1106位于不同 装置上。
(78) 现在回过去参看图9,其中的流程图描述了用于在有状态远程表示 协议的回放期间进行实时搜索的方法中采取的步骤的一个实施例。简单地说,先 请求呈现由协议数据流的记录中的分组内容表示的数据显示(步骤902)。通过 具有不迟于与所请求的分组相关联的时间戳的相关时间戳的状态快照的第一识 别(步骤904)和根据该识别出的状态快照呈现所请求的内容(步骤906),呈 现适当分组的内容。
(79) 在一个实施例中,前台协议弓|擎1106接收呈现协、议数据流1110的 记录中分组的内容的请求。协议数据流1110包括多个其内容表示显示数据的分 组。在有些实施例中,在前台协议引擎1106通过向使用显示器1108的观众(且该观众希望搜索特定显示数据)呈现协议数据流1110的记录中的分组内容而再 生显示数据时,产生请求。
(80) 前台协议引擎1106识别出具有不迟于与所^i青求的分组相关联的时 间戳的相关时间戳的状态快照1104。前台协议引擎1106根据识别出的状态快照 1104显示由所i青求的分组的内容表示的显示数据。在一个实施例中,识别出的 状态快照1104从协议数据流1110指示出正确的分组,前台协议弓|擎1106可以
呈现其内容以向用户提供戶;fi青求的显示数据。
(81) 在其它实施例中,识别出的状态快照1104包括呈现助议数据流的 协议引擎在记录器从协议数据流1110复制分组但所复制的分组的内容表示的显 示数据在观众请求的显示数据之前时的某一时间点的状态。在其中一些实施例 中,在状态快照和包含所请求的显示数据的表示的分组之间有多个分组。在其中 一些实施例中,前台幼、议引擎1106将中间分组的内容或只将分组呈送到离屏缓 冲区。前台协议弓摩1106接着将其内容表示显示数据的分组不仅呈送到离屏缓 冲区,还以可感知的方式呈现给用户。在一个实施例中,前台协议引擎1106在 附青求分组的内容所表示的显示数据之前,提供以可感知的方式由中间分组的内 容所表示的显示数据。
(82) 现在参看图10,所示流程图描述了为产生能够在远程表示协议的回 放期间进行实时搜索的状态快照所采取的步骤的一个实施例。简单地说,后台协 议引擎1102接收助、议数据流1110的记录,并在再生由助、议数据流1110中的多 个分组的内容所表示的显示数据时产生至少一个状态快照。
(83) 后台协议弓|擎1102接收包括多个分组的协议数据流1110的记录(步 骤1002)。后台协议引擎1102产生协议数据流的记录的表示。在一个实施例中, 后台协议弓摩1102通过将多个分组的内容呈送给缓冲区来产生表示。在有些实 施例中,该缓冲区是离屏缓冲区。
(84) 在有些实施例中,前台协议弓摩1106也接收协议数据流1110的记 录。在这些实施例中,前台协议引擎1106产生助、议数据流记录的可由人感知的 表示,尽管如上戶,前台协议引擎1106不仅呈送到离屏缓冲区,也以可感知方 式呈现(步骤1004)。在其中一个实施例中,前台助、议引擎1106通过基本与后 台协议引擎1102在它读取协议数据流的记录期间产生至少一个状态快照同时呈 现多个分组的内容,来产生协议数据流1110的记录的可由人感知的表示。
(85) 在读取了协议数据流1110的记录中的至少一个分组后,后台协议 引擎1102产生至少一个状态快照(步骤1006)。在一个实施例中,后台协议引擎1102招顷序读取协议数据流1110的记录期间产生至少一个状态快照。在另一 实施例中,后台协议引擎1102基本与呈送分组的内容到缓冲区同时读取协议数
据流1110的记录中的至少一个分组。在一个实施例中,后台协议引擎1102随后 将所产生的状态快照1104存储下来(步骤1008)。在后台协议引擎1102周期 性产生多个状态快照的实施例中,状态快照可以充当贯穿幼、议数据流1110的记 录的标记,帮助定位协议数据流1110中特定时间点以及在状态快照1104之前或 之后到来的分组。
(86) 向前参看图12,其中的流程图描述了为状态快照的自适应产生而采 取的步骤的一个实施例。简单地说,后台协议引擎1102监控观众的活动并根据 观众的活动级别产生一个或多个状态快照1104。
(87) 在将协议数据流1110的记录的表示呈现给用户(步骤1202)期间, 后台协议引擎1102监控用户的活动(步骤1204)。在一个实施例中,前台协议 引擎1106产生协议数据流1110的记录的表示并且用显示器1108将其呈现给用 户。在其它实施例中,后台协议引擎1102产生该表示。在另其它实施例中,第 三装置产生该表示。(88) 后台协议引擎1102在表示期间监控用户的活动(步骤1204)。通 过监控用户的活动,后台助、议引擎1102根据对活动的监控开发出活动特征(步 骤1206)。后台协议引擎根据开发出的活动特征产生至少一个状态快照1104 (步 骤函)。
(89) 在有些实施例中,后台协议引擎1102识别出用户的活动级别。在 有些实施例中,后台协议引擎1102识别出不活动期间。在其它实施例中,后台 协议引擎1102在显示数据中识别出用户的兴趣区域。活动特征反映了这些识别。
(90) 后台协议引擎1102根据活动特征产生至少一个状态快照。在有些 实施例中,后台协议引擎1102决定在一个或多个状态快照之间扩展间隔。在其 它实施例中,后台助议引擎1102决定在一个或多个状态快照之间縮减间隔。在 另其它实施例中,后台协议引擎1102根据活动特征决定移除至少一个状态快照。 在另其它实施例中,后台协议弓l擎1102根据活动特征决定增加至少一个状态快 昭。
乂 、、、 o
(91) 在一个实施例中,后台协议引擎1102识别出搜索概率的预测统计 分布。图13是描述了一个实施例的三种类型的搜索概率分布图。在这个实施例 中,后台协议引擎1102收集并存储与用户所做的搜索请求有关的数据。在一个 实施例中,该数据包括用户如何定期做出搜索请求。在一个实施例中,该数据包M^搜索请求的范围""戶斥请求的显示数据和通过呈现协议数据流iiio的记录 中的分组的内容而表示给用户的当前显示数据之间的距离。该范围可以用时间单 位描述或者相对于协议数据流1110的整个记录的长度进行描述。在一个实施例 中,做出搜索请求的时间戳被记录下来。
(92) 图14是描述了根据确定的搜索概率分布产生状态快照的一个实施
例的图。后台协议引擎1102使用收集的搜索请求数据产生围绕当前表示的显示 数据的搜索概率分布图表。后台协议引擎1102为流中的每个位置分配一个值,
该值表示用户将请求搜索与该位置相关联的显示数据的估计概率。使用这个数
据,后台协议弓摩1102决定将产生的状态快照1104放在何处并根据搜索概率的 统计分布产生至少一个状态快照1104。
(93) 图15描述了用户使用模式的一个实施例。在一个实施例中,后台 协议弓摩1102根据用户的4顿模式为用户开发出活动特征。使用模式反映识别 出的搜索概率。具有较高搜索概率的区i劍每被Jil共较高的状态快照密度,具有较 低搜索概率的区i顯每被提供较低的状态快照密度。在有些实施例中,任意一对状 态快照之间的距离与它们之间的平均搜索概率成反比。后台协议弓摩1102期望 用户搜索较高概率区域,因此大部分搜索将很快,因为产生的状态快照1104之 间的间距相对较短。为了确保没有个别搜索请求过慢,在一个实施例中,即使搜 索概率非常低,后台坊、议弓摩1102将为产生的状态快照的间距强加一个上限。 同样,在另一个实施例中,下限防止状态快照在很高概率区域布置得过于接近。 在有些实施例中,在决定状态快照布置时,相邻状态快照之间的呈现量被考虑以 最小化延迟。
(94) 对于具有新用户或没有可区别的使用模式的用户的实施例,后台协 议弓l擎1102应用缺省状态快照产生模式。这个模式假定大多数搜索将靠近任一 方向的当前帧发生,但长距离搜索性能必须最佳。典型的用户会期望在当前帧周 围来回小幅移动时有好的性能,因为很多小的搜索步骤可以用转轮输入装置实 现。搜索长距离不太常见,而且明显的延迟也是可接受的权衡。
(95) 如果用户偏离他们被认可的4顿模式,后台幼、议引擎1102在对用 户无了解的实况回放期间调节状态快照产生模式。后台协议弓l擎1102移动状态 快照位置以调整为新使用模式。例如,如果通常使用鼠标滚轮小步搜索的用户开 始较大范围搜索,后台协议弓摩1102减少当前帧附近的状态快照的数量以释放 资源从而在较大范围的区域中增加状态快照。
(96) 图16推,了在用于状态快照的自适应产生的系统中的上述方法的一个实施例,该系统包括后台协议引擎1602、前台幼、议引擎1608、协议数据流 1612、活动特征1604以及状态快照1606。前台助、议引擎1608将协议i^居流记 录的表示呈现给观众。后台协议引擎1602在表示期间监控观众的活动,根据监 控开发出活动特征1604并根据活动特征生成和维护状态快照1606。
(97) 现在参看图18,所示流程图描述了为产生用于戶/H己录的计算机会话 的回放的回放指令而采取的步骤的一个实施例。简单地说,在第一装置上执行的 协议引擎接收记录^i舌(步骤1802)。记录的流包括表示在第二装置上执行的 应用,聘产生的显示数据的多个分组。助议弓摩为记录的流中的分组决定以人可 感知的方式呈现该分组的内容(步骤1804)。随后助、议引擎将该决定存储在回 放数据结构中(步骤1806)。
(98) 在一个实施例中,协议引擎包括上面图5中所述的协议引擎502。 在其它实施例中,助、议引擎包括如图11中所述的后台协议引擎1102。在又其它 实施例中,协议引擎包括如图11中所述的前台协议引擎1106。在助、议引擎包括 后台协议引擎1102的一些实施例中,该协议引擎可以中断执行后台协议引擎 1102的功能并开始执行前台协议引擎1106的功能。在协议引,括前台协议引 擎1106的一些实施例中,该协议引擎可以中断执行前台协议引擎1106的功能并 开始执行后台协议引擎1102的功能。在其它实施例中,该助、议引擎包括后台协 议引擎1102和前台幼议引擎1106。在其中一些实施例中,后台协议引擎1102 和前台协议引擎1106位于相同装置上。在其它实施例中,后台幼、议引擎1102 和前台协议弓l擎1106位于不同装置上。
(99) 在一个实施例中,协议引擎为记录流中的分组决定以可以被人感知 的方式显示该分组(步骤1804)。该显示包括但不限于听觉、视觉、触觉或嗅 觉的演示,或者它们的组合。在有些实施例中,幼、议引擎根据分组的内容决定显 示该分组。在其中一个实施例中,协议弓摩根据具有输入焦点的应用,歸的指示 做出决定。在其中另一个实施例中,协议弓摩根据对该分组中存储的用户输入 的类型的评估做出决定。在其中一些实施例中,协议引擎根据对该分组中存储的 图形更新的类型的评估做出决定。在其中其它实施例中,协议引擎根据对该分组 中存储的交互顺序的类型的评估做出决定。
(100) 在一个实施例中,协议引擎将该决定存储在回放数据结构中 (1806)。在有些实施例中,回放数据结构描述如何再生记录流中包含的显示数
据。在一个实施例中,回放数据结构中存储的指令控制呈现显示数据的过程。在 一个实施例中,回放数据结构包括用于呈现记录流中分组的内容的时间。在这个实施例中,回放数据结构中包含的时间被用于呈现分组的内容,而且不是与记录 的分组相关联的呈现时间(如果有的话)。在一个实施例中,回放数据结构接收 改变呈现时间的用户输入。
(101) 在有些实施例中,回放数据结构包括说明如何进行对所记录会话 的一次或多次回放的元数据。在一个实施例中,回放数据结构由记录流中的^ 分组的记录组成,表示在回放期间分组的内容应该在什么相对时间点被呈现。在 有些实施例中,元数据还包含分组开始文件中的偏移。
(102) 现在回过去参看图17,其中的框图描述了用于呈现记录会话的系
统的一个实施例,该系统包括第一装置1702、后台协议引擎1704、回放数据结 构1706、前台幼议引擎1708、显示器1710、第二装置1712和记录流1714。后 台协议引擎1704在第一装置1702上执行并响应接收记录流1714而产生回放数 据结构1706,所述记录流1714表示由在第二装置1712 ,三装置上执行的应 用程序产生的显示数据。前台协议引擎1708接收记录流1714并根据后台幼、议引 擎1704产生的回放数据结构1706而呈现记录流1714。
(103) 在一个实施例中,后台协议弓摩1704和前台协议弓摩1708各自 接收记录流1714。在这个实施例中,后台协议弓摩1704基本与前台协议弓摩1708 呈现记录流同时产生回放数据结构。
(104) 在一个实施例中,前台协议引擎1708位于第一装置1702上。在 另一个实施例上,如图17中的阴影所示,前台协议引擎1708既不位于第一装置 1702上也不位于第二装置1712上。在又一实施例中,前台协议引擎1708位于 第H^置上。在有些实施例中,前台协议引擎1708包括后台切、议引擎1704。在 其中一些实施例,后台协议弓摩1102和前台协议弓摩1106位于相同装置上。在 其中其它实施例中,后台协议引擎1102和前台协议引擎1106位于不同装置上。
(105) 在一个实施例中,后台协议引擎在回放数据结构中存储了用于呈 现记录流中至少一个分组的至少一条指令。在另一实施例中,后台协议引擎将元 数据存储在回放数据结构中。在又另一实施例中,后台协议引擎在回放数据结构 中存储指示呈现记录会话中至少一个分组的时间的记录。
(106) 前台协、议引擎1708根据回放数据结构呈现记录会话中的至少一个 分组。在一个实施例中,前台协议引擎以可以被人感知的方式将记录会话中的至 少一个分组呈送给一个缓冲区。在另一个实施例中,前台幼议引擎将记录会话中 的至少一个分组呈送给缓冲区。
(107) 向前参看图19,所示流程图描述了在用于所记录的计算机会话的回放的方法中所采取的步骤的一个实施例。简单地说,后台协议引擎接收包括多 个分组的记录流(步骤1902),这些分组表示由在第二装置上执行的应用禾旨 产生的显示数据。后台助、议引擎为记录流中的至少一个分组决定以可以被人感知
的方式呈现该分组(步骤1904)。后台协议引擎将该决定存储在回放数据结构 中(步骤1906)。前台协议引擎从记录流中检索至少一个分组(步骤1908), 访问回放数据结构(步骤1910),并根据回放数据结构呈现该至少一个分组(步 骤1912)。
(108) 在一个实施例中,协议引擎为记录流中的一个分组决定以可以被 人感知的方式显示该分组(步骤1904)。该显示包括但不限于听觉、视觉、触 觉或嗅觉的演示,或者它们的组合。在有些实施例中,协议引擎根据分组的内容 决定显示该分组。在其中一个实施例中,协议引擎根据具有输入焦点的应用禾, 的指示做决定。在其中另一个实施例中,幼、议引擎根据对分组中存储的用户输 入类型的评估做决定。在其中一些实施例中,协议引擎根据对分组中存储的图形 更新类型的评估做决定。在其中其它实施例中,幼议引擎根据对分组中存储的交 互序列类型的评估做决定。在一个实施例中,协议引擎将决定存储在回放数据结 构中(步骤1906)。
(109) 在一个实施例中,前台协议引擎接收记录会话。在其它实施例中, 前台助议引擎检索会话。在其中一些实施例中,前台助、议引擎从存储元件检索记 录会话。
(110) 在一个实施例中,前台协议引擎从记录流中检索至少一个分组(步
骤190S)。在这个实施例中,前台协议引擎随后访问回放数据结构(步骤1910)
并根据回放数据结构呈现该分组的内容(步骤1912)。在有些实施例中,回放
数据结构包含以可感知方式呈现该分组的内容的指令。在其中一个实施例中,前
台协议引擎将该分组的内容呈现在屏幕上。在有些实施例中,前台协议引擎总是
将该至少一个分组的内容呈送给缓冲区。在很多实施例中,当前台助、议引擎将分
组的内容呈送给一个缓冲区时,该缓冲区是离屏缓冲区。在其中一个实施例中,
前台协议引擎按照回放数据结构的指引将分组的内容呈送给离屏缓冲区并将分 组内容呈现在屏幕上。
(111) 在其它实施例中,回放数据结构包括不以可感知方式呈现分组内 容的指令。在其中一个实施例中,在访问回放数据结构时,前台协议弓摩不以可 感知方式呈现分组的内容,而是将分组内容呈送到缓冲区。
(112) 对于前台协议弓l擎根据回放数据结构将分组内容只呈送到离屏缓冲区的实施例,前台助议引擎可感知地再生不同于记录流的显示数据。在一个实 施例中,这导致显示数据的表示比原始记录流要短。在有些实施例中,所呈现的 分组内容提供了原始显示数据的流式再生。在其它实施例中,所呈现的分组内容 提供了显示数据的定制版本。在一个实施例中,是否以可感知方式呈现分组内容 的决定是基于策略或用户请求做出的。这些实施例向用户提供了对记录封舌回放 的控制。
(113) 向前参看图21,描述了以不包含被去除活动的可感知时间间隔呈 现记录会话的一个实施例。在这个图中,黑框代表包含用户输入的分组,虚线框 代表包含图形命令的分组。由"用户输入"和"图形"箭头中的白框代表的时间 间隔没有分组也因此根本没有活动。
(114) 去除没有任何活动的可感知时间间隔的方法的一个实施例如下。 记录会话中的第一分组被识别出。该记录会话包括多个表示显示数据的分组。与 记录会话中的第一分组最近的之前分组作为第二分组被识别出。确定第一时间间 隔,该时间间隔发生在所述第一分组和所述第二分组。第一时间间隔超出阈值的 决定被做出。以所述第一分组和所述第二分组之间的第二时间间隔短于第一时间 间隔呈现分组的内容。
(115) 在一个实施例中,协议引擎做出该决定。在有些实施例中,协议
引擎将该决定存储在回放数据结构中。在一个实施例中,相同协议引擎根据回放 数据结构呈现记录会话。在另一实施例中,做决定的协议弓i擎包括后台协议弓l擎, 呈现记录会话的协议弓l擎包括前台协议弓摩。
(116) 在一个实施例中,当协议弓摩确定该时间间隔超出阈值时,幼、议
引擎将该时间间隔归为可感知的时间间隔。如果再生的记录^i刮勺用户能够感知 到过去了一段没有活动的时间,该时间间隔就是可感知的。在有些实施例中,阈 值由策略决定。在其它实施例中,助议引擎是用预定的阈值硬编码的。在这种 实施例中,幼议引擎在回放数据结构中存储了指令以呈现第一和第二分组之间的 更短的时间间隔而不是原始时间间隔。在另一个实施例中,确定时间间隔超出阈 值的助、议引擎也呈现记录会话的内容。在这种实施例中,助、议引擎在回放数据结 构中不存储呈现更短时间间隔的指令。对于没有被归类为可感知的时间间隔,不 需要縮短的时间间隔,原始的时间间隔被呈现在第一和第二分组之间。
(117) 回过去看图20,所示流程图描述了为产生用于呈现记录会话的回 放指令所采取的步骤的一个实施例。简单地说,识别出记录会话中的分组中存储 的输入类型(步骤2002),根据该输入类型标记该分组(步骤2004)。随后根据该*斜己将呈现该分组内容的目的地存储在回放数据结构中。
(118) 在一个实施例中,分组所存储的输入类型决定了该分组是否将被 呈现。在一个实施例中,该分组不包含内容。在有些实施例中,至少一个分组不 包含内容。在这些实施例中,识别出包括至少一个不包含内容的分组的时间间隔。 在其中一些实施例中,该时间间隔将不会被呈现。
(119) 在有些实施例中,输入类型是指来自特定类型的输入装置的输入, 包括但不限于键盘、鼠标、麦克风、或摄像头。在一个实施例中,识别出输入类 型的步骤还包括将输入类型识别为来自某种输入装置的输入。在另一个实施例 中,识另咄输入类型的步骤还包括将输入类型识别为键盘输入。在其它实施例中, 输入类型与输A^置无关。在其中一个实施例中,输入类型被识别为命令。
(120) 根据分组包含的输入类型,^H己包含输入的该分组(步骤2004)。 在一个实施例中,分组被根据策略进行^H己。在这种实施例中,策略决定导致分 组被标己的输入类型。在另一个实施例中,不需要任何标己。
(121) 根据标记将用于呈现分组的目的地存储在回放数据结构中(步骤 2006)。在有些实施例中,该目的地包括缓冲区。在一个实施例中,指令被存储 在回放数据结构中,指引分组的呈送至缓冲区。在一个实施例中,该缓冲区是离 屏缓冲区,当分组的内容被呈送到该缓冲区时,这些内容未能被呈现的用户所感 知。在一个实施例中,指令被存储在回放数据结构中,指引被标记的分组以可感 知的方式呈现或呈送到缓冲区。
(122) 在一个实施例中,该方法去除了不包含任何有意义活动的可感知时 间间隔。在这个实施例中,由策略识别出特定类型的输入为有意义或无意义。在 有些实施例中,该策略可以被硬编码到协议引擎中。在其它实施例中,由管理员 配置该策略。
(123) 在有些实施例中,如果分组不包含内容,协议引擎就将其识别为 无意义的分组。在其中一些实施例中,这样的分组表示没有要被记录到记录流 1714的用户活动发生的时间间隔。在这些实施例中,协议引擎将目的地存储在 回放数据结构中,该目的地用于以如下方式呈现记录流中多个分组中的每一个分 组,其中任何无意义分组不会以可感知的方式呈现。图22描述了根据回放数据 结构呈现其内容的再生的记录流的一个实施例。在这个实施例中,根据回放数据 结构的呈现使得能够去除不包含有意义活动的时间间隔(由图22中的白色框和 条纹框表示),这些时间间隔包括那些根本不包含任何活动的时间间隔。这个呈 现将记录会话的更有意义的再生提供给用户,其中由策略决定何时其内容表示有意义的活动。在一个实施例中,表示有意义活动的内容包括用户输入的类型。
(124) 在有些实施例中,协议引擎根据先前定义的输入类型(包括可证 明的无意义时间)识别出输入类型。在有些实施例中,无意义时间包括其中的分 组不包含任何内容的时间间隔。在其它实施例中,策略定义输入类型,而输入类 型构成无意义时间。在又其它实施例中,包括可证明的无意义时间的输入类型的 定义被硬编码到幼、议引擎中。
(125) 在有些实施例中,分组的内容表示用户活动,但策略将该活动识 别为无意义活动。在其中一个实施例中,策略将无意义活动定义为再生的记录会 话的用户不感兴趣的活动。在其中另一个实施例中,由策略决定,有意义的分组 包含再生的记录会话的用户感兴趣的内容。在一个实施例中,无意义分组不具有 有意义地表示与应用交互作用的输入的内容。在另一实施例中,在协议数据流(记 录流由此创建)中发送应用数据的装置不发送有意义的屏幕更新。
(126) 在一个实施例中,协议引擎为记录会话中的至少一个分组决定该
分组的内容是否包括但不限于如键盘输入、鼠标输入或命令消息等输入类型。如 果该分组包含例如键盘输入的输入类型,协议弓l擎就将该分组标记为有意义分 组。如果该分组不包含这样的输入类型,协议引擎就将该分组*射己为无意义的。 在一个实施例中,只有在其所有内容都无意义时该分组才被认为是无意义的。在 另一实施例中,分组包含多种输入类型,而其中每一种可能被标记为有意义或无 意义。
(127) 在一个实施例中,当协议引擎将分组标记为无意义时,协议引擎 决定该分组的内容不应该以可感知的方式呈现。在有些实施例中,协议引擎反而 决定该分组的内容应该呈送到缓冲区。在其中一个实施例中,缓冲区是离屏缓冲 区。如果分组被标记为有意义分组,在一个实施例中,协议引擎决定该分组的内 容应该以可感知方式呈现。在有些实施例中,可感知方式包括呈现在屏幕上。在 一个实施例中,协议引擎决定该分组应该不仅以可感知方式呈现,而且要呈送到 缓冲区。在这个实施例中,该分组的内容不仅呈现到屏幕上显示而且呈送到离屏 缓冲区。协议引擎将决定存储在回放数据结构中。
(128) 在图22所示的一个实施例中,记录流中的特定分组中具有表示有 意义用户活动的内容,在这个实施例中指示活动鼠标按钮状态的鼠标输入由图 22中的黑框表示。记录流中的其它分组具有表示指示活动鼠标按钮状态的鼠标 输入的内容,由图22的条纹框表示。协议引擎识别出只包含无意义活动的至少 一个分组(例如指示不活动鼠标按钮状态的鼠标输入),并将该分组的内容不应以可感知方式呈现的决定存储在回放数据结构中。通过做出这种决定,根据回放 数据结构呈现记录流的内容的协议弓l擎只再生与再生的记录会话的用户有关的 显示数据,其中由策略定义相关性或者协议弓im括相关内容的定义。
(129) 现在参看图23,所示流程图描述了在呈现记录会话中为消除没有 有意义活动的周期而采取的步骤的一个实施例。确定第一时间间隔,该时间间隔
发生在记录会话中^i己的分组与最近的前一个^H己的分组之间(步骤2302)。 该记录会话包括表示显示数据的多个分组。做出决定,其中该第一时间间隔是否 超出阀值(步骤2304)。采用该fei己的分组和最近的前一个^i己的分组之间的、 短于第一时间间隔的第二时间间隔,呈现记录会话中的分组的内容(步骤2306)。
(130) 在一个实施例中,协议引擎做出决定。在有些实施例中,协议引 擎将决定存储在回放数据结构中。在一个实施例中,相同协议弓摩根据回放数据 结构呈现记录会话。在另一实施例中,做决定的协议引,括后台协议引擎,而 呈现记录会话的协议弓l擎包括前台协议弓l擎。
(131) 在有些实施例中,协议引擎在分组根据该分组所包含的输入类型 被标记为有意义分组之后,做出第一时间间隔的决定(步骤2302)和第一时间 间隔是否超过阀值的决定(步骤2304)。在其中一个实施例中,该分组中包含 的输出类型影响着^H己该分组的决定。在一个实施例中,幼议引擎确定被标记为 有意义的分组和其最近的前一个有意义的分组之间的时间间隔,或者如果没有前 一个有意义的分组则确定记录的开始。在另一实施例中,协议引擎以标记的分组 和前一个分组之间的第二时间间隔呈现记录会话的内容,所述第二时间间隔包括 短于第一时间间隔的时间间隔。在另一实施例中,协议引擎以标记的分组和跟随 该丰射己的分组的分组之间的第二时间间隔呈现记录会话的内容,所述第二时间间 隔包括比第一时间间隔更短的时间间隔。
(132) 在一个实施例中,当幼、议引擎确定为时间间隔超出阀值时(步骤 2304),协议引擎将该时间间隔归类为可感知的时间间隔。如果再生的记录会话 的用户能够感知已经过去了一段没有活动的时间,则该时间间隔就是可感知的。 在有些实施例中,策略决定阀值。在其它实施例中,助议引擎以预定阀值被硬编 码。在这个实施例中,协议引擎在回放数据结构中存储指令以呈现两个有意义分 组之间的更短的时间间隔而不是原始时间间隔。在另一实施例中,确定时间间隔 超出阀值的坊、议引擎还呈现记录会话的内容。在这个实施例中,坊、议引擎不在回 放数据结构中存储指令以呈现更短的时间间隔。对于没有被归为可感知类的时间 间隔,不需要缩短的时间间隔,在两个有意义的分组之间呈现原始的时间间隔。(133) 在有些实施例中,记录流中分组的内容表示影响屏幕区域的图形 更新。在一个实施例中,图形更新包括但不限于闪烁系统托盘图标、标题栏或任 务栏项目、闪亮web页面或应用中的文本、时间显示、系统动画、应用动画和 证券报价机以及其它周期性更新的信息显示。在有些实施例中,像这样的图形更
新都被确定为x寸记录流再生的用户无意义。在其中一个实施例中,协、议引,括
这个确定。在其中另一个实施例中,策略定义至少一个图形更新为无意义。在这 个实施例中,管理员产生策略。在另一实施例中,记录流的再生的用户产生该策 略。
(134) 现在参看图24,所示流程图描述了在呈现记录会i舌中为消除图形 更新而采取的步骤的一个实施例。简单地说,识别出图形更新(步骤2402), 确定该图形更新影响的屏幕区域(步骤2404)。存储受影响屏幕区域的位置和 状态指示(步骤2406),识别出影响该屏幕区域的状态的第二图形更新(步骤 2408)。然后根据第二图形更新是否改变受第一图形更新影响的区域而指示呈现 的目的地和用于呈5见的时间间隔(步骤2410和步骤2412)。
(135) 在一个实施例中,协议引擎完成图24所示步骤。在这个实施例中, 协议弓l擎识别出记录会话中的分组,所述记录会话表示由应用程序产生的显示数 据,所述分组包含第一图形更新。协议引擎确定受该第一图形更新影响的屏幕区 域。在一个实施例中,图形更新通过改,示在部分屏幕上的数据而影响该屏幕 区域。协议弓l擎在第一图形更新和该屏幕区域的位置之后存储该屏幕区域的状态 指示。在一个实施例中,协议引擎存储更新后的屏幕区域的副本。在另一实施例 中,协议弓摩存储更新后的屏幕区域的散歹値。
(136) 在一个实施例中,协议引擎识别出在时间间隔内影响屏幕区域的 第二图形更新。在有些实施例中,由策略决定该时间间隔的长度。在其中一个实 施例中,该策略确定接近由应用和操作系统使用的人类级别循环周期(human scale cyclic period)的上限的时间间隔。在一个实施例中,当屏幕的一个区ite 被设计为由用户观看的期间(例如,从有效的几分之一秒到几秒)进行循环显示 时,该显示包括人类级别循环周期。在有些实施例中,协议引^括对时间间隔 长度的定义。
(137) 在协议引擎识别出影响由第一图形更新影响的屏幕区域的第二图 形更新的实施例中,协议弓l擎决定该屏幕区域在第二图形更新之后的状态是否不 同于在第一图形更新之后的状态。如果该屏幕区域在第二图形更新之后没有变 化,第二图形更新就不需要在再生的记录会话中呈现。这个实施例中的屏幕图形更新不需要呈现是因为协议引擎决定图形更新正在进行以人类级别速度的绘画 命令周期,使得该更新可以由再生的记录会i舌的用户观察到,但该图形更新为用 户带来了无意义的信息。在有些实施例中,该图形更新通过如下但不限于绘画、 插入符闪烁、闪烁的任务栏项目、网络活动指示符或滚动的文本来影响屏幕区域。 在有些实施例中,由策略决定用那种类型的图形更新影响屏幕区域不构成有意义 的活动并且不应该为用户呈现在记录会话的再生中。在其它实施例中,协议引擎 包跪个决定。
(138) 在一个实施例中,根据屏幕区域在第二屏幕更新后是否有所变化, 用于呈现包含影响该屏幕区域的第二图形更新的第二分组的目的地的指示被存 储在回放数据结构中。在另一实施例中,根据屏幕区域的状态在第二图形更新之 后是否不同于该屏幕区域在第一图形更新之后的状态,与包含了影响该屏幕区士或 的第二图形更新的第二分组相关联的用于呈现的时间间隔的指示被存储在回放 数据结构中。
(139) 根据屏幕区域的状态在第二图形更新之后是否不同于该屏幕区域
在第一图形更新后的状态,图25描述了根据回放数据结构中存储的指示呈现再
生的记录会话的一个实施例。在一个实施例中,受第一图形更新影响的屏幕区土或 在第二图形更新之后没有变化。在这个实施例中,回放数据结构中存储了不以可 感知方式呈现第二图形更新的指示。在一个实施例中,不以可感知方式呈现第二
图形更新包括将第二图形更新呈现于离屏(off-screen)而不是在屏幕上 (on-screen)。在有些实施例中,不以可感知方式呈现第二图形更新包括将第二 图形更新呈送到离屏缓冲区。在一个实施例中,不以可感知方式呈现第二图形更 新包括包括不呈现第二图形更新。在有些实施例中,不以可感知方式呈现第二图 形更新的决定包括呈现图形更新未被呈现的可感知的指示。在其中一个实施例 中,再生的记录会话的用户可以请求以可感知的方式呈现第二图形更新。
(140) 图25描述了一个实施例,其中通过确定第二图形更新之后的屏幕 区域的状态相对于第一图形更新之后的屏幕区域的状态没有变化来检测循环更 新,并根据该循环更新的检测而确定没有呈现第二图形更新。在受第二图形更新 影响的屏幕区域的状态不同于第一图形更新之后的屏幕区域的状态的实施例中, 做出决定以用可感知方式呈现分组的内容并将其呈送到缓冲区。
(141) 在有些实施例中,多个分组的内容表示图形更新。在其中一个实 施例中,根据屏幕区域上的超过两个图形更新的效果做出以可感知方式呈现图形 更新的决定。在一个实施例中,用于呈现图形更新的目的地的决定响应于所识别的多个分组中的各个分组的内容所表示的图形更新。
(142) 在有些实施例中,记录流中的分组内容表示交互序列。在一个实施例中,交互序列包括但不限于登录序列、注销序列或者凭证输入。在有些实施例中,像这样的交互序列被确定为对记录流再生的用户没有意义。在其中一个实
施例中,协议引ms^个决定。在另一个实施例中,由策略定义至少一个^S
序列为无意义。在这个实施例中,管理员产生该策略。在另一个实施例中,记录流再生的用户产生该策略。
(143) 现在参看图26,所示流程图描述了在呈现记录会话中为了消除交
互序列而采取的步骤的一个实施例。根据策略识别出至少一个分组的交互序列的
开始(步骤2602)。在回放数据结构中有该交互序列应该呈现到缓冲区的指示(步骤2604)。识别出至少一个分组的交互序列的结束(步骤2606)。识别出在所识别出的交互序列开始之前的分组和识别出的交互序列结束之后的分组之间的第一时间间隔(步骤2608)。回方文数据结构包含呈现比第一时间间隔更短的第二时间间隔的指令(步骤2610)。
(144) 在一个实施例中,协议引擎做出识别和指示以消除交互序歹(J。识别出交互序列的开始(步骤2602)。在一个实施例中,通过识别出可视*射己,识别出交互序列的开始。在一个实施例中,可视^i己包括以相同方式显示给所有会话的凭证窗口。在另一个实施例中,可视t射己包括由空白屏幕接着是桌面背景对凭证窗口的替换。在一个实施例中,可视标记包括对可识别图标的显示。
(145) 在有些实施例中,通过确定交互序列的开始时间识别出交互序列的开始。在其中一个实施例中,由组件检测交互序列中事件的开始时间。在其中另一个实施例中,该组件检领噔录序列的开始时间。在其中其它实施例中,该组件检测注销序列的开始时间。在一个实施例中,对交互序列的开始的识别,响应于以输入焦点识别窗口。
(146) 在回放数据结构中做出该交互序列应该呈送到缓冲区的指示(步骤2604)。在这个实施例中,识别出的交互序列不应以可感知方式呈现,该交互序列MM送到缓冲区。将该^5序列呈送到缓冲区导致交互序列未能被所要呈现的用户感知。对于由策略或用户将交互序列归类为无意义的实施例,这个呈送导致了无意义交互序列被去除。
(147) 另外还识别出交互序列的结束(步骤2606)。在有些实施例中,通过识另何视标记而识别出交互序列的结束。在其它实施例中,通过确定^S序列的结束时间而识别出交互序列的结束。在其中一个实施例中,某个组件检测出交互序列中事件的结束时间。在其中另一个实施例中,该组件检测出登录序列的结束时间。在其中其它实施例中,该组件检测出注销序列的结束时间。在另一个实施例中,对于交互序列结束的识别响应于以输入焦点识别窗体。
(148) 在有些实施例中,交互序列包括对应用的使用。在其中一个实施例中,由策略识别出包括对不应以可感知方式呈现的应用的i顿的交互序列。在一个实施例中,这样的应用包括但不限于word处理文档。
(149) 在其中一个实施例中,通过识别出具有输入焦点的应用而识别出
^i:序列的刑台。当分组的内容表示具有焦点的窗口时,根据可靠创建该窗口的进程的应用做出决定。在一个实施例中,表示具有焦点的窗口的分组的内容包括指示输入焦点中的变化的窗口通知消息。如果可靠的应用识别出不应以可感知方式呈现的交互序列的开始,就在回放数据结构中存储将该交互序列呈送到缓冲区的指示。通过识别出与交互序列的应用不相关的进程所拥有的窗口对焦点的捕获而识别该M序列的结束。
(150) 在一个实施例中,第一时间间隔与交互序列相关联。在某种实施例中以可感知方式呈现与交互序列相关联的时间间隔而该交互序列自身不进行呈现,这将导致2寸所要呈现的用户可感知的一段时间,在该时间段内没有显示数据呈现并且用户在该交互序列之后呈现分组的内容之前等待该时间间隔的经过。一个实施例通过呈现较短的时间间隔代替原始的时间间隔而消除与交互序列相关联的时间间隔。在这个实施例中,识别出在识别出的该交互序列的开始之前的分组和识别出的该交互序列的结束之后的分组之间的第一时间间隔(步骤2608)。回放数据结构包含呈现比第一时间间隔更短的第二时间间隔的指示(步骤2610)。
(151) 在有些实施例中,协议引擎呈现记录会话中的分组内容,向用户$|{共记录会话的再生。在其中一些实施例中,协议引擎自动更改呈现至少一个分组的内容之间的时间间隔,导致了上下文相关的时间巻曲的回放。在这些实施例中,呈现J魏于用户理解表琉合用户的显示数据的能力。在一个实施例中,当被策略所定义时,当协议弓l擎确定分组内容所表示的显示数据具有被增加级别的复杂度或重要性时,呈现这些分组内容之间的时间间隔增大。在另一个实施例中,当被策略所定义时,当协议弓l擎确定分组内容所表示的显示数据具有被降低级别的复杂度或重要性时,呈现这些分组内容之间的时间间隔减小。在这些实施例中,协议引擎接近于用户理解显示数据的能力并且呈现内容以或者用更慢的速度给用户时间去理解该呈现,或者在用户需要较少的理解时间时以更快的速度呈现该内容。
(152) 现在参看图7,所示流程图描述了在呈现记录的计算机会话中的自动时间巻曲回放中所采取的步骤的一个实施例。协议引擎接收记录会话(步骤2702),该记录会话包括多个分组并表示显示数据,该协议引擎确定对该记录会话中的多个分组中的至少一些分组所表示的复杂度的量度(步骤2704)。协议弓I擎识别出记录会话中的多个分组中的至少一些分组之间的时间间隔(步骤2706)并且根据记录会话中的多个分组中的至少一些分组所表示的复杂度的量度而修改该时间间隔(步骤2708)。协议弓l擎将修改后的时间间隔存储在回放数据结构中(步骤2710),记录数据流根据该回放数据结构而被呈现(步骤2712)。
(153) 在有些实施例中,确定复杂度量度、识别时间间隔、修改时间间隔并存储该修改的坊议引擎是后台协议引擎。在其中一个实施例中,后台幼、议引擎也呈现记录流。在其中另一个实施例中,前台协议引對艮据回放数据结构呈现记录流。在有些实施例中,后台协议引擎和前台协议引擎位于相同装置上。在其它实施例中,后台助议弓l擎和前台协议弓l擎位于不同装置上。
(154) 在有些实施例中,协议引擎确定记录会话中多个分组中的至少一些分组所表示的复杂度的量度(步骤2704)。在其中一些实施例中,协议引擎通过识别键盘输入中的可能的键入序列确定复杂度的量度。在一个实施例中,协议引擎检查所涉及的至少一种类型的键以识别键盘输入中可能的键入序列。在另一个实施例中,协议弓l擎检査所呈现的至少一个符号的序列以完成对键盘输入中可能的键入序列的启发式近似。
(155) 在其中一些实施例中,协议引擎存储由键特征确定的键分类。键特征包括但不限于可打印或不可打印字符、空格、导航键或功能键,并包括特征的组合。在一个实施例中,助议引擎确定包括可打印字符和偶尔出现的导航键的输入段构成普通输入,而大部分是不可视键的段不构成普通输入。在一个实施例中,协议引擎根据识别出的空格数量确定复杂度的量度。在这个实施例中,协议弓l,括对字处理的定义,该定义指示空格键在典型键入模式中平均大约每5-8个字符出现一次。
(156) 在一个实施例中,协议引擎使用不可打印字符的出现确定复杂度的量度。在另一个实施例中,协议引擎访问击键序列以识别在时间上紧密出现的
非空格可打印字符的序列。在这个实施例中,幼、议引擎包括比较击键序歹诉n字典
以识别有效单词并确定与用户理解有效单词对比无效单词的能力有关的复杂度,的能力。(157) 在另一个实施例中,协议引擎确定分组的内容包含命令以呈现字 符。在这种实施例中,协议引擎4顿字符确定显示数据是否表^A的用户活动。 在这个实施例中,如果字符呈J腿率接近带有小延迟的键盘输入速率,有可能是 击键直接导致字符,由此判断艮可能是用户正在歡。在一个实施例中,幼议引 擎使输入的键与产生的字符相关联。在另一个实施例中,助议引擎确定呈现的字 符的空间序列(左至右,右至左)等。在一个实施例中,协议引擎根据分析多个 分组内容的结果以及识别出由这些内容表示的模式和活动而确定复杂度的量度。
(158) 在其它实施例中,协议弓l擎根据对鼠标输入类型的识别确定复杂 度量度。在一个实施例中,协议引擎确定表示鼠标点击的鼠标输入导致可能需要 更慢的呈现速率以让用户理解,尤其是如果该点击跟在一系列键入后面。在另一 个实施例中,协议引擎确定不表示鼠标点击的鼠标输入不会影响用户理解显示 数据的能力,因而不会影响复杂度的量度。
(159) 在其它实施例中,协议引擎根据识别出图形更新复杂度的启发式
近似而确定复杂度的量度。在一个实施例中,协议引擎确定图形更新复杂度的启 发式近似根据(包括但不限于)正在更新的区域的大小、由图形命令改变的区域 面积大小、对单独区域的更新的历史频率、循环图形命令、图形命令的数量、图 形命令的频率、其内容中包含图形命令的相邻分组之间的时间间隔或者图形更新 的类型。在协议引擎识别出图形更新的低复杂度量度的实施例中,协议引擎确定 包含该图形更新的分组所表示的低复杂度的量度。在另一种协议引擎识别出图形 更新的高复杂度量度的实施例中,协议弓l擎确定包含该图形更新的分组所表示的
低复杂度的量度。
(160) 在一个实施例中,协议引擎识别出记录会话中的多个分组的至少 一些分组之间的时间间隔(步骤2706)。在这个实施例中,协议引擎根据确定 的复杂度量度修改该时间间隔(步骤2708)。在记录会话的多个分组中至少有 一些分组包含表示与高复杂度量度相关联的显示数据的内容的实施例中,协议弓I 擎增加这些分组之间的时间间隔以让用户有增加的呈现时间理解所呈现的显示 数据。在另一种记录会话的多个分组中至少有一些分组包含表示与低复杂度量度 相关联的显示数据的实施例中,幼、议引擎縮短这些分组之间的时间间隔以反映用 户理解所呈现的显示数据所需时间的减少。在一个实施例中,用户需要呈现的分
组内容之间与助议弓摩呈现的量不同的时间量。在这个实施例中,用户修改时间 间隔以反映用户理解呈现的显示数据所需的时间量。在有些实施例中,协议引擎 还识别出多个分组中的至少一些分组与多个分组中的其它:5>组之间的时间间隔,修改在那些分组组之间识别出的时间间隔。
(161) 在有些实施例中,协议引擎识别出与记录会话中的分组相关联的 第一^H己。在一个实施例中,分组包括t^i己。在另一个实施例中,记录^i舌包括 标己。
(162) 在一个实施例中,呈现显示数据的用户定义标记。在另一个实施 例中,协议引擎定义标记。在协议引擎定义t射己的实施例中,协议引擎根据第一 fei己修改时间间隔。在一个实施例中,幼议引擎增加时间间隔,该时间间隔向所 要呈现的用户掛共更多显示数据时间以働军与第一标记相关联的分组的内容。在 其它实施例中,协议引擎识别出第二个分组中的第二标记。在这个实施例中,协 议弓摩根据第一t射己和第二^H己之间的距离修改时间间隔。在这个实施例中,协 议弓摩为理解由^H己的分组的内容所表示的显示数据衛共更多的时间,为理解由 未标记的分组的内容所表示的数据提供更少的时间。在一个实施例中,用户为用 户感兴趣的显示数据定义标记,并且协议弓l擎为用户感兴趣的显示数据呈现客页外 的时间并减少用户不感兴趣的显示数据的呈现时间,如同由fei己所决定。
(163) 在一个实施例中,协议引擎识别出记录会话中的多个分组中的至 少一些分组中的第一标记,所述^H己指新己录会话中的多个分组中的至少一些分 组中的起始分组。协议引擎根据第一标记修改时间间隔。协议弓摩识别出记录会 话的多个分组中的至少一些分组中的第二分组中的第二标记,所述第二标记指示 记录会话的多个分组中至少一些分组中的最后分组,并根据第一纟示记和第二t示记 之间的时间间隔修改时间间隔。
(164) 在一个实施例中,协议弓摩将修改后的时间间隔存储在回放数据 结构中(步骤2710)并且记录流根据回放数据结构的内容而被呈现(步骤2712)。 在一个实施例中,协议弓l擎还根据与修改后的时间间隔有关的回放数据结构指令 呈现记录流。在另一个实施例中,由不同的前台协议弓摩呈现记录流。
(165) 在有些实施例中,确定了有应用的记录交互需要增加的呈现时间 以向所要呈现的用户提供增加的时间理解所呈现的显示数据。在其中一些实施例 中,确定了需要增加的时间的应用包括比不需要增加的时间的应用更重要的应 用。在其中一个实施例中,用户做出该决定。在其中另一个实施例中,由策略做 出该决定。在其中又另一个实施例中,助议引,括对需要增加的时间的应用的 定义。
(166) 现在参看图28,所示流程图描述了在呈现记录的计算机会话中为 根据识别出的应用进行自动时间巻曲回放而采取的步骤的一个实施例。接收包括多个分组并表示显示数据的记录会话(步骤2802)。识另咄包含表示拥有焦点
的窗口的内容的第一分组,所述窗口指示应用(步骤2804)。识别出其内容在
呈现第一分组的内容之前呈现的第二分组和第三分组(其内容在呈现第一分组的
内容之后呈现)之间的时间间隔(步骤2806)。根据戶/f指示的应用修改识别出 的时间间隔(步骤2808)。根据该修改呈现记录流中的至少一个分组(步骤2810)。
(167) 在一个实施例中,协议引擎接收记录会话(步骤2802)。在这个 实施例中,协议引擎还识别出具有表示拥有焦点的窗口的内容的第一分组,戶腿 窗口指示应用(步骤2804)。在一个实施例中,表示拥有焦点的窗口的分组的 内容包括指示输入焦点中的变化的窗口通知消息。在一个实施例中,识别出其内 容在呈现第一分组的内容之前呈现的第二分组和第三分组(其内容在呈现第一分 组的内容之后呈现)之间的时间间隔(步骤2806)。在这个实施例中,幼议引 擎识别出其内容在呈现表示拥有焦点的应用窗口的内容之前呈现的分组,其内容 表示拥有焦点的应用窗口的分组以及其内容表示不再拥有焦点的应用窗口的分 组。
(168) 在有些实施例中,协议引擎修改拥有焦点的应用之前的时间间隔。 在其它实施例中,协议引擎修改拥有焦点的应用之后的时间间隔。在一个实施例 中,协议弓l擎接着确定应用窗口在其中拥有焦点的时间间隔并根据应用类型修改 该时间间隔。在一个实施例中,协议引擎增大识另咄的时间间隔。在这个实施例 中,协议弓摩向所要呈现的用户提供更多时间以查看该应用。在另一个实施例中, 助议引擎缩短识别出的时间间隔。在这个实施例中,协议引擎向所要呈现的用户 ^f共更少的时间以査看该应用,以反映对,该应用的兴趣较少。
(169) 在一个实施例中,协议弓l擎根据修改呈现记录流中的至少一个分 组。在一个实施例中,协议弓I擎将记录流中的至少一个分组的内容呈送到缓冲区。 在一个实施例中,呈送到缓冲区并不以可感知的方式呈现分组的内容。在另一个 实施例中,协议弓摩不仅将记录流中至少一个分组的内容呈送到缓冲区,还以可 感知方式呈现。在有些实施例中,协议引擎在回放数据结构中指示修改后的时间 娜鬲,不同的协议弓摩根据存储在回放娜结构中的信息呈现记录射舌。
(170) 现在参看图29,所示框图描述了在呈现记录的计^m会话中用于 自动时间巻曲回放的系统的一个实施例,该系统包括协议引擎2902、记录流 2910、回放数据结构2904和显示器2908。简单地说,协议引擎2902响应接收 记录流2910而产生回放数据结构2904,所述记录流2910包括多个分组,所述 协议引擎2902根据产生的回放数据结构2904呈现记录流中的至少一个分组。(171) 在一个实施例中,协议引擎2902包括后台协议引擎和前台协议引
擎。在这个实施例中,后台协议弓l擎接收记录流2910并产生回放数据结构2904。 在这个实施例中,前台协议引擎接收记录流2910并根据产生的回放数据结构 2904呈现记录流中的至少一个分组。在一个实施例中,后台幼议引擎和前台协 议引擎位于相同装置上。在另一个实施例中,后台协议引擎位于第一装置上,前 台协议引擎位于第二装置上。
(172) 在另一个实施例中,该系统包括产生回放数据结构2904并根据产 生的回放数据结构2904呈现记录流中的至少一个分组的单一协议弓摩2902。
(173) 在一个实施例中,协议引擎2902在回放数据结构中存储至少一个 用于呈现记录会话的指令。在一个实施例中,该指令包括对识别出的用于呈现记 录会话中分组内容的时间间隔的修改。在另一个实施例中,协议引擎将元数据存 储在回放数据结构中。在这个实施例中,元数据包括用于呈现分组内容的更高级 的指令。
(174) 在一个实施例中,协议引擎根据回放数据结构的内容呈现记录会 话中的至少一个分组的内容。在一个实施例中,助、议弓摩不仅以可感知方式呈现 记录会话中的至少一个分组而且将其呈送到缓冲区,在另一个实施例中,协议引 擎将记录会话中的至少一个分组呈送到缓冲区。
(175) 在有些实施例中,所呈现的分组内容提供了原始显示数据的流线 式再生。在其它实施例中,所呈现的分组内容提供了显示数据的定制版本。在一 个实施例中,以可感知方式呈现分组内容的决定响应于策略或用户请求。这些实 施例向用户掛共了对记录会话的呈现的控制。
(176) 现在参看图30A,所示框图描述了用于表示层协议数据的记录和 实时回放的系统的一个实施例。简单地说,该系统包括记录器3010、分发器3020 和协议弓l擎502。在表示层协议数据流208从第一装置106传输到第二装置102 的过程中,记录器3010拦截包括多个分组的表示层协议数据流208,表示层协 议数据流208表示显示数据。分发器3020发送表示层协议数据流208的至少一 个分组的副本。协议弓l擎502使用与该至少一个复制的分组相关联的信息再生出 由该至少一个复制的分组表示的显示数据。记录器3010继续拦i^表示层协议数 据流,分发器继续发送来自表示层协议数据流的分组的副本,直到第一装置完成 了协议数据流到第二装置的传输。
(177) 现在更详细地参看图30A,在一个实施例中,记录器3010从表示 层协议栈提取数据并缓冲这些数据。在另一个实施例中,第三装置3050将数据记录到盘并对这些数据进行编目。在又一个实施例中,回放装置514将会话记录 完整或不完整地显示给用户。
(178) 在表示层协议数据流208从第一装置106传输到第二装置102的 过程中,记录器3010拦截包括多个分组的表示层协议数据流208,该表示层协 议数据流208表示显示数据。在一个实施例中,第一装置106是服务器106,例 如应用服务器。在另一个实施例中,第二装置102是客户端102。在又一个实施 例中,第一装置106如上结合图2所述发送表示层协议数据流208。在又一个实 施例中,表示层协议数据流208是如上结合图2所述的协议数据流208。在进一 步的实施例中,记录器3010是如上结合图2所述的记录器206。在有些实施例 中,表示层助、议数据流208包括一个或多个虚拟信道。在其中一个实施例中,记 录器3010拦i^拟信道。
(179) 在一个实施例中,记录器3010位于第一装置106上。在另一个实 施例中,记录器3010位于第二装置102上。在又一个实施例中,记录器3010 位于第三装置3050上。在又一个实施例中,记录器3010位于代理服务器上。
(180) 在一个实施例中,记录器3010位于直通服务器上。在另一个实施 例中,记录器3010位于网络分组监听器上。在又一个实施例中,记录器3010 位于网络设备、应用网关、应用加速设备或其它设备上。在有些实施例中,记录 器3010 {立于与分发器3020相同的装置上。
(181) 在结合图2所述的记录器206的有些实施例中,记录器拦截协议 数据流208并使用复制的分组产生记录的协议数据流。在一个实施例中,记录器 包括用于从表示层协议数据流复制至少一个分组的装置。在另一个实施例中,记
录器包括用于拦i^拟信道的装置。在又一个实施例中,记录器包括用于基本与
第一装置发送表示层协议数据流到第二装置的同时拦截表示层t办议数据流的装 置。在又一个实施例中,记录器包括用于存储至少一个分组的缓冲区。在有些实 施例中,记录器包括用于产生表示层幼、议数据流或其一部分的记录的记录发生 器。
(182) 在其它实施例中,如图30A所示,记录器3010在表示层协议数据 流208中的附加分组从服务器106到客户端102的传输期间拦截表示层协议数据 流208并从表示层助、议数据流208复制分组。在其中一个实施例中,记录器3010 在基本与服务器106发送表示层协议数据流208到服务器102的同时拦截表示层 协议数据流208。在另一个实施例中,记录器3010接收实时回放表示层协议数 据流208的请求的指示。在又一个实施例中,记录器3010根据所接收的实时回放的请求指示,从表示层协议数据流208复制分组并在完成对表示层协议数据流
208的拦截之前转发该分组。在又一个实施例中,记录器3010不将拦截到的分 组的传输延迟到对表示层协议数据流208的记录完成。
(183 )在一个实施例中,记录器3010还包括用于将表示层幼、议数据、流208 的至少一个分组的副本存储妾瞎储装置中的装置。在有些实施例中,记录器3010 在继续拦截来自表示层幼、议数据流208的后续分组的同时发送复制的、拦截的分 组到分发器3020。
(184)在有些实施例中,记录器3010如上结合图2所述确定是否复制分 组。在其它实施例中,在表示层协议数据流208从服务器106到客户端102的传 输结束时,记录器3010如上结合图2所述产生表示层协议数据流208的记录。
(185 )分发器3020发送表示层协议数据流208的至少一个分组的副本。 在一个实施例中,分发器还包括用于检索该至少一个分组的副本的收发器。在另 一个实施例中,分发器还包括用于将该至少一个分组的副本发送至(」协议引擎的收 发器。
(186) 现在参看图30B,所示框图描述了记录器3010将多个分组3030存 储在存储装置218上的一个实施例。在这种实施例中,分发器3020从存储装置 218检索多个分组3030并将该多个分组3030转发到回放装置514上的协议弓摩 502。
(187) 现在参看图30C,所示框图描述了一个实施例,其中与分发器3020 通信的记录器3010将多个分组3030发送到协议引擎502。在有些实施例中,记 录器3010从分发器3020接ij妇寸表示层协议数据流的实时回放请求的指示。在其 中一个实施例中,根据接收的实时回放请求的指示,记录器3010直接将多个分 组3030转发到协议引擎502。
(188) 现在参看图30D,所示框图描述了记录器3010将多个分组330存 储在存储装置218上的一个实施例。在这种实施例中,记录器3010从存储装置 218检索多个分组3030并将该多个分组3030转发到回放装置514上的助议弓摩 502。
(189) 现在回过来看图30A,在一个实施例中,分发器3020位于第一装 置106上。在另一个实施例中,分发器3020位于第二装置102上。在又一个实 施例中,分发器3020位于第三装置3050上。在又一个实施例中,分发器3020 位于代理服务器上。
(190) 在一个实施例中,如上结合图2所述,分发器3020是远程表示协、议服务器引擎204的一部分。在另一个实施例中,分发器3020位于记录服务器 上,例如第三装置3050。在又一个实施例中,分发器3020与记录器3010通信。
(191) 在一个实施例中,分发器3020位于直通服务器上。在另一个实施 例中,分发器3020位于网络分组监听器上。在又一个实施例中,分发器3020 位于网络设备、应用网关、应用加速设备或其它设备上。在有些实施例中,分发 器3020位于与记录器3010相同的装置上。
(192) 在有些实施例中,该系统包括第三装置3050。在其中一个实方包例 中,第H^置3050被称为日志服务器。在其中另一个实施例中,分发器3020 位于日志服务器上。在其中又一个实施例中,日志服务器存储从拦截的表示层协 议数据流复制的多个分组以及表示层协议数据流的记录。在其中又另一个实施例 中,日志服务器衛共用于协调对从拦截的表示层协议数据流复制的多个分组的分 发以及对从记录器3010至鹏放装置的表示层协议数据流的记录的分发的功能。
(193) 在有些实施例中,该系统包括回放装置514,它提供了上面结合图 5所说明的回放装置514的功能。在其它实施例中,回放装置514和协议引擎502 ^f共上面结合图5所述的功能,并且除了再生来自完成的表示层协议数据流的记 录的显示数据之外,还提供再生与不完整的表示层协议数据流的多个分组和部分 相关联的显示数据的功能。
(194) 在有些实施例中,分发器3020与回放装置514通信。在其中一个 实施例中,分发器3020提供表示层助、议数据流的编目。在另一个实施例中,分 发器3020提供对可通过回放装置514观看的表示层协议数据流枚举。在其中又 一个实施例中,分发器3020 ^f共搜索功能,允许回放装置514搜索特定的表示 层协议数据流。在其中又另一个实施例中,分发器3020将记录的表示层协、议数 据流发送到回放装置514。
(195) 在一个实施例中,回放装置514请求对可以显示给回放装置514 的用户的表示层协议数据流的枚举。在另一个实施例中,回放装置514将该请求 发送到分发器3020。在又一个实施例中,回放装置514将该请求发送到记录服 务器,例如第三装置3050。在又一个实施例中,回放装置514包括协议引擎502。
(196) 在一个实施例中,分发器3020查询可用表示层协议数据流的编目。 在另一个实施例中,分发器3020根据接收的请求产生可用表示层协议数据流的 枚举。在又一个实施例中,分发器3020将可用表示层协议类熝流的枚举发送到 回放装置514。
(197) 在有些实施例中,该枚举识别出完整记录的表示层协议数据流。在其它实施例中,该枚举识别出记录器3010尚未对其完成记录过程的表示层协议 数据流。例如,记录器3010在表示层协议数据流的标识被掛共给回放装置时可 能尚未完成向表示层协议数据流添加分组的过程。在其中一个实施例中,记录器
3010可以在回放装置514访问已经复制到表示层协议数据流中的分组之后向表 示层协议数据流的多个复制的分组中添加额外的分组。在其它实施例中,在接收 枚举后,回放装置514请求仍然在被记录过程中的枚举的表示层协议数据流。
(198) 在一个实施例中,记录器3010拦截包括多个分组的表示层助、议数 据流。在另一个实施例中,分发器3020将至少一个拦截的分组的副本从表示层 协议数据流发送到回放装置514。在又一个实施例中,回放装置514上的协议引 擎502使用与至少一个复制的分组相关的信息再生由表示层助、议数据流表示的 显示数据。在又一个实施例中,记录器3010拦截第二个分组并且分发器3020 将第二分组的副本发送至鹏放装置514。在进一步的实施例中,回放装置514使 用与第二复制的分组相关的信息再生由协议数据流表示的附加显示数据。在有些 实施例中,拦截分组并将所拦截分组的副本发送给回放装置514显示的步骤继续 直到回放装置514接收表示层助、议数据流中的所有分组。
(199) 在一个实施例中,第三装置3050同时将很多并发的表示层幼、议会 话记录写入盘,更新目录数据库并将文件取出用于回放。在另一个实施例中,记 录器3010位于第三装置3050上。在又一个实施例中,第三装置3050从记录器 3010转发到第H^置3050的表示层协议数据流接收复制的分组。在有些实施例 中,第三装置3050被称为"日志服务器"或"记录服务器"。
(200) 在一个实施例中,为了支持对任意特定会话文件的并发记录和回 放,文件格式必须支持能够在文件不完整时对其进行播放。在有些实施例中,不 完整的文件(可能由于数据丢失或因为^i刮乃在进行而不完整)总是能够被播放。 但是,在其中一个实施例中,该文件不包含数字签名。在其中另一个实施例中, 数字签名由第三装置3050在记录完成时计算。在其中又一个实施例中,文件格 式被修改以支持下述对空分组的使用。在又一个实施例中,没有文件格式修改发 生。
(201) 在一个实施例中,第三装置3050提供根据目录数据库中包含的数 据定位文件的能力。在一个实施例中,目录数据库中用于*记录的数据库条目 被依次更新三次文件被创建时,会话元数据变成已知时(例如当终端用户已经 成功登录时)和记录结束时。
(202) 在一个实施例中,当表示层协议数据流开始时文件被创建。在另一个实施例中,当特权第三方(例如管理员)请求记录开始时文件被创建。在有些 实施例中,当包含表示层协议数据流的记录的第一部分的第一文件超出阀值时, 第一文件关闭,第二文件被创建,第二文件包含表示层协议数据流的记录的第二 部分。在其中一个实施例中,当第一文件超出大小限制时,第一文件超出该阀值。 在其中另一个实施例中,当第一文件存储了超出对记录时间长度上柳蹄啲记录 的一部分时,第一文件超出该阀值。在其中又一个实施例中,关闭存储了记录的 第一部分并超出阀值的第一文件以及创建第二文件以存储记录的第二部分的过 程被称为"翻转"。在其中又一个实施例中,正在被记录的基础会话仍然不受影 响,并且在文件转换中记录数据没有被丢失。
(203) 在有些实施例中,当其会话正在被记录的用户断开时,记录结束。 在其它实施例中,在"翻转"过程期间记录结束。在其它实施例中,当特权第三 方(例如管理员)请求记录结束时记录终止。
(204) 在有些实施例中,只有已经有过全部三次更新的数据库记录會,被 搜索;文件必须是完整的才能被搜索。在其它实施例中,本发明的方法和系统允 许不够所有更新次数的记录的搜索。在其中一个实施例中,记录只需要有前两次 更新就能被搜索。这意味着当元数据可知时该文件可用于搜索和在会话记录早期 被下载。在其中一些实施例中,当文件被创建时记录就是可搜索的。但是,在其 中其它实施例中,被确定为文件在元数据被识别出之前不可用,因为与该记录有 关的信息只有登录的会话的值。
(205) 在一个实施例中,第三装置3050足跟宗所有发送到回放装置514的 实况会话记录,并且随着更多的数据可用而继续将数据流传输到回放装置514。 在另一个实施例中,第三装置3050掛共鹏宗功能,其也支持用于通知如下戶腿 实况播放器的表示服务器的"轮询"消息。
(206) 在有些实施例中,在向表示层协议数据流的记录添加分组的过程完 成之前发送表示层协议数据流中的分组的功能使得回放装置514的用户能够在 对表示层助、议数据流的记录期间观看由该分组表示的显示数据。在其中一个实施 例中,这个功能使得用户能够在显示数据被创建和记录的同时实况观看显示数 据。在其中另一个实施例中,在分组拦截时间和该分组表示的显示数据的再生时 间之间可能有延迟。在其中又一个实施例中,被再生显示数据的观众察觉不到该 延迟。
(207 )在有些实施例中,在对原始表示层助、议数据流208的发送完成之前 的被拦截的分组的发送使得回放装置能够在分组被产生时显示它们。在其中一个实施例中,这为再生的拦截的分组的观众提供了实时观看表示层协议数据流的功 能。在其中另一个实施例中,多个被拦截的分组可以在发粒前被缓冲。但是, 在其中一些实施例中,尽管多个分组被缓冲,它们在表示层幼、议数据流被完全传 输之前仍然被发送到回放装置,由此提供了实时或准实时回放的印象。
(208) 协议弓摩502使用与至少一个复制的分组相关联的信息再生由该 至少一个复制的分组所表示的显示数据。记录器3010继续拦截表示层协议数据 流,分发器继续发送来自表示层协议数据流的分组的副本直至lj第一装置完成协议 数据流到第二装置的传输。
(209) 现在参看图31,所示流程图描述了在用于表示层协议数据流的记 录和实时回放的方法中采取的步骤的一个实施例。简单地说,在表示层协议数据 流从第一装置到第二装置的传输期间,记录器拦截包括多个分组的表示层助、议数 据流,表示层协议数据流表示显示数据(步骤3102)。分发器发送表示层协议 数据流的至少一个分组的副本(步骤3104)。协议引擎使用与该至少一个复制 的分组相关联的信息再生由该至少一个复制的分组表示的显示数据(步骤 3106)。拦截表示层协议数据流并发送其中的至少一个分组的副本的步骤重复到 第一装置完成协议数据流至第二装置的传输(步骤3108)。
(210) 现在更详细地参看图31,在表示层协议数据流从第一装置到第二 装置的传输期间,记录器拦截包括多个分组的表示层协议数据流,表示层协议数 据流表示显示数据(步骤3102)。在一个实施例中,记录器3010在基本与第一 装置向第二装置发送表示层协议数据流的同时拦截表示层协议数据流。在另一个 实施例中,记录器拦截虚拟信道。
(211) 在有些实施例中,记录器3010确定是否如上结合图2所述复制分 组。在其它实施例中,在表示层协议数据流208从服务器106到客户端102的传 输结束时,记录器3010如上结合图2所述产生表示层协、议数据流208的记录。 在其中一个实施例中,记录器3010存储表示层协议数据流的记录。在其它实施 例中,记录器3010如上结合图2所述将信息关联到复制的分组或将信息^A表 示层协议数据流的所复制的部分。
(212) 在一个实施例中,与第三装置3050相关联或位于其上的记录器 3010可以捕获在虚拟信道上传输的各种数据,并在内核模式下从表示层栈捕获 表示层分组(包括优化和加速元数据以及鼠标和键盘分组)。为了减少发送很多 小消息到第三装置3050的计算和网络负担,在有些实施例中,记录器3010可以 为^^会话局部缓冲这些数据。当记录器3010捕M够的数据以形jt^够大的消息时,或者当超时周期(分钟级)期满时,记录器3010可以将数据转发到存 储组件。这种措施为系统衝共了对资源的高效禾拥。
(213) 尽管有些实施例因为上述原因而提供了上述缓冲类型,但在一个实 施例中,支持实况或时移回放的方法和系统需要立即将数据转发到回放装置
514。如果数据被拦阻的时间超出阀值,回放体验将会受损,因为流是不连续的 或者不是最新的。l娥可以不规律的和不频繁的剛高至哒回放装置514。有些接 收的数据可能已经是几5K中前的。
(214) 在有些实施例中,系统为所有记录会话去除了缓冲功能。但是,对 于不被实况或时移观看的会话来说,这种做法降低了性能和可扩展性并且可能极 大的浪费资源,例如对可用网络带宽的使用。
(215) 在其它实施例中,对先前记录的会话的回放提供了缓冲功能,但对 实际正在被实况观看的会话则没有提供。在其中一个实施例中,当回放装置514 开始实况会话的回放时,记录器3010接收这个事件的通知并且相应地关闭缓冲 机制。在其中另一个实施例中,当回放完成时,表示服务器上对后续会话的记录 将回到普通缓冲模式。这种措施意味着可扩展性只有在播放器实际正在播放记录 时受影响。这个影响还只存在于提供会话的表示服务器上;群中的其它服务器不 受影响。
(216) 为了进一步保护可扩展性,在另其它实施例中,对实况会话数据的 流传输可以被轻微压制。不是立即发送所有接收的数据,而是将数据缓冲一段非 常短的时间。在其中一个实施例中,该时间是预定的。在其中另一个实施例中, 缓冲时间期间小于一秒。在其中又一个实施例中,选择了 500毫秒,结果是每秒 只发送两个网络消息。
(217) 在一个实施例中,这里所说明的方法和系统解决了表示层协议数据 会话的异步性以及会话中的空闲时间产生的问题。在另一个实施例中,当会话空 闲时,没有数据被/AI艮务器106流传输到客户端102,因此没有数据被拦截、记 录或转发以进行回放。在又一个实施例中,没有规则的数据流,回放装置514 不能确定它是否能够扩展它的时间线以反映这个时间已经过去。当过去某一时间 的会话活动数据到达时,就出现了一个通过断定已经过去的那段时间没有任何活 动并将其反映在对数据流的观众的指示中所产生的问题。也就是说,回放装置 514没有接收数据,断定没有活动发生,向观众指示没有活动发生,然后在指示 在那个时间没有活动发生之后显示反应该活动在过去的那个时间点没有实际发 生的数据。实际上,回放装置514已经错误地假定发生了 "什么都没有"并且已经将当前播放器帧前进得过远。这可能导致记录会话的观众丢失过去发生的活动 或者给其带来困惑。
(218) 在一个实施例中,回放装置514确定会话数据在过去的时间点已经
到达,将该瞎况指琉合观众,并迫lM众返回到该^i舌活动发生的时间点。在有
些实施例中,这个解决方案产生了另外的问题,包括如果记录段过长时或者如果
会话活动的类型对观众无足轻重时的可用性问题。
(219) 在另一个实施例中,分组被发送到回放装置514表示在特定的时间 点没有会话活动发生并且没有会话数据要发送到回放装置514。在又一个实施例 中, 一种称为"空分组"的分组类型被仓犍并发送到回放装置514。在又一个实 施例中,空分组像所有其它分组一样保存有时间戳但不包含ftf可有效载荷。如果 正在被记录的会话在它的缓冲时间段(例如,前面提到的500毫秒的间隔)内没 有接收任何表示层协议数据,记录器3010将空分组插入流中。在有些实施例中, 和4顿数据缓冲方法一样,空分组将只在时移回放有效时被注入。
(220) 在这些实施例中,回放装置514现在接收空分组的稳定流并且能够 安全地扩展它的时间线并允许回放到"已知"空闲时段中。
(221) 在其中一些实施例中,空分组的传输导致额外的负担,例如记录的 文件的大小会有少量增长,以及在会话空闲时的一些资源使用。但是,在其中一 个实施例中,空闲分组的长度在4到6个字节之间(通常是5个字符)并且每秒 只有2个空闲分组被发送。假定为5字节分组,这等于旨会话每小时额外的 36KB。在有些实施例中,因为实况回放很少发生,并且与每会话每小时2MB 的典型总体数据率相比,这个额外负担可以认为无足轻重。
(222) 在一个实施例中,记录器3010执行在表示服务器上以拦截和记录 表示层协议数据。在另一个实施例中,记录器3010接收用户已经请求记录器3010 当前正在记录会话的时移回放的指示。在又一个实施例中,该指示的接收向记录 器3010指示它应该^ffi提供时移所需的功能。例如,记录器3010可以先缓冲用 于发送的分组直到它接收实况观看的通知,然后在接收该指示后切换到减少缓冲 分组的时间量的模式。在另一个例子中,记录器3010不使用上述空分组直到它 接收用户已经请求时移会话回放的指示。
(223) 在有些实施例中,有各种方法可用于通知记录器3010回放装置514 正在为观众播放会话,而记录器3010记录该会话。从支持实况回放会话的通知 来说,它可以被看作不适合在记录组件所在的旨服务器上打开新的网络端口以 支持这个需求。不是由第三装置3050 (它知道所有正在被实况播放的会话)直接通知^表示服务器,在有些实施例中,本发明的方法和系统实现了反向轮询 机制。^^示服务器将以统一间隔为当前正在被实况播放的会i舌列表"豁旬" 第三装置3050。在其中一些实施例中,即使l&i旬会有比异步通知更大的负担和 更慢的响应,也优选这种机制。
(224) 轮i旬不需要表示服务器上的监听端口 ,但会产生多久轮i旬一次的问 题。在有些实施例中,j顿较短的间隔以确保能够及时切换实况会话的缓冲,尽 管该间隔可能影响可扩展性。在其它实施例中,较长的间隔有较低的资源影响, 但会导致切换缓冲模式中的延迟。在其它实施例中,预定时间间隔由管理员选择。 在其它实施例中,10秒的轮询间隔提供了短间隔和长间隔之间的折衷。在其中 一个实施例中,轮询间隔的影响很少能够被察觉到,因为大多数被记录会话已经 有现有的数据用于下载和立即回放。在其中一个实施例中,具有可用于立即回放 的现有数据给了用户时间,以便根据用户想要观看的东西调整自己。在其中另一 个实施例中,轮询间隔已经经过了用户已经完成对可用数据的观看并请求新近记 录内容的时间。在其中又一个实施例中,用户在轮询间隔完成之前完成对可用内 容的观看,可以设置短裕旬间隔以4顿户只需等待几秒。例如,在裕旬间隔被设 为10秒的实施例中,如果用户想要观看最新几分钟的记录,用户只需要等待最 多10秒(平均为5秒)。
(225) 例如,拥有1000个全部都在有效记录的表示服务器的系统等于每 秒钟必须处理100个轮询消息的单个第三装置3050。在这样的实施例中,考虑 消息较小而且处理^^轮询消息的影响较低,从系统可扩展性角度这是可行的。 在一个实施例中,对^轮询消息的处理不涉及倒可1/0,复杂的计算,线程环 境切换或进程间通信。在另一个实施例中,如果需要的话也可以通过配置提高轮 询间隔。
(226) 在有些实施例中,包括"轮询"消息有多个目的。在其中一个实施 例中,轮询消息还被用作第三装置3050的"保持有效"(keep-alive)消息。在 其中另一个实施例中,第三装置3050现在能够足毀劍那个表示服务器正在有效记 录并且当前有多少会话正在被记录。
(227) 分发器发送表示层协议数据流的至少一个分组的副本(步骤 3104)。在一个实施例中,记录器存储表示层协议数据流208的至少一个分组的 副本。在另一个实施例中,记录器3010发送至少一个复制的分组到分发器3020。 在又一个实施例中,记录器3010将该至少一个分组的副本复制到缓冲区中。在 又一个实施例中,记录器3010将缓冲区中存储的多个分组发送到分发器。(228) 在一个实施例中,分发器3020从存^^置检索表示层协议数据流 的至少一个分组的副本。在另一个实施例中,分发器3020从存储装置(例如上 面结合图2所述存储装置218)检索分组。在又一个实施例中,分发器从记录器 3010检索至少一个分组的副本。
(229) 协议弓l擎使用与至少一个复制的分组相关联的信息再生由该至少 一个复制的分组所表示的显示数据(步骤3106)。在一个实施例中,该至少一 个复制的分组在协议引擎接收它时被使用。在另一个实施例中,该至少一个分组 在协议弓l擎接收再生被至少一个复制的分组所表示的显示数据的请求时被使用。
(230) 拦截表示层协议数据流并发送表示层协议数据流的至少一个分组 的副本的步骤重复直到第一装置完成至第二装置的协议数据流传输(步骤 3108)。在一个实施例中,使用与该至少一个分组相关联的信息的步骤重复直到 协议弓l擎已经再生了由旨接收的复制分组表示的显示数据。在其它实施例中, 协议引擎只为用户已经明确请求的分组再生显示数据。在其它实施例中,协议引 擎在接收启动或停止再生的请求指示之后启动和停止显示数据的再生。
(231) 在有些实施例中,确保终端用户不能够检测到他们的会话正在被记 录或者被实况观看至关重要。在一个实施例中,提供时移回放特性的方法和系统 避免了检测到表示层协议数据流的记录的任何额外机会。
(232) 在一个实施例中,表示层协议会话的回放不影响表示层协议状态机 的运行。用户接收的表示层协、议数据流在实况回放下相同。这也意味着在他们的 记录中不会有可见的或者其他可感知的人工产物。
(233) 在终端用户对提供其表示会话的服务器没有管理员权限的另一个 实施例中,没有进程或可访问的系统对象向终端用户指示他们正在被实况观看
(甚至被记录)。在又一个实施例中,终端用户还被限制发出他或她自己的"轮 询"消息到第三装置3050以找出实况回放会话的列表。即使对于本地管理员用 户,这也^t以做到的,因为从这个轮询消息返回的会话ID不是终端会话标识 符。在一个实施例中,这包括了由于模糊处理(obfbscation)而带来的安全性, 因为将这些内部会话标识符日划顿j终端会话标识符需要特殊的技能。
(234) 在其它实施例中,另一种检观仿、 跑括观蔡性能下降的周肌但是, 在其中一个实施例中,即便对于专用于单一用户的物理机,也难于观察到性能下 降,因为性能影响非常轻。在共享的应用服务器上,这也是不可能的。在这些实 施例中,终端用户被拒绝访问察看性能计数器或类似的数据相关性能。
(235) 总之,在有些实施例中,用于时移回放的方法禾瞎统确保了只有具有普通用户权限的终端用户检湖l度况回放的可行方式用于进行社会工程攻击。
(236) 在一个实施例中,回放装置514发送搜索请求到第三装置3050。 在另一个实施例中,回放装置514组件搜索可以显示给观众的会话枚举。在有些 实施例中,该枚举只包括那些其完整的会话记录可用的会话。在其它实施例中, 该枚举只包括其不完整的会话记录可用的会话。在其它实施例中,枚举包括被完 整记录的会话和不完整记录的会话。在其中一个实施例中,回放装置514包括用 于区分"实况"记录和"完整"记录的功能,并将这个区别在搜索结果列表控件 中告知用户。在其中另一个实施例中,回放装置514可以周期性地向第三装置 3050査询列出的每个实况会话的状态更新。在又一个实施例中,搜索列表保持 没有用户干预的更新状态。
(237) 在一个实施例中,回放装置514的用户可以选择记录数据箭邀行观 看。在另一个实施例中,如果该记录数据流包含与记录器3010仍然正在从表示 层协议数据流记录分组的会话相关的数据,就创建信道并保持其在打开状态用于 在有额外的记录数据从记录器3010可用时接收它们。在又一个实施例中,在数 据被第三装置3050接收时,它将被转发到回放装置514以M该信道进行处理。 在又一个实施例中,如果记录器3010完成了记录完整会话而该会话正在被实况 播放,回放装置514将关闭该信道并且回放将不间断地继续。
(238) 在有些实施例中,从提供实况回放的功會g会产生安全相关的顾虑。 例如,在有些实施例中,实况会话文件不能被加密以保存数字权限管理(DRM, digital rights management),并且没有任何数字签名验i正。为了减轻DRM问题, 在其中一些实施例中,回放装置514将试图只从私有存储器处理实况记录。在其 中一个实施例中,实况记录不被写入本地文件高速缓存并且试图阻止数据被换出 或者相反写入持久存储装置。在其中另一种实施例中,当回放装置514和第三装 置3050之间的流量被使用强加密密钥进行SSL/TLS时,对加密转换中的数据丢 失不太关注。在其中其它实施例中,为了减轻数字签名问题,在回放开始之前, 将向用户显示警告消息表明该文件的来源和内容不能被验证。如果用户想得到了 这个可靠性声明,他们就能够在会话完成时重新下载该会话记录。在很多实施例 中,这提供了合理的折衷,因为数字签名为记录提供了合法的或司法鉴定
(forensic)的价值。
(239) 在一个实施例中,当播放器窗口处于活动状态时,当接收新数据时 拉动进度条时间线将被扩展并且这个新内容可以立即用于观看。在有些实施例 中,回放装置514特性仍然保留,包括为快速搜索生成关键帧的后台处理引擎。掛共了用于围绕实况记录搜索的功能。
(240) 现在参看图32,所示流程图描述了用于在远程表示层协议数据的 实时回放期间进行实时搜索的方法中所采取的步骤的一个实施例。简单地说,前 台协议引擎接收呈现包括已经接收的第一多个分组和尚待接收的第二多个分组
的表示层幼、议数据流中的分组内容的请求(步骤3202)。前台协议引擎识别出 其相关时间戳在所请求的分组的时间戳之前的状态快照(步骤3204)。前台幼、 议引擎在表示层协议数据流从第一装置到第二装置的传输期间根据识别出的状 态快照显示戶;fi青求的分组(步骤3206)。
(241) 在有些实施例中,所接收的请求在前台助议引擎1106通过向使用 显示器的观众呈现第一多个分组中的分组内容而再生显示数据并且观众希望搜 索至肿寺定的显示数据时产生。在其它实施例中,前台协议引擎将状态快照和船青 求的分组之间的中间分组的内容呈送到缓冲区。
(242) 如前结合图ll所述,在有些实施例中,呈现的显示数据的接收者 可以实时搜索内容。但是,在有些实施例中,如图32所示,呈现的数据的接收 者可以在来自尚未被完整记录的表示层协议数据流的分组的表示期间实时搜索 内容。在其中一种实施例中,前台协议引擎包括前台协议引擎1106并且如结合 图ll所述那样提供实时搜索功能。在其中另一个实施例中,前台协议引擎1106 还为部分表示层协议数据流(例如第一多个接收的分组,它包含了表示层幼、议数 据流的子集)的实时搜索提供上述功能。在有些实施例中,前台协议引擎1106 在表示层协议数据流从第一装置到第二装置的传输期间产生已经接收的要用显 示器1108呈现给观众的第一多个分组的实时可感知表示。在其它实施例中,前 台幼、议引擎1106 M呈现助、议数据流1110中或者多个接收的分组中的至少一个 分组的内容而产生实时可感知表示。可感知表示可以包括但不限于独立或组合的 听觉、视觉、触觉或嗅觉的演示。在其它实施例中,前台协议引擎1106为第一 多个分组中的实时搜索^iM似于前面结合图9所说明的在记录的协议流中实 时搜索的功能。
(243) 如前结合图ll所述,在有些实施例中,状态快照通过存储呈现表 示层协议数据的协议弓l擎在记录器206从表示层协议数据流208复制至少一个分 组的时间点时的状态而使得能够再生显示数据。在一个实施例中,状态快照包括 描述那个时间点的屏幕状态的数据结构。
(244) 现在参看图33,所示流程图描述了用于产生能够在包括由后台协 议弓l擎已经接收的第一多个分组和由后台协议弓摩尚待接收的第二多个分组的表示层协议数据流的实时回放期间进行实时搜索的状态快照的方法中采取的步 骤的一个实施例。后台协议弓l擎在表示层协议数据流从第一装置到第二装置的传 输期间接收第一多个分组(步骤3302)。后台协议引擎再生由第一多个分组表
示的显示数据(步骤3304)。后台协议引擎在呈现第一多个分组中的至少一个 分组期间产生至少一个状态快照(步骤3306)。后台协议引擎存储产生的状态 快照(步骤3308)。根据接收第二多个分组中的至少一个分组修改显示数据的 再生和至少一个状态快照(步骤3310)。
(245) 后台协议引擎在表示层协议数据流从第一装置到第二装置的传输 期间接收第一多个分组(步骤3302)。后台协议引擎产生第一多个分组的表示。 在一个实施例中,后台协议引擎1102 ilil将第一多个分组的内容呈送到缓冲区 而产生第一多个分组的表示。在有些实施例中,该缓冲区是离屏缓冲区。
(246) 后台协议引擎产生由第一多个分组所表示的显示数据(步骤 3304)。在一个实施例中,后台协议引擎通过将第一多个分组的内容呈送至螺冲 区而产生显示数据。在有些实施例中,该缓冲区是离屏缓冲区。
(247) 在有些实施例中,前台协议引擎产生显示数据。在其中一个实施例 中,前台助、议弓摩1106通过呈现第一多个分组的内容,基本与后台协议弓摩1102 在它读取第一多个分组期间产生至少一个状态快照的同时产生第一多个分组的 能够让人感知的表示。
(248) 后台协议弓I擎在读取第一多个分组中的至少一个分组期间产生至 少一个状态快照(步骤3306)。在一个实施例中,该至少一个状态快照的产生 和第一多个分组的表示基本上同时发生。在另一个实施例中,该至少一个状态快 照的产生发生在后台助、议弓l擎顺序读取第一多个分组期间。
(249) 后台协议引擎存储产生的状态快照(步骤3308)。在后台协议引 擎1102周斯性产生多个状态快照的实施例中,状态快照可以充当贯穿第一多个 分组的^H己,帮助定位第一多个分组中的特定时间点以及在状态快照1104之前 或之后到达的分组中的特定时间点。
(250) 根据接收第二多个分组中的至少一个分组,显示数据的产生和至少 一个状态快照被修改(步骤3310)。在有些实施例中,后台协议引擎从第二多 个分组(先前未接收的分组)中检索分组并将该来自第二多个分组的分组存储在 第一多个分组中。在其中一个实施例中,后台协议引擎将新接收的分组和先前接 收的分组一起存储在缓冲区中。在其中另一个实施例中,对第一多个分组的修改 导im产生的显示数据的修改或重新生成,或者附加显示数据的重新生成。在其中又一个实施例中,从第二多个分组添力吩组至'燥一多个分组导^X寸状态快照的 修改或者附加状态快照的产生。
(251) 在有些实施例中,后台协议引擎使用上述为记录的协议数据流产生 状态快照的方法为第一多个分组产生状态快照。在其它实施例中,前台协议引擎 使用上述再生由记录的协议数据流中的分组表示的显示数据的方法再生由第一 多个分组表示的显示数据。
(252) 再来看图11,用于在包括已经被后台协议弓摩接收的第一多个分
组和尚待被后台幼议弓l擎接收的第二多个分组的表示层协议数据流的实时回放
期间进行实时搜索的系统,包括后台助、议引擎1102、状态快照1104、前台协议 引擎1106和协议数据流1110。
(253) 后台协议引擎在表示层协议数据流从第一装置到第二装置的传输 期间接收第一多个分组。由后台协议引擎产生的状态快照包括在记录器(如记录 器3010)从表示层协议数据流复制分组到第一多个分组中的时间点呈现该表示 层协议数据流的弓摩的状态。前台协议引擎接收第一多个分组,呈现第一多个分 组的内容,接收搜索由第一多个分组中的分组内容所表示的显示数据的请求,然 后使用状态快照呈现表示所请求的显示数据的内容。在一个实施例中,前台协议 引擎在表示层协议数据流从第一装置(例如服务器106)到第二装置(例如客户 端102)的传输期间,呈现被请求的显示数据。前台协议引擎根据接收第二多个 分组中的至少一个分组更新状态快照。
(254) 尽管已经结合图11被描述为完整记录的协议数据流,但协议数据 流1110在有些实施例中包括第二协议数据流的一部分。在其中一个实施例中, 协议数据流1110是表示显示数据、已经有元数据与其相关联且其中已经嵌入了 附加信息的第一多个分组。在另一个实施例中,在从记录器206或分发器3020 接收附加分组时,后台幼议引擎将那些分组添加到助、议数据流1110。在其中又 一个实施例中,图ll中所述系统提供了在使用协议数据流的一部分实时回放期 间进行实时搜索的功能,其方式基本与该系统在完整记录的助议数据流的回放期 间掛共实时搜索功能的方式类似。
(255) 现在看图34,所示流程图描述了用于状态快照的自适应生成的方 法中采取的步骤的一个实施例。在表示层协议数据流从第一装置向第二装置的传 输期间,包括被后台协议引擎已经接收的第一多个分组和被后台幼、议弓l擎尚待接 收的第二多个分组的表示层协议数据流的表示被呈现给用户(步骤3402)。后 台协议引擎在表示期间监控用户的活动(步骤3404)。后台协议引擎根据对活动的监控开发出活动特征(步骤3406)。后台助、议引擎根据活动特征产生至少
一个状态快照(步骤3408)。后台协议引擎根据在第二多个分组中接收至少一 个分组而修改该至少一个状态快照(步骤3410)。
(256) 在有些实施例中,X刊办议数据的一部分(例如第一多个分组)^ffl 了前面结合图12到15所述的为状态快照的自适应生成而采取的步骤。
(257) 在表示层幼、议数据流从第一装置向第二装置的传输期间,包括被后 台协议引擎已经接收的第一多个分组和被后台协议弓i擎尚待接收的第二多个分 组的表示层协议数据流的表示被呈现给用户(步骤3402)。在一个实施例中, 在后台协议弓l擎从第二多个分组接收分组时,后台协议弓l擎将新接收的分组存储 在第一多个分组中。在另一个实施例中,后台协议引擎继续从第二多个分组接收 分组直到服务器停止至客户端的表示层协议数据流传输。
(258) 后台协议引擎在表示期间监控用户的活动(步骤3404)。在一个 实施例中,后台协议引擎1106产生第一多个分组的表示并用显示器1108将其呈 现给用户。在其它实施例中,后台协议引擎1102产生该表示。在其它实施例中, 第三装置产生该表示。在一个实施例中,后台协议引擎在表示会话的一部分期间
(例如表示由第一多个分组表示的重新生成的显示数据期间)监控用户的活动。
(259) 后台助议引擎根据对活动的监控开发出活动规律(步骤3406)。 在有些实施例中,后台协议引擎1102识别出用户的活动级别。在有些实施例中, 后台协议引擎1102识别出不活动周期。在其它实施例中,后台协议引擎1102 识别出显示数据中用户感兴趣的区域。活动特征可以反映出这些标识。
(260) 后台协议引擎根据活动特征产生至少一个状态快照(步骤3408)。 在有些实施例中,后台协议引擎1102决定延长一个或多个状态快照之间的间隔。 在其它实施例中,后台协议引擎1102决定縮短一个或多个状态快照之间的间隔。 在另其它实施例中,后台幼、议弓l擎1102根据活动特征决定去除至少一个状态快 照。在另其它实施例中,根据活动特征,后台协议引擎1102决定添加至少一个 状态快照。
(261) 后台协议引擎根据接收第二多个分组中的至少一个分组修改至少 一个状态快照(步骤3410)。在有些实施例中,后台协议引擎根据接收第二多 个分组中的至少一个分组而修改活动级别的标识。在其中一个实施例中,第一部 分表示层协议数据流的观众在观看表示层协议数据流的不同部分时修改他或她 的活动级别。在其中另一个实施例中,后台协议引擎观察活动级别中的修改并且 相应地修改或者重新生成状态快照。(262) 如上所述,图16概述了上述在用于状态快照的自适应生成的系统
中所使用的方法的一个实施例,该系统包括后台协议引擎1602、前台协议弓摩 1608、协议数据流1612、活动特征1604和状态快照1606。在另一个实施例中, 上述系统还衝共了在表示层协议数据流的实时回放期间状态快照的自适应产生。
(263) 前台协议弓l擎在表示层协议数据流从第一装置到第二装置的传输 期间将包括已经被后台协议弓l擎接收的第一多个分组和尚待被后台协议弓摩接 收的第二多个分组的表示层协议数据流的表示呈现给用户。后台协议弓l擎在呈现 期间监控用户的活动并产生状态快照。后台助议弓摩决定活动特征。后台协议引 擎根据接收第二多个分组中的至少一个分组修改状态快照和活动特征。
(264) 在一个实施例中,后台协议引擎根据监控决定活动特征。在另一个 实施例中,后台协议引擎根据活动特征维护状态快照。在又一个实施例中,后台 协议引擎根据观察至啲活动特征变化而更新状态快照。
(265) 在有些实施例中,后台协议引擎观察到对活动特征的修改。在其中 一个实施例中,活动特征在观看表示层助议数据流的第一部分和观看表示层协议 数据流的第二部分之间有所变化。在其中另一个实施例中,后台协议引擎维护更 新的活动特征并相应产生新的状态快照或者修改已有的状态快照。
(266) 如前结合图17和18所述,在有些实施例中,回放数据结构可以用 在记录的助、议数据流的回放中。另外,在有些实施例中,回放数据结构可以用在 表示层协议数据流的实时回放中。在表示层协议数据流的传输期间产生用于包括 已经被协议引擎接收的第一多个分组和尚待被协议弓l擎接收的第二多个分组的 表示层协议数据流的回放的回放指令的方法,包括由执行在回放装置上的助、议弓I 擎接收表示由执行在服务器上的应用f旨产生的显示数据的第一多个分组。协议 引擎为第一多个分组中的分组进行决定以用人可感知的方式呈现该分组的内容。 协议弓l擎将该决定存储在回放数据结构中。
(267) 在有些实施例中,协议引擎根据该分组的内容决定显示第一多个分 组中的分组。在其中一个实施例中,助议引擎根据拥有输入焦点的应用程序的指 示做出该决定。在其中另一个实施例中,协议引擎根据对该分组中存储的用户输 入类型的评估做出该决定。在其中一些实施例中,协议引擎根据对由该分组存储 的图形更新类型的评估做出该决定。在其中其它实施例中,助、议引擎根据对由该 分组存储的交互序列类型的评估做出该决定。
(268) 在有些实施例中,回放数据结构描述了如何再生第一多个分组中包 含的显示数据。在一个实施例中,回放数据结构中存储的指令控制着呈现显示数据的过程。在一个实施例中,回放数据结构包括用于呈现第一多个分组中的分组 内容的时间。在这个实施例中,回放数据结构中包含的时间被用于呈现分组内容, 而不是与第一多个分组中的分组相关联的呈现时间(如果有的话)。在一个实施 例中,回放数据结构在改变呈现时间中接受用户输入。
(269) 在其它实施例中,回放数据结构包含描述如何进行第一多个分组的 一次或多次回放的元数据。在一个实施例中,回放数据结构包括针对第一多个分 组中的每个分组的记录,表示相应分组的内容在回放期间应该在什么相对时间点 被呈现。在有些实施例中,元数据还包含分组开始在文件中的偏移量。
(270) 在有些实施例中,随着后台协议引擎接收表示层协议数据流中的附
加分组,后台协议弓l擎产生附加回放数据结构或修改已有的回放数据结构。
(271) 在一个实施例中,后台协议引擎执行在回放装置上,并响应于接收
第一多个分组产生回放数据结构,所述第一多个分组表示由执行在服务器上的应 用程序产生的显示数据。前台协议引擎接收第一多个分组,并且根据后台协议引 擎基本上在接收第二多个分组中的至少一个分组并根据接收的第二多个分组中 的至少一个分组产生回放数据结构的同时产生的回放数据结构,呈现第一多个分 组。另一方面,前台协议引擎接收第一多个分组,并且根据后台协议引擎基本上 在接收第一多个分组中的第二分组并根据接收的第一多个分组中的第二分组产 生回放数据结构的同时产生的回放数据结构,呈现第一多个分组。
(272) 在一个实施例中,后台协议引擎和前台助议引擎各自接收第一多个 分组。在另一个实施例中,后台协议引擎基本与前台协议弓l擎呈现第一多个分组 的同时产生回放数据结构。
(273) 在一个实施例中,后台协议引擎在回放数据结构中存储至少一条用 于呈现第一多个分组中的至少一个分组的指令。在另一个实施例中,后台协议引 擎将元数据存储在回放数据结构中。在又一个实施例中,后台协议引擎在回放数 据结构中存储表示呈现第一多个分组中的至少一个分组的时间的记录。
(274) 前台协议引擎根据回放数据结构呈现第一多个分组中的至少一个 分组。在一个实施例中,前台协议弓摩不仅以可以为人感知的方式呈现第一多个 分组中的至少一个分组,而且还将其呈送到缓冲区。在另一个实施例中,前台协 议引擎将第一多个分组中的至少一个分组呈送到缓冲区。
(275) 在一个实施例中,后台助、议引擎在由服务器将表示层幼、议数据流传 输到客户端的期间,接收表示由执行在服务器上的应用禾ii^产生的显示数据的第 一多个分组。后台协议弓摩为第一多个分组中的至少一个分组进行决定以用人可感知的方式呈现该分组。后台协议引擎将该决定存储在回方夂数据结构中。前台协 议引擎从第一多个分组中检索至少一个分组,访问回放数据结构,并根据回放数
据结构呈现该至少一个分组。这些步骤重d:到服务器完成了表示层协议数据流
的传输。在一个实施例中,服务器在表示层协议数据流的传输完成之前停止表示 层协议数据流的传输。在另一个实施例中,当表示层协议数据流中的第二多个分 组l则艮务器产生和发送时,表示层协议数据流中的第一多个分组被拦截并且第一 多个分组的实时回放发生。
(276) 在有些实施例中,后台协议引擎决定显示第一多个分组中的分组并 如前结合图19所述产生相应的回放数据结构。在其它实施例中,前台协议引擎 根据如前结合图19所述的回放数据结构呈现第一多个分组中的分组内容。
(277) 回过去看图21,表示层协议数据流可以被呈现而没有不包含任何 活动的可感知的时间间隔。在有些实施例中,如前结合图21所述,表示层协议 数据流的完整记录MM现。但是,在其它实施例中,上述方法可以用来呈现未完 整记录的表示层协议数据流的一部分。
(278) 在呈现包括已经接收的第一多个分组和尚待接收的第二多个分组 的表示层协议数据流中消除不活动期间的方法,包括识别第一多个分组中的第一 分组的步骤,所述第一多个分组表示显示数据。第一多个分组中的第二分组被识 别出,戶万述第二分组紧接在第一分组之前。决定第一分组和第二分组之间的第一 时间间隔。第一时间间隔超出阀值被决定。在协议数据流从服务器到客户端的传 输过程中,第一多个分组的内容被以第一分组和第二分组之间的第二时间间隔呈 现,所述第二时间间隔包含比第一时间间隔短的时间间隔。接收第二多个分组中 的至少一个分组。
(279) 在一个实施例中,第二多个分组中的至少一个分组在被接收时被添 加到第一多个分组。为所接收的第二多个分组中的至少一个分组,重复识别第一 分组和第一分组之前的第二分组和决定它们两个之间的时间间隔是否超出阀值 的步骤。在另一个实施例中,为第一多个分组中的第二分组,重复识别第一分组 和第一分组之前的第二分组和决定它们两个之间的时间间隔是否超出阀值的步 骤。在有些实施例中,前面结合图21所述的方法被用来从表示层协议数据流的 一部分(例如第一多个分组)消除没有活动的可感知的时间间隔。
(280) 产生用于呈现包括已经接收的第一多个分组和尚待接收的第二多 个分组的表示层协议数据流的回放的回放指令的方法,包括识别由表示应用程序 产生的显示数据的第一多个分组中的分组存储的输入类型的步骤。响应于该输入类型,分组被^"i己。回放数据结构存储了根据标记呈现分组内容的目的地。第二 多个分组中的至少一个分组被接收。在一个实施例中,第二多个分组中的至少一 个分组在接收之后被添加到第一多个分组。第一多个分组中的第二分组被接收。 重复识别由分组存储的输入类型、根据输入类型标记分组、在回放数据结构中存 储呈现目的地并接收附加分组的步骤作为新分组被接收,直到服务器完成对表示 层协议数据流的传输。
(281) 在一个实施例中,由分组存储的输入类型决定该分组是否将被呈 现。在一个实施例中,分组不包含任何内容。在有些实施例中,至少一个分组不 包含任何内容。在这些实施例中,包括至少一个不包含任何内容的分组的时间间 隔被识别出。在其中一些实施例中,该时间间隔将不会被呈现。在其中一个实施
例中,如前结合图30A-D和图31所说明的空分组类型被接收并被标识为不包含
{封可数据的分组。
(282) 在有些实施例中,输入类型指来自特定类型的输A^置的输入,包 括但不限 盘、鼠标、麦克风或摄像头。在一个实施例中,识别输入类型的步 骤还包括将输入类型识别为来自输A^置的输入。在另一个实施例中,识别输入 类型的步骤还包括将输入类型识别为键盘输入。在其它实施例中,输入类型与输 入装置无关。在其中一种实施例中,输入类型被识别为命令。
(283) 在一个实施例中,该方法消除了不包含ftj可有意义活动的可感知的 时间间隔。在这个实施例中,由策略将特定类型的输入识别为有意义或无意义。 在有些实施例中,策略可以被硬编码到协议引擎。在其它实施例中,管理员配置 该朿略°
(284) 在有些实施例中,如果分组不包含ftj可内容,幼、议引擎就将该分组 识别为无意义。在其中一些实施例中,该分组表示没有任何用户活动发生而要被 记录至U第一多个分组中的分组中的时间间隔。在其中一个实施例中,协议引擎在 回放数据结构中存储以任何无意义分组不以可感知方式呈现的方式呈现第一多 个分组中的各个分组的目的地。在另一个实施例中,协议引擎可以产生过去的时 间没有活动的指示。例如,表示给观众的表示层协议数据流的时间线可以被更新 以反映那段时间已经过去而显示数据没有发生变化。在其中又一个实施例中,协 议弓l擎使用上述空分组类型将分组识别为无意义。
(285) 在有些实施例中,±3^用于消除所记录的表示层协议数据流中的不 包含任何有意义活动的时间周期的方法还被用来消除在表示层协议数据流的一 部分(例如,第一多个分组)中不包含{對可有意义活动的时间周期。如图22所示,其中描述了其内容根据回放数据结构被呈现的重新生成的记录流的一个实施 例,在这个实施例中根据回放数据结构呈现部分协议数据流,允许去除不包含任 何有意义活动的时间间隔(如图22中的白框和条纹框所示),它包括不包含任 何活动的时间间隔。这个呈现向用户提供了表示层协议数据流中的第一多个分组 的更有意义的再生。
(286) 在呈现包括已经接收的第一多个分组和尚待接收的第二多个分组
的表示层协议数据流中去除不包含任何有意义活动的期间的方法,包括决定第一 多个分组中标记的分组和其前面最接近的标记的分组之间的第一时间间隔的步 骤,所述第一多个分组表示显示数据。做出决定为该第一时间间隔超出阀值。在 协议数据流从服务器到客户端的传输期间,用标记的分组和它前面最接近的标记 的分组之间的第二时间间隔呈现第一多个分组的内容,所述第二时间间隔包括比 第一时间间隔短的时间间隔。可能接收第二多个分组中的至少一个分组。可能接 收第一多个分组中的第二个分组。新接收的分组可以被添加到第一多个分组。决 定第一时间间隔超出阈值和用第二时间间隔呈现第一多个分组的内容的步骤被 重复,直到服务器完成表示层协议数据流的传输。
(287) 在一个实施例中,第一多个分组的内容被以标记的分组和其前面的 分组之间的第二时间间隔呈现,所述第二时间间隔包括比第一时间间隔短的时间 间隔。在另一个实施例中,第一多个分组的内容被以*射己的分组和该标记的分组 后面的分组之间的第二时间间隔呈现,戶皿第二时间间隔包括短于第一时间间隔 的时间间隔。在有些实施例中,第一多个分组的内容被使用如上结合图28所述 方法呈现。
(288) 如前结合图24所述,用于在呈现记录会i舌中去除图形更新的方法 在呈现会话的一部分时也去除图形更新,例如通过去除包括表示层协议数据流的 子集的第一多个分组中的图形更新。如同结合图25所述,可以识别出循环更新 并做出决定不以人可感知的方式呈现循环更新。同样,这些方法可以识别出部分 表示层协议数据流中的循环更新。
(289) 在呈现包括已经接收的第一多个分组和尚待接收的第二多个分组 的表示层协议数据流中去除图形更新的方法,包括识别出表示由应用禾,产生的 显示数据的第一多个分组中包含第一图形更新的分组的步骤。受该第一图形更新 影响的屏幕区域被确定。屏幕区域在第一图形更新之后的状态指示以及该屏幕区 域的位置被存储。识别出在时间间隔内影响该屏幕区域的第二图形更新。根据屏 幕区域在第二图形更新之后的状态是否不同于该屏幕区域在第一图形更新之后的状态,回放数据结构指示用于呈现包括影响该屏幕区域的第二图形更新的第一 多个分组中第二分组的目的地。回放数据结构根据屏幕区域在第二图形更新后的 状态是否不同于该屏幕区域在第一图形更新后的状态,指示用于与包括影响该屏 幕区域的第二图形更新的第一多个分组中第二分组有关地呈现的时间间隔。
(290) 在一个实施例中,识别出多个分组中包含的图形更新。在另一个实 施例中,根据由识别出的多个分组中的各个分组存储的图形更新受影响的屏幕区 域被确定。在又一实施例中,存储受该图形更新影响的屏幕区域的副本。在又一 实施例中,时间间隔被定义以接近人类级别循环周期的用户上限。在进一步的实 施例中,回放数据结构表明以可感知方式呈现分组内容并将其呈送到缓冲区。在 又另一实施例中,回放数据结构表明将分组内容呈送到缓冲区。在有些实施例中, 后台协议弓摩将这些指示存储在回放数据结构中。
(291) 在呈现包括已经接收的第一多个分组和尚待接收的第二多个分组
的表示层助、议数据流中去除图形更新的方法,包括识别第一多个分组中包含第一 图形更新的分组的步骤,第一多个分组表示由应用,,产生的的显示数据。受第
一图形更新影响的屏幕区i或被决定。存储屏幕区域在第一图形更新之后的状态指
示和该屏幕区域的位置。识别出在时间间隔内影响该屏幕区域的第二图形更新。 根据屏幕区±或在第二图形更新之后的状态是否不同于该屏幕区域在第一图形更 新之后的状态,回放数据结构指示用于呈现包括影响该屏幕区域的第二图形更新 的第二多个分组中分组的目的地。根据屏幕区域在第二图形更新后的状态是否不 同于该屏幕区±或在第一图形更新后的状态,回放数据结构指示用于与包括影响该 屏幕区域的第二图形更新的第二多个分组中分组有关地呈现的时间间隔。
(292) 在一个实施例中,识别出第一多个分组中包含的图形更新。在另一 个实施例中,根据由识别出的多个分组中的各个分组存储的图形更新受影响的屏 幕区域被确定。在又一实施例中,存储受该图形更新影响的屏幕区域的副本。在 又一实施例中,时间间隔被定义以接近人类级别循环周期的用户上限。在进一步 的实施例中,回放数据结构表明以可感知方式呈现分组内容并将其呈送到缓冲 区。在又另一实施例中,回放数据结构表明将分组内容呈送到缓冲区。在有些实 施例中,后台协议弓l擎将这些指示存储在回放数据结构中。
(293) 如图26所示,用于去除交互序列的方法可以用于表示层协议数据 流。在有些实施例中,如上所述,该方法被用于表示层协议数据流的完整记录。 但在其它实施例中,该方法被用于表示层协议数据流的一部分,例如包括表示层 协议数据流的分组子集的第一多个分组。(294) 在呈现包括已经接收的第一多个分组和尚待接收的第二多个分组 的表示层助、议数据流中去除交互序列的方法,包掛艮据策略识别出由第一多个分 组中的至少一个分组表示的^S序列的开始的步骤。回放数据结构表明该^S序 列应该呈现到缓冲区。识别出交互序列的结束。交互序列的被识别的开始之前的 分组和交互序列的被识另啲结束之后的分组之间的第一时间间隔被识别出。回放 数据结构指示呈现比第一时间间隔短的第二时间间隔。
(295) 在呈现包括已经接收的第一多个分组和尚待接收的第二多个分组
的表示层协议数据流中去除交互序列的另一种方法,包括根据策略识别出由第一 多个分组中的至少一个分组表示的交互序列的开始的步骤。回放数据结构表明该 妊序列应该呈现至蟓冲区。接收第二多个分组中的分组。识别出由第二多个分
组中接收的分组所表示的交互序列的结束。^S序列的被识另啲开始之前的分组 和交互序列的被识另啲结束之后的分组之间的第一时间间隔被识别出。回放数据 结构指示呈现比第一时间间隔要短的第二时间间隔。
(296) 在一个实施例中,ilil识别可视标记,识另咄交互序列的开始。在 一个实施例中,可视标记包括以相同方式显示给所有会话的凭证窗口。在另一个 实施例中,可视标记包括由空白屏幕然后是由桌面背景对凭证窗口的代替。在一 个实施例中,可视^i己包括可识别图标的显示。
(297) 在有些实施例中,M确定交互序列的开始时间而识别出交互序列 的开始。在其中一个实施例中,由组件来检测交互序列中事件的开始时间。在其 中另一个实施例中,该组件检狈噔录序列的开始时间。在其中其它实施例中,该 组件检领i胜销序列的开始时间。在一个实施例中,对交互序列的开始的识别响应 于以输入焦点识别窗口。
(298) 在识别出的交互序列不应以可感知方式呈现的实施例中,交互序列 被呈送到缓冲区。将交互序列呈送到缓冲区导致所要呈现的用户不能感知交互序 列。对于由策略或用户将交互序列归为无意义的实施例来说,这个呈现导致了无 意义交互序列的消除。
(299) 在有些实施例中,通过识别可视^i己识别出交互序列的结束。在其 它实施例中,M确定交互序列的结束时间识别出交互序列的结束。在其中一个 实施例中,由组件检测出交互序列中事件的结束时间。在另一个实施例中,该组 件检测出登录序列的结束时间。在其中其它实施例中,该组件检测出注销序列的 结束时间。在另一个实施例中,识别交互序列的结束响应于以输入焦点识别窗口。
(300) 在有些实施例中,^5序列包括对应用的使用。在其中一个实施例中,由策略识别出包括应用的使用的^5序列不应以可感知方式呈现。在一个实
施例中,这些应用包括但不限于word处理文档。
(301) 在其中一个实施例中,通过识别出有输入焦点的应用而识别出交互 序列的开始。当分组的内容表示有焦点的窗口时,就确定了可靠创建该窗口的进 程的应用。在一个实施例中,表示有输入焦点的窗口的分组的内容包括表示输入 焦点的变化的窗口通知消息。如果可靠的应用识别出不应以可感知方式呈现的交 互序列的开始,就在回放数据结构中存储指示以将该交互序列呈送到缓冲区。通 过识别出不与交互序列的应用相关联的进程所拥有的窗口获得输入焦点而识别 出^S序列的结束。
(302) 在一个实施例中,第一时间间隔与交互序列相关联。在交互序列自
身不呈现的实施例中以可感知方式呈现与交互序列相关联的时间间隔导致用户 能够感知到在一段时间内没有显示数据呈现并且用户在交互序列之后的分组的 内容呈现之前要等待该段时间间隔。一个实施例通过呈现较短的时间间隔代替原 始时间间隔而去除与交互序列相关联的时间间隔。
(303) 在有些实施例中,协议引擎呈现第一多个分组中的至少一个分组的 内容,向用户提供第一多个分组的再生。在其中一些实施例中,协议引擎自动更 改呈现至少一个分组的内容之间的时间间隔,导致上下文相关的时间巻曲的回 放。在这些实施例中,呈现接近于用户理解呈现给用户的显示数据的能力。在一 个实施例中,当被策略所定义时,当助、议弓摩确定分组内容表示的显示数据具有 被增加级别的复杂度或重要性时,呈现分组内容之间的时间间隔增达。在另一个 实施例中,当被策略所定义时,当协议引擎确定分组内容表示的显示数据具有被 降低级别的复杂度或重要性时,呈现分组内容之间的时间间隔减小。在这些实施 例中,协议引擎接近用户理解显示数据的能力,并且呈现内容以或者用更慢地给 用户时间去理解该呈现,或者在用户需要较少的理解时间时更快地呈现该内容。
(304) 在有些实施例中,如前结合图27所述,用于呈现记录的计t^几会 话的方法提供自动的时间巻曲回放。这些方法还在实时表示层协议数据流的呈现 期间提供自动的时间巻曲回放,在实时表示层协议数据流中数据流所表示的会话 的记录是不完整的。
(305) 实时呈现包括已经由后台协议弓摩接收的第一多个分组和由后台 协议弓摩尚待接收的第二多个分组的表示层协议数据流中进行自动时间巻曲回 放的方法,包括由后台协议引擎接收表示显示数据的第一多个分组的步骤。后台 协议引擎决定第一多个分组中的至少一些分组表示的复杂度的量度。后台协议引擎识别出第一多个分组中至少一些分组之间的时间间隔。后台协议弓l擎根据记录 会话中的第一多个分组中的至少一些分组所表示的复杂度量度修改时间间隔。后 台协议弓l擎将修改后的时间间隔存储在回放数据结构中。前台协议弓l擎在表示层 协议数据流从第一装置到第二装置的传输期间根据回放数据结构呈现第一多个 分组。
(306) 在有些实施例中,图27中所述方法的步骤也被用来在表示层协议
数据流从第一装置到第二装置的传输期间根据回放数据结构呈现第一多个分组。
(307) 在其中一些实施例中,协议引擎通过识别出键盘输入中可能的m 序列而决定复杂度的難。在一个实施例中,协议引擎检查涉及的至少一种类型 的键以识别键盘输入中可能的键入序列。在另一个实施例中,助、议引擎检查呈现 的至少一个符号的序列以完成对键盘输入中可能的键入序列的启发式搏ffi。
(308) 在其中一些实施例中,协议引擎存储由键特征确定的键归类。键特 征包括但不限于可打印或不可打印字符、空格、导航键或功會織,并且它们这些 特征的组合。在一个实施例中,协议引擎决定包括可打印字符和偶尔出现的导航 键的输入段构成常规输入,而主要包括不可见键的输入段不构成常规输入。在一 个实施例中,幼议引擎根据识别出的空格数量确定复杂度的量度。在这个实施例 中,协议引飽括对word处理的定义,该定义表示在典型键入模式中平均约每 5-8个字符出现空格键。
(309) 在一个实施例中,幼议引擎使用不可打印字符的出现来决定复杂度 的量度。在另一个实施例中,协议引擎访问击键序列以识别在时间上一起出现的 非空格可打印字符的序列。在这个实施例中,助、议引擎包括比较击键序歹,字典 以识别有效单词并确定与用户理解有效单词相对无效单词的能力有关的复杂度 量度的功能。
(310) 在另一个实施例中,协议引擎决定分组内容包含呈现字符的命令。 在这个实施例中,协议引擎使用字符决定显示用户是否表,入的用户活动。在 这个实施例中,如果字符呈现速率接近键盘输AiI度但带有一个小小的延迟,很 可能是击键正在直接产生字符,因而极可能是用户正在输入。在一个实施例中, 协、议引擎将输入的键和产生的字符关联在一起。在另一个实施例中,幼、议引擎确 定呈现的字符的空间序列(从左至后,从右至左)以确定用户正在键入。在一个 实施例中,助、议引擎根据分析该多个分组的内容的结果并识别这些内容所表示的 模式和活动而决定复杂度的量度。
(311) 在其它实施例中,协议引擎根据对鼠标输入类型的识别而决定复杂度的量度。在一个实施例中,协议引擎决定表示鼠标点击的鼠标输入导致需要较 慢的呈现速率以让用户理解,尤其题艮随在一系列键A^后的点击。在另一个实 施例中,助议引擎决定不表示鼠标点击的鼠标输入不影响用户理解显示数据的能 力,因而不影响复杂度的雖。
(312) 在其它实施例中,协议引擎根据识别图形更新复杂度的启发式祥ffi 决定复杂度的量度。在一个实施例中,协议引擎根据(但不限于)正在被更新的 区域大小、由图形命令改变的区域的面积大小、对单独区域的更新的历史频率、 循环图形命令、图形命令的数量、图形命令的频率、其内容包含图形命令的相邻 分组之间的时间间隔或者图形更新的类型识别出图形更新复杂度的启发式渐近。 在一种协议弓l擎识别出图形更新的低复杂度的实施例中,协议引擎确定包含图形 更新的分组所表示的低复杂度的量度。在协议引擎识别出图形更新的高复杂度量 度的实施例中,协议弓l擎确定包含图形更新的分组表示的高复杂度的量度。
(313) 在多个分组中至少有一些分组的内容表示与高复杂度量度相关联 的显示数据的实施例中,协议引擎增加分组间的时间间隔以允许用户有增加的呈 现时间理解呈现的显示数据。在多个分组中至少有一些分组的内容表示与低复杂 度量度相关联的显示数据的实施例中,协议弓l擎縮短分组间的时间间隔以反映用 户需要减少的时间来理解所呈现的显示数据。在一个实施例中,用户需要所呈现 的分组内容之间具有不同于由幼议弓摩所呈现的时间量。在这个实施例中,用户 修改时间间隔以反映用户理解呈现的显示数据所需的时间量。在有些实施例中, 协议弓l擎还识别出多个分组中至少一些分组与该多个分组中其它分组之间的时 间间隔,修改在那些分组集合之间识别的时间间隔。
(314) 在有些实施例中,协议引擎识别出与第一多个分组中的分组相关联
的第一*射己。在一个实施例中,分组包括^H己。在另一个实施例中,戶;n己录的会
话包括标记。
(315) 在一个实施例中,显示数据的呈现的用户定义标记。在另一个实施 例中,协议引擎定义标记。在协议弓摩识别出标己的实施例中,协议引擎根据第 Hfi己修改时间间隔。在一个实施例中,协议弓摩增加时间间隔,该时间间隔以 向显示数据的呈现的用户提供更多时间以理解与第一^i己相关联的分组的内容。 在其它实施例中,助议弓摩识别出第二分组中的第二标记。在这个实施例中,协 议弓摩根据第一*射己和第二标记之间的距离修改时间间隔。在这个实施例中,协 议弓摩为理解所标记的分组的内容表示的显示数据掛共增加的时间,并为理解未 标记的分组的内容表示的显示数据掛共减少的时间。在一个实施例中,用户为用户感兴趣的显示数据定义标记,当被*射己所决定时,协议引擎为用户感兴趣的显 示数据呈现额外的时间,而为用户不感兴趣的显示数据呈现减少的时间。
(316) 在一个实施例中,协议引擎识别多个分组中至少一些分组中的第一 标己,所述标记表示该多个分组中至少一些分组中的起始分组。协议引擎根据第 一标己修改时间间隔。协议弓摩识另咄多个分组中至少一些分组中的第二分组的 第二iH己,所述第二fei己表示该多个分组中至少一些分组中的结束分组,协议引
擎还根据第一^i己和第二^H己之间的时间间隔修改时间间隔。
(317) 在一个实施例中,协议引擎还根据与修改后的时间间隔有关的回放
数据结构指令呈现多个分组。在另一个实施例中,由各自的前台协议弓摩呈现多 个分组。
(318) 在有些实施例中,确定了有应用的记录交互需要增加的呈现时间以 向所要呈现的用户提供增加的时间理解所呈现的显示数据。在其中一些实施例 中,确定了需要增加的时间的应用包括比不需要增加的时间的应用更重要的应 用。在其中一个实施例中,用户做出该决定。在其中另一个实施例中,由策略做 出该决定。在其中又另一个实施例中,助、议引,括对需要增加的时间的应用的 定义。
(319) 如结合图28所述,在呈现记录的计算机会话中, 一种方法可以根 据识另咄的应用掛共自动的时间巻曲回放。同样,该方法在呈现一部分未完全记 录的表示层幼、议数据会话或者正在被记录中的表示层协议数据会话中根据识别 出的应用提供自动的时间巻曲回放。
(320) 实时呈现包括已经接收的第一多个分组和尚待接收的第二多个分 组的表示层协议数据流中的自动时间巻曲回放的方法包括接收表示显示数据的 第一多个分组的步骤。识别出第一多个分组中其内容表示拥有焦点的窗口的第一
分组,戶;M窗口表示应用。识别出第一多个分组中的第二分组(其内容在第一分
组内容的呈现之前呈现)和第一多个分组中的第三分组(其内容在第一分组内容 的呈现之后呈现)之间的时间间隔。根据所表示的应用修改识别出的时间间隔。 在表示层协议流从第一装置到第二装置的传输期间,根据该修改呈现第一多个分 组中的至少一个分组。
(321) 在一个实施例中,对识别出的时间间隔的修改包括对识别出的时间 间隔的增力[]。在另一个实施例中,对识别出的时间间隔的修改包括对识别出的时 间间隔的减少。在又一个实施例中,第一多个分组中的至少一个分组被呈送到缓 冲区。在又一个实施例中,第一多个分组中的至少一个分组不仅被呈送到缓冲区而且还被以可感知方式呈现。
(322) 如前结合图29所述,系统可以在呈现记录的计tm会话中提供自
动的时间巻曲回放。这些系统还可以在呈现包括己经被幼议引擎接收的第一多个 分组和尚待被协议弓l擎接收的第二多个分组的表示层协议数据流中提供自动的 时间巻曲回放。根据接收第一多个分组产生回放数据结构的协议引擎,在表示层 协议数据流从第一装置到第二装置的传输期间根据产生的回放数据结构呈现第 一多个分组中的至少一个分组。
(323) 在一个实施例中,协议引擎在回放数据结构中存储至少一个用于呈 现第一多个分组附旨令。在另一实施例中,协议引擎将元数据存储在回放数据结 构中。在又一实施例中,协议弓l擎不仅以可感知方式呈现第一多个分组中的至少 一个分组,而且还将其呈送到缓冲区。在又一个实施例中,幼议引擎将第一多个 分组中的至少一个分组呈送到缓冲区。在进一步的实施例中,第二协议引擎根据 产生的回放数据结构呈现第一多个分组中的至少一个分组。
(324) 在有些实施例中,表示涉及向客户端或另一服务器掛共表示层协议 数据的服务器。在其中一个实施例中,该服务器执行应用并向客户端或另一服务 器提供产生的应用输出数据。在其中另一个实施例中,服务器掛共对与资源(例 如多个应用、桌面环境或其它计算环境)相关或由该资源产生的表示层协议数据 的访问。在其中又一个实施例中,服务器^j共会话(例如资源的执行)的表示层 协议数据,会话执行在虚拟机中,该虚拟机执行在管理程序中,该管理fii^m行 在终端服务会话中,该终端服M话执行在服务器上。在其中又一个实施例中, 执行掛共对会话的访问的虚拟机的服务器将表示层幼、议数据发送到第二服务器, 该第二服务器执行终端服务会话并将接收的数据转发到客户端。在其中又一个实 施例中,该服务器将执行在虚拟机中的会话的表示层协议数据樹共给拥有表示层 协议栈并将数据转发给客户端的第二服务器。
(325) 在表示层协议会话记录正在被记录时观看它的能力增强了用于先 前记录的会话的回放的系统和方法。它增强了这样的系统和方法作为市场领导监 控和监视解决方案的地位,并提供了进入支持/帮助市场的重要途径。
(326) 上述系统和方法可以被提供为实体化在一种或多种制造物品之上 或之内的一个或多个计算机可读程序。制造物品可以是软盘、硬盘、光盘、数字 多功能光盘、闪存卡、PROM、 RAM、 ROM或磁带。 一般来说,该计算机可读 程序可以用任何编程语言实现。可以使用的语言的一些例子有C、 C抖、C弁或 JAVA。该软件程序可以作为目标代码被存储在一个或多个制造物品之上或之内。
(327)已经说明了用于表示层协议数据的记录和实时回放的方法和系统 的特定实施例,现在本领域的技术人员将明了也可以使用弓l入了本发明的概念的 其它实施例。因此,本发明不应受限于特定实施例,而是仅受下面的权利要求的 精神和范围限制。
权利要求
1.一种用于表示层协议数据的记录和实时回放的方法,该方法包括下列步骤(a)在表示显示数据的表示层协议数据流从第一装置到第二装置的传输期间由记录器拦截包括多个分组的表示层协议数据流;(b)由分发器发送所述表示层协议数据流中的至少一个分组的副本;(c)由协议引擎使用与该至少一个复制的分组相关联的信息再生由该至少一个复制的分组表示的显示数据;(d)重复步骤(a)和(b)直到所述第一装置完成至所述第二装置的协议数据流的传输。
2. 权利要求1的方法,其中步骤(a)还包括由所述记录器在基本与所述第一装aa送表示层协议数据流到所述第二装置的同时拦截表示层协议数据流。
3. 权利要求1的方法,其中步骤(a)还包括拦截虚拟信道。
4. 权利要求1的方法,其中步骤(b)还包括由所述记录器存储表示层协议数据 流中至少一个分组的副本。
5. 权利要求1的方法,其中步骤(b)还包括由所述记录器将该至少一个复制的 分组发送到分发器。
6. 权利要求1的方法,其中步骤(b)还包括由所述记录器将该至少一个复制的 分组存储在缓冲区中。
7. 权禾腰求6的方法,其中步骤(b)还包括由所述记录器将缓冲区中存储的多 个分组发送到分发器。
8. 权利要求1的方法,其中步骤(b)还包括由所述分发器从存储装置检索表示 层协议数据流的至少一个分组的副本。
9. 权利要求1的方法,其中步骤(b)还包括当所述表示层助、议数据流的分组包 含数据时决定复制该分组。
10. 权利要求1的方法,其中步骤(b)还包括根据策略决定复制表示层协议数据 流的分组。
11. 权利要求l的方法,还包括存储所述表示层协议数据流的记录的步骤。
12. 权禾腰求1的方法,其中步骤(b)还包括将时间戳与该至少一个复制的分组 相关联。
13.权利要求12的方法,其中步骤(b)还包括将相关联的时间戳^A戶腿表示 层助议数据流的记录中。
14. 权利要求1的方法,其中步骤(b)还包括将数据长度指示符^A戶,表示层 协议数据流的记录中。
15. 权禾腰求1的方法,其中步骤(c)还包括在接收该至少一个复制的分组时使用该至少一个复制的分组。
16. 权利要求1的方法,其中步骤(c)还包括在接收再生由该至少一个复制的分组表示的显示数据的请求时使用该至少一个复制的分组。
17. 权利要求1的方法,其中步骤(d)还包括由所述记录器使用多个复制的分组 创建表示层协议数据流的记录。
18. 权利要求1的方法,其中步骤(d)还包括重复步骤(c)直到戶腐协议弓摩 已经再生由接收的复制的分组表示的显示数据。
19. 一种用于表示层协议数据的记录和实时回放的系统,包括记录器,用于在表示层协议数据流从第一装置到第二装置的传输期间拦截表示层协议数据流,所述表示层协议数据流表示显示数据并且包括多个分组; 分发器,用于发送戶脱表示层协议数据流的至少一个分组的副本;禾口 协议引擎,用于与所述分发器通信,使用与该至少一个复制的分组相关联的信息再生由该至少一个分组表示的显示数据;其中所述记录器继续拦截表示层协议数据,所述分发器继续发送所述表示层协议数据流的至少一个分组的副本,直到所述第一装置完成至所述第二装置的协议数据流的传输。
20. 权利要求19的系统,其中所述记录器还包括用于从所述表示层幼、议数据流复 制至少一个分组的装置。
21. 权利要求19的系统,其中所述记录器还包括用于拦截虚拟信道的装置。
22. 权利要求19的系统,其中所述记录器还包括用于由戶腐记录驗基本与所述 第一装置传输所述表示层协议数据流到所述第二装置的同时拦截表示层协议数 据流的装置。
23. 权利要求19的系统,其中所述记录器还包括用于存储该至少一个分组的缓冲 区。
24. 权利要求19的系统,其中所述记录器还包括用于将该至少一个分组存储到存 储装置的装置。
25. 权利要求19的系统,其中所述记录器还包括用于将该至少一个分组和时间基 准关联在一起的装置。
26. 权利要求19的系统,其中所述记录器还包括用于将该至少一个分组和数据长度指示符关联在一起的装置。
27. 权利要求26的系统,其中数据长度表示分组中数据的长度。
28. 权利要求19的系统,其中所述记录器位于所述第一装置上。
29. 权利要求19的系统,其中戶舰记录器位于所述第二装置上。
30. 权利要求19的系统,其中所述记录器位于第三装置上。
31. 权利要求19的系统,其中戶脱记录器位于代理服务器上。
32. 权利要求19的系统,其中戶脱记录淛立于直通服务器上。
33. 权利要求19的系统,其中所述记录器位于网络分组监听器上。
34. 权利要求19的系统,其中所述记录器还包括用于创建表示层协议数据流的记 录的记录发生器。
35. 权利要求19的系统,其中所述记录器还包括用于获取该至少一个分组的副本 的收发器。
36. 权利要求19的系统,其中所述分发器还包括用于将该至少一个分组的副本发 送到戶脱协议弓摩的收发器。
37. —种用于在表示层协议数据流的实时回放期间实时搜索的方法,该方法包括 下列步骤(a) 由前台协议弓l擎接收用于呈现包括已经接收的第一多个分组和待要接 收的第二多个分组的表示层助、议数据流中的分组内容的请求;(b) 由所述前台协议弓l擎识别出其相关时间戳在船青求的分组之前的状态 快照;和(c) 由所述前台助、议弓l擎在所述表示层助、议数据流从第一装置至U第二装置 的传输期间根据识别出的状态快照显示戶斥请求的分组。
38. 权禾腰求37的方法,其中步骤(c)还包括将该状态快照和附青求的分组之 间的中间分组的内容呈送到缓冲区。
39. —种用于产生能够在表示层幼议数据流的实时回放期间进行实时搜索的状态 快照的方法,所述表示层助、议数据流包括已经被后台协议弓l擎接收的第一多个分 组和尚待被所述后台幼、议弓l擎接收的第二多个分组,该方、法包括下列步骤(d) 由所述后台协议弓l擎在所述表示层协议数据流从第一装置至U第二装置 的传输期间接收所述第一多个分组;(e) 由所述后台幼、议弓l擎产生由所述第一多个分组表示的显示数据;(f) 由所述后台协议弓l擎在读取所述第一多个分组中的至少一个分组期间 产生至少一个状态快照;(g) 由戶满后台助议引擎存储戶腿产生的状态快照;(h) 由所述后台协议弓l擎根据接收戶/M第二多个分组中的至少一个分组修 ,示数据的再生和该至少一个状态快照。
40. 权禾腰求39的方法,其中步骤(c)还包括在基本与所述第一多个分组的表示同时产生戶; ^至少一个状态快照。
41. 权利要求39的方法,其中步骤(c)还包括由所述后台协议引擎在戶皿第一 多个分组的顺序读取期间产生至少一个状态快照。
42. —种用于在包括已经被后台协议弓l擎接收的第一多个分组和尚待被所述后台 协议引擎接收的第二多个分组的表示层协议数据流的实时回放期间进行实时搜 索的系统,包括后台协议弓l擎,用于在所述表示层协议数据流从第一装置到第二装置的传 输期间接收所述第一多个分组;状态快照,其由所述后台协议引擎产生,包括在记录器从所述表示层协议 数据流复制分组到所述第一多个分组中的时间点时呈现所述表示层协议数据流 的协议引擎的状态;前台助、议引擎,用于接收所述第一多个分组,呈现所述第一多个分组的内 容,接收搜索由所述第一多个分组中的分组内容表示的显示数据的请求,并使用戶;M状态快照呈现表示戶;fi青求的显示数据的内容;其中所述后台协议引擎根据接收所述第二多个分组中的至少一个分组更新 所述状态快照。
43. 权利要求42的系统,其中所述状态快照还包括描述某个时间点上屏皿态的 数据结构。
44. 权利要求42的系统,其中所述状态快照还包括维护可视界面的状态。
45. 权利要求42的系统,其中戶脱状态快照还包括维护离屏界面的状态。
46. 权利要求42的系统,其中所述状态快照还包括维护绘画对象的状态。
47. 权利要求42的系统,其中戶脱状态快照还包括维护调色板的状态。
48. 权利要求42的系统,其中所述状态快照还包括维护缓存7豫的状态。
49. 权利要求42的系统,其中所述状态快照还包括维护缓冲区的状态。
50. 权利要求42的系统,其中所述前台协议弓i擎还包括产生所述第一多个分组的 以呈现给用户的实时可感知表示。
51. 权利要求42的系统,其中所述前台协议弓l擎还包括产生所述第一多个分组的 以呈现给用户的实时可视表示。
52. 权利要求42的系统,其中所述前台协议弓l擎还包括产生戶;M第一多个分组的以呈现给用户的实时可听表示。
53. —种用于状态快照的自适应产生的方法,该方法包括下列步骤(a) 在表示层幼、议数据流从第一装置到第二装置的传输期间,将包括已经 被后台协议弓l擎接收的第一多个分组和尚待被所述后台协议弓l擎接收的第二多 个分组的所述表示层协议数据流的表示呈现给用户;(b) 由所述后台协议弓l擎在呈现期间监控所述用户的活动;(c) 由戶脱后台幼议弓摩根据对戶腿$薛力的监控开发出活动特征;(d) 由所述后台协议弓摩根据戶皿活动特征产生至少一个状态快照;(e) 由所述后台协议弓l擎根据接收所述第二多个分组中的至少一个分组修 ^^ra至少一个状态快照。
54. 权利要求53的方法,其中步骤(b)还包括由所述用户识别不活动期间。
55. 权利要求53的方法,其中步骤(c)还包括识别搜索概率的统计分布。
56. 权利要求55的方法,其中步骤(d)还包括根据所述搜索概率的统计分布产生戶;M至少一个状态快照的步骤。
57. 权利要求53的方法,其中步骤(c)还包括为所述用户的使用模式开发出活 动特征。
58. 权利要求53的方法,其中步骤(d)还包括决定延长一个或多个状态快照之 间的间隔。
59. 权利要求53的方法,其中步骤(d)还包括决定縮短一个或多个状态快照之 间的间隔。
60. 权利要求53的方法,其中还包括由所述后台协议弓摩根据戶/M活动特征决定 去除戶,至少一个状态快照的步骤。
61. 权利要求53的方法,其中还包括由所述后台协议弓摩根据所述活动特征决定 添加至少一个状态快照的步骤。
62. —种用于状态快照的自适应产生的系统,包括后台协议引擎,用于在表示层协议数据流从第一装置至'j第二装置的传输期 间,将包括已经被后台协议弓l擎接收的第一多个分组和尚待被所述后台协议弓l擎 接收的第二多个分组的表示层协议数据流的表示呈现给用户;后台协议引擎,用于在表示期间监控所述用户的活动并产生状态快照;以及活动特征,其由所述后台幼、议引擎决定;其中所述后台协议引擎根据接收所述第二多个分组中的至少一个分组修改 所述状态快照和所述活动特征。
63. 权利要求62的系统,其中所述后台协议引擎根据戶,监控决定所述活动特征。
64. 权利要求62的系统,其中所述后台协议引對艮据所述活动特征维护所述状 态快照。
65. 权利要求62的系统,其中所述活动特征识别使用模式。
全文摘要
一种方法包括由记录器在表示层协议数据流从第一装置到第二装置的传输期间拦截包括多个分组并表示显示数据的上述表示层协议数据流的步骤。协议引擎使用与至少一个复制的分组相关联的信息再生由至少一个复制的分组表示的显示数据。另一方面,前台协议引擎接收用于呈现包括已经接收的第一多个分组和尚待接收的第二多个分组的表示层协议数据流中的分组内容的请求。前台协议引擎在表示层协议数据流从第一装置到第二装置的传输期间,根据识别出的其相关时间戳在所请求的分组的时间戳之前的状态快照显示请求的分组。
文档编号H04L12/26GK101563907SQ200780047081
公开日2009年10月21日 申请日期2007年10月18日 优先权日2006年10月20日
发明者P·赖曼 申请人:思杰系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1