CN102349063B - 无拆分远程桌面协议(rdp)显示 - Google Patents
无拆分远程桌面协议(rdp)显示 Download PDFInfo
- Publication number
- CN102349063B CN102349063B CN2010800120446A CN201080012044A CN102349063B CN 102349063 B CN102349063 B CN 102349063B CN 2010800120446 A CN2010800120446 A CN 2010800120446A CN 201080012044 A CN201080012044 A CN 201080012044A CN 102349063 B CN102349063 B CN 102349063B
- Authority
- CN
- China
- Prior art keywords
- logic
- drawing order
- correlated
- client
- grouping
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Transfer Between Computers (AREA)
- User Interface Of Digital Computer (AREA)
- Computer And Data Communications (AREA)
- Digital Computer Display Output (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
公开了用于减少在通信网络的范围内接收的显示数据的拆分的系统、方法和计算机可读介质。服务器确定顺序堆中的至少两个逻辑上相关的绘制顺序,并且用开始标记和结束标记来包装这些顺序。其在通信网络的范围内将这些经包装的顺序发送给客户端。客户端接收这些顺序并且将其呈现给阴影缓冲器。当客户端处理结束标记时,其将阴影缓冲器中的绘制顺序移到客户端显示表面。
Description
背景技术
尽管计算机曾经被隔离并且与其他计算机具有最少的或很少的交互,但是当今的计算机通过诸如局域网(LAN)和广域网(WAN)之类的通信网络与多种多样的其他计算机进行交互。随着因特网TM的广泛发展,计算机之间的连通性变得越来越重要,并开拓了许多新的应用和技术。大规模网络的增长以及低成本个人计算机的广泛可用性已经从根本上改变了许多人工作、交互、通信、以及玩乐的方式。
一种联网的越来越流行的形式一般可以被称为虚拟计算系统,其可以使用诸如远程桌面协议(RDP)、独立计算体系结构(ICA)等等之类的协议,来与远程客户机共享桌面及其他应用程序。这样的计算系统通常将对键盘键的敲击和鼠标点击或选中从客户端传送到服务器,同时通过网络连接(例如,因特网)以另一方向将屏幕更新中继回去。因此,当在现实中在应用出现在服务器侧时仅仅将所述应用的屏幕截图发送给客户端设备时,用户具有就好像他们的机器充当LAN的一部分的体验。
在远程会话中,可以对显示进行“屏幕拆分”,其中新近呈现的帧与之前呈现的帧部分地重叠,从而创建就好像所显示对象的两个部分未排列整齐的经拆分的外观。这最经常地发生在远程桌面协议(RDP)会话中诸如动画或视频回放之类的快速绘制的时间段期间。屏幕拆分将随着RDP在诸如位图编码、批量压缩和传输栈之类的领域中的进步而变得更重要。因此,对现有技术的改进将是:聚集相关的图形数据以保证其作为单个视觉单元来呈现;以及逻辑上对应当成组地从阴影缓冲器中复制到显示表面的相关绘制顺序进行批处理。
发明内容
指令的逻辑批处理可以由RDP服务器来添加。该添加可以通过允许已经具有通过RDP被发送的显示输出的应用插入“开始逻辑帧”和“结束逻辑帧”标记来完成。这还可以由RDP系统的如下组件来完成:该组件检查所接收的经编码的绘制顺序流,据此确定相关绘制顺序的起始和结尾,并且在这些点处插入“开始逻辑帧”和“结束逻辑帧”标记。
在示例性实施例中,服务器确定顺序堆中的至少两个逻辑上相关的绘制顺序,并且用开始标记和结束标记来包装这些顺序。其在通信网络的范围内将这些经包装的顺序发送给客户端。客户端接收这些顺序并且将其呈现给阴影缓冲器。当客户端处理结束标记时,其将阴影缓冲器中的绘制顺序移到客户端显示表面。
本领域技术人员将理解,本发明的一个或多个方面可包括但不限于用于实现本发明的本文所述方面的电路和/或编程;该电路和/或编程实质上可以是配置成实现本文所述方面的硬件、软件和/或固件的任何组合,这取决于系统设计者的设计选择。
以上是概述,并且因此必然包含细节的简化、一般化及省略。本领域技术人员将明白,本概述只是说明性的并且决不旨在是限制性的。
附图说明
参考附图来进一步描述根据本说明书的的系统、方法和计算机可读介质,附图:
图1示出了可在其中体现了在此描述的无拆分(tear-free)远程显示的示例性通用计算环境。
图2描绘了用于实施本发明的各方面的操作环境。
图3示出了客户端和服务器通过利用无拆分远程显示技术的远程桌面协议(RDP)进行通信。
图4示出了用于服务器侧无拆分远程显示的示例性操作过程。
图5示出了用于客户端侧无拆分远程显示的示例性操作过程。
说明性实施例的详细描述
图1是在其中可实现在此描述的技术的通用计算设备的框图。计算系统环境120只是合适的计算环境的一个示例,并且不旨在对所公开的主题的使用范围或功能提出任何限制。也不应该将计算环境120解释为对示例性操作环境120中示出的任一组件或其组合有任何依赖性或要求。在某些实施例中,所描绘的各种计算元素可包括被配置成实例化本公开的各具体方面的电路。例如,本公开中使用的术语电路可包括被配置成通过固件或开关来执行功能的专用硬件组件。其他示例中,术语电路可包括由实施可用于执行功能的逻辑的软件指令配置的通用处理单元、存储器等。在其中电路包括硬件和软件的组合的示例实施例中,实施者可以编写体现逻辑的源代码,且源代码可以被编译为可以由通用处理单元处理的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件、软件或硬件/软件组合之间几乎没有差别的地步,因而选择硬件或是软件来实现具体功能是留给实现者的设计选择。更具体地,本领域技术人员可以明白软件进程可被变换成等价的硬件结构,而硬件结构本身可被变换成等价的软件进程。因此,对于硬件实现还是软件实现的选择是设计选择并留给实现者。
计算机141通常包括各种计算机可读介质。计算机可读介质可以是可以被计算机141访问的任何可用的介质,并包括易失性和非易失性介质,可移动的和不可移动的介质。系统存储器122包括易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)123和随机存取存储器(RAM)160。基本输入/输出系统124(BIOS)包括如在启动时帮助在计算机141内的元件之间传输信息的基本例程,它通常储存在ROM 123中。RAM 160通常包含处理单元159可以立即访问和/或目前正在操作的数据和/或程序模块。作为示例而非限制,图1示出操作系统125、应用程序126、其他程序模块127和程序数据128。
计算机141也可以包括其他可移动的/不可移动的,易失性/非易失性的计算机存储介质。仅作为示例,图1示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器138,从可移动、非易失性磁盘154中读取或向其写入的磁盘驱动器139,以及从诸如CD ROM或其他光学介质等可移动、非易失性光盘153中读取或向其写入的光盘驱动器140。可以在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器138通常由例如接口134等不可移动存储器接口连接至系统总线121,而磁盘驱动器139和光盘驱动器140通常由例如接口135等可移动存储器接口连接至系统总线121。
以上讨论并在图1中示出的驱动器及其相关联的计算机存储介质为计算机141提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。在图1中,例如,硬盘驱动器138被示为存储操作系统158、应用程序157、其他程序模块156和程序数据155。注意,这些组件可以与操作系统125、应用程序126、其他程序模块127和程序数据128相同,也可以与它们不同。向操作系统158、应用程序157、其他程序模块156,以及程序数据155提供了不同的编号,以说明,至少,它们是不同的副本。用户可以通过输入设备,例如键盘151和定点设备152——通常是指鼠标、跟踪球或触摸垫——向计算机141输入命令和信息。其他输入设备(未示出)可包括话筒、游戏杆、游戏手柄、圆盘式卫星天线、扫描仪等。这些和其他输入设备通常通过耦合至系统总线的用户输入接口136连接至处理单元159,但也可以由其他接口和总线结构,例如并行端口、游戏端口或通用串行总线(USB)来连接。监视器142或其他类型的显示设备也可以通过诸如视频接口132之类的接口,连接到系统总线121。除监视器之外,计算机还可以包括可以通过输出外围接口133连接的诸如扬声器144和打印机143之类的其他外围输出设备。
计算机141可以使用到一个或多个远程计算机(如远程计算机146)的逻辑连接,以在联网环境中操作。远程计算机146可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,并且通常包括许多或所有以上关于计算机141所描述的元件,尽管在图1中仅示出了存储器存储设备147。图1中所示的逻辑连接包括局域网(LAN)145和广域网(WAN)149,但也可以包括其他网络。这样的联网环境在办公室、企业范围的计算机网络、内部网和因特网中是普遍现象。
当用于LAN网络环境中时,计算机141通过网络接口或适配器137连接到LAN 145。当在WAN联网环境中使用时,计算机141通常包括调制解调器150或用于通过例如因特网等WAN 149建立通信的其他手段。调制解调器150,可以是内置的或外置的,可以经由用户输入接口136或其他适当的机制,连接到系统总线121。在联网环境中,参考计算机141所描述的程序模块,或其某些部分,可以存储在远程存储器存储设备中。作为示例而非限制,图1示出远程应用程序148驻留在存储器设备147上。可以理解的是,所示的网络连接是示例性的,并且可以使用在计算机之间建立通信链路的其他手段。
现在参照图2,其一般描绘其中可实现本公开的各方面的示例环境。本领域技术人员能够理解,图2所描绘的示例元素提供用于描述本公开的操作框架。因此,在一些实施例中,该环境的物理布局可取决于不同的实现方案而有所不同。因此,该示例操作框架将仅被视为说明性的且不以任何方式限制权利要求的范围。本领域技术人员还可理解,以下讨论是介绍性的,并且图2描绘的元件在对图3到图8的操作过程的讨论内更详细地描述。
图2总体上描绘了可被配置为包括本公开的各方面的终端服务器环境的高级概览。参考该图,描绘了服务器204,其可以包括被配置为实施终端服务器的电路以及例如三个示例性客户端201、202和203(尽管描绘了三个客户端,但是服务器204在各实施例中可以服务于更多或更少的客户端)。示例性的客户端201-203可以包括由配置成将用户输入导向服务器204并显示由服务器204生成的用户界面信息的硬件所实现的计算机终端。在其他实施例中,客户端201-203可以是包括与图1的计算机20的元件相似的元件的计算机。在这些示例性实施例中,客户端201-203可以包括配置成实现操作系统的电路以及配置成模拟终端的功能的电路。在这些示例中,本领域技术人员能够理解,被配置为实现操作系统的电路也可以包括被配置为模拟终端的电路。
在所描绘的示例中,服务器204可以被配置成生成用于连接客户端201、202和203的一个或多个会话,诸如会话1到N(其中N是大于1的整数)。简言之,在本公开的示例性实施例中,会话一般可包括由配置成实现执行环境并与操作系统214的服务器内核218交互的多个子系统(例如,软件代码)实现的操作环境。例如,会话可包括诸如桌面之类的命令行界面和用户界面、跟踪该桌面内的鼠标移动的子系统、将图标上的鼠标点击翻译成实现程序实例的命令的子系统等等。在另一示例实施例中,会话可包括应用。在该示例中,当呈现应用时,桌面环境仍可被生成并对用户隐藏。在该示例中,会话可以包括与上述会话类似的子系统。一般而言,例如在服务器204通过网络连接从诸如客户端201之类的客户端接收到连接请求时,会话可以以逐用户的基础由服务器204对用户生成。一般而言,连接请求首先可由传输逻辑210处理,传输逻辑210例如可由服务器204的电路实现。在一些实施例中,传输逻辑210可包括网络适配器、可被配置成监听连接消息并将其转发给引擎212的固件和软件。如图2所示,在一些实施例中,当会话被生成时,传输逻辑210可以包括每个会话的协议栈实例。一般而言,每个协议栈实例可被配置成将用户界面输出路由到相关联的客户端、以及将从相关联的客户端接收到的用户输入路由到合适的会话核244。
如图2所示,在会话生成过程期间,引擎212可以被配置为获得会话的许可证。例如,在一个示例性实施例中,引擎212可以在会话生成过程期间从客户端201接收许可证。在其他示例性的实施例中,引擎212可以从许可证数据库222接收许可证的副本。在本公开的一些实施例中,许可证数据库222可以包括关系数据库管理程序,该关系数据库管理程序可以在诸如图1的计算机20之类的计算机的操作系统上执行。在包括许可证数据库222的示例性实施例中,该许可证数据库可以存储一个或多个许可证,所述许可证可以在客户尝试从服务器204获得会话时被检查。在另一实施例中,每个许可证本身都可以与诸如用户名/口令组合、智能卡标识符等等之类的账户标识符相关联,并且每个许可证仅仅在呈递了正确的账户标识符的情况下才能被检查。一般而言,服务器204可以生成的连接的数目可以取决于控制服务器204的实体已经从服务提供商购买的许可证的数目。例如,如果实体已经购买了一个许可证,则服务器204可以被配置为仅仅允许一个会话。在该示例中,如果许可证与账户标识符相关联,则仅有呈递了正确账户标识符的用户可以获得会话。
在本公开的示例性实施例中,每个许可证都可以在它们能被使用以前由服务提供商262来确认。例如,在示例性的实施例中,服务提供商262可以充当创建(aphorize)和激活证书和服务器的证书机构。在这些实施例中,服务提供商262可以保证:证书不被盗窃、复制或盗版。服务提供商262还可以通过将证书的副本存储在数据库中并且将证书与服务器204相关联来保证:证书仅由它们被购买以用于的服务器204来使用。
如图2所示,在本公开的示例性实施例中,配置管理器224可以包括计算机可读指令,所述指令在被执行时实例化如下的进程:该进程可以在会话创建过程期间接收证书并且通过与诸如会话管理器216之类的各种子系统对接来为新近产生的会话确定服务等级。在一实施例中,会话管理器216例如可以通过如下方式配置来初始化并管理每个会话:为会话空间生成会话标识符;将会话标识符添加到表;向会话空间分配存储器;以及在分配给会话空间的存储器中生成系统环境变量和子系统进程的实例。如图2所示,在一实施例中,会话管理器216可以实例化诸如运行时子系统240之类的环境子系统,该子系统可以包括诸如会话核244之类的内核模式部分。例如,在一实施例中,环境子系统可以被配置成将服务的子集展示给应用程序并向操作系统214的内核218提供接入点。如图2所示,在一些实施例中,内核218可以包括安全子系统250和资源管理器256。在示例性实施例中,安全子系统250可以例如通过执行运行时对象保护来实施服务器204的安全策略。在这些实施例中,一实施例中的资源管理器256可以响应于来自运行时子系统240的请求而创建和终止进程和线程。更具体而言,在一实施例中,运行时子系统240可以请求线程的执行,并且会话核244可以向内核218的可执行程序发送请求以向线程分配存储器以及执行它们的调度时间。
继续对图2的描述,在一实施例中,会话核244可以包括图形显示接口246(GDI)和输入子系统252。在一示例实施例中,输入子系统252可以被配置为通过与该会话相关联的协议栈实例接收来自客户端201的用户输入并将该输入传送给会话核244。在一些实施例中,用户输入可包括指示绝对和/或相对鼠标移动命令、鼠标坐标、鼠标点击、键盘信号、操纵杆移动信号等的信号。例如图标上的鼠标双击的用户输入可被会话核244接收,并且输入子系统252可被配置成确定图标位于与该双击相关联的坐标处。输入子系统252随后可被配置成向可执行与该图标相关联的应用的进程的运行时子系统240发送通知。
除了接收来自客户端201的输入,绘制命令还可以从应用和/或桌面接收并由GDI 246来处理。GDI 246一般可包括能生成图形对象绘制命令的进程。在该示例实施例中,GDI 246可以被配置成将命令传递给远程显示子系统254,该远程显示子系统254可以为会话实例化显示驱动程序。在示例实施例中,远程显示子系统254可以被配置成包括可不与物理上附加到服务器204的显示器相关联的虚拟显示驱动程序,例如服务器204可无头地运行。在该实施例中,虚拟显示驱动程序可以被配置为接收绘制命令并将它们通过与该会话相关联的栈实例传送给客户端201。
图3示出了客户端310和服务器302通过利用无拆分远程显示技术的远程桌面协议(RDP)进行通信。
在不存在无拆分远程显示技术的实施例中,服务器302执行诸如视频播放器之类的应用306,并且通过包括RDP服务器304和RDP客户端312的RDP会话将输出发送给客户端310。应用306通过发出诸如图形设备接口(GDI)应用306编程接口(API)命令之类的绘制命令来连续地向显示器输出。这可以利用从源位图到目的地位图的位块传输(BitBlt)来进行。然后,这些命令可以被翻译成显示驱动程序接口(DDI)调用(比如Win32 DDI调用),这些调用被分派给远程桌面协议显示驱动程序(RDPDD)。RDPDD将DDI调用编码到RDP绘制顺序中。
RDP绘制顺序放置到被与RDP服务器304的远程桌面协议窗口驱动程序(RDPWD)共享的存储器中的“顺序堆”305中,该驱动程序充当通过TCP连接接收键盘和鼠标输入并且将将其作为键盘或鼠标输入来演示的键盘和鼠标驱动程序。RDPWD还允许创建虚拟通道,该虚拟通道允许诸如盘、音频、打印机和COM端口之类的其他设备被重定向,也就是说,所述通道充当这些设备的替代物。所述通道通过TCP连接在网络308的范围内连接到客户端310,当所述通道被访问以获取数据时,向客户端310通知请求,该请求然后通过TCP连接被传输给应用306。该整个过程都是由终端服务器302和客户端310来完成的,其中RDP协议对正确的传输进行中介,并且整个过程对应用306而言是透明的。
然后,与连接到客户端310的栈相关联的RDPWD驱动程序从顺序堆中提取绘制顺序。该RDPWD对绘制顺序进行批量压缩,并且将其包装在RDP传输结构内,然后将其沿着栈向下发送给客户端310。
客户端310接收RDP传输结构中的这些绘制顺序。其从RDP传输结构中提取绘制顺序,并且将其呈现给阴影缓冲器。当最多为预定数目的顺序已经被呈现给阴影缓冲器时,阴影缓冲器的脏区域被复制到用户可见的显示表面。
例如,如果顺序的预定数目为25并且客户端310接收包含54个顺序的RDP分组,则客户端310将渐进地按照下列方式呈现给显示表面。其将呈现第一批25个顺序,然后其将呈现第二批25个顺序,并且然后其将呈现剩余的4个顺序。
以该任意预定数目的顺序(在此为25个)从阴影缓冲器314呈现给显示表面316(这对应于显示设备318上的输出)可能导致用户瞬时查看到不完整的图像(拆分)。该问题还将在每个顺序立即被呈现到显示表面的情况下持久存在。
在具有无拆分技术的实施例中,在服务器302上执行并且已经具有被远程显示在客户端310上的显示输出的应用306可以指示RDPDD插入“开始”和“结束”帧标记。
在这样的实施例中,诸如视频播放器之类的应用306在服务器302上执行。应用306通过应用306编程接口(API)调用用信号向RDP服务器304的远程桌面协议显示驱动程序通知:逻辑帧将被绘制。响应于该调用,RDPDD将“开始”标记添加到顺序堆305、即绘制顺序被存储以供处理的地方。应用306通过发出GDI绘制命令来绘制帧。GDI命令被翻译成显示驱动程序接口(DDI)调用,所述调用被分派给RDP服务器304的RDPDD驱动程序。RDP将DDI调用编码到RDP绘制顺序中。这些经编码的绘制顺序被放置到与RDPWD驱动程序共享的存储器中的顺序堆305中,RDPDD将“结束”标记添加到顺序堆305。与连接到客户端310的栈相关联的RDPWD驱动程序从共享的存储器中提取绘制顺序。绘制顺序被批量压缩并且包装在RDP传输结构内,并且在通信网络308的范围内沿着栈向下被发送给客户端310。
在另一实施例中,服务器302可以检查所接收的经编码的绘制顺序流并且在合适的地方放置“开始”和“结束”帧标记。
在这样的实施例中,诸如视频播放器之类的应用306在服务器302上执行。应用306通过发出GDI绘制命令来影响其视觉显示输出。这些GDI命令被翻译成DDI调用,所述调用接着被分派给RDP服务器306的RDPDD驱动程序。RDPDD将DDI回调编码到RDP绘制顺序中。编码绘制顺序被放置到与RDPWD驱动程序共享的存储器中的顺序堆305中。“RDP批处理引擎”对顺序堆中的顺序进行扫描以确定是否存在逻辑上相关的任何顺序。任何相关的顺序都被用“开始”和“结束”标记来包装。与连接到客户端310的栈相关联的RDPWD驱动程序从顺序堆中提取绘制顺序。该RDPWD驱动程序对绘制顺序进行批量压缩并且将其包装在RDP传输结构内,然后将它们在通信网络308的范围内沿着栈向下发送给客户端310。
客户端310可以从下列实施例二者接收RDP传输结构:在服务器302上执行并且具有远程显示在客户端310上的显示输出的应用306可以指示RDPDD插入“开始”和“结束”帧标记的实施例;以及服务器302检查所接收的经编码的绘制顺序流并且在合适的地方放置“开始”和“结束”帧标记的实施例。
当客户端310接收到RDP传输结构时,其从这些传输结构中提取绘制顺序。如果遇到“开始”标记,则被呈现给阴影缓冲器314的RDP流中的任何随后的绘制顺序都不被复制到显示表面316以及由此的显示设备318,直到遇到相应的“结束”标记。如果未标识出“开始”标记,则客户端310可以使用现有图形解码流水线。
图4示出了用于服务器侧无拆分远程显示的示例性操作过程。
操作402描绘了确定顺序堆中的至少两个逻辑上相关的绘制顺序,该逻辑上相关的绘制顺序具有起始和结尾。
在一实施例中,逻辑上相关的绘制顺序是逻辑上相关的,因为图像帧包括逻辑上相关的绘制顺序。构成图像帧的绘制顺序可以被聚集到一起,因为它们将被一起显示。这些逻辑上相关的绘制顺序的起始可以是将被执行的第一个绘制顺序,并且结尾可以是将被执行的最后一个绘制顺序。这可以对应于矩形图像的左上角和该矩形图像的右下角。
在一实施例中,逻辑上相关的绘制顺序是逻辑上相关的,因为一个线程产生了每个在逻辑上相关的绘制顺序。在多线程系统中,可以执行多个进程。在每个进程都具有发出绘制顺序的单线程的情况下,则可以确定:来自不同线程的绘制顺序不大可能在逻辑上相关,而从一个线程发出的绘制顺序很可能是逻辑上相关的。
线程通常在两个实例中切换。第一个是在线程自愿放弃其在处理器的轮次(turn)时,因为其已经完成了其任务。这通常发生在线程已经完成了发出图像帧的绘制顺序的情况下。因此,在一实施例中,这可以用作表示由该线程在其轮次期间发出的所有绘制顺序都是逻辑上相关的并且包括帧的指示,其中在其轮次的情况下,该线程在处理器上为活动的。第二实例是在线程用完了其分配的在处理器上执行的时间的情况下。在这种情况下,尽管很可能的是,由线程在该执行时间段期间发出的每个绘制顺序都是逻辑上相关的,但是也可能的是,由线程在其下次在处理器上执行时发出的绘制顺序也在逻辑上与该目前线程相关。在一实施例中,逻辑上相关的绘制顺序的跨度为从线程在自愿放弃对处理器的使用以后下次重获该使用时到其下次自愿放弃对处理器的使用为止。
线程可以根据其线程ID(TID)来确定。在进程具有多个发出逻辑上相关的绘制顺序的线程的情况下,可以使用与上面类似的技术,并且进程可以根据其进程ID(PID)来区分。
在一实施例中,逻辑上相关的绘制顺序是逻辑上相关的,因为它们对应于显示的一部分。应用窗口可以包括显示表面的连贯区域。然后,可以确定:与显示表面的特定部分相对应的这些顺序全部都是由单个进程生成的并且因此是逻辑上相关的。
在一实施例中,逻辑上相关的绘制顺序是逻辑上相关的,因为它们是在相似时间发出的。一个帧的绘制顺序通常在时间上彼此接近地被发出,从而使得更可能的是绘制顺序与在远离其的时间上发出的顺序相比与在接近其的时间上发出的顺序逻辑上相关。也可以确定:当时间上居间的绘制顺序在两个绘制顺序之间被发出时,这两个绘制顺序不是逻辑上相关的。
在一实施例中,绘制顺序包括应用编程接口(API)调用,并且开始标记和结束标记每个都包括对API的调用。例如,在绘制顺序通过调用图形设备接口(DDI)应用编程接口(API)而被发出的情况下,API可以被扩充为具有特殊的begin_marker()(开始_标记())和end_marker()(结束_标记())函数调用,所述函数调用用于分别表示标记的开始和结束。
在一实施例中,逻辑上相关的绘制顺序是基于应用类型而在逻辑上相关的。这可以用在仅有从相同应用发出的绘制顺序是逻辑上相关的情况下。
操作404描绘了:通过在逻辑上相关的绘制顺序的起始处放置开始标记以及在逻辑上相关的绘制顺序的结尾处放置结束标记来包装逻辑上相关的绘制顺序。
在一实施例中,该开始和结束由逻辑上相关的绘制顺序所源自的应用来确定。这样的“感知”应用可以被设计为跟踪哪些绘制顺序是逻辑上相关的,并且将对此的指示发送给插入开始和结束标记的组件。由于应用很可能知道帧的大小,并且当特定帧正通过绘制顺序被生成时,所存在的优点是与一些之后做相同事情的组件具有仅仅一个绘制顺序流来作出这些确定相比其标记逻辑上相关的绘制顺序的效率。
在一实施例中,应用包装逻辑上相关的绘制顺序。应用可以自己插入这些开始和结束标记,而不是发送表示开始和结束标记发生在何处的指示。例如,在这些标记如上述那样包括API调用的情况下,应用可以是发出这些begin_marker()和end_marker()调用的实体。
在一实施例中,逻辑上相关的绘制顺序对应于具有已知起始和已知结尾的屏幕抓取,并且包装逻辑上相关的绘制顺序还包括:将开始标记放置在已知起始处并且将结束标记放置在已知结尾处。屏幕抓取可以包括旨在用于显示在显示设备上的诸如位图之类的图像数据。其可以包括整个屏幕或其分部。通常,被“抓取”的图像的大小是已知的,因此起始(在抓取为矩形的情况下通常为最左上方的像素)以及结尾(在该情况下通常为最右下方的像素)也是已知的,并且开始和结束标记于是可以合适地放置。
在一实施例中,结束标记包括传输控制协议(TCP)转储清除(flush)命令。TCP转储清除命令可以是指示网络协议栈的TCP层将所有当前持有的数据发送给该栈中的下一较低层以供在通信网络的范围内传输。TCP转储清除命令通常包括0字节长度的空缓冲器。在实体通过作出API调用来设置诸如上面的end_marker()调用之类的结束标记的情况下,该调用可以用于将TCP转储清除命令插入到其位置处。
操作406描绘了:在通信网络的范围内向客户端发送经包装的逻辑上相关的绘制顺序、以及表示同时显示所有逻辑上相关的绘制顺序的指示。
在一实施例中,经包装的逻辑上相关的绘制顺序以分组在通信网络的范围内发送,并且该分组在结束标记被插入到该分组中时被发送。在选择在通信网络内发送的分组大小时应考虑到效率。每个分组都包括报头信息,因此发送具有小的有效载荷的一系列分组导致发送相对于元数据(报头信息)而言的少量的数据(有效载荷)。然而,发送大分组导致分组在网络控制路径(比如线路、或者无线频谱的一部分)上花费增加量的时间;导致其他一些设备将在该时间在该路径上发送分组的机会增加;导致两个分组都丢失并且必须重发的冲突。
在该实施例中,所有在逻辑上相关的绘制顺序都在单个分组中发送。这保证它们同时到达客户端。在它们在多个分组中被发送的情况下,客户端仍然将等待包含结束标记的最终分组,以显示逻辑上相关的绘制顺序。
在一实施例中,分组具有最小的分组大小,还包括:在结束标记在达到分组的最小分组大小时被插入到分组中时发送分组。当在逻辑上相关的绘制顺序仅仅包括几个绘制顺序时,出于上面所讨论的原因,发送这样小的分组可能不是有效率的。在这种情况下,新的绘制顺序可以添加到分组,直到达到最小分组大小,然后该分组被发送。在一实施例中,一旦第一结束标记在一旦已经达到最小分组大小时就已经被插入到分组中,就发送该分组。在一实施例中,一旦第一结束标记在一旦已经达到最小分组大小时就已经被插入到分组中或者达到最大分组大小时,就发送该分组。
在一实施例中,该分组通过多个协议层来发送,还包括:在检测到结束标记时由每个协议层将分组转储清除到通信网络中。在一实施例中,网络的协议层包括应用层(例如超文本传输协议或者HTTP)、传输层(例如TCP)、因特网层(例如因特网协议或IP)、链路层(例如以太网)和物理层(例如RJ45/CAT5)。在这些层具有转储清除命令的情况下,结束标记可以为每个层包括转储清除命令,使得通过插入结束标记,分组通过所有层被转储清除,并且在通信网络的范围内被发送。在两个层共享相同转储清除命令的实施例中,该命令不为每个层重复。
在一实施例中,经包装的逻辑上相关的绘制顺序根据远程桌面协议(RDP)来发送。
图5示出了用于客户端侧无拆分远程显示的示例性操作过程。
操作502描绘了在通信网络的范围内接收显示数据。在一实施例中,该数据作为由服务器发送的RDP分组来接收,这在操作306中予以了描绘。
操作504描绘了将显示数据存储在阴影缓冲器中。在一实施例中,阴影缓冲器包括存储器中的如下区域:在该区域中,绘制命令被呈现给这些绘制命令的位图表示。阴影缓冲器可以对应于显示缓冲器,在那里存在显示在显示设备上的数据。当阴影缓冲器中的数据将被显示时,其然后被复制到显示缓冲器,并且新数据可以被呈现给阴影缓冲器。在一实施例中,阴影缓冲器和显示缓冲器存在于系统的视频存储器中。在一实施例中,显示数据包括绘制命令。在另一实施例中,显示数据包括诸如位图之类的图像。
操作506描绘了确定显示数据中的开始标记和结束标记。在显示数据包括多个API形式的显示命令的情况下,这可以包括:标识出对应于begin_marker()和end_marker()的命令。
操作508描绘了将开始标记与结束标记之间的所有显示数据转储清除到显示表面。在显示表面对应于显示缓冲器的情况下,这可以包括:将阴影缓冲器中的所有数据传输给显示缓冲器。在阴影缓冲器中的数据是由该数据是否自其最近被移动到显示缓冲器以来已经被更新(比如具有脏位)来标识出的情况下,可能的是,仅仅阴影缓冲器的这些脏部分被复制到显示缓冲器中。
在一实施例中,存在定时器,并且转储清除所有显示数据包括:在定时器达到该定时器的期满时转储清除开始标记与最近接收的显示数据之间的所有显示数据,包括最近接收的显示数据。在结束标记无论是在生成时还是在传输时被延迟的情况下,可能优选的是,在显示表面上显示一些新的显示数据,使得终端用户不会发现会话无响应或者认为会话已经冻结。在这种情况下,每当显示缓冲器被更新时,定时器都被复位,并且如果定时器应当在接收到结束标记以前达到特定的时间,则其被转储清除到显示表面。
在定时器已经期满然后接收到结束标记的实施例中,操作于是可以在结束标记被确定时转储清除自从定时器达到期满以来所接收到的所有显示数据。
结语
尽管已经结合各附图所示的较佳方面描述了本发明,但要理解,可使用其它相似方面或者可对所述方面进行修改或添加来执行本发明的相同功能而不脱离本发明。因此,本发明不应该仅限于任何单个方面,而是应该在根据所附权利要求书的广度和范围内解释。例如,本文描述的各种过程可用硬件或软件、或两者的组合来实现。因此,所公开的各实施例的方法和装置或其某些方面或部分可采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其他机器可读存储介质等有形介质中的程序代码(即,指令)的形式。当程序代码被加载到诸如计算机等机器并由其执行时,该机器变为被配置成实施所公开的各实施例的装置。除了此处明确阐述的具体实现之外,考虑此处所公开的说明书,其它方面和实现将对本领域的技术人员是显而易见的。说明书和所示实现旨在仅被认为是示例。
Claims (13)
1.一种用于减少客户端上的应用显示中的拆分的方法,包括:
确定顺序堆中的至少两个逻辑上相关的绘制顺序,所述逻辑上相关的绘制顺序具有起始和结尾(402);
通过在所述逻辑上相关的绘制顺序的起始处放置开始标记以及在所述逻辑上相关的绘制顺序的结尾处放置结束标记来包装所述逻辑上相关的绘图顺序(404);
在通信网络的范围内向客户端发送经包装的逻辑上相关的绘制顺序,其中经包装的逻辑上相关的绘制顺序以分组在通信网络的范围内发送,且该分组在结束标记被插入到该分组中时发送。
2.如权利要求1所述的方法,其特征在于,所述逻辑上相关的绘制顺序是逻辑上相关的,因为图像帧包括逻辑上相关的绘制顺序。
3.如权利要求2所述的方法,其特征在于,所述逻辑上相关的绘制顺序是逻辑上相关的,因为一个线程产生了每个逻辑上相关的绘制顺序。
4.如权利要求2所述的方法,其特征在于,所述逻辑上相关的绘制顺序是逻辑上相关的,因为它们对应于显示的一部分。
5.如权利要求2所述的方法,其特征在于,所述逻辑上相关的绘制顺序是逻辑上相关的,因为它们是在相似时间发出的。
6.如权利要求1所述的方法,其特征在于,该起始和结尾由所述逻辑上相关的绘图顺序所源自的应用来确定。
7.如权利要求6所述的方法,其特征在于,该应用包装所述逻辑上相关的绘制顺序。
8.如权利要求1所述的方法,其特征在于,绘制顺序包括应用编程接口(API)调用,并且该开始标记和结束标记每个都包括对API的调用。
9.如权利要求1所述的方法,其特征在于,分组具有最小分组大小,还包括:
在结束标记在达到该分组的最小分组大小时被插入到该分组中时发送该分组。
10.如权利要求1所述的方法,其特征在于,该应用具有一类型,还包括:
所述逻辑上相关的绘制顺序是基于该应用类型而在逻辑上相关的。
11.一种用于减少应用显示中的拆分的系统,该应用显示包括在通信网络的范围内接收的显示数据,该系统包括:
用于在通信网络的范围内接收显示数据的电路(502);所述显示数据以包括结束标记的分组发送,该分组在结束标记被插入到该分组中时发送;
用于将显示数据存储在阴影缓冲器中的电路(504);
用于确定显示数据中的开始标记和结束标记的电路(506);以及
用于在定时器达到定时器的期满时,转储清除开始标记与最近接收的显示数据之间的所有显示数据,包括最近接收的显示数据的电路(508)。
12.如权利要求11所述的系统,其特征在于,用于转储清除开始标记与最近接收的显示数据之间的所有显示数据,包括最近接收的显示数据的电路还:
在结束标记被确定时转储清除自从该定时器达到期满以来所接收到的所有显示数据。
13.如权利要求11所述的系统,其特征在于,阴影缓冲器包括至少一个脏显示数据,并且用于转储清除的电路还:
仅仅转储清除所有脏显示数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/400,688 US8307103B2 (en) | 2009-03-09 | 2009-03-09 | Tear-free remote desktop protocol (RDP) display |
US12/400,688 | 2009-03-09 | ||
PCT/US2010/025682 WO2010104685A2 (en) | 2009-03-09 | 2010-02-26 | Tear-free remote desktop protocol (rdp) display |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102349063A CN102349063A (zh) | 2012-02-08 |
CN102349063B true CN102349063B (zh) | 2013-06-19 |
Family
ID=42679212
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010800120446A Active CN102349063B (zh) | 2009-03-09 | 2010-02-26 | 无拆分远程桌面协议(rdp)显示 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8307103B2 (zh) |
EP (1) | EP2406726B1 (zh) |
JP (1) | JP5646518B2 (zh) |
CN (1) | CN102349063B (zh) |
WO (1) | WO2010104685A2 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100169791A1 (en) * | 2008-12-31 | 2010-07-01 | Trevor Pering | Remote display remote control |
US9727227B2 (en) * | 2011-07-28 | 2017-08-08 | Microsoft Technology Licensing, Llc | Multi-touch remoting |
US10031636B2 (en) * | 2011-09-08 | 2018-07-24 | Microsoft Technology Licensing, Llc | Remoting desktop displays using move regions |
US20130093776A1 (en) * | 2011-10-14 | 2013-04-18 | Microsoft Corporation | Delivering a Single End User Experience to a Client from Multiple Servers |
CN102752570B (zh) * | 2012-07-30 | 2015-07-01 | 德讯科技股份有限公司 | Rdp协议基于动态矩形区域分块的回显缩放方法及系统 |
US10462336B2 (en) | 2017-03-15 | 2019-10-29 | Microsoft Licensing Technology, LLC | Low latency tearing without user perception |
CN109508159A (zh) * | 2017-09-12 | 2019-03-22 | 亿阳安全技术有限公司 | 录像文件以及录像生成的方法、相关设备以及存储介质 |
EP3693850A4 (en) | 2017-10-23 | 2020-10-21 | Huawei Technologies Co., Ltd. | GRAPHIC PROCESSING PROCESS AND ASSOCIATED DEVICE AND DEVICE |
US10552639B1 (en) | 2019-02-04 | 2020-02-04 | S2 Systems Corporation | Local isolator application with cohesive application-isolation interface |
US10558824B1 (en) | 2019-02-04 | 2020-02-11 | S2 Systems Corporation | Application remoting using network vector rendering |
US11880422B2 (en) | 2019-02-04 | 2024-01-23 | Cloudflare, Inc. | Theft prevention for sensitive information |
US10452868B1 (en) | 2019-02-04 | 2019-10-22 | S2 Systems Corporation | Web browser remoting using network vector rendering |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4274368A (en) * | 1979-03-12 | 1981-06-23 | Shaffer Donald J | Tuneable intake manifold |
US4439937A (en) * | 1982-07-26 | 1984-04-03 | Daswick Alexander C | Integrally cast shoe sole containing stiffener member |
US7274368B1 (en) * | 2000-07-31 | 2007-09-25 | Silicon Graphics, Inc. | System method and computer program product for remote graphics processing |
JP4068325B2 (ja) * | 2001-10-05 | 2008-03-26 | 株式会社東芝 | 描画分散システム |
US7234144B2 (en) | 2002-01-04 | 2007-06-19 | Microsoft Corporation | Methods and system for managing computational resources of a coprocessor in a computing system |
US7401116B1 (en) * | 2002-03-29 | 2008-07-15 | Silicon Graphics, Inc. | System and method for allowing remote users to specify graphics application parameters for generation of interactive images |
JP4212508B2 (ja) * | 2004-04-14 | 2009-01-21 | 株式会社東芝 | パケット生成装置 |
WO2005114375A1 (en) | 2004-05-21 | 2005-12-01 | Computer Associates Think, Inc. | Systems and methods for tracking screen updates |
US7852342B2 (en) | 2004-10-14 | 2010-12-14 | Microsoft Corporation | Remote client graphics rendering |
JP4745839B2 (ja) * | 2005-01-28 | 2011-08-10 | 富士通株式会社 | データ転送システム、送信プログラム、受信プログラム及びデータ送信方法 |
US7730157B2 (en) | 2005-02-03 | 2010-06-01 | The Trustees Of Columbia University In The City Of New York | Methods, media, and systems for displaying information on a thin-client in communication with a network |
US7810148B2 (en) * | 2005-02-25 | 2010-10-05 | Microsoft Corporation | Enabling terminal services through a firewall |
US7506318B1 (en) * | 2005-06-28 | 2009-03-17 | Replay Solutions, Inc. | Recording and replaying computer programs |
US7542010B2 (en) | 2005-07-28 | 2009-06-02 | Seiko Epson Corporation | Preventing image tearing where a single video input is streamed to two independent display devices |
US7653749B2 (en) | 2005-08-31 | 2010-01-26 | Microsoft Corporation | Remote protocol support for communication of large objects in arbitrary format |
US7609280B2 (en) | 2005-09-07 | 2009-10-27 | Microsoft Corporation | High level graphics stream |
US8112513B2 (en) * | 2005-11-30 | 2012-02-07 | Microsoft Corporation | Multi-user display proxy server |
US7439937B2 (en) | 2006-04-14 | 2008-10-21 | Microsoft Corporation | Appropriately rendering terminal server graphical data at multiple client side monitors |
US7889191B2 (en) | 2006-12-01 | 2011-02-15 | Semiconductor Components Industries, Llc | Method and apparatus for providing a synchronized video presentation without video tearing |
US8201218B2 (en) * | 2007-02-28 | 2012-06-12 | Microsoft Corporation | Strategies for securely applying connection policies via a gateway |
KR101313330B1 (ko) | 2007-02-28 | 2013-09-27 | 삼성전자주식회사 | 이미지 티어링 효과를 방지할 수 있는 영상 표시 시스템 및그것의 영상 표시 방법 |
KR20080082830A (ko) | 2007-03-09 | 2008-09-12 | 삼성전자주식회사 | 스패닝 트리 프로토콜을 이용하는 네트워크에서 스위칭장치의 플러싱 처리 장치 및 방법 |
US8140610B2 (en) | 2007-05-31 | 2012-03-20 | Microsoft Corporation | Bitmap-based display remoting |
-
2009
- 2009-03-09 US US12/400,688 patent/US8307103B2/en active Active
-
2010
- 2010-02-26 EP EP10751174.3A patent/EP2406726B1/en active Active
- 2010-02-26 WO PCT/US2010/025682 patent/WO2010104685A2/en active Application Filing
- 2010-02-26 CN CN2010800120446A patent/CN102349063B/zh active Active
- 2010-02-26 JP JP2011554073A patent/JP5646518B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
EP2406726A4 (en) | 2017-05-31 |
JP5646518B2 (ja) | 2014-12-24 |
WO2010104685A3 (en) | 2011-01-13 |
US8307103B2 (en) | 2012-11-06 |
JP2012519924A (ja) | 2012-08-30 |
EP2406726B1 (en) | 2018-06-06 |
WO2010104685A2 (en) | 2010-09-16 |
CN102349063A (zh) | 2012-02-08 |
US20100228871A1 (en) | 2010-09-09 |
EP2406726A2 (en) | 2012-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102349063B (zh) | 无拆分远程桌面协议(rdp)显示 | |
US11882165B2 (en) | Realtime kernel | |
US7197751B2 (en) | Real-time collaboration client | |
US7219127B2 (en) | Control unit operations in a real-time collaboration server | |
US7222305B2 (en) | Method of sharing a desktop with attendees of a real-time collaboration | |
US7206811B2 (en) | System and method for facilitating real-time collaborating by collapsing a queue for a slow client | |
EP2609520B1 (en) | Add-on management | |
US9123106B2 (en) | Watermarking screen capture content | |
CN107888663A (zh) | 一种分发文件的方法、设备及计算机可读介质 | |
WO2023142601A1 (zh) | 一种基于区块链的数据处理方法、设备以及可读存储介质 | |
Karaca | Multi-Protocol Video on Demand System for Distance Education with Pedagogical Enhancements | |
CN115699705A (zh) | 用于使用process@append和process@play模式处理dash和cmaf带内事件以及媒体的w3c媒体扩展 | |
KR20200091277A (ko) | 오디오 프라이밍을 고려한 디코딩 방법 및 시스템 | |
Yeop Ibrahim | Real time digital audio streaming over the internet network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150515 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150515 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |