专利名称:支持任意格式大对象通信的远程协议的制作方法
支持任意格式大对象通信的远程协议 相关申请本申请要求在35 U.S.C. S119(e)下对2005年8月31日提交的美国临时专利申请第60/712,993号的优先权。北且 冃眾应用程序或应用可以创建并提供图形图像。图形图像可由能被传递至其他应用 的位图表示。因为图形图像的复杂度或大小可以变化,所以表示图形图像的位图的 复杂度或大小也可以变化。在其中服务器计算机支持一个或多个客户计算机的服务器和远程客户系统中, 来自服务器计算机的位图可被分成较小的片并被通信至客户计算机。客户计算机可 以独立地显示或处理每个较小的位图片。换句话说,为了显示较大的图形图像,每 个较小的位图片被处理。有关以高速率改变或更新的相对大尺寸的位图的一个问题 是在客户计算机处看到的撕裂效应。撕裂效应伴随客户计算机显示每个位图片发 生。如果位图被一次性(即,没有被分成较小的片)发送给客户计算机,该客户计 算机就可以决定在给定的具体约束(例如,高更新速率)下如何显示在客户计算机 处看到的位图,然而如果位图被完整地发送,就不得不压縮位图。压縮通常用于支 持相对大尺寸的位图。在服务器计算机处运行的应用可以基于一特定压縮格式来压 縮位图。压縮格式可以是有损耗的,意味着当位图(即,图形图像)被压縮时某些 信息或数据会降级或丢失。可以使用诸如远程桌面协议或RDP等特定通信协议将位图通信或传输至客户 计算机。通常当使用一通信协议时,压縮的位图被进一步地解压縮成标准化的未压 縮格式,以允许通信协议编码器压縮位图以用于对客户计算机的传输。这可能涉及 有关服务器计算机的大量且冗余的工作,并会导致比预压縮位图中已呈现的压縮率 低的压縮率(即,进一步劣化原始位图)。此外,当诸实现诸如RDP的通信协议时,可以实现分开的信道或虚拟信道以 提供与一个或多个位图有关的元数据信息。这种分开的或虚拟的通道通常不与位图或包括位图的图形流同步。通常是位图或图形流经过与虚拟信道分开的信道传输, 而在虚拟信道中则传输元数据。这在期望或要求将图形流与某些元数据同步的场景 中是一种限制。这一有关RDP的限制的一个特定示例是在客户侧缺乏关于窗口位 置和维度的信息。如果图形流的显示会受到窗口放置的直接影响,则窗口放置的变 化要与图形流小心地同步就可能很重要。此外,对客户侧任意大对象的重新装配会在客户计算机处引起存储器管理问 题。例如,随着位图和/或位图片由客户计算机接收,它们被放入缓冲器,并在随 后被重新装配和处理。然而,在客户计算机处的缓冲器可能不足以容纳这些位图和 /或位图片。概述提供了一种方法和装置,该方法和装置能够让服务器-客户系统中的客户计算机或设备将有关其接收位图或其他对象的能力的信息提供给服务器计算机,使得该 服务器计算机构造该对象以便可由该客户计算机接收,并且将客户计算机应用元数据添加至表示该位图或对象的数据。提供本概述以便以简化形式引入概念的选择,这些概念将在以下的详细描述中 被进一步描述。本概述并不旨在标识要求保护主题的关键特征或本质特征,也不旨 在用于帮助确定要求保护主题的范围。
参考附图描述详细说明。在附图中,参考编号中最左边的数字标识该参考编号 最先出现的附图。在不同的附图中使用相同的参考编号指示类似或相同的项。图1是结合了允许客户计算机重新装配大对象片段的协议和应用编程接口(API)的服务器-客户系统的图示。图2是多片段协议数据单元的示例性数据块结构的图示。图3是示出了用于发送与数据流同步的应用层元数据的进程的流程图。图4是示出了用于将进入的大对象作为数据流一部分处理的进程的处理图。详细说明图1示出了示例性的服务器和远程客户或服务器-客户系统100。系统100包括 服务器计算机102以及由客户计算机104表示的一个或多个客户设备或客户计算机。服务器计算机102和客户计算机104经网络106连接,该网络106可以包括其 中包括因特网的一个或多个网络。更具体地,图形图像、对象和/或表示图形图像 的位图可以从服务器计算机102发送至客户计算机104以供客户计算机104处理或 显示。图形图像、对象和/或位图可以是任意尺寸的。图形图像、对象和/或位图可 以通过服务器计算机102使用诸如远程桌面协议或RDP的通信协议而被通信。诸 如经因特网协议的传输控制协议(TCP/IP)之类的传送控制协议可以在经网络106 传送时实现。在某些情况下,当RDP被实现时,服务器计算机102可被称为"RDP 服务器"而客户计算机104可被称为"RDP客户"。任何描述图形图像、对象和/或位图或与之相关联的任何元数据可以随着它们从 服务器计算机102通信而被包括在这些图形图像、对象和/或位图内。这就允许元 数据与图形图像、对象和/或位图同步。虽然在此示例中描述了服务器-客户系统 100,但是可预期诸如在内联设备系统的其他实现(例如,多个独立计算设备)也 可以使用在此描述的技术和方法。服务器计算机102包括由处理器108表示的中央处理单元或者一个或多个处理 器。处理器108可以控制或访问存储设备或存储器110。在此示例性实现中,服务 器计算机102还包括可以驻留在存储器110内的操作系统112。服务器计算机102 包括由处理器108控制的一个或多个应用程序或应用114。更具体地,应用114包 括生成或提供要通信给客户计算机104的图形图像、对象和/或位图的应用。动态链接库或DLL116被包括在服务器计算机102内。更具体的,DLL116包 括可以通过应用程序接口 118访问的用来允许应用114传递图形图像、对象和/或 位图的例程。这些例程的示例包括"DrvEscape"调用,该调用从用户模式(例如, 应用层)进入显示器驱动程序"rdpdd.dll"(显示器驱动程序通常处于内核/操作系 统模式或层次)以把要被重新编码的任意编码位图作为一特定协议数据单元或 PDU (在此示例中被称为"SuperBlt"或超位块120)传递,而这一位图最终则被 传递给或通信至客户计算机104。可以认为通过应用程序接口 118传递的图形图像、 对象和/或位图可以是包括支持每像素阿尔法透明度信息的格式在内的任何任意格 式。这是一个在其中元数据可被发送至客户计算机104以使得元数据与图形流同步 的示例性实现,其中位图可以通过使用已知并存在的"BitBlt"例程来经历诸如 "Win32"图形流的标准调用。超位块120是由诸如远程桌面协议或RDP之类的通信协议中的较低层分成多 个数据块的单个PDU。在某些实现中,超位块120是其他协议数据单元122的一部分。可以实现一编码器124来把超位块120压縮并打包成分组或图形流,其中该 分组和/或图形流经单个信道发送。更具体地,编码器124被配置为实现一特定通 信协议(诸如,RDP)和/或传输协议(诸如,TCP/IP)。在其它实现中,可以使用 分开的组件来提供编码器124的功能。在某些情况下,服务器计算机102处的编码 器124或其他组件可以将任何过大的图形图像、对象和/或位图分解成较小且更易 管理的图形图像、对象和/或位图。这些较小的图形图像、对象和/或位图随后在客 户计算机104处重新装配。客户计算机104包括由处理器126表示的中央处理单元或者一个或多个处理 器。处理器126可以控制或访问存储设备或存储器128。在此示例性实现中,客户 计算机104还包括可以驻留在存储器128内的操作系统130。客户计算机104包括 由处理器126控制的一个或多个应用程序或应用132。更具体地,应用132包括处 理来自服务器计算机102的图形图像、对象和/或位图的应用。特别地,图形图像、 对象和/或位图由应用132通过访问动态链接库(DLL) 136内的例程和/或驱动程 序的应用程序接口 134来接收。特定的应用程序接口可以是基于先前存在的"位块" 协定和协议的"位块"型接口,其中这一接口用于将重新装配的位图数据(即,图 形图像、对象、位图)连同相应的元数据一并传递给应用132。动态链接库136的 例程或驱动程序被具体地用于将来自应用132的图形数据或信息传递给操作系统 130。客户计算机104包括解码器138。解码器138可以解压縮接收到的PDU,诸如 可位于数据或图形流内或不在其内的超位块(即,图形图像、对象和/或位图)。解 码器138的其他功能可以包括基于一特定通信协议(诸如,RDP)和/或传输协议 (诸如,TCP/IP)解码接收到的图形图像、对象和/或位图。在特定情况下,诸如超位块的接收的对象可被作为在客户计算机104处重新装 配的流而非离散对象处理。在示例性实现中,解码器138可用于跟踪记录数据流或 图形流的解码状态,其中数据流或图形流包括描述图形图像、对象和/或位图的超 位块120。通过跟踪图形流的解码状态,图形流就可被中断并且客户计算机104能 够知晓当中断出现时从何处继续。一个特定实现是提供要解码器138作为显式地存 储所接收数据的上下文(例如,图形流内的超位块)的状态机。在另一实现中,解 码器138可以在对服务器计算机102的分开的线程上运行,以使得解码器138可从 图形流中读取。当解码器138需要等待更多数据(例如,超位块)时,解码器138 被"挂起"。当被挂起,解码器138的状态被隐式地保存在解码器138运行的分开的线程的线程栈上。换句话说,解码器138的状态在解码器138被挂起的同时被隐 式地保持在解码器线程的堆栈上,以使得解码器138知晓当其变为解锁(即,不再 被挂起)时从何处继续。重新装配缓冲器140可以包括在客户计算机104内。重新装配缓冲器140特定 地在传递至应用接口 134内的应用程序接口之前存储超位块(即,图形图像、对象 和/或位图)的较小片。在其中超位块未被分解为较小片的具体实现中,重新装配 缓冲器140不被包括在客户计算机104内。在某些实现中,分开的缓冲器(未示出) 可用于在超位块(即,图形图像、对象和/或位图)被客户计算机104进一步处理 之前临时存储这些超位块。如上所述,客户计算机104可以实现诸如RDP的通信协议,并且可被称为RDP 客户。作为RDP客户,客户计算机104通过应用程序接口接收包括一组协议数据 单元144的超位块142。此外,超位块142被分成多个数据块。超位块142可由其 他协议数据单元144包括。包括描述一特定图形图像、对象或位图的数据的超位块 142内数据可由应用132用于在显示器146上生成或再现图形图像。图2示出了多片段PDU200的示例性数据块结构。上述超位块120特别地由多 片段PDU 200实现。多片段PDU200可以是任何特定的尺寸,然而如果客户计算机104处的资源(例 如,接收缓冲器)有限,则可能需要压縮来支持该多片段PDU200。在此情况下, 客户计算机104可以通知服务器计算机102关于特定尺寸限制的事实。作为一个示 例,多片段PDU 200最初尺寸可以是1或2 MB,而客户计算机104可能仅支持 64KB。 一个实现是将超位块120或多片段PDU200分解为较小的片。在另一实现 中,整个超位块120或多片段PDU 200被发送,其中超位块120或多片段PDU 200 的选择性数据被压縮并有效减小整个超位块120或多片段PDU 200的尺寸。多片段PDU 200可以包括头部202、元数据204或有效载荷或位206。头部202 可以包括有关位图(或图形图像或对象)的信息,诸如色深度和压縮类型。此外, 头部202可以描述随后的元数据204和位206的大小。在某些情况下,可以从服务 器计算机102传递或通信仅带有元数据204信息的超位块120或多片段PDU 200 (即,有效载荷206未被发送或为空)。元数据204可以包括导向有效载荷206内 信息的任何额外信息。元数据204内的信息具体被导向由客户计算机104的应用 132使用的应用层数据。通过提供有效载荷206的元数据204,该元数据就与有效载荷206同步。作为一个示例,元数据的同步通常有益于音频与显示动作及关联定 时信息的同步,从而改善稳定帧率视频的质量。多片段PDU200可被分为多个片段,这些片段由第一片段208、下一片段210 和最后片段212表示。RDP协议提供更新PDU机制。在此示例中,更新PDU机 制被扩展以支持多片段PDU,诸如包括第一片段208、下一片段210和最后片段212 的多片段PDU 200。更具体地,通过协议较低层的诸如RDP的通信协议能够将多 片段PDU分成多个数据块或片段,诸如第一片段208、下一片段210和最后片段 212。多片段PDU200可用于发送诸如位图的任何资源。换句话说,多片段PDU200 不限于任何特定的对象类型。通过提供被标识为"第一、下一和最后"的多个片段 208、 210和212,解码器(诸如,解码器138)的层就能知道在将数据传递给该解 码器的上层之前是否要接收额外的片段,其中该解码器的上层知道有关该PDU或 多片段PDU200内实际资源或对象类型的情况。图3示出了发送与数据流同步的应用层元数据的进程300。进程300可被实现 为服务器计算机(例如,服务器计算机102)和客户计算机(例如,客户计算机104) 之间的协议。进程300被示出为逻辑流程图中一组框的集合,这些框表示可用硬件、 软件、固件或其结合实现的一系列操作。在软件的上下文中,各个框表示当由一个 或多个处理器执行时完成既定操作的计算机指令。虽然各框作为流程图描述,但是 也可以考虑各框并发地或以不同顺序发生。在框302,服务器计算机接收有关一个或多个客户计算机(设备)接收对象或 位图数据的可用性的信息,其中对象或位图数据可以描述图形图像或与其相关联。 例如,对象可以被表示为多片段PDU (例如,多片段PDU200)。图形图像可由在 服务器计算机处运行的应用或应用程序提供。除了一个或多个客户计算机的可用性之外,服务器计算机可接收有关特定客户计算机的资源能力的信息。资源能力可以 包括客户计算机处的缓冲器容量,这包括接收缓冲器和重新装配缓冲器的容量。信息可以通过在其中数据从服务器计算机发送到客户计算机的信道或分开的信道传 送。在框304,在服务器计算机处做出是否将对象或位图、或者表示对象或位图的 数据(例如,多片段PDU)作为一个整体发送的决定。决定的因素是客户计算机 的资源能力。作为替代,对象或位图(数据)可被分割成较小的片。这些较小的片最终可由客户计算机接收并重新装配。可以基于客户计算机的资源能力来做出决定 或确定。在框306,可以将头部和元数据信息添加至对象或位图数据。元数据被具体导 向以供驻留在客户计算机处的一个或多个应用来使用,在该客户计算机中,这一个 或多个应用消费或处理该对象或位图数据。元数据还可以描述或提供有关该对象或位图数据的额外信息。对象可由包括如上图2所述多个片段的多片段PDU表示。 更具体地,多个片段可被序列化并且为每个片段包括有关具体片段位于该序列内何 处的标识符(例如,第一、下一和最后)。在框308,头部、元数据和对象或位图数据可被构造成诸如图2所述多片段PDU 的特定数据格式,并被发送给客户计算机。头部、元数据和对象或位图数据(即, 多片段PDU或超位块)还可基于诸如RDP的特定通信协议和/或诸如TCP/IP的特 定传输协议而被压縮和编码。离散的多片段PDU或超位块可被包括在由内联设备 (即,同一机器内)通信的数据流内或成为其一部分,从而存在有数据流的生成方 (即,应用)和数据流的消费方(即,应用)。图4示出了将进入的大对象作为数据流处理的进程400。进程400被具体导向 以在客户计算机(例如,客户计算机104)处管理诸如位图的大对象。进程400可 在其接收到诸如超位块的对象时在客户计算机处实现。进程400被示出为逻辑流程 图中一组框的集合,这表示可用硬件、软件、固件或其结合实现的一系列操作。在 软件的上下文中,各个框表示当由一个或多个处理器执行时完成既定操作的计算机 指令。虽然各框作为流程图描述,但是也可以考虑各框并发地或以不同顺序发生。在框402,客户计算机在图形或数据流中接收诸如超位块的对象。数据流可以 来自于服务器计算机并且可以经由一个或多个网络传送,正如图1的示例性系统 100所描述的那样。数据流可被发送通过一特定的线程或信道。客户计算机处的解码器或类似组件可以接收并处理数据流中的对象。对于在框406处的具体实现,如果解码器没有在与其中数据流被通信或发送(即,跟随框404 的"否"分支)的线程分开的线程内接收到数据流,解码器就跟踪该数据流的解码 状态,尤其是该数据流内各对象的解码状态。在框408,用作状态机的解码器可存储在数据流内接收到的各对象的上下文或 解码状态。在框410,如果该数据流被中断(即,解码器停止接收数据流),随后 则基于所接收对象的解码状态继续解码。在框412处的另一实现中,如果解码器在从中接收到数据流的分开的线程上运行(即,跟随框404的"是"分支),解码器就从该分开的线程上的数据流中读取。 在框414,如果解码器需要数据流内更多的或者额外的数据/对象,就挂起该解 码器。在框416处,保存该解码器的状态。更具体地,如果解码器在分开的线程上 运行,该分开的线程的线程栈就在解码器挂起时隐式地保存解码器的状态。在框 418,当中断出现时,基于解码器的状态(例如,线程栈上的状态)来继续解码。结论上述方法和设备描述了将诸如图形图像的位图之类的任意大小的对象通信给 客户设备以供处理。虽然已经用结构特征和/或方法动作特定的语言描述了本发明, 但是应该理解在所附权利要求中定义的本发明不必限于所述的特定特征或动作。相 反地,特定特征和动作作为实现权利要求的本发明的示例性形式而公开。
权利要求
1.一种方法(300),包括接收(302)有关客户设备从服务器计算机接收对象的能力的信息;至少基于所述客户设备的所述能力,确定(304)是分解所述对象还是将所述对象作为一整体发送给所述客户设备;添加元数据(306)至所述对象,其中所述元数据由驻留于所述客户设备处的应用使用以处理所述对象;将所述对象和元数据构造(308)成特定的数据格式;以及将作为以所述特定数据格式构造的所述对象和元数据发送(308)给所述客户设备。
2. 如权利要求1所述的方法,其特征在于,所述对象描述图形图像的位图表示。
3. 如权利要求l所述的方法,其特征在于,所述接收的信息包括资源能力, 所述资源能力包括所述客户设备的缓冲器容量。
4. 如权利要求l所述的方法,其特征在于,所述信息是通过与在其中执行所 述发送的信道相分开的信道来接收的。
5. 如权利要求l所述的方法,其特征在于,所述信息是通过与在其中执行所 述发送的信道相分开的信道来接收的。
6. 如权利要求l所述的方法,其特征在于,所述添加还包括添加描述所述对 象的头部。
7. 如权利要求l所述的方法,其特征在于,所述发送还包括打包并压縮所述 对象。
8. 如权利要求1所述的方法,其特征在于,所述发送是通过包括所述对象的 数据流进行的。
9. 如权利要求l所述的方法,其特征在于,还包括由通信协议所执行的那样, 将所述对象分解成按顺序次序排序并标识的离散单元。
10. —种方法(400),包括 接收(402)特定线程内的数据流中的对象;处理(404)所述数据流内的所述对象;并且如果在所述处理内使用了相同线程,则跟踪(406)所述数据流的所述解码状态; 存储(408)在所述数据流内接收的对象的上下文;以及在接收所述数据流中断之后,基于所述接收的对象的上下文进行解码(410)。
11. 如权利要求10所述的方法,其特征在于,所述对象是表示图形图像的位 图,而所述数据流是图形流。
12. 如权利要求IO所述的方法,其特征在于,所述对象是表示图形图像的位图,而所述数据流是图形流。
13. 如权利要求IO所述的方法,其特征在于,如果一分开的线程被提供用于 所述处理,贝廿读取所述分开的线程上的所述数据流;如果需要额外的数据,则挂起由解码器执行的所述处理;以及 当所述挂起发生时,保存所述解码器的所述状态。
14. 如权利要求13所述的方法,其特征在于,所述解码器的所述状态的保存 通过保存所述分开的线程的线程栈的所述状态而被执行。
15. 如权利要求13所述的方法,其特征在于,还包括在中断之后基于所述解 码器的所述状态进行解码。
16. —种计算机(102),包括 处理器(108);由所述处理器控制的应用(114),其中所述应用提供图形图像; 针对所述应用的应用程序接口(118);由所述应用程序接口访问的第一驱动程序(116),所述第一驱动程序允许把所述图形图像传递给将所述图形图像编码成超位块的第二驱动程序。
17. 如权利要求16所述的计算机,其特征在于,所述图形图像由任何任意大小的位图表示。
18. 如权利要求16所述的计算机,其特征在于,所述超位块包括一系列协议 数据单元,所述协议数据单元在所述系列中按顺序次序被标识。
19. 如权利要求16所述的计算机,其特征在于,还包括编码并打包所述超位 块以用于通信至客户设备。
20. 如权利要求16所述的计算机,其特征在于,还包括将所述超位块在图形 流中发送给客户设备。
全文摘要
服务器计算机(102)提供诸如表示图形图像的位图之类的对象(122)以供客户计算机或设备处理。该对象可以具有任何任意的大小或格式,并且被转换成可由客户计算机接收的数据结构(122)。同步的元数据被包括在该数据结构内,其中这些元数据数据由客户计算机或设备(104)中的应用来使用。
文档编号G06F15/16GK101238457SQ200680028989
公开日2008年8月6日 申请日期2006年8月4日 优先权日2005年8月31日
发明者J·奇克, J·帕森斯, N·阿布多, P·L·科勒曼, W·舒米德 申请人:微软公司