交替图形集的高效编码的制作方法

文档序号:6454225阅读:168来源:国知局
专利名称:交替图形集的高效编码的制作方法
交替图形集的高效编码相关申请交叉参照 不适用背景随着计算机化系统的日益流行,对在大型和小型网络内分发计算机系统的 文件和处理资源的需要也日益增加。 一般而言,计算机系统和相关设备经由网 络传送信息是出于各种原因,例如交换个人电子消息、出售商品、提供帐户信 息等。然而人们会认识到,随着计算机系统及其相关应用程序变得愈发复杂, 与网络上数据和资源共享相关联的各种挑战也增加了。某些用于在组织网络内分发资源的现有方法可能涉及集中式服务器(或本 地设备)与通常本地没有安装资源的一个或多个客户机(或远程设备)共享这些资源。这些系统一般使用诸如远程桌面协议("RDP")、独立计算体系结 构(ICA)以及其它等专用协议来与远程客户机共享各种应用程序。有了这些 协议,客户计算机系统可以访问集中式网络服务器,后者主存感兴趣的资源, 并且正如这些资源是本地安装的那样与这些资源交互(例如,发送鼠标和键盘 事件等)。而网络服务器进而处理这些交互,创建该数据的相应描绘信息,并且将经 处理的数据和所创建的描绘信息两者都发送回客户机。客户计算机系统随后接 收这些数据和描绘信息,并使用客户侧的视频驱动程序来本地描绘和显示接收 到的数据。理想地,客户计算机系统和网络服务器之间的这一交互会无缝地发 生,就好像该客户计算机系统已经用其自身安装的资源来实际上本地处理这些 数据那样。不幸的是,这些系统会受到网络吞吐量的限制,在负荷过重时,这 可能会导致本地客户计算机系统在交互和处理方面所查看的之间有所"滞后"。在大多数方面与上述集中式共享模型类似的另一类系统涉及广播(或"发 送")客户计算机系统,它被配置为向网络上的其他接收客户计算机系统发送
窗口数据信息。这一特征有时还被称为"桌面共享"。在此示例中,广播计算 机(例如,在学习环境中的"指导者")和接收计算机系统(例如,"学生") 使用允许共享桌面视图和在指导者计算机处本地安装的应用程序的公共安装 的应用程序来进行连接。类似于集中式计算系统的场景,客户计算机系统可能 能够像这些窗口是学生计算机自己的窗口那样来与指导者计算机处显示的窗 口交互。由于位图在通过网络连接(例如,因特网)发送时在带宽消耗方面是昂贵 的,因此现今的大多数系统(诸如上述系统)发送图形基元和其它操作而非发 送整个位图,这些图形基元和其它操作告知客户机侧的子例程要画什么以及如 何画。例如,客户机可被告知要画矩形,以及关于应在何处画矩形、什么大小、 颜色等的信息。例如,可使用矩形来为用户界面画按钮、文档周围的边框、或 矩形形状可能有用的任何其它目的。当然,有许多可以用作基元的其它形状和 操作,这些形状和操作可能更复杂且需要必须完成以便传送和在远程客户机上 执行操作的更多处理。尽管以上对基元的使用增强了联网系统的无缝性,但是随着应用程序持续 获得更复杂的图形界面以及其它显示,以上基元的使用也变得需要更密集的处 理。此外,从本地发送给远程设备的用于在客户机处的显示器上描绘图形的信 息通常以即时呈现模式使用,其中各平铺的窗口会导致图形信息的丢失。例如, 使用即时呈现模式,就只有绘制窗口的可见部分所需的信息可用。换言之,没 有为被其它窗口覆盖的背景中的窗口部分保留图形信息一即,仅为顶层窗口保 留了图形信息。因此,当一窗口移至前景时,就需要新的信息来绘制该窗口。 由于上述图形复杂度的增加,这一连续不断的信息发送在需要频繁的更新时可 能会使系统负担过重一例如,当混洗、旋转和重排窗口的时候。这还会提出与 更复杂的动画相关的各种挑战。简要概述以上标识的现有网络的缺陷和不足通过本发明的示例性实施例得以克服。 例如,此处所描述的各实施例提供了用于为在本地设备上执行、但在远程设备 上显示的应用程序高效地编码并使用资源的机制。注意到提供本概述以便用简 化的形式介绍将在以下详细描述中进一步描述的一些概念。该概述不旨在标识 所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护 的主题的范围。一个示例实施例提供了一种通过确定适当的编码机制而不管所使用的图 形语言的类型是什么,来为在本地设备上运行的应用程序高效地对图形对象进 行编码以便显示在远程设备上的机制。该机制能够在本地设备上执行应用程 序,其中每一应用程序基于一特定的图形语言生成图形显示以便在远程设备上显示。此外,接收关于一特定图形语言的图形集,该图形集包括用于为该应用 程序描绘该图形显示的至少一部分的资源和/或命令。还接收的有包括用于以下 各项的信息的编码数据(1)描述图形集内的字段内容的元数据,用于帮助数 据压縮模块在图形集处于普通形式时更高效地压縮图形集;和/或(2)描述远程 设备所支持的数据压縮机制的编码类型数据,用于为图形集选择高效的压縮类 型。基于所接收的编码数据,为图形集的各部分确定适当的编码机制。其它示例实施例能够通过确定应用程序的什么(如果有)资源应被发送到 远程设备来为运行在本地设备上的应用程序在远程显示设备上高效地描绘图 形对象。在此实施例中,应用程序也在本地设备上执行,每一应用程序生成用 于发送到远程设备的图形显示。然后接收包括资源和/或显示命令的图形集,该 图形集可用于描绘该应用程序的图形显示的至少一部分。还接收的有包括用于 以下各项的信息的资源数据(1)传送状态信息,用于确定对应于图形集的资 源是否已被发送到远程设备并出于可重用性的目的被储存在中央高速缓存中, 而不管所储存的资源的类型如何;(2)支持的应用程序信息,用于确定当前在 远程设备上可用的专用资源以便为应用程序在远程设备上显示资源,而无需从 本地设备传输资源;(3)系统限制数据,用于确定资源的(诸)部分是否应被 逐步发送到远程设备以使全部资源的降级版本首先被发送,而改进该降级版本 的更新随后被发送,以节省带宽或其它系统限制;和/或(4)可见性信息,它描 述对应于图形集的资源当前是否可被远程设备处的用户看见。基于所接收的资 源信息,选择图形集的(诸)部分来进行编码。另一示例实施例能够为在本地设备上执行的应用程序高效地同步在生成 远程设备上的图形显示时使用的描绘数据结构。在此实施例中,类似于其它实
施例,应用程序在本地设备上执行,每一应用程序生成一特定图形语言的描绘 数据结构,该数据结构是维护关于资源的状态并且用于在远程设备上组成应用 程序的图形显示的保留模式数据结构。之后,接收包括对应于特定图形语言并 用于修改描绘数据结构的资源和/或显示命令的图形集。此外,接收包括关于图 形集的字段描述的元数据,以便帮助数据压縮模块标识该数据压縮模块可以更 容易地识别和适当地编码的、用于不同图形语言的图形集中共同的字段的结构 类型。基于所接收的元数据,对图形集的字段进行编码以便发送到远程设备并 在本地和远程设备之间同步描绘数据结构,该数据结构用于为应用程序在远程 设备处组成图形显示。本发明的附加特征和优点将在以下描述中叙述,且其部分根据本描述将是 显而易见的,或可通过对本发明的实践领会。本发明的特征和优点可通过在所 附权利要求书中特别指出的手段和组合来实现和获得。本发明的这些和其他特 征将通过以下描述和所附权利要求书变得更加完全明显,或可通过对下文中所 述的本发明的实践来领会。附图简述为了描述可获得本发明的上述和其他优点特征的方式,将通过引用附图中 示出的本发明的特定实施例来呈现以上简要描述的本发明的更具体描述。可以 理解这些附图仅描述本发明的典型实施例,从而不因此被认为是对其范围的限 制,本发明将通过使用附图用附加特征和细节来描述和说明,附图中

图1A示出了根据各示例实施例的使用各种信息来对用于在远程设备处描 绘显示的图形集高效地编码的分布式系统;图1B示出了根据各示例实施例的利用关于各种资源的信息来确定应编码 资源的什么部分(如果有)以便发送到远程设备的分布式系统;图1C示出了根据各示例性实施例的可在远程设备上获得并使用以便不从 本地设备传输资源的某些专用资源或图标;图1D示出了根据各示例实施例的用于通过用部分发送的资源来描绘来改 进响应性的机制;图2示出了根据各示例实施例的用于对图形对象高效地编码以便在远程
设备上显示的方法的流程图;图3示出了根据各示例实施例的用于在远程显示设备上高效地描绘图形 对象的方法的流程图;以及图4示出了根据各示例实施例的用于高效地同步在生成远程设备上的图 形显示时使用的描绘数据结构的方法的流程图。详细描述本发明延及用于高效地遥控在远程设备处描绘本地应用程序的显示时使 用的图形集的方法、系统和计算机程序产品。本发明的实施例可以包括含有各 种计算机硬件或模块的专用或通用计算机,这将在以下做出进一步讨论。作为正文前的预备,应该认识并理解此处的示例和描述出于方便会在各实 现中对MICROSOFTTM术语进行引用。然而,对特定术语的这些引用不应被解 释为将此处的实施例限于特定的操作或其它类型系统。相反地,在此描述的基 本功能可以在其中期望使用在此描述的功能的任何计算环境或操作系统中实 践。如先前提到的,上述现有网络的远程图形显示的缺点和不足通过此处所提 供的示例性实施例而得以克服。例如, 一个实施例提供了字段编码,它是用于 标识用于特定图形语言的图形集的字段,使得能标识各字段跨不同图形语言的 共同性的机制。 一旦被标识,可对图形集的字段内跨各种数据类型的相关联的 冗余性或所标识的共同性进行高效的编码。例如,字段之间的冗余性或共同性 可以通过应用以下技术中的一种或多种来消除或高效地压縮(l)基于为字段提供的元数据或其它信息在机器格式和网络格式之间的字段转换;(2)以可变长 度(例如,2/3/4字节编码)的字段编码;(3)增量编码,这通常用于编码坐标 数组,其中一点可被编码为相对于该数组中的先前的点的增量,并且增量可以 用少于绝对坐标的字节来表示;(4)命令间压縮(inter-order compression),其 用于基于特定类型的先前已编码的结构来编码同一类型的结构。注意,上述机 制当前可以在其它协议(例如,远程桌面协议(RDP))中应用;然而,此处 所提供的实施例将字段编码扩展到除了图形设计接口 (GDI)之外的其它图形 语言一例如,Windows表示基础(Windows Presentation Foundation, WPF)信 息。在另一实施例中,提供资源高速缓存,使得不同种类的资源在希望储存它 们时将以同类方式来处理它们。尽管现有机制(诸如RDP)允许将资源储存在 客户机上以便通过在稍后的操作或命令中重复使用它们来节省带宽,但是本发明扩展了该高速缓存机制以在其它图形语言(例如,除了GDI之外,如WPF) 中使用。例如,现有机制将各种类型的资源(例如,字形、位图、子画面等) 储存在分开的高速缓存中,由此对资源重用提供了不可扩展的方法。因此,各 实施例提供了一种更通用且可扩展的机制,该机制为所有资源提供一中央高速 缓存,而不管其类型如何。由此,资源可以在描绘数据结构内或甚至跨用于不 同应用程序的数据结构被使用多次,且因此资源仅需被发送给远程设备一次并 跨各种合成子结构(例如,子树)来使用。在又一实施例中,用于远程资源或图形集内的其它项目的编码或压縮的类 型可以基于远程设备支持的压縮机制的类型来确定。在这一情况下,可用压縮 机制可以在连接时在客户机(即,远程设备)和服务器(即,本地设备)之间 协商;然而,服务器用于压縮资源的确切的压缩机制将在本地设备压縮时决定。 因此,本地设备将基于每一格式能有多好地压縮给定数据来选择协商的格式之 一。例如, 一种压縮类型可以是能在单个资源上使用各种压縮技术。所得的最 高效地减少数据量的压縮机制然后可用于将资源(或其它数据)发送到远程设 备。注意,本地服务器可以基于要压縮的各种资源或其它数据来选择无损或有 损压縮格式。再有一些示例实施例能够通过用部分发送的资源来描绘来改进响应性。因 此,基于诸如带宽或显示设备限制等各种系统限制,可以发送资源的部分以及 完整的描绘命令以供应用程序来描绘一些有意义的内容。例如,位图或其它资 源可包含用这一渐进技术压縮的图像。在这一情况下,彩色图像最初可能是不 准确的,因为并非所有解压完整图像所需的数据都已到达客户机处。然而,远 程设备可使用模糊图像或其它降级图像来进行最初的描绘。作为示例,应用程序的按钮可具有非常不准确的颜色,但仍以足够好的方 式表示了按钮以允许用户与该按钮交互而无需等待其最终版本。随着来自图像 的更多数据从网络到达,远程设备可以更新该图像并且重新描绘数据结构中包
含该图像的部分。以此方式,用户所感知到的响应性显著提高,这仅仅是因为 在大多数情况下用户可在没有更新全部图像数据的情况下使用该应用程序。注 意,利用了对色彩降级机制的使用;然而,还可使用任何种类的渐进编码或交错机制。还要注意,这一渐进或交错机制不仅可以被应用于位图或其它类似的 资源,而且还可以对具有诸如曲线或网格等各种阵列的图像起到良好的作用。 在再一示例实施例中,提供了一种用于确定应将图形集的什么部分(如果 有)发送到远程设备以及以什么次序发送的机制。例如,通常图形显示或资源的部分可能对用户不可见。因此,诸如z顺序、透明度、最小化/最大化状态等东西在确定应用程序或其资源是否将产生对用户可见的输出时将扮演有效 的角色。只要应用程序或其资源不可见,就不必遥控该应用程序的内容或资源, 直到稍后的时间。因此,更新可被延迟到带宽允许之后。此外,本地服务器可 以基于这一可见性信息对描绘数据结构或显示的什么部分将被发送到远程设 备区分优先级。还有一些实施例能够使用远程设备上的专用资源来消除在描绘这些资源 时在本地设备和远程设备之间的资源传输。例如,在其中遥控图形数据的大多 数情况下,如边框、标题栏和/或其它图标等资源同时存在于服务器和远程计算 机两者上。例如,如果远程和本地服务器都安装了相同(或相似)的应用程序, 则有可能用于本地应用程序的图标将存在于用于远程侧上的应用程序的二进 制码的资源部分中。在这一情况下,本地设备能够指示远程设备使用这各种资 源,而无需服务器或本地设备发送用于这些资源的资源字节。虽然如下将参考附图对有利特征的更特定引用进行更为详尽的描述,但是 本发明范围内的各实施例还包括用于载有或在其上存储计算机可执行指令或 数据结构的计算机可读介质。这样的计算机可读介质可以是可由通用或专用计 算机访问的任何可用介质。作为示例而非限制,这样的计算机可读介质可包括RAM、 ROM、 EEPROM、 CD-ROM或其它光盘存储、磁盘存储或其它磁存储 设备、或可用于承载或存储计算机可执行指令或数据结构形式的所需程序代码 装置且可由通用或专用计算机访问的任何其它介质。当信息通过网络或另一通 信连接(硬连线、无线或硬连线或无线的组合)传输或提供给计算机时,该计 算机将该连接适当地视为计算机可读介质。因此,任何这样的连接被适当地称
为计算机可读介质。以上的组合也应包括在计算机可读介质的范围之内。
计算机可执行指令包括例如,使通用计算机、专用计算机、或专用处理设 备执行某一功能或某组功能的指令和数据。尽管用对结构特征和/或方法动作专 用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于 上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例
形式公开的。
如此处所使用的,术语"模块"或"组件"指的是在计算系统上执行的软 件对象或例程。此处描述的不同的组件、模块、引擎和服务可被实现为在计算 系统上执行的对象或迸程(例如,作为分开的线程)。尽管此处描述的系统和 方法可用软件较佳地实现,但用硬件或软件和硬件的组合的实现也是可能的且 己被想到。在此描述中,"计算实体"可以是如上文定义的任何计算系统,或 者是在计算系统上运行的任何模块或模块的组合。
图1A示出了用于为本地设备上的应用程序远程地显示图形信息的分布式
系统。如图所示,应用程序115可以在本地设备105上执行,而其显示旨在供 远程设备110使用。注意,应用程序115可以是诸如文本编辑器、电子表格应
用程序或任何其它公知的应用程序等众多应用程序中的任一种。此外,用于远
程设备IIO和本地设备105的环境可以是演示类型环境(例如,先前描述的桌 面共享),或其中远程设备110期望执行本地设备105处的应用程序115,但 从本地设备105网络外部的远程设备IIO査看并控制应用程序的联网系统。由 此,本地设备105和远程设备110之间的通信可以穿过任何公知的、本地和分 布式的网络,例如LAN、因特网等等。
不论用于在本地设备105和远程设备110之间建立通信信道的应用程序或 网络的类型如何,应用程序115都可根据从远程设备110接收到的用户输入来 做出应用程序接口 (API)调用120。这一API调用120影响各种应用程序115 的图形显示。例如,API调用120可以是最小化/最大化应用程序115的显示、 移动显示内的图标或其它资源、或任意数目的交互和改变用于一个或多个应用 程序115的图形显示的公知方式。当然,可以认识到,输入不必以API调用 120的形式出现以使各种应用程序115的图形显示改变。因此,使用API调用 120来影响各种应用程序115的图形显示此处仅用于说明的目的,并且不意味
着限制或以其它方式縮小此处的实施例的范围。
不论何时使用这一调用120, API调用120都可访问合成引擎130,该引 擎生成可包括显示命令160和/或各种资源165的图形集155。显示命令160可 包括诸如资源165的类型、在显示内的定位(即,x-y坐标)、资源165的大 小和/或形状、或用于显示各种资源165的任何其它公知的特性或操作等信息。 资源165还可表示任意数量的公知的图标、文本、字形、子画面、位图和其它 图像类型。因此,此处描述的显示命令169和资源165应被广泛地解释为覆盖 了在资源上执行的任意数目的各种操作以及用于应用程序115的图形显示的任 意数目的图像数据。
图形集155通常用于生成用于各种应用程序115的描绘数据结构178。描 绘数据结构178进而用于描述应用程序115的显示,并且可以是类树结构,其 中每一节点表示一资源、特性或其关系描述。例如,数据树内的一节点可表示 按钮,而其它节点描述了该按钮的颜色、大小、形状或其它特性,而还有一些 节点表示与应用程序114的显示内的其它组件或资源的关系和交互。因此,可 以认识到,图形集155可用于修改、生成或以其它方式更新描绘数据结构178, 该数据结构然后可用于组成对应于应用程序115的一个或多个显示。注意,不 像以上描述的其它图形语言的即时演示模式,对描绘数据结构178、 185的使 用允许其中维护资源状态的保持模式。如以下将更详细描述的,这连同此处所 描述的其它实施例一起允许许多有利的特征。
注意,在一个实施例中,期望将本地设备105上的描绘数据结构178与远 程设备IIO侧的类似的描绘数据结构185同步。在这一情况下,此处提供的示 例实施例可以对用于更新或修改远程设备IIO上的描绘数据结构185的各种图 形集155迸行高效的编码。然而,应当注意,尽管此处提供的某些机制用于支 持描绘数据结构178、 185的图形语言,但是其它实施例同样适用于不支持此 类描绘数据结构178、 185的图形语言。实际上,此处所描述的许多实施例用 于各种各样的图形语言,包括但不限于,GDI、 WPF、以及其它已知(以及可 能未知的)图形语言。因此,以下对各实施例的讨论应被宽泛地解释为适用于 广泛数量的图形语言。
不论用于创建图形集155的图形语言是什么,都要注意,编码判决模块
150通常直接对描绘数据结构178 (即,保留的模式合成数据结构或树)操作。
编码判决模块150可能在应用程序115访问120合成引擎130时立即发送描绘 数据178,或者可能在网络允许的稍后的时刻发送数据178。例如,应用程序 115可能访问120引擎130来创建圆。命令120可能转换成对编码判决模块150 的直接访问,然后立即编码该圆命令并在线路上发送它。 一种替换模型可能是 编码判决模块150被通知一个圆被添加到描绘数据结构178 (例如,合成树), 并且让编码判决模块150来决定何时应发送数据178。第一个模型可被认为是 "推"模型,而第二个模型可被认为是"拉"模型。两者之间的区别仅仅是编 码判决模块150获得来自描绘数据结构178的更新的时刻。尽管两个模型都能 起作用,但是推模型可能比拉模型有更多限制。因此,最有效的更新机制可以 是两者的混和(即,数据178以带宽所允许的最快速度被推到网络,但是如果 有某种网络拥塞,则系统将釆用由网络可用性事件驱动的拉模型)。
不论用于传输数据178的模型是什么,在一个实施例中,编码判决模块 150都可使用具有用于标识图形集155内的各种字段类型的图形集元数据140 (此处也简称为"元数据")的编码表135。例如,元数据140可以描述图形 集160内的各种字段类型,编码判决模块150可利用该元数据来适当地决定如 何最佳地编码各字段以便高效地将显示命令160和资源165传输到远程设备 110。更具体地,元数据140可用于标识用于在不同图形语言的多个图形集155 之中共同的字段的不同类型的数据结构。这一信息然后可用于帮助数据压縮模 块175更容易地识别并适当地编码图形集155的不同字段。
例如,显示命令160可以具有传统上以机器格式储存或串行化的包括资源 类型、定位(例如,x-y坐标)、颜色或其它信息的串或其它二进制表示。因 此,元数据140可用于将这些字段识别为以机器格式储存的串,该串然后可被 转换成网络格式。例如,坐标(或其它串或二进制字段)通常被保持为本地设 备105上用于描绘的图形集155中的机器大小字,但是机器字在大多数情况下 要比储存这些坐标所必需的实际字节大小大2至4倍。在这一情况下,机器字 应被转换成较小的大小,并置于网络分组中,由此允许数据压縮模块175在发 送到远程设备IIO之前更高效地编码这些字段。
注意,其它实施例使用图形集元数据140来描述图形集155内的其它字段
或资源,用于标识用于压縮的最高效机制。例如,编码判决模块150可使用元 数据140来确定资源165的类型,以选择可以最有效地压縮此类信息的数据压 縮模块175。例如,某些位图最佳地使用行程长度编码(RLE)机制来压缩。 因此,元数据140可用于将资源165标识为位图,并且可选择适当的RLE来 适当地编码此类资源。
当然,对于显示命令160还有许多其它类型的资源165和资源可基于所提 供的图形集元数据140来标识并适当地编码。例如, 一个字段可被标识为最佳 地以可变长度格式来编码,而另一字段可能更适用于增量编码(例如,其中一 点可以被编码为相对于数组中的先前的点的增量并且增量可以用少于绝对坐 标的字节来表示的坐标)。其它示例可包括命令间压縮,其通常用于基于特定 类型的先前己编码的结构来编码同一类型的结构。当然,可以认识到,元数据 140可用于描述任意数目的各种显示命令160和资源165,使得编码判决模块 150可以按需适当地选择众多压縮模块175。因此,以上对用于编码的特定类 型数据的使用,或此处所描述的任何特定类型的编码仅是出于说明的目的,且 并不意味着限制或以其它方式縮小此处的实施例。
注意,尽管元数据140被示为在与图形集155分开的编码表135内,但是 其它实施例也构想了元数据140为图形集155的一部分。另外,注意,此处所 描述的各模块的排列可以被组合和/或分隔成其它配置和/或示意性布局。因此, 各附图中所示的示意性布局以及此处所描述的模块或组件仅用于说明的目的, 并不意味着限制或以其它方式縮小各实施例的范围,除非明确声明。
还要注意,元数据165可以是运行时信息或编译时信息。例如,可扩展标 记语言((XML)或其它合适的二进制格式)文档可包括在运行时交换的元数 据165。两者之间的区别是以下事实运行时信息通常由合成引擎130通过允 许元数据文件(例如,XML文档)被传入编码判决模块150的特定函数调用 来推送。通常,运行时元数据165仅在初始化时被推送一次。从那一点开始, 合成或描绘引擎130就不必在每次其访问编码器时向编码判决模块150完整地 描述图形集155。相反,合成引擎130只需用在初始元数据165交换中定义的 明确定义的类型为流中的每一命令(即,显示命令和/或资源)加前缀(或标识 它)。以下示例有可能有帮助。
例如,假定元数据165是在运行时交换的,则元数据165可能看上去如以
下XML文件。
<GFXMETADATA>
ORDERMETADATA TYPE=,,1>
<FIELD TYPE="FLOAT"/>
<FIELD TYPE=,,FL0AT,7>
</ ORDERMETADATA >
< ORDERMETADATA TYPE="2">
<FIELD TYPE=,,SIGNED INTEGER"
MIN—VAL="-255" MAX一VAL=,,255,7>
<FIELD TYPE=" UNSIGNED INTEGER"
MIN—VAL=,,-4096,,MAX_VAL="4096,,/>
<ARRAY>
<FIELD TYPE=,,COORDINATE,,
MIN—VAL=,,0" MAX_VAL=,,65 535"/>
</ARRAY>
</ ORDERMETADATA >
</GFXMETADATA>
ORDER TYPE=,,l"/>
<VAL>12.8</VAL> <VAI>21.1<VAI> </0RDER> <0RDER TYPE=,,2,,/>
<VAL>200</VAL> <VAL>3993</VAL> <VAL LENGTH=,,3,,>
<VAL>100</VAL> <VAL>200</VAL〉 <VAL>300</VAL>
</VAL> </ORDER>
注意,在以上GFXMETADATA结构中,声明了两种命令类型。第一种是 包括两个浮点数的命令类型。第二种是包括一个有符号整数、 一个无符号整数 和一个坐标数组的数组。该元数据应在初始化时刻被传送到编码判决模块150。 在初始化之后,第二结构(ORDER)可用于将命令发送到编码器150。现在注 意,第二个结构体没有描述类型,仅描述了值。即使在XML表示中,也可以 看到,通过拆分来自第二个数据结构体(ORDER)的元数据,将关于命令的 内容传送到编码判决模块150需要更少的信息。元数据140是非常静态的,因 此仅传送一次是有意义的。另一方面,命令数据是动态数据,且通常不应具有 附加在其上的任何静态信息。这一好处在对数据和元数据使用二进制格式(以 下描述)而非XML的时候更值得注意。编码器或编码判决模块150可以仅仅 查看命令类型,并且将基于如何编码值的元数据描述来获知。
例如,其它文件(例如,接口定义或描述语言(IDL)文件)表示编码器 175或编码判决模块150和合成引擎130之间的编译时合约。如果该合约是变 化的,则必须使用公共(例如,IDL)文件来重新编译这两个分量。使用公共 文件确保设备对同一二进制数据结构格式操作。然而,注意,在编译时描述数 据将有可能导致编码器判决模块150 (如上所述)的更快操作,因为编码代码 本身将直接从图形数据描述中生成。尽管如此,编码时描述仍很大程度上取决 于所使用的语言。例如,在(:和€++中,可使用一组宏来定义图形基元。通过 使用宏,能够定义机器格式结构和编码或网络代码本身。
一旦适当的数据压縮175编码了图形集155内的一个或多个字段,这些字 段(或图形集155)就被发送到远程设备110,在那里它们使用模块180来解 压,并如图形集190中所示地重新生成。由此,该压缩引擎195可使用这些图 形集来生成与本地设备105上的描绘数据结构178同步的描绘数据结构185。 此外,该描绘数据结构185然后可被组成,使得显示驱动程序104可生成表示 来自本地设备105的应用程序115的显示的适当显示102。因此,当远程设备 110上的用户与显示102交互时,可以如上所述地生成并编码不同的图形集155
以同步描绘数据结构178、 185。
在另一示例性实施例中,所选的编码或数据压縮模块175的类型可以基于 远程设备110上所支持的那些编码类型。例如,在连接的初始化期间(或在之 后的某一其它时刻),可在本地设备和远程设备110之间协商数据压縮的类型。 因此,如图所示,远程设备110发送所支持的编码类型184,后者然后可被包 括在可用编码机制列表145中。该可用编码机制列表145然后可由编码判决模 块150用于选择适当的数据压縮模块175来如上所述地压縮图形集155中的字 段。
注意,尽管通常是在连接时在远程设备110和本地设备105之间协商可用 编码机制145,但是本地设备105用于压縮图形集155的部分的确切压縮机制 将在压縮时在运行中决定。因此,远程设备110将没有关于将使用的数据压縮 175的确切类型的先验知识。尽管如此,由于所支持的编码类型184是事先确 定的,因此本地设备105可确保对任何此类支持的编码类型184的使用可由远 程设备110来处理。还要注意,可用编码机制列表145还可基于本地设备105 上可用的那些编码机制。换言之,数据压缩模块175和数据解压模块180需要 具有在它们之中共同的类型。
还要注意,如此处所构想的,可以使用任何公知类型的编码机制(例如, RLE、基于MPEG、 JPEG、 GIF、 ZIP、基于LZ、 JBIG、 Daje Vu或其它公知 的基于模式或基于统计的压縮机制,它们或者是无损或者是有损压縮格式)。 还要注意,图形集155内的一个或多个字段可以使用各种编码或数据压缩模块 175的分层关系来编码,以便最高效地压縮数据来通过网络发送到远程设备 110。
图1B示出了如上所述具有本地105和远程设备110的类似的分布式系统。 应当注意,图1B是先前提到的系统的简化版本,并且因此被示为没有一些组 件或模块以简化该示意图。然而,在此处所描述的实施例中,并非确定应使用 什么编码类型来编码图形集155,而是使用各种机制来选择资源(如果有)以 发送到远程设备IIO。在一个这样的实施例中,提供应用程序资源高速缓存, 其中不同种类的资源在希望储存它们时将以同类方式来处理它们。
例如,第一应用程序(例如,应用程序l) 115可以做出对资源"A" 106
的调用。当资源通过网络发送到远程设备110时,这一资源的传送状态可被储 存在资源表112中(在这一情况下示出资源"A"的传送状态114为己传输)。
在远程设备U0上,资源"A" 106将如其中的资源列表118所示地储存在中 央高速缓存128中。因此,当应用程序115下次希望使用资源"A" 106时, 并非将该资源发送到远程设备110,而是资源管理器108将该资源标识为己发 送,并且简单地提供具有资源ID 161的显示命令160来发送给远程设备110。 换言之,资源(在此情况中为资源"A" 106)在本地105和远程110设备之间 的整个连接期间仅需被发送一次,并且可以跨各种不同的应用程序(例如,同 样调用资源"A" 106的应用程序2)重复使用。
注意,尽管特定协议(例如,RDP)使用的某些高速缓存机制允许高速缓 存资源,但这些高速缓存通常基于所使用的资源的类型(例如,字形、位图、 子画面等)来分隔。尽管这些机制可以像此处提供的更通用的中央高速缓存机 制一样高效,但是这些方法是不可扩展的。通过提供中央高速缓存128来储存 所有资源180,本发明扩展了跨各种应用程序115以及跨可能使用的不同描绘 数据结构178、 185来使用此类资源106的能力。例如,此处提供的通用高速 缓存机制(使用例如RDP)具有资源仅被发送一次并被合成结构或树中的多个 节点使用的增加的好处。例如,如果一图标由多个应用程序115使用,则该图 标将存在于对应于这些应用程序115的每一合成子树(或描绘数据结构178、 185中)。
如果没有这一高速缓存机制,则资源将需要对使用它的每一节点发送到远 程设备110。然而,有了此处提供的中央存储机制,资源165仅在资源165首 次添加到节点时被发送一次,并且由合成数据结构中的多个节点使用。还要注 意,本地设备105和远程设备IIO可能使用或不使用限制因高速缓存具有大不 相同的大小的资源而引起的存储器碎片的机制。此外,应当注意,由于不可扩 展方法仍提供了用于访问资源的高效机制,因此这一方法可结合此处提供的通 用高速缓存一起使用。
在又一示例实施例中,提供了用于通过用部分发送的资源来描绘来改进响 应性的机制。在这一情况下,诸如带宽或远程设备110上的显示限制等系统限 制116可由包括资源管理器108的编码判决模块150来标识。基于这些系统限
制116,资源管理器108可以确定仅部分资源163应在如上所述用于图形集155 的显示命令160中发送。更具体地,通常有两条信息是描绘图形集155所必需 的。此处示为显示命令160的第一部分描述了用于资源165的实际描绘操作。 通常,它们包含关于什么资源165应用于描绘以及如何使用的指令。第二部分 表示用于描绘的资源168。
可以见到,描绘或显示命令160通常必须在描绘能够开始之前完整地发送 到客户机或远程设备110。然而,这并不是对于资源165的情况。资源165并 不总是必须在描绘开始时100%可用以便由应用程序115描绘一些有意义的东 西。例如,初始位图资源165可包含用这一渐进技术压缩的图像。例如,图像 颜色最初可能由于各种带宽限制或其它考虑事项而是不准确的。尽管如此,远 程设备仍可使用这一模糊的、没有着色的或以其它方式降级的图像在远程设备 上描绘。
例如,考虑其中资源165可能是按钮,而颜色可能非常不准确或者可看见 某一其它降级的情况,按钮的表示可以足以允许用户与该按钮交互而不必等待 其最终版本。然而,当来自图像的更多数据从网络到达时,远程设备110可更 新该图像或描绘数据结构185。因此,用户所感知到的响应性在大多数用户可 在不存在所有资源165的情况下使用该应用程序的情况下显著提高。注意,该 示例使用了颜色降级技术,但是可同等地使用任何种类的渐进编码或交错机 制。
还要注意,该部分描绘机制可能对保持模式系统起较好的作用,但是对其 它模型(例如,GDI)可能没有如此好的作用。原因在于,在保持模式中,一 旦用改进的资源165更新的描绘数据结构185 (例如,合成树),所有信息都 在远程侧IIO上以触发重画。然而,在其它非保持模型(例如,GDI模型)中, 可能没有机制以在远程IIO侧上重组,因此在其中绘图以不准确的资源发生的 情况下,通常没有机制来刷新绘图,直到本地105或服务器侧在绘图操作中再 次使用该资源165。尽管如此,即使是在非保持模型中,也可能有其中较佳的 是使用不准确的资源165来描绘而非在描绘一些东西之前等待整个资源165的 情况。
图1D示出了使用显示在曲线142中的坐标数组的上述实施例。如图所示,
完整的资源集144包括沿着曲线142的众多点。然而,各实施例可使用系统限 制116来决定应仅发送部分资源集148。例如,在此示例中,仅发送沿着曲线 146的点的一小部分,这尽管没有确切地表示曲线142,但是仍允许合理地描 绘整体图像。换言之,确切的曲线142从多个点逼近,每一点表示该曲线的一 个数字样本,其中存在的样本越多,曲线看上去就越准确。然而,取决于曲线 142,可以仅使用多个样本的一小部分来描绘足够接近的表示146。其余点可以 在稍后的时刻更新。当更新从本地设备105到达时,远程设备110将更新用于 该曲线142的点集,并且重新描绘使用它的数据结构185。随着每一次更新, 描绘曲线146将越来越接近最终预期的形状142。注意,尽管以上示例使用了图形曲线或网格以及简单的按钮,但是更复杂 的资源165也可利用该特征。例如,最终形式为3D对象的图像最初可能以2D 对象的部分形式呈现。随着带宽变得可用,可发送越来越多的信息以将图像更 新到其最终的3D形式。当然,可以认识到,有许多可利用该特征的各种资源 165和机制(即,发送一资源的什么部分以及如何发送)。因此,以上示例此 处仅用于说明的目的,并且不意味着限制这些和其它实施例的范围。
在又一示例实施例中,资源管理器108可确定或标识在本地设备105和远 程设备110上都专用的那些资源。因此,所支持的应用程序信息122可以在初 始化连接时(或在之后的某一时刻)传输到本地设备105。该信息通常将包括 所支持的应用程序资源124,并被储存在远程设备IIO上的资源存储126中。 该所支持的应用程序信息122然后可由资源管理器108用于确定什么类型的资 源应被发送到远程设备110。例如,远程110和本地设备105都可安装了特定的应用程序(例如,特定 类型的文本编辑器)。因此,与其相关联的图标或其它应用程序资源124也将 位于两个设备105、 110上。在这些情况下,本地设备105可以仅使用显示命 令160和资源ID 161来指示远程设备110使用适当的图标,而远程设备105 实际不必发送供其使用的资源124。然而,注意,这一模型假定资源124是以 串行化形式储存的。它们可在必要时被变换,但是变换通常是在硬件层发生的。 因此,对于不变换资源的协议或图形语言,本地设备105有可能向客户机传送 公知的资源ID 161而非通过线路发送关于资源124的数据。对远程设备110 上的专用应用程序资源124的这一使用在其中资源124的大小很大的情况中特 别有利。还应当注意,确切的资源124不需要同时驻留在本地105和远程110设备 上。例如,某些应用程序115具有在几个应用程序115之中共同的资源124。 例如,大多数应用程序115具有边框、标题栏、以及用于最小化/最大化、全屏 /部分屏幕的窗口按钮、和/或关闭图标。由此,远程设备110上使用的应用程 序资源124不必对应于本地机器105上的确切应用程序115,然而通常情况是 它们的确对应。图1C示出了对可在本地设备105和远程设备110上使用或在其上专用的 各种资源的使用。在此示例中,边框132资源可用于画出应用程序显示窗口的 轮廓。此外,标题栏135以及窗口操纵图标136也可以是可在远程设备110上 访问并使用的应用程序资源124。类似地,也可利用具有各种组件或图标的工 具栏138。然而,在本地设备105上操纵或以其它方式改变的信息将需要由先 前所描述的实施例通过线路发送。在再一示例实施例中,以上编码和其它资源选择机制可以被实现为单个组 件的一部分。这一组件和应用程序或合成引擎之间的接口 (或合约)可以由如 IDL或XML等接口定义语言来定义。然而,合约是要提供具有高效地编码资 源165所必需的资源165数据和元数据140的编码判决模块150。以此方式, 资源165布局或组织中的改变将不需要对编码判决模块150的更新。仅需要对 元数据140的更新,这可以通过改变接口或合约来实现。本发明还被描述成包括功能性步骤和/或非功能性动作的方法。下文是可 被执行以实践本发明的步骤和/或动作的描述。通常,功能性步骤按照可以实现 的结果来描述本发明,而非功能性动作描述实现特定结果的更为具体的动作。 虽然功能性步骤和/或非功能性动作可以按特定次序描述或声明,但是本发明不 一定要受限于任何特定的次序或者是步骤和/或动作的组合。此外,(仅)在权 利要求的陈述中使用步骤和/或动作以指示对这些术语的期望的特定使用。如上所述,图2-4示出了用于本发明的各示例性实施例的流程图。以下对 图1-4的描述将不时参考图1A-D中的对应元素。虽然可以做出对这些附图中 特定元素的参考,但是这些参考只用于示例性目的而非旨在限制或以其他方式
縮小所述实施例的范围,除非明确声明。图2示出了通过确定适当的编码机制而不管所使用的图形语言的类型是 什么,来为在本地设备上运行的应用程序高效地对图形对象进行编码以便显示在远程设备上的方法200的流程图。方法200包括在本地设备上执行205应用 程序的动作。例如,应用程序115可以在本地设备105上执行,其中应用程序 115基于特定图形语言生成图形显示以在远程设备IIO处显示。这一图形语言 可包括GDI、 WPF或当前己知的其它类型或将来的图形语言。方法200还包括接收210用于特定图形语言的图形集的动作。例如,编码 判决模块150可以接收用于特定图形语言的图形集155,其中图形集155包括 显示命令160和/或资源165。这一图形集155将用于在远程设备IIO上描绘应 用程序115的图形显示的至少一部分。注意,这些显示命令可包括按照在显示 上的位置、大小、颜色、形状等来描述资源的特性。还要注意,资源可以是诸 如字形、图标、子画面、位图或任何其它图像等公知资源中的任一种。另外,方法200包括接收220关于以下各项的编码数据的动作(1)描述 图形集的内容的元数据;(2)描述远程设备支持的数据压縮机制的编码类型数 据。例如,编码判决模块150可接收描述图形集155内的字段内容的图形集元 数据140,用于帮助数据压縮模块175在图形集155处于其普通形式时更高效 地压縮图形集155。注意,该普通形式可以是串行化的或未串行化的形式。或 者,或与其相结合,编码判决模块150可接收远程设备110支持的可用编码机 制列表145。该编码类型数据将描述远程设备IIO支持的数据压縮机制,以如 上所述选择用于图形集155的高效压縮类型。基于所接收的编码数据,方法200还包括确定225用于图形集的各部分的 适当编码机制的动作。例如,基于元数据140和可用编码机制列表145,编码 判决模块150可确定什么数据压縮模块175将最高效地编码图形集155的各部 分。图3示出了通过确定应用程序的什么(如果有)资源应被发送到远程设备 来为运行在本地设备上的应用程序在远程显示设备上高效地描绘图形对象的 方法300。方法300包括在本地设备上执行305应用程序的动作。例如,应用 程度115可以在本地设备105上执行,每一应用程序都生成用于发送到远程设 备110的图形显示。方法300还包括接收310包括显示命令和/或资源的图形集 的动作。例如,编码判决模块150结合资源管理器108可接收包括资源165和 /或显示命令160的图形集155,该图形集用于在远程设备110上描绘应用程序 115的图形显示的至少一部分。方法300还包括接收315关于以下各项的资源数据的动作(1)传送状态 信息;(2)支持的应用程序信息;(3)系统限制数据;和域(4)可见性信息。更 具体地,资源管理器108可接收用于确定资源165的传送状态的资源数据。例 如,资源状态表112可由资源管理器108用于确定对应于图形集155的资源的 传送状态,以确定相应的资源(例如,资源A114)是否已被发送到远程设备 IIO并出于可重用性的目的储存在中央高速缓存128中,而不管所储存的资源 的类型如何。换言之,各种类型的资源被储存在中央高速缓存128内,使得不 同种类的资源在储存时以同类方式来处理。注意,本地设备105和远程设备110 可能使用或不使用限制因高速缓存具有大不同的大小的资源而引起的存储器 碎片的机制。此外,编码判决模块150或资源管理器108可接收所支持的应用程序信息 122来确定当前在远程设备IIO上可用的专用资源124以显示此类资源而无需 从本地设备105传输资源。换言之,如果远程设备110和本地设备105两者都 安装了类似或相同的应用程序,则可标识并显示在远程设备IIO上专用的资源 或图标,使得这些资源不必从本地设备105发送到远程设备。这一专用资源可 包括边框、标题栏、工具栏、或两个应用程序上的某种其它形式的图标或资源 标准。此外,编码判决模块150或资源管理器108还可接收系统限制信息116, 用于确定资源的部分是否应被渐进地发送到远程设备110,使得首先发送完整 资源的降级版本,并且随后发送改进该降级版本的更新以节省带宽或其它系统 限制。例如,如图1D所示,对于以高采样显示曲线142的完整资源集144, 可首先发送如曲线146所示仅包括总采样集的一小部分的部分资源集148。注 意,渐进地发送到远程设备的部分资源可以包括位图、曲线、网格或其它图像 形式。还要注意,降级的版本包括颜色、细节、釆样点的数量的不准确性或其 它图像质量降级,但是资源的降级版本应当包括足以允许远程设备110处的用
户识别该资源的信息。还要注意,资源可以是按钮、复选框或其它交互式项目, 并且用户应当仍能够在不接收完整资源的情况下与该项目交互。另外,编码判决模块150或资源管理器108可从资源状态表112中接收描 述对应于图形集155的一个或多个资源165当前是否可被用户看见的可见性信 息113。这一可见性信息可包括关于资源的Z顺序、透明度、最小化/最大化状 态等的信息。因此,可能不可见的资源可被延迟发送到远程设备110,直到带 宽允许或直到需要查看。基于所接收的资源信息,方法300包括选择320图形集的一部分来编码的 动作。换言之,基于以上传送状态、所支持的应用程序信息、系统限制数据、 和/或可见性信息,将选择图形集155的部分(即,资源的显示命令或部分的字 段)来使用数据压縮模块175进行编码。图4示出了为在本地设备上执行的应用程序高效地同步在生成远程设备 上的图形显示时使用的描绘数据结构的方法400。方法400包括在本地设备上 执行405应用程序的动作。例如,如上所述,应用程序115可以在本地设备105 上执行,每一应用程序生成特定图形语言的描绘数据结构178,这些数据结构 是维护资源165的状态的保持模式数据结构,并用于在远程设备110上组成应 用程序115的图形显示。方法400还包括接收410包括资源和/或显示命令的图形集的动作。例如, 编码判决模块150可以接收包括显示命令160和/或资源165的图形集155。显 示命令160可包括按照在显示上的定位、大小、颜色、形状等来描述资源165 的特性。方法400还包括接收114包括图形集的描述的元数据的动作。例如,编码 判决模块150可接收包括图形集155的字段描述的图形集元数据140,以帮助 压缩模块175标识数据压縮模块175能容易地识别和适当地编码的、在用于不 同图形语言的多个图形集155中共同的字段的结构类型。例如,基于元数据 140,字段可以从机器格式转换成网络形式,这与机器形式相比减少了字段的 位长度以得到更好的压縮比。此外,元数据140可以用于以可变长度形式编码, 或用于所使用的增量编码,使得仅资源中的改变被发送到远程设备,这可以使 用比发送整个图形集155少的字节来编码。此外,元数据140可用于命令间压
縮机制,用于基于特定类型的先前已编码的结构来编码同一类型的字段。注意,元数据140可以附加到或不附加到图形集155。例如,通常元数据155交换是描述所使用的图形集155 (例如,指令/命令或资源)的类型的一次 事件。因此每一图形集155可用类型(或标识符)来加前缀。编码判决模块150 然后能够査看此标识符,并基于最初交换的元数据155来选择适当的数据压縮 模块175、适当的编码次序等。基于所接收的元数据,方法400包括编码420图形集的字段的动作。例如, 编码判决模块150基于描述图形集155内的字段的图形集元数据140可使用这 些数据来编码各字段以发送到远程设备105,并在本地105和远程110设备之 间同步描绘数据结构178、 185,该数据结构用于为应用程序115在远程设备 IIO处组成图形显示。本发明可具体化为其它具体形式而不背离其精神或本质特征。所述实施例 在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附 权利要求书而非前述描述指示。落入权利要求书的等效方式的含义和范围内的 所有改变应被权利要求书的范围涵盖。
权利要求
1. 一种在分布式计算系统中的方法,所述方法通过不考虑所使用的图形语言的类型确定适当的编码机制来为运行在本地设备上的一个或多个应用程序高效地编码图形对象以在远程设备上显示,所述方法包括在本地设备上执行一个或多个应用程序,每一应用程序基于一特定的图形语言生成图形显示以在远程设备处显示;接收用于所述特定图形语言的图形集,其中所述图形集包括一个或多个资源、一个或多个显示命令、或两者,所述图形集用于描绘所述一个或多个应用程序的图形显示的至少一部分;接收包括关于以下各项的一个或多个的信息的编码数据(1)描述所述图形集内的一个或多个字段的内容的元数据,用于帮助一个或多个数据压缩模块比在所述图形集处于普通形式时更高效地压缩所述图形集;(2)描述所述远程设备所支持的一个或多个数据压缩机制的编码类型数据,用于为所述图形集选择高效压缩类型;以及基于所接收的编码数据,确定用于所述图形集的一个或多个部分的适当的编码机制。
2. 如权利要求1所述的方法,其特征在于,所述一个或多个显示命令包 括按照在显示上的定位、大小、颜色或形状中的一个或多个来描述资源的一个 或多个特性。
3. 如权利要求1所述的方法,其特征在于,基于所述元数据,所述字段 中的一个或多个从机器格式转换成网络格式,所述网络格式与机器形式相比减 少了所述一个或多个字段的位长度以得到更好的压縮比。
4. 如权利要求1所述的方法,其特征在于,基于所述元数据,所述字段 中的一个或多个以可变长度形式来编码。
5. 如权利要求1所述的方法,其特征在于,基于所述元数据,使用增量 编码,使得仅资源中的改变被发送到所述远程设备,所述改变可使用比发送整 个图形集少的字节来编码。
6. 如权利要求1所述的方法,其特征在于,基于所述元数据,使用命令间压縮机制来基于特定类型的先前已编码的结构对同一类型的一个或多个字 段进行编码。
7. 如权利要求1所述的方法,其特征在于,所述远程设备支持的一个或多个数据压縮机制在连接时在本地和远程设备之间协商,并且其中所选择的编 码机制还基于每一压縮机制能有多好地压縮给定图形集。
8. 如权利要求7所述的方法,其特征在于,所述一个或多个数据压縮模 块包括RLE、基于MPEG、 JPEG、 GIF、 ZIP、基于LZ、 JBIG、 DejaVu或其它公知的基于模式或统计的压縮机制中的一个或多个。
9. 一种在分布式计算系统中的方法,所述方法通过确定运行在本地设备 上的一个或多个应用程序的什么(如果有)资源应被发送到远程设备来为所述一个或多个应用程序在远程显示设备上高效地描绘图形对象,所述方法包括在本地设备上执行一个或多个应用程序,每一应用程序生成要发送到远程 设备的图形显示;接收包括一个或多个资源、 一个或多个显示命令、或两者的图形集,所述 图形集用于描绘所述一个或多个应用程序的图形显示的至少一部分;接收包括关于以下各项中的一个或多个的信息的资源数据(1)传送状态 信息,用于确定对应于所述图形集的一个或多个资源是否已被发送到所述远程 设备并出于可重用的目的被储存在中央高速缓存中,而不管所储存的资源的类 型如何;(2)所支持的应用程序信息,用于确定当前在所述远程设备上可用的 专用资源,以在不从所述本地设备传输至少一个资源的情况下为所述一个或多 个应用程序在所述远程设备上显示所述至少一个资源;(3)系统限制数据,用 于确定资源的各部分是否应被渐进地发送给所述远程设备,使得首先发送完整 资源的降级版本,随后发送改进所述降级版本的更新以节省带宽或其它系统限 制;或(4)可见性信息,该信息描述对应于所述图形集的一个或多个资源当前 是否可被用户看见;以及基于所接收到的资源信息,选择所述图形集的各部分来编码。
10. 如权利要求9所述的方法,其特征在于,所述本地设备、远程设备、 或两者使用限制因在所述中央高速缓存中高速缓存了不同大小的所述一个或 多个资源而引起的存储器碎片的机制。
11. 如权利要求9所述的方法,其特征在于,所述远程设备上当前可用的 专用资源包括用于所述一个或多个应用程序的边框、用于所述一个或多个应用 程序的标题栏、用于所述一个或多个应用程序的工具栏、或所述一个或多个应 用程序上的某一其它形式的图标标准中的一个或多个。
12. 如权利要求9所述的方法,其特征在于,所述可见性信息包括关于所 述一个或多个资源的Z顺序、透明度、或最小化/最大化状态的信息。
13. 如权利要求9所述的方法,其特征在于,用于渐进地发送到所述远程 设备的所述资源的部分的资源包括位图、曲线或网格中的一个或多个,并且其 中,所述降级版本包括颜色、细节、采样点数目中的一个或多个的不准确性或 其它图像质量降级,但是所述资源的降级版本包括足以允许所述远程设备处的 用户识别所述资源的信息。
14. 如权利要求13所述的方法,其特征在于,所述资源是按钮、复选框、 或其它交互式项目,并且其中所述用户能够在不接收完整资源的情况下与所述 项目交互。
15. —种在分布式计算系统中的方法,所述方法高效地同步在为在本地设 备上执行的一个或多个应用程序生成远程设备上的图形显示时使用的描绘数 据结构,所述方法包括在本地设备上执行一个或多个应用程序,每一应用程序生成一特定图形语 言的描绘数据结构,所述描绘数据结构是维护关于资源的状态的保持模式数据 结构,并且用于在远程设备上组成所述一个或多个应用程序的图形显示;接收包括一个或多个资源、 一个或多个显示命令、或两者的图形集,所述 图形集对应于所述特定图形语言,并用于修改所述描绘数据结构中的一个或多 个.接收包括所述图形集的一个或多个字段的描述的元数据,以帮助一个或多 个数据压縮模块标识所述一个或多个数据压缩模块能更容易地识别和适当地 编码的、在用于一个或多个不同图形语言的多个图形集中共同的一个或多个字 段的结构类型;以及基于所接收的元数据,编码所述图形集的一个或多个字段以发送到所述远 程设备,并在所述本地和远程设备之间同步描绘数据结构,所述描绘数据结构用于为所述一个或多个应用程序在所述远程设备处组成图形显示。
16. 如权利要求15所述的方法,其特征在于,所述一个或多个显示命令 包括按照在显示上的定位、大小、颜色或形状中的一个或多个来描述资源的一 个或多个特性。
17. 如权利要求15所述的方法,其特征在于,基于所述元数据,所述字 段中的一个或多个从机器格式转换成网络格式,所述网络格式与机器形式相比 减少了所述一个或多个字段的位长度以得到更好的压縮比。
18. 如权利要求15所述的方法,其特征在于,基于所述元数据,所述字 段中的一个或多个以可变长度形式来编码。
19. 如权利要求15所述的方法,其特征在于,基于所述元数据,使用增 量编码,使得仅资源中的改变被发送到所述设备,所述改变可使用比发送整个 图形集少的字节来编码。
20. 如权利要求15所述的方法,其特征在于,基于所述元数据,使用命 令间压縮机制来基于特定类型的先前已编码的结构对同一类型的一个或多个 字段进行编码。
全文摘要
各实施例能够通过应用以下各项中的一个或多个来高效地编码和描绘远程图形显示(1)字段编码,用于标识图形集的字段,使得能够标识跨不同图形语言的各字段的共同性;(2)资源高速缓存,其在要储存不同种类的资源时以同类方式处理资源;(3)基于远程设备支持的压缩机制的类型来确定用于遥控图形集内的项目的编码类型;(4)通过用部分发送的资源进行描绘来改进相应性;(5)用于确定图形集的什么部分(如果有)应被发送到远程设备以及以什么次序发送的机制;以及(6)使用已经在远程设备上的专用资源以在描绘此类资源时消除在本地设备和远程设备之间的资源传输。
文档编号G06F17/00GK101401087SQ200780009229
公开日2009年4月1日 申请日期2007年1月16日 优先权日2006年3月15日
发明者J·E·帕森斯, J·奇克, N·Y·阿布多, R·W·舒米德尔 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1