CN103597797A - 基于web浏览器的桌面和应用远程化解决方案 - Google Patents

基于web浏览器的桌面和应用远程化解决方案 Download PDF

Info

Publication number
CN103597797A
CN103597797A CN201280028279.3A CN201280028279A CN103597797A CN 103597797 A CN103597797 A CN 103597797A CN 201280028279 A CN201280028279 A CN 201280028279A CN 103597797 A CN103597797 A CN 103597797A
Authority
CN
China
Prior art keywords
video
session
graph data
client computer
server
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.)
Granted
Application number
CN201280028279.3A
Other languages
English (en)
Other versions
CN103597797B (zh
Inventor
N·Y·阿伯多
B·A·库马
W·R·舒米德尔
S·桑库拉提
K·M·马拉迪
A·德罗尔
J·奇克
N·K·斯里尼瓦斯
T·布罗克韦
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN103597797A publication Critical patent/CN103597797A/zh
Application granted granted Critical
Publication of CN103597797B publication Critical patent/CN103597797B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • G06F9/452Remote windowing, e.g. X-Window System, desktop virtualisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/08Protocols specially adapted for terminal emulation, e.g. Telnet

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

公开了用于与客户机进行远程呈现会话的发明,客户机使用web浏览器来进行该会话。在各实施例中,代理服务器存在于远程呈现服务器与客户机之间。代理服务器建立与客户机的HTTP会话和与客户机的远程呈现会话。服务器生成用远程呈现协议编码的图形并将它们发送给代理,代理将它们重新编码成视频并将它们发送给客户机以供在web浏览器中显示。客户机捕捉web浏览器处的用户输入并将它发送给代理,代理用远程呈现协议对它进行编码并将它发送给服务器以供处理。

Description

基于web浏览器的桌面和应用远程化解决方案
背景技术
在远程呈现会话中,客户机计算机和服务器计算机跨通信网络进行通信。客户机发送服务器本地接收的输入,诸如鼠标光标移动和键盘按压。进而,服务器接收这一输入并执行与其相关联的处理,诸如执行用户会话中的应用。当服务器执行导致输出(诸如图形输出或声音)的处理时,服务器将这一输出发送到客户机以供呈现。以此方式,当应用实际上在服务器上执行时,应用对客户机的用户表现为在客户机上本地执行。
常规远程呈现会话的问题是参与该远程呈现会话的客户机需要已在其上安装了远程呈现会话应用——被配置成根据远程呈现会话协议与服务器进行通信的应用。这一要求意味着可能存在着用户能访问的、具有可与远程呈现会话服务器进行通信的网络连接的、但缺少用于进行远程呈现会话的远程呈现会话应用的许多计算机。
还存在供客户机与web浏览器而非远程呈现会话专用应用进行远程呈现会话的技术。在这些技术中,远程桌面图像通常被细分成多个块(tile),并且这些图像块中的每一个(或块的指示,其中客户机已经高速缓存了该块)被发送给客户机,并被显示在客户机的web浏览器中。在远程桌面图像改变时,确定“脏”块——图像已改变的那些块——并且那些脏块被发送给客户机以供经由web浏览器显示。
客户机使用web浏览器进行远程呈现会话的这些技术存在许多问题,其中的一些是公知的。
发明内容
客户机使用web浏览器(客户机在其中显示图像块)进行远程呈现会话的一个问题是性能问题。与使用专用远程呈现会话应用的远程呈现会话相比,web浏览器和图像块技术提供低得多的帧率。不仅帧率低得多,而且帧率经常过低以致它负面地影响用户体验。即,帧率通常过低,以致远程呈现会话中显示的运动是急动的,并且用户提供的输入与用户看到处理该输入的图形结果的时间之间存在中断。
因此,向缺少远程呈现会话应用的客户机提供使用视频而非图像块与服务器进行远程呈现会话的发明将是一种改进。在本发明的各实施例中,客户机具有web浏览器应用,该web浏览器应用被配置成既显示视频又接收针对该web浏览器应用的用户输入。客户机使用该web浏览器来建立与服务器的Ajax(异步Java脚本和XML——可扩展标记语言)连接以打开一连接。客户机和服务器随后交换信息以向该服务器认证该客户机。
客户机随后捕捉针对web浏览器窗口的用户输入(例如,鼠标、键盘、或触摸)并异步地将它(格式化成例如XML或JSON)发送到服务器,并且服务器接收这一输入并将它注入适当的应用或用户会话。在应用或用户会话生成图形输出时,服务器捕捉这一图形输出,将它编码成视频,并将它发送给客户机以供经由web浏览器显示。
附图说明
图1描绘其中可实现本发明的各实施例的示例通用计算环境。
图2描绘其中可实现本发明的各实施例的示例远程呈现会话服务器。
图3描绘与web浏览器进行远程呈现会话的客户机,其中代理将远程呈现会话数据转换成视频。
图4描绘与web浏览器进行远程呈现会话的客户机,其中服务器从被远程化的应用或桌面的实例所创建的图形输出中生成视频。
图5描绘与服务器进行远程呈现会话的两个客户机,一个客户机使用web浏览器并通过代理进行通信且作为视频来接收图形,而一个客户机直接与服务器进行通信并接收被编码成远程呈现会话数据的图形。
图6描绘要被编码成视频的两个图形数据帧,其中每一帧的一部分包含相同图像(但在不同的位置中),并且其中一个帧可基于另一个帧的编码而被编码。
图7描绘要被编码成视频的图形数据帧,其中该帧与前一帧共享共同的特征并且具有“脏”区域(各帧在该区域中是不同的)。
图8描绘与客户机进行远程呈现会话的服务器的示例操作过程,其中客户机在该会话中使用web浏览器。
图9描绘便于远程呈现会话服务器与客户机之间的远程呈现会话的代理服务器的示例操作过程,其中客户机在该会话中使用web浏览器。
图10描绘使用web浏览器来与服务器进行远程呈现会话的客户机的示例操作过程。
图11描绘可主存与客户机进行远程呈现会话的一个或多个虚拟机的示例虚拟机服务器,客户机使用web浏览器并且作为视频来接收远程呈现图形。
图12描绘可主存与客户机进行远程呈现会话的一个或多个虚拟机的另一示例虚拟机服务器,客户机使用web浏览器并且作为视频来接收远程呈现图形。
图13描绘包括主存多个虚拟机的虚拟机服务器的示例系统,每一虚拟机与客户机进行远程呈现会话,客户机使用web浏览器并且作为视频来接收远程呈现图形。
说明性实施例的详细描述
本发明的各实施例可以在一个或多个计算机系统上执行。图1及以下讨论旨在提供可在其中实现本发明的各实施例的合适计算环境的简要概括描述。
图1描绘了示例通用计算系统。通用计算系统可包括常规计算机20等,计算机20包括处理单元21。处理单元21可包括一个或多个处理器,它们中的每一个可具有一个或多个处理核。多核处理器(作为通常被称为具有不止一个处理核的处理器)包括单个芯片封装内所包含的多个处理器。
计算机20还可包括图形处理单元(GPU)90。GPU90是被优化以操纵计算机图形的专用微处理器。处理单元21可将工作卸载到GPU90。GPU90可以具有其自己的图形存储器,和/或可以访问系统存储器22的一部分。如处理单元21那样,GPU90可包括一个或多个处理单元,每一个都具有一个或多个核。
计算机20还可包括系统存储器22和系统总线23,系统总线23在系统处于操作状态时将包括系统存储器22的各个系统组件通信地耦合至处理单元21。系统存储器22可包括只读存储器(ROM)24和随机存取存储器(RAM)25。基本输入/输出系统26(BIOS)被存储在ROM24中,该基本输入/输出系统26包含了诸如在启动期间帮助在计算机20内的元件之间传输信息的基本例程。系统总线23可以是若干类型的总线结构中的任一种,包括实现各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线、以及局部总线。耦合到系统总线23的可以是直接存储器存取(DMA)控制器80,该DMA控制器80被配置成独立于处理单元21从存储器读取和/或写入存储器。另外,连接到系统总线23(诸如存储驱动器接口32或磁盘驱动器接口33)的设备可被配置成也是独立于处理单元21从存储器读取和/或写入存储器,而无需使用DMA控制器80。
计算机20还包括用于读写硬盘(未示出)或固态盘(SSD)(未示出)的存储驱动器27、用于读写可移动磁盘29的磁盘驱动器28,以及用于读写诸如CD ROM或其他光学介质之类的可移动光盘31的光盘驱动器30。硬盘驱动器27、磁盘驱动器28和光盘驱动器30被示为分别通过硬盘驱动器接口32、磁盘驱动器接口33和光盘驱动器接口34来连接到系统总线23。驱动器及其相关联的计算机可读存储介质为计算机20提供了对计算机可读指令、数据结构、程序模块,及其他数据的非易失性存储。
虽然这里描述的示例环境采用硬盘、可移动磁盘29和可移动光盘31,但本领域技术人员应理解,在该示例操作环境中也能使用可存储能由计算机访问的数据的其他类型的计算机可读介质,如闪存卡、数字视频盘、数字多功能盘((DVD)、随机存取存储器(RAM)、只读存储器(ROM)等。通常,这些计算机可读存储介质能够被用于一些实施例中来存储实现本公开的各方面的处理器可执行指令。计算机20也可包括主适配器55,其通过小型计算机系统接口(SCSI)总线56连接到存储设备62。
包括计算机可读指令的若干程序模块可存储在诸如硬盘、磁盘29、光盘31、ROM24或RAM25之类的计算机可读介质上,包括操作系统35、一个或多个应用程序36、其他程序模块37、以及程序数据38。一旦由处理单元执行,计算机可读指令使得下文中更详细描述的动作被执行或使得各种程序模块被实例化。用户可以通过诸如键盘40和定点设备42之类的输入设备向计算机20中输入命令和信息。其他输入设备(未示出)可包括话筒、游戏杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些及其他输入设备常常通过耦合到系统总线的串行端口接口46连接到处理单元21,但是,也可以通过诸如并行端口、游戏端口、或通用串行总线(USB)之类的其他接口来连接。显示器47或其他类型的显示设备也可以通过诸如视频适配器48之类的接口连接到系统总线23。除了显示器47之外,计算机通常包括其他外围输出设备(未示出),如扬声器和打印机。
计算机20可使用到一个或多个远程计算机(诸如,远程计算机49)的逻辑连接而在联网环境中操作。远程计算机49可以是另一个计算机、服务器、路由器、网络PC、对等设备或其他公共网络节点,并通常可包括以上相对于计算机20描述的许多或所有元件,但是在图1中只示出存储器存储设备50。图1中所描绘的逻辑连接可包括局域网(LAN)51和广域网(WAN)52。这样的联网环境在办公室、企业范围的计算机网络、内联网和因特网中是普遍的。
当用于LAN联网环境中时,计算机20可通过网络接口或适配器53连接到LAN51。当用于WAN联网环境中时,计算机20可通常包括调制解调器54,或用于通过诸如因特网之类的广域网52建立通信的其他手段。可以是内置的或外置的调制解调器54可通过串行端口接口46连接到系统总线23。在联网环境中,相对于计算机20所示的程序模块或其部分可被存储在远程存储器存储设备中。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。
在其中计算机20被配置成在联网环境中操作的实施例中,操作系统35被远程存储在网络上,而计算机20可通过网络启动这一远程存储的操作系统,而不是从本地存储的操作系统中启动。在一实施例中,计算机20包括瘦客户机,其中操作系统35少于完整的操作系统,而是被配置成处理联网以及诸如在监视器47上显示输出的内核。
图2概括地示出了其中可实现本发明的各方面的示例环境。例如,服务器204可实现图8的操作过程。本领域技术人员可理解,示出图2所描绘的示例元素是为了提供用于描述本发明的操作框架。因此,在一些实施例中,每个环境的物理布局可取决于不同的实现方案而有所不同。因此,该示例操作框架将仅被视为说明性的且不以任何方式限制权利要求的范围。
图2中所描绘的是服务器204,服务器204可包括被配置成实现远程呈现会话服务器的电路,或者在某些实施例中,服务器204可包括被配置成支持远程桌面连接的电路。在所描绘的示例中,服务器204可被配置成生成用于连接客户机的一个或多个会话,诸如会话1到N(其中N是大于2的整数)。简言之,在本发明的示例实施例中,会话一般可包括由被配置成与服务器204的内核214交互的多个子系统(例如,软件代码)实现的操作环境。例如,会话可包括实例化诸如桌面窗口之类的用户界面的进程、跟踪该窗口内的鼠标移动的子系统、将图标上的鼠标点击转换成实现程序实例的命令的子系统等。会话可由服务器204在逐用户基础上生成,例如在服务器204在网络连接上接收到来自客户机201的连接请求时由服务器204生成。一般而言,连接请求首先可由传输逻辑210处理,传输逻辑210例如可由服务器204的电路实现。在一些实施例中,传输逻辑210可包括网络适配器、可被配置成接收连接消息并将其转发给引擎212的固件和软件。如图2所示,在一些实施例中,传输逻辑210可包括每个会话的协议栈实例。一般而言,每个协议栈实例可被配置成将用户接口输出路由到客户机,以及将从客户机接收到的用户输入路由到与其会话相关联的会话核心244。
继续图2的一般性描述,在本发明的一些示例实施例中,引擎212可被配置成处理对会话的请求;确定每个会话的功能;通过为会话分配一组物理资源来生成会话;以及实例化会话的协议栈实例。在一些实施例中,引擎212可由能实现上述操作过程中的一部分的专门电路组件来实现。例如,一些示例实施例中,该电路在可包括存储器以及配置成执行实现引擎212的代码的处理器。如图2所描绘地,在一些情况下,引擎212可接收连接请求并确定例如许可证可用,并且可为该请求生成会话。在服务器204是包括远程桌面能力的远程计算机的情形中,引擎212可被配置成响应于连接请求生成会话而不检查许可。如图2所示,会话管理器216可被配置成接收来自引擎212的消息,并且响应于该消息,会话管理器216可将会话标识符添加到表中;向该会话标识符指派存储器;以及在指派给该会话标识符的存储器中生成系统环境变量和子系统进程的实例。
如图2所示,会话管理器216可实例化诸如运行时子系统240之类的环境子系统,该子系统可包括诸如会话核心244之类的内核模式部分。例如,在一实施例中,环境子系统被配置成将一些服务子集展示给应用程序并向操作系统214的内核提供接入点。在示例实施例中,运行时子系统240可控制进程和线程的执行,并且会话核心244可向内核214的执行程序发送请求以向线程分配存储器并调度执行它们的时间。在一实施例中,会话核心244可包括图形显示界面246(GDI)、安全子系统250和输入子系统252。在这些实施例中,输入子系统252可被配置成经由与该会话相关联的协议栈实例接收来自客户机201的用户输入并将该输入传送给合适会话的会话核心244。用户输入在一些实施例中可包括指示绝对和/或相对鼠标移动命令、鼠标坐标、鼠标点击、键盘信号、操纵杆移动信号等的信号。例如图标上的鼠标双击的用户输入可被会话核心244接收,并且输入子系统252可被配置成确定有图标位于与该双击相关联的坐标处。输入子系统252随后可被配置成向可执行与该图标相关联的应用的进程的运行时子系统240发送通知。
除了接收来自客户机201的输入之外,还可从应用和/或桌面接收绘制命令并由GDI246来处理。GDI246一般可包括能生成图形对象绘制命令的进程。GDI246在该示例实施例中可被配置成将其输出传递给远程显示子系统254,在此命令针对附连到该会话的显示驱动器被格式化。在某些示例实施例中,一个或多个物理显示器可被附连到服务器204,例如在远程桌面情形中。在这些示例实施例中,远程显示子系统254可被配置成镜像由远程计算机系统的显示驱动器呈现的绘制命令、并经由与该会话相关联的栈实例将镜像信息传送给客户机201。在服务器204是远程呈现会话服务器的另一示例实施例中,远程显示子系统254可被配置成包括可不与物理上附连到服务器204的显示器相关联的虚拟显示驱动器,例如服务器204可无头地(headless)运行。远程显示子系统254在该实施例中可被配置成接收针对一个或多个虚拟显示器的绘制命令并将它们经由与该会话相关联的栈实例传送给客户机201。在本发明的实施例中,远程显示子系统254可被配置成确定每个显示驱动器的显示分辨率,例如确定与虚拟显示器相关联的虚拟显示驱动器的显示分辨率或与物理显示器相关联的显示驱动器的显示分辨率;以及经由相关联的协议栈实例将分组路由到客户机201。
在一些示例实施例中,会话管理器216可附加地实例化与该会话的会话标识符相关联的可被配置成处理该会话的登入和登出的登录进程的实例。在这些示例实施例中,指示与登录进程相关联的图形用户界面的绘制命令可被传送给客户机201,在那里,客户机201的用户可向登录屏幕输入帐户标识符(例如用户名/口令组合)、智能卡标识符、和/或生物测定信息。该信息可被传送给服务器204并被路由至引擎212以及会话核心244的安全子系统250。例如,在某些示例实施例中,引擎212可被配置成确定用户帐户是否与许可证相关联;并且安全子系统250可被配置成生成该会话的安全令牌。
图3描绘与web浏览器进行远程呈现会话的客户机,其中代理将远程呈现会话数据转换成视频。在各实施例中,服务器304可被实现在图2的服务器204中,并且代理306和客户机308可被实现在图1的计算机20中。在各实施例中,服务器304正通过接收和发送远程呈现协议编码的数据来进行远程呈现会话,并且客户机308正通过接收和发送HTTP编码的数据(包括视频)来进行远程呈现会话。代理306从服务器304接收远程呈现协议编码的数据(例如,图形输出),将它编码成视频,并将它作为HTTP编码的数据发送给客户机308。同样,代理306从客户机308接收HTTP编码的数据(例如,用户输入),将它编码成远程呈现协议编码的数据,并将它发送给服务器304。
客户机308可通过建立与代理306的HTTP连接来发起远程呈现会话。HTTP连接可以是HTTP的变种,如HTTPS(HTTP安全)连接。该建立HTTP连接可诸如通过客户机308的用户向客户机308的web浏览器提供打开与建立同代理306的HTTP连接相关联的网页的用户输入来实现。HTTP连接可以是客户机308与代理306之间的Ajax连接。
HTTP连接被建立后,客户机308可向代理306认证它自己(代理306进而可使用与该认证相关联的凭证来向服务器304进行认证)。这一认证可例如包括客户机向代理306发送用户标识和口令,代理306可对照用户-口令对的数据库进行认证。在各实施例中,代理306不自己认证客户机,而是改为在建立与服务器304的远程呈现会话时使用来自客户机308的凭证来认证自己。在代理306成功建立了与服务器304的远程呈现会话的情况下,它可以确定客户机308已向代理306进行了认证。
代理306还建立关联于客户机308的与服务器304的远程呈现会话(如果代理306尚未这样做的话)。在这一远程呈现会话中,代理306担当远程呈现会话客户机(如图2的客户机201),且服务器304担当远程呈现会话服务器(如图2的服务器204)。在各实施例中,在服务器304建立与代理306的远程呈现会话时,服务器304使用与该会话相关联的登录的指示来确定要在该远程呈现会话中进行远程化的会话或应用。例如,可能存在与该登录相关联的服务器304重新连接的已断开连接的会话,或根本没有会话(在这种情况下,服务器304可为该登录实例化新会话)。在应用的会话输出而非会话(它可包括一个或多个应用)的图形输出被远程化的情况下,可发生相同的过程——重新连接已断开连接的应用,或在没有已断开连接的应用的情况下发起应用。
服务器304随后可经由远程呈现会话将被远程化的图形输出传送给代理306这可以按与图2的服务器204向客户机201远程化图形输出相似的方式来执行。代理306接收这一远程呈现协议编码的图形数据,并将它转换成要经由HTTP连接发送给客户机308的视频。在各实施例中,代理306将远程呈现协议编码的图形数据解码以产生图形数据,随后将该图形数据编码成一个或多个视频帧。这一视频可以按客户机可在本机解码的格式来编码。例如,客户机的web浏览器可被配置成处理HTML5格式的数据,包括在本机解码由HTML5<video>标签引用的一个或多个视频格式。这样的格式的示例是H.264。在将图形数据按视频格式进行了编码后,代理306将该视频传送给客户机308,其中客户机308解码该视频并将它显示在web浏览器中。
客户机308可发出影响服务器304所处理的事物的命令。客户机308的用户可提供针对客户机308的web浏览器的输入。这一输入可包括诸如鼠标、键盘、以及触摸输入等输入,连同相对于视频在何处作出该输入的指示(例如,距右侧50个像素且在所显示的视频左上角以下50个像素处)。客户机308可在web浏览器处使用用于检测输入的JavaScript技术来捕捉这一输入。客户机308随后可将该输入发送到代理306。客户机308可准备该输入以传输给代理306,如通过用表示数据结构和相关联阵列的人类可读形式(如JSON(JavaScript对象符号))或标签定界的标记格式(如XML(可扩展标记语言))来表达它。
客户机308可将该输入异步地发送给代理306,使得发送该输入可独立于在网页中显示视频来执行。在异步通信中,客户机308可独立于显示在网页中的视频来向代理306发送该输入(例如,在视频继续被显示在网页中时)。随后,如果并且在从代理306接收到响应时(例如,代理306向客户机308发送与处理该输入的结果相对应的更多视频),客户机308处理该响应。
代理306从客户机308接收该输入,并且在该输入是用一种格式(诸如,JSON或XML)编码的情况下,解码该输入,并将该输入重新编码成远程呈现会话数据。代理306随后可将这一经编码的远程呈现会话数据发送给服务器304,其中服务器304将该输入注入到该远程呈现会话的适当的应用或用户会话中,并执行与被提供给该应用或用户会话的输入相关联的处理。在该处理使得生成与该远程呈现会话相关联的进一步的图形输出时,服务器304可将这一附加的图形输出编码并将它发送给代理306,代理306将它转换成视频并将它发送给客户机308以供显示。
在各实施例中,服务器304和代理306可在虚拟机(VM)上执行,这些虚拟机可在同一物理主计算机上执行。在这样的场景中,服务器304和代理306可经由回环连接(使用指向它自己使用的网络接口的IP地址(如127.0.0.1)的连接)。例如,服务器304可监听端口3389且代理306可监听端口3390。随后,服务器304可通过向127.0.0.1:3390传送数据来与代理306进行通信,且代理可通过向127.0.0.1:3389传送数据来与服务器304进行通信。在同一物理机器上执行的服务器304与代理306之间使用回环连接允许传统远程呈现服务器在无需修改的情况下操作。这类似于使用代理306作为服务器304与使用web浏览器进行远程呈现会话的客户机之间的中介如何允许传统服务器在无需修改的情况下操作。有了该回环连接,被配置成只跨通信网络接口向客户机传送数据的传统远程呈现服务器可被用来实现本发明的各实施例,因为服务器将仍然跨网络通信接口与客户机(或代理)进行通信。
图4描绘与web浏览器进行远程呈现会话的客户机,其中服务器从被远程化的应用或桌面的实例所创建的图形输出中生成视频。服务器404可被实现在图1的计算机20中。图4中示出的计算机与图3中示出的计算机不同的一种情形是服务器404与服务器304不同。服务器304被配置成通过与客户机交换用远程呈现协议编码的数据来进行远程呈现会话。服务器304没有被配置成按视频的形式向使用web浏览器进行远程呈现会话的客户机发送远程呈现数据。相反,代理306被配置成从服务器接收远程呈现协议编码的数据并将它转换成视频,并且从客户机接收用户输入并按远程呈现协议来编码该用户输入。
相反,图4的服务器404被配置成作为视频来向客户机308发送远程呈现数据,客户机308使用web浏览器进行远程呈现会话。客户机306可按如以上参考图3所描述的客户机306与代理306建立HTTP连接相似的方式与服务器404建立HTTP连接。服务器404随后被配置成取得来自应用或用户会话的图形输出并将该输出编码成视频而不执行将该输出编码成远程呈现协议编码的数据的中间步骤。例如,在来自应用或用户会话的图形输出包括位图图像的情况下,这些位图图像可被服务器404编码成一个或多个视频帧。
类似于服务器404如何能够通过向客户机308发送视频而非远程呈现协议编码的数据进行远程呈现会话,服务器404可从客户机308接收针对web浏览器的用户输入(没有用远程呈现协议编码),如用JSON或XML。服务器404可解码该输入并将它注入相关联的应用或用户会话中,以与服务器404如何将用远程呈现协议编码的输入注入到应用或用户会话中相似的方式。
图5描绘与服务器进行远程呈现会话的两个客户机,一个客户机使用web浏览器并通过代理进行通信且作为视频来接收图形,而一个客户机直接与服务器进行通信并接收被编码成远程呈现会话数据的图形。服务器504和客户机508可被实现在图1的计算机20中。服务器504可被配置成使用远程呈现协议编码的数据与诸如客户机508等客户机进行远程呈现会话。服务器504还可被配置成与通过代理进行远程呈现会话的客户机(如客户机308)进行远程呈现会话,其中客户机使用web浏览器并且客户机和代理经由HTTP会话进行通信。即,服务器504可被配置成执行图3的服务器304(它被配置成通过代理306与使用web浏览器的客户机进行远程呈现会话)和图4的服务器404(它被配置成与使用web浏览器的客户机直接进行远程呈现会话)的功能。
图6-7描绘用于将图形数据编码成要在远程呈现会话中传送的视频的技术。在代理306或服务器404将多个远程呈现会话的图形输出编码成视频的情况下,计算机的处理能力可快速变得负担很重或紧张。鉴于此,本发明的各实施例提供将远程呈现会话的图形输出编码成视频的高效方式。这些实施例中的一些在图6-7中示出。
图6描绘要被编码成视频的两个图形数据帧,其中每一帧的一部分包含相同图像(但在不同的位置中),并且其中一个帧可基于另一个帧的编码而被编码。帧600是来自计算机桌面的图形数据帧,并且帧650是描绘稍后时间的同一桌面的图形数据帧。帧600包括部分602。在帧650中,帧600的部分602已从位置652移至位置654。因此,部分602和654描绘了同一图像,只是在不同的位置。因此,帧650的部分654可不必被重新编码。相反,排除了部分654的帧650可被重新编码并随后与先前已编码部分602(置于编码帧中的部分654的位置处)进行组合以产生编码帧650。在使用先前已编码数据来对帧650进行编码时,对帧650进行编码所需的计算资源可减少,从而允许对该帧进行编码的服务器或代理与它以其他方式能够并发地进行编码相比,并发地编码更多帧(并且因此并发地进行更多远程呈现会话)。
图7描绘要被编码成视频的图形数据帧,其中该帧与前一帧共享共同的特征并且具有“脏”区域(各帧在该区域中是不同的)。帧700包含两个脏区域——脏区域702和704,在这两个区域处帧700与它的前导帧(已被编码)不同。帧700可通过将脏区域702和704编码并随后将这些经编码的脏区域与从前一帧的编码中取得的先前已编码的非脏区域进行组合,而被编码成视频,与图6相同,在使用先前已编码数据来对帧700进行编码时,对帧700进行编码所需的计算资源可减少,从而允许对该帧进行编码的服务器或代理与它以其他方式能够并发地进行编码相比,并发地编码更多帧(并且因此并发地进行更多远程呈现会话)。
图8描绘与客户机进行远程呈现会话的服务器的示例操作过程,其中客户机在该会话中使用web浏览器。在各实施例中,图8的操作过程可由图4的服务器404在与客户机308进行远程呈现会话时来实现,其中客户机308使用web浏览器进行该会话。可以明白,参考图8(以及图9和10),存在没有实现全部所示操作或按与在此描述的次序不同的次序实现所示操作的本发明实施例。
操作802描绘建立与客户机的超文本传输协议(HTTP)会话。这可诸如通过客户机经由HTTP会话向服务器发送HTTP数据请求来实现。这一数据请求可包括对包含被远程化的桌面的流传输视频的网页的请求。服务器可以确定唯一地标识HTTP会话的HTTP会话令牌并将它发送给客户机。客户机可存储该令牌(如按HTTP cookie的形式储存)并随后在将来的通信中将它传送给服务器以标识该HTTP会话。
操作804描绘确认经由HTTP会话接收到的客户机的凭证。客户机可以使用凭证来确认它与服务器进行远程呈现会话的授权。在各实施例中,这一凭证包括用户登录和口令,其中用户登录与用户在服务器上的帐户相关联。服务器可储存凭证的数据库并且对照该数据库检查所提供的凭证以寻找匹配,这可指示该凭证是有效的。
操作806描绘确定与客户机的凭证相对应的会话或应用的实例,图形数据包括该实例的图形输出。在各实施例中,服务器将实例化用户会话的实例并开始执行它。在存在与该凭证相对应的已断开连接的用户会话的情况下,服务器可重新连接该会话。在各实施例中,如在该凭证对应于多个可能的应用的情况下,服务器可向客户机发送要被远程化的可能应用和/或会话的指示,并基于接收到的对这些可能的应用和/或会话之一的选择的指示来确定要将哪一个的图形输出远程化。
操作808描绘确定要在该远程呈现会话中发送给客户机的图形数据。在服务器执行在操作806中确定的用户会话或应用的实例时,该执行将使得生成图形数据。这是将经由该远程呈现会话发送的图形数据(或将发送该数据的表示)。确定要发送给客户机的图形数据可按与参考图2的服务器204描述的相似方式来执行。
操作810描绘将图形数据编码成视频。在各实施例中,操作810包括基于先前已将第二图形数据编码成第二视频将图形数据编码成视频。即,当前被编码的视频可具有与先前已编码的视频的共同特征,并且服务器可利用这些共同特征来减少用来将图形数据编码成视频的处理资源。例如,这可包括基于图形数据相对于第二图形数据的脏区域来编码该图形数据,并使用第二视频的至少一部分来编码该图形数据。这可例如如参考图7的帧700所示的那样发生。在图形数据和第二图形数据之间存在少量更新的情况下,这些更新可被表达成标识这些相应图形数据的彼此不同的“脏区域”。随后,服务器可只将图形数据的脏区域编码成视频,并将这些经编码的脏区域与包含非脏区域的视频的第二视频进行组合来创建该图形数据的视频。
基于先前已将第二图形数据编码成第二视频来将图形数据编码成视频的各实施例还包括基于该图形数据中的也被描绘在该第二图形数据中的元素来编码该图形数据,该元素在该图形数据中被描绘在与该第二图形数据中的不同位置处,并且使用该第二视频的至少一部分来编码该图形数据。即,应用窗口(等等)可在该图形数据和该第二图形数据之间已经移动。这可例如如参考图6的帧600和650所示的那样发生。在标识了这一移动的情况下,服务器可取得第二视频的与该应用窗口相对应的部分并使用它来创建视频。它可将该图形数据的不是该应用窗口的那些部分编码成视频,并将它与来自第二窗口的该应用窗口的已编码视频进行组合。
在各实施例中,操作810包括接收图形数据的第一部分包括文本且图形数据的第二部分包括图像或视频的指示;以及基于图形数据的第一部分包括文本且图形数据的第二部分包括图像或视频的指示将该图形数据编码成视频。一些远程呈现服务器被配置成从它们正在将其图形输出远程化的应用接收“提示”,其中这些提示指示该图形输出是什么——例如,文本、纯色填充、图像、或视频。一些远程呈现服务器被配置成分析图形数据以确定这一信息。在这些实施例中,视频可基于这一信息来编码。例如,用户可能对在文本中看到压缩伪像比在图像中更敏感。服务器将图形输出可变地编码成视频,使得它在图形输出的作为图像的部分上使用比图形输出的作为文本的部分上更有损的压缩。
操作812描绘经由HTTP会话将该视频发送给客户机,使得客户机在web浏览器中显示该视频。在各实施例中,操作812包括经由HTTP会话将该视频发送给客户机,使得客户机显示该视频作为嵌入在web浏览器中所显示的网页中的视频元素。例如,视频可被嵌入在HTML5网页中,经由网页中的<video>标签来引用。在各实施例中,视频是流传输视频,使得在服务器继续从一个或多个应用或用户会话生成图形数据时,该图形数据被编码并在该流传输视频中作为附加视频发送给客户机。
操作814描绘从客户机接收针对web浏览器的用户输入;确定与该用户输入相对应的应用,该应用已产生了该图形数据的至少一部分;以及将该用户输入注入到该应用,使得该应用处理与该用户输入相对应的结果。当客户机在web浏览器中显示该视频时,用户可向web浏览器提供输入,如通过移动鼠标光标或在键盘处键入。这一信息可由客户机捕捉并经由HTTP会话发送给服务器。在服务器接收到该输入时,它随后可确定用户用该输入引用的应用(例如,在视频的左上角处的输入(其中特定应用窗口被描绘在该点处)可被确定为针对该应用窗口的输入)。随后服务器可将该输入注入到所确定的应用中,如参考图2所描述的。
图9描绘便于远程呈现会话服务器与客户机之间的远程呈现会话的代理服务器的示例操作过程,其中客户机在该会话中使用web浏览器。图9的操作过程可在图6的代理306中实现,因为它便于服务器304与客户机308之间的远程呈现会话。
操作902描绘建立与客户机的超文本传输协议(HTTP)会话。操作902可按与如何实现图8的操作802类似的方式来实现。
操作904描绘建立与服务器的远程呈现会话。操作904可按与如图2所示的服务器204处理来自客户机201的通过网络连接的连接请求相似的方式来实现。在操作904中,为建立远程呈现会话,代理服务器306扮演客户机201的角色,并且服务器304扮演服务器204的角色。在各实施例中,客户机201向代理306发送可被用来确认该客户机与服务器204进行远程呈现会话的授权的凭证。代理306可自己确认该凭证,和/或将该凭证传递给服务器204。服务器204可以使用该凭证作为建立远程呈现会话的一部分以对提供凭证作为建立远程呈现会话的一部分的计算机进行确认,和/或确定与该客户机的凭证相对应的会话或应用的实例,该实例的图形输出要在远程呈现会话中发送,如在操作806中描绘的。
操作906描绘从服务器并经由远程呈现会话接收用远程呈现协议编码的图形数据。一旦远程呈现会话已被建立,则服务器204就向代理306发送用远程呈现会话协议编码的图形数据(如在服务器204上执行的应用或用户会话所生成的)。
操作908描绘将图形数据编码成视频。在各实施例中,操作908包括将图形数据从它的远程呈现协议编码解码以生成一个或多个图像,并随后将该一个或多个图像重新编码成视频。在各实施例中,操作908包括将图形数据从它的远程呈现协议编码转换成视频编码而无需执行将图形数据解码以产生图像的中间步骤。
操作910描绘经由HTTP会话将该视频发送给客户机,使得客户机在web浏览器中显示该视频。在各实施例中,客户机的web浏览器可被配置成接收并显示遵循HTML5(超文本标记语言5)标准的信息。在这些实施例中,视频可被包括在网页中,如通过使用HTML5<video>标签。例如,在图形数据被编码成位于代理上的与它在其中被编码的网页相同的目录中的题为“remote_presentation_session.avi”的视频的情况下,<video>标签可在该网页中被表示成“<video src=“remote_presentation_session.avi”autoplay=”autoplay”/>”。在该示例中,属性autoplay=”autoplay”表示web浏览器将在接收到该视频的初始部分后开始自动播放它。
操作912描绘经由HTTP会话从客户机接收针对web浏览器的用户输入的指示。客户机可在web浏览器中显示该视频,如参考操作910所述,并且客户机可向web浏览器提供输入,如光标移动和按钮按下(包括按下键盘按钮)。这些可在客户机上被捕捉并经由HTTP会话传送给代理。在各实施例中,在其中提供输入的位置也经由HTTP会话被传送给代理。
操作914描绘用远程呈现协议编码用户输入。代理可取得它在操作912从客户机接收到的用户输入,并根据远程呈现协议来对它进行编码。例如,用户输入可按JSON(JavaScript对象符号)格式化的那样被接收,这根据模式类对象——对该类型的对象的结构和内容有约束的对象——来构造了该输入。在这种情况下,代理可从JSON格式中提取用户输入,并用远程呈现协议对它进行编码。
操作916描绘了经由远程呈现会话将经编码的用户输入发送给服务器。这可包括代理经由远程呈现会话连接将用远程呈现协议编码的用户输入发送给服务器。
操作918描绘从服务器并经由远程呈现会话接收用远程呈现协议编码的第二图形数据,该第二图形数据与在服务器上执行与用户输入相关联的操作的图形结果相对应。这可类似于如何实现操作906相似的方式来实现。在此,服务器已接收到用户输入,执行了与该用户输入相关联的处理,并生成了与来自执行与用户输入相关联的处理的图形结果相关联的更多远程呈现会话图形数据(以及可能的音频结果或可能只有音频结果)。在生成了图形结果之后,服务器用远程呈现协议将它编码并将它传送给代理。
操作920描绘将第二图形数据编码成第二视频。操作920可按与操作908相似的方式来执行。第二视频和相同视频可以是相同流传输视频的一部分,其中第二视频包括在该视频流中处于第一视频之后的一个或多个帧。
操作922描绘经由HTTP会话将该第二视频发送给客户机,使得客户机在web浏览器中显示该第二视频。操作922可按与操作910相似的方式来执行。
图10描绘使用web浏览器来与服务器进行远程呈现会话的客户机的示例操作过程。例如,这些操作过程可在它与图3的代理306或图4的服务器404进行通信时实现。
操作1002描绘建立与服务器的远程呈现会话。在各实施例中,远程呈现会话包括超文本传输协议(HTTP)会话。操作1002可类似于参考客户机如何实现操作802的描述来实现。
操作1004描绘经由HTTP会话将凭证发送给服务器,该凭证与被授权与该服务器进行远程呈现会话的用户相关联。操作1004可类似于参考客户机如何实现操作804的描述来实现。在各实施例中,客户机可提示用户录入登录和口令的输入,并使用接收到的输入作为凭证。
操作1006描绘经由HTTP会话从服务器接收视频,该视频包括来自在服务器上执行应用或用户会话的图形输出。这可包括从服务器接收包含<video>元素的网页(如HTML5网页),其中该<video>元素引用包括来自在服务器上执行应用或用户会话的图形输出的视频。
操作1008描绘在web浏览器中显示该视频。在客户机上执行的web浏览器可呈现包括该视频的网页,并在客户机的显示设备(如监视器)上显示结果。
操作1010描绘接收针对web浏览器的用户输入,该用户输入对应于视频中的位置。包含该视频的网页还可包含被配置成检测并捕捉针对该网页的用户输入的逻辑,如用JavaScript表达。这一用户输入可包括例如光标移动和/或键盘键按下。
操作1012描绘将用户输入的指示发送给服务器。在各实施例中,用户输入连同相对于视频在何处作出了该输入的指示一起发送(例如,光标进入视频的左边缘距左上角50像素并在时间t内向右移动了75像素)。在各实施例中,输入可被格式化以供传输,如用表示数据结构和相关联阵列的人类可读形式(如JSON(JavaScript对象符号))或标签定界的标记格式(如XML(可扩展标记语言))来格式化。
操作1014描绘从服务器接收与该服务器将用户输入注入到在该服务器上执行的对应于该位置的应用相对应的第二视频。该第二视频和该视频两者都可以是一个流传输视频——描绘来自服务器的在它随时间改变时被远程化的图形输出的流传输视频——的一部分。
操作1016描绘在web浏览器中显示该第二视频。在客户机继续接收流传输视频(包括该第二视频)时,它可在web浏览器中显示该流传输视频。
图11和12描绘被配置成实现虚拟机的计算机系统1100和1200的高级框图。在本发明的各示例实施例中,计算机系统1100和1200可包括图1中描述的元件。如图所示,可存在不同的体系结构;然而,它们一般具有相似的组件。例如,图11示出了一操作环境,其中本领域中也可被称为虚拟机监控程序的系统管理程序被拆分成微内核1102和父分区1104,而图12示出系统管理程序1204包括图11的父分区1104中找到的元素。
图11描绘可主存与客户机进行远程呈现会话的一个或多个虚拟机的示例虚拟机服务器,客户机使用web浏览器并且作为视频来接收远程呈现图形。系统管理程序微内核1102可被配置成控制并仲裁对计算机系统1100的硬件的访问。广泛而言,系统管理程序微内核1102可以生成称为分区的执行环境,如子分区11150到子分区N1152(其中N是大于1的整数)。在各实施例中,子分区是系统管理程序微内核1102支持的基本隔离单元。即,每一子分区可被映射到一组在系统管理程序微内核1102的控制下的硬件资源,例如存储器、设备、逻辑处理器周期等,并且系统管理程序微内核1102可隔离一个分区中的进程不使其访问另一分区的资源,例如,一个分区中的客操作系统可与另一分区的存储器隔离,且因此不能检测到其分区外部的存储器地址。在各实施例中,系统管理程序微内核1102可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件中、专用集成电路、或其组合。
该操作环境中的父分区1104可被配置成通过使用虚拟化服务提供者1128(VSP)来向在子分区1-N中执行的客操作系统提供资源,虚拟化服务提供者在开源社区中通常被称为后端驱动程序。广泛而言,VSP1128可用于通过虚拟化服务客户机(VSC)(开源社区中通常称为前端驱动程序)复用到硬件资源的接口,并经由通信协议与虚拟化服务客户机进行通信。如图所示,虚拟化服务客户机可以在客操作系统的上下文中执行。这些驱动程序不同于客机中的其余驱动程序,因为向这些驱动程序提供了系统管理程序而非客机。
微内核1102可以通过限制客操作系统的系统存储器视图来实施分区。客存储器是由系统管理程序控制的分区对存储器的查看。客物理地址能由系统物理地址(SPA)来支持,即物理计算机系统的存储器由系统管理程序进行管理。如图所示,在一实施例中,GPA和SPA可被安排成存储器块,即,一个或多个存储器页。当客机使用其页表向一个块写入时,数据实际被存储在根据系统管理程序使用的系统级页表而具有不同系统地址的块中。
如图所示,在本发明的各实施例中,IO仿真器(1134和1136),例如虚拟化IDE设备、虚拟化视频适配器、虚拟化NIC等,能被配置成在其各自的子分区中运行。如以下更详细描述的,通过将仿真器配置为在子分区内运行,减小了系统管理程序的攻击面以及计算开销。
每一子分区可包括一个或多个虚拟处理器(1130和1132),客操作系统(1120和1122)可管理并调度线程以在这些虚拟处理器上执行。一般而言,虚拟处理器是向物理处理器的表示提供特定架构的可执行指令以及相关联的状态信息。例如,一个虚拟机可具有带有英特尔x86处理器特性的虚拟处理器,而另一虚拟处理器可具有PowerPC处理器的特性。本示例中的虚拟处理器可被映射到计算机系统的逻辑处理器,使得实现虚拟处理器的指令将受到逻辑处理器的支持。由此,在包括多个逻辑处理器的实施例中,各虚拟处理器可以由各逻辑处理器同时执行,同时例如其他逻辑处理器执行系统管理程序指令。分区中虚拟处理器和存储器的组合可被认为是虚拟机。
客操作系统可包括任何操作系统,如不同版本的微软WINDOWS操作系统(例如,WINDOWS XP及WINDOWS7)。客操作系统可包括用户/内核操作模式,并且可具有可包括调度程序、存储器管理器等的内核。一般而言,内核模式可包括逻辑处理器中的执行模式,该执行模式授予对至少特权处理器指令的访问权。每一客操作系统可具有相关联的文件系统,该文件系统上可存储有应用(诸如终端服务器、电子商务服务器、电子邮件服务器等)以及客操作系统本身。客操作系统可调度要在虚拟处理器上执行的线程,且这些应用的实例可被实现。
图12描绘可主存与客户机进行远程呈现会话的一个或多个虚拟机的另一示例虚拟机服务器,客户机使用web浏览器并且作为视频来接收远程呈现图形。图12描绘以上在图11中描述的体系结构的另选体系结构。图12描绘了与图11的组件相类似的组件;然而,在该示例实施例中,系统管理程序1204可包括微内核组件和来自图11的父分区1104的组件,如虚拟化服务提供者1128和设备驱动程序1124等,而管理操作系统1202可包含例如用于配置系统管理程序1204的配置实用程序。在该体系结构中,系统管理程序1204可以执行与图11中的系统管理程序微内核1102相同或相似的功能;然而,在该体系结构中,系统管理程序1204可被配置成向子分区中执行的客操作系统提供资源。图12中的系统管理程序1204可以是独立的软件产品、操作系统的一部分、嵌入在主板的固件内,或者系统管理程序1204的一部分可以由专用集成电路来实现。
图13描绘包括主存多个虚拟机的虚拟机服务器的示例系统,每一虚拟机与客户机进行远程呈现会话,客户机使用web浏览器并且作为视频来接收远程呈现图形。在各实施例中,VM主机1300可被实现在图11的计算机系统1100或图12的计算机系统1200中。在这些实施例中,VM1302a和VM1302b可被实现在图11和12的子分区1150或1152中。
如图所示,VM1302a和1302b各自被配置成提供与一个或多个客户机的远程呈现会话,这些客户机经由该远程呈现会话接收视频并经由web浏览器进行远程呈现会话。例如,VM1302a和1302b中的每一个可被配置成实现图3的服务器304的功能。在这些实施例中,客户机308可连接到VM主机1300,并且VM主机可指导它的VM之一来提供与该客户机的远程呈现会话。VM主机1300可例如基于对它所主存的每一VM的负载进行平衡来作出这一指导。
尽管已经结合各附图所示的较佳方面描述了本发明,但要理解,可使用其他相似方面或者可对所述方面进行修改或添加来执行本发明的相同功能而不脱离本发明。因此,本发明不应该仅限于任何单个方面,而是应该在根据所附权利要求书的广度和范围内解释。例如,本文描述的各种过程可用硬件或软件、或两者的组合来实现。本发明可以用计算机可读存储介质和/或计算机可读通信介质来实现。由此,本发明或其某些方面或部分可采用包含在诸如软盘、CD-ROM、硬盘驱动器或任何其他机器可读存储介质等有形介质中的程序代码(即,指令)的形式。同样,本发明或其某些方面或部分可实现在传播信号中,或任何其他机器可读通信介质。当程序代码被加载到诸如计算机等机器并由其执行时,该机器变为被配置成实施所公开的各实施例的装置。除了此处明确阐述的具体实现之外,考虑此处所公开的说明书,其他方面和实现将对本领域的技术人员是显而易见的。说明书和所示实现旨在仅被认为是示例。

Claims (10)

1.一种用于与使用web浏览器的客户机进行远程呈现会话的方法,包括:
建立与所述客户机的包括超文本传输协议(HTTP)会话的远程呈现会话;
确定要在所述远程呈现会话中发送给所述客户机的图形数据;
将所述图形数据编码成视频;以及
经由所述HTTP会话将所述视频发送给所述客户机,使得所述客户机在所述web浏览器中显示所述视频。
2.如权利要求1所述的方法,其特征在于,还包括:
从所述客户机接收针对所述web浏览器的用户输入;
确定对应于所述用户输入的应用,所述应用已产生了所述图形数据的至少一部分;以及
将所述用户输入注入到所述应用中,使得所述应用处理与所述用户输入相对应的结果。
3.如权利要求1所述的方法,其特征在于,确定要发送给所述客户机的图形数据的操作是由第一计算机执行的,并且其中将所述图形数据编码成视频并将所述视频发送给所述客户机的操作是由第二计算机执行的,并且所述方法还包括:
在所述第一计算机和第二计算机之间建立远程呈现会话;
在编码所述图形数据之前,由所述第二计算机并从所述第一计算机接收用远程呈现协议编码的所述图形数据;以及
在将所述图形数据编码成视频之前,解码用所述远程呈现协议编码的所述图形数据以确定所述图形数据。
4.如权利要求1所述的方法,其特征在于,将所述图形数据编码成视频包括:
基于先前已将第二图形数据编码成第二视频将所述图形数据编码成视频。
5.如权利要求4所述的方法,其特征在于,基于先前已将第二图形数据编码成视频将所述图形数据编码成视频包括:
基于所述图形数据相对于所述第二图形数据的脏区域来编码所述图形数据,并使用所述第二视频的至少一部分来编码所述图形数据。
6.如权利要求4所述的方法,其特征在于,基于先前已将第二图形数据编码成视频将所述图形数据编码成视频包括:
基于在所述图形数据中描绘的也在所述第二图形数据中描绘的元素来编码所述图形数据,所述元素在所述图形数据中被描绘在与所述第二图形数据中不同的位置,并使用所述第二视频的至少一部分来编码所述图形数据。
7.如权利要求1所述的方法,其特征在于,经由所述HTTP会话将所述视频发送给所述客户机,使得所述客户机在所述web浏览器中显示所述视频包括:
经由所述HTTP会话将所述视频发送给所述客户机,使得所述客户机显示所述视频作为嵌入在所述web浏览器中所显示的网页中的视频元素。
8.如权利要求1所述的方法,其特征在于,还包括:
在确定要在所述远程呈现会话中发送给所述客户机的图形数据之前,对经由所述HTTP会话接收到的所述客户机的凭证进行确认。
9.如权利要求1所述的方法,其特征在于,还包括:
接收所述图形数据的第一部分包括文本且所述图形数据的第二部分包括图像或视频的指示;以及
其中将所述图形数据编码成视频包括:
基于所述图形数据的第一部分包括文本且所述图形数据的第二部分包括图像或视频的指示来将所述图形数据编码成视频。
9.一种用于使用web浏览器来与服务器进行远程呈现会话的系统,包括:
处理器;
当所述系统可操作时通信地耦合到所述处理器的存储器,所述存储器承载处理器可执行指令,当所述指令由所述处理器执行时使得所述系统至少执行以下操作:
建立与所述服务器的远程呈现会话,所述远程呈现会话包括超文本传输协议(HTTP)会话;
经由所述HTTP会话从所述服务器接收视频,所述视频包括来自在所述服务器上执行应用或用户会话的图形输出;以及
在所述web浏览器中显示所述视频。
10.如权利要求9所述的系统,其特征在于,所述存储器还承载在所述处理器上执行时使得所述处理器执行以下操作的处理器可执行指令:
在经由所述HTTP会话从所述服务器接收视频之前,经由所述HTTP会话向所述服务器发送凭证,所述凭证与被授权与所述服务器进行远程呈现会话的用户相关联。
CN201280028279.3A 2011-06-10 2012-05-29 基于web浏览器的桌面和应用远程化解决方案 Active CN103597797B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/158,268 US9167020B2 (en) 2011-06-10 2011-06-10 Web-browser based desktop and application remoting solution
US13/158,268 2011-06-10
PCT/US2012/039887 WO2012170237A2 (en) 2011-06-10 2012-05-29 Web-browser based desktop and application remoting solution

Publications (2)

Publication Number Publication Date
CN103597797A true CN103597797A (zh) 2014-02-19
CN103597797B CN103597797B (zh) 2016-05-11

Family

ID=47294086

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280028279.3A Active CN103597797B (zh) 2011-06-10 2012-05-29 基于web浏览器的桌面和应用远程化解决方案

Country Status (8)

Country Link
US (1) US9167020B2 (zh)
EP (1) EP2719148B1 (zh)
JP (1) JP6072018B2 (zh)
KR (1) KR101916980B1 (zh)
CN (1) CN103597797B (zh)
CA (1) CA2838287A1 (zh)
MX (1) MX2013014599A (zh)
WO (1) WO2012170237A2 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105468322A (zh) * 2015-11-20 2016-04-06 中电海康集团有限公司 一种基于分段视频播放的实时查看远程桌面方法
CN107924318A (zh) * 2015-08-14 2018-04-17 微软技术许可有限责任公司 基于web浏览器的桌面和应用远程处理解决方案
CN108959455A (zh) * 2018-06-15 2018-12-07 上海陆家嘴国际金融资产交易市场股份有限公司 单页Web应用实现方法、装置、计算机设备和存储介质
CN110032427A (zh) * 2019-04-19 2019-07-19 合肥谐桐科技有限公司 基于虚拟化实现在线云应用管理的系统及其方法
CN111093091A (zh) * 2019-12-11 2020-05-01 西安万像电子科技有限公司 视频处理方法、服务器及系统
CN112868212A (zh) * 2018-09-12 2021-05-28 思杰系统有限公司 用于html应用的改进的远程显示协议的系统和方法
CN113169998A (zh) * 2018-10-11 2021-07-23 思杰系统有限公司 用于经由中间装置的片上系统进行流量优化的系统和方法

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8918518B2 (en) * 2007-08-21 2014-12-23 China Mobile Communications Corporation Access session controller, IP multimedia subsystem and registration and session method thereof
US11012480B2 (en) * 2010-09-13 2021-05-18 Jeffrey W. Mankoff Modifying signal associations in complex computing networks
CA2843766A1 (en) * 2011-08-16 2013-02-21 Destiny Software Productions Inc. Script-based video rendering
US9313100B1 (en) * 2011-11-14 2016-04-12 Amazon Technologies, Inc. Remote browsing session management
US8959591B2 (en) * 2012-01-06 2015-02-17 Elastic Path Software, Inc. Follow location handler and selector functionality in a stateless microkernel web server architecture
US9277237B2 (en) * 2012-07-30 2016-03-01 Vmware, Inc. User interface remoting through video encoding techniques
US20140108940A1 (en) * 2012-10-15 2014-04-17 Nvidia Corporation Method and system of remote communication over a network
US9189884B2 (en) 2012-11-13 2015-11-17 Google Inc. Using video to encode assets for swivel/360-degree spinners
US9930082B2 (en) 2012-11-20 2018-03-27 Nvidia Corporation Method and system for network driven automatic adaptive rendering impedance
US9479489B2 (en) 2013-03-05 2016-10-25 Comcast Cable Communications, Llc Systems and methods for providing services
JP6369043B2 (ja) * 2013-03-15 2018-08-08 株式会社リコー 配信制御システム、配信システム、配信制御方法、及びプログラム
JP6337499B2 (ja) * 2013-03-15 2018-06-06 株式会社リコー 配信制御システム、配信システム、配信制御方法、及びプログラム
JP2014199648A (ja) 2013-03-15 2014-10-23 株式会社リコー 配信制御システム、配信システム、配信制御方法、及びプログラム
US9819604B2 (en) 2013-07-31 2017-11-14 Nvidia Corporation Real time network adaptive low latency transport stream muxing of audio/video streams for miracast
CN103533038A (zh) * 2013-09-30 2014-01-22 华南理工大学 一种基于html5的远程控制系统及其远程控制方法
JP6337437B2 (ja) * 2013-09-30 2018-06-06 富士通株式会社 情報処理装置、情報処理システム、及びプログラム
CN105684409B (zh) 2013-10-25 2019-08-13 微软技术许可有限责任公司 在视频和图像编码和解码中使用散列值来表示各块
US10264290B2 (en) 2013-10-25 2019-04-16 Microsoft Technology Licensing, Llc Hash-based block matching in video and image coding
KR102247410B1 (ko) * 2014-02-07 2021-05-04 오라클 인터내셔날 코포레이션 모바일 클라우드 서비스 아키텍처
US9392053B2 (en) * 2014-02-21 2016-07-12 Dell Products L.P. Generic transcoding service with library attachment
US9553925B2 (en) 2014-02-21 2017-01-24 Dell Products L.P. Front-end high availability proxy
US9936002B2 (en) * 2014-02-21 2018-04-03 Dell Products L.P. Video compose function
US20150244835A1 (en) * 2014-02-21 2015-08-27 Andrew T. Fausak Transcoding instance with multiple channels
EP3108632B1 (en) * 2014-02-21 2018-01-10 Dell Products L.P. Generic transcoding service
CN105393537B (zh) 2014-03-04 2019-08-27 微软技术许可有限责任公司 用于基于散列的块匹配的散列表构建和可用性检查
CN105556971B (zh) 2014-03-04 2019-07-30 微软技术许可有限责任公司 针对帧内块复制预测中的块翻动和跳跃模式的编码器侧判定
US10681372B2 (en) 2014-06-23 2020-06-09 Microsoft Technology Licensing, Llc Encoder decisions based on results of hash-based block matching
US10437432B2 (en) * 2014-06-27 2019-10-08 Vmware, Inc. Integration of user interface technologies
US10025684B2 (en) * 2014-09-24 2018-07-17 Microsoft Technology Licensing, Llc Lending target device resources to host device computing environment
US9769227B2 (en) 2014-09-24 2017-09-19 Microsoft Technology Licensing, Llc Presentation of computing environment on multiple devices
US10448111B2 (en) 2014-09-24 2019-10-15 Microsoft Technology Licensing, Llc Content projection
US10635296B2 (en) 2014-09-24 2020-04-28 Microsoft Technology Licensing, Llc Partitioned application presentation across devices
RU2679981C2 (ru) 2014-09-30 2019-02-14 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Основанные на хешах решения кодера для кодирования видео
US11075976B2 (en) 2014-12-24 2021-07-27 Vmware, Inc. Remoting application user interfaces
US10693923B2 (en) 2015-01-28 2020-06-23 Vmware, Inc. Establishing streaming sessions during remote sessions
US20160283070A1 (en) * 2015-03-25 2016-09-29 Vmware, Inc. Using reactive behaviors during remote sessions
US10547711B2 (en) 2015-03-25 2020-01-28 Vmware, Inc. Using off-screen user interface data during remote sessions
WO2016179436A1 (en) * 2015-05-05 2016-11-10 Colorado Code Craft Patent Holdco Llc Ultra-low latency remote application access
US9959607B2 (en) 2015-07-07 2018-05-01 Adp, Llc Automatic verification of graphic rendition of JSON data
WO2017046713A2 (en) * 2015-09-14 2017-03-23 Colorado Code Craft Patent Holdco Llc Secure, anonymous browsing with a remote browsing server
KR101742258B1 (ko) * 2016-02-29 2017-05-31 경희대학교 산학협력단 웹 기반 가상 데스크탑 프로토콜을 이용한 컨텐츠 제공 방법 및 장치
US10237566B2 (en) 2016-04-01 2019-03-19 Microsoft Technology Licensing, Llc Video decoding using point sprites
US10575007B2 (en) 2016-04-12 2020-02-25 Microsoft Technology Licensing, Llc Efficient decoding and rendering of blocks in a graphics pipeline
EP3247084B1 (en) 2016-05-17 2019-02-27 Nolve Developments S.L. Server and method for providing secure access to web-based services
US10970101B2 (en) 2016-06-03 2021-04-06 Vmware, Inc. System and method for dynamically configuring virtual displays and virtual inputs for different remote sessions that each present content for a virtual machine
US10469562B2 (en) 2016-06-24 2019-11-05 Vmware, Inc. Virtual machine pixel remoting
US10157480B2 (en) 2016-06-24 2018-12-18 Microsoft Technology Licensing, Llc Efficient decoding and rendering of inter-coded blocks in a graphics pipeline
US10390039B2 (en) 2016-08-31 2019-08-20 Microsoft Technology Licensing, Llc Motion estimation for screen remoting scenarios
US10430378B1 (en) * 2016-09-19 2019-10-01 Tintri By Ddn, Inc. Fast container distribution with storage acceleration
US11197010B2 (en) 2016-10-07 2021-12-07 Microsoft Technology Licensing, Llc Browser-based video decoder using multiple CPU threads
US11095877B2 (en) 2016-11-30 2021-08-17 Microsoft Technology Licensing, Llc Local hash-based motion estimation for screen remoting scenarios
CN107124450A (zh) * 2017-04-18 2017-09-01 恒泰艾普(北京)云技术有限公司 一种基于html5的远程桌面访问系统及远程桌面访问方法
US10666706B2 (en) 2017-11-22 2020-05-26 Citrix Systems, Inc. Rendering a web application in a cloud service
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
US11202085B1 (en) 2020-06-12 2021-12-14 Microsoft Technology Licensing, Llc Low-cost hash table construction and hash-based block matching for variable-size blocks
WO2023144758A2 (en) * 2022-01-27 2023-08-03 Bubble Workspace Ltd Proxy gateway-based security for rdp-type communications sessions

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008137432A2 (en) * 2007-05-01 2008-11-13 Dyyno Sharing of information and formatting information for transmission over a communication network
US20100077058A1 (en) * 2008-09-19 2010-03-25 Samsung Electronics Co., Ltd. Sending a remote user interface
US7953795B2 (en) * 2007-01-03 2011-05-31 Interwise Ltd. Method and apparatus for participating in a conference session over a data communication network

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000116606A (ja) * 1998-10-19 2000-04-25 Access:Kk 医療画像処理方法、医療画像伝送方法、医療画像処理装置、医療画像送信装置、および医療画像伝送装置
US6560637B1 (en) 1998-12-02 2003-05-06 Polycom, Inc. Web-enabled presentation device and methods of use thereof
SG99886A1 (en) * 2000-02-24 2003-11-27 Ibm System and method for collaborative multi-device web browsing
US7171444B2 (en) * 2001-11-14 2007-01-30 Sharp Laboratories Of America, Inc. Remote desktop protocol compression system
WO2005008448A2 (en) * 2003-07-18 2005-01-27 Remote Meeting Technologies, Inc. Browser-based video meeting system
US7614075B2 (en) 2004-08-13 2009-11-03 Microsoft Corporation Dynamically generating video streams for user interfaces
US7590750B2 (en) 2004-09-10 2009-09-15 Microsoft Corporation Systems and methods for multimedia remoting over terminal server connections
US7240111B2 (en) * 2005-04-12 2007-07-03 Belkin Corporation Apparatus and system for managing multiple computers
US8112513B2 (en) * 2005-11-30 2012-02-07 Microsoft Corporation Multi-user display proxy server
US20070220161A1 (en) 2006-03-15 2007-09-20 Microsoft Corporation Broadcasting a presentation over a messaging network
US7933955B2 (en) * 2006-07-11 2011-04-26 Igor Khalatian One-click universal screen sharing
US9438662B2 (en) 2007-04-30 2016-09-06 Microsoft Technology Licensing, Llc Enabling secure remote assistance using a terminal services gateway
US20080313545A1 (en) 2007-06-13 2008-12-18 Microsoft Corporation Systems and methods for providing desktop or application remoting to a web browser
US8184065B2 (en) * 2007-11-12 2012-05-22 Rgb Spectrum Efficient mode switching in a video processor system
WO2009096959A1 (en) * 2008-01-30 2009-08-06 Hewlett-Packard Development Company, L.P. A method for streaming video data
JP5003521B2 (ja) * 2008-02-14 2012-08-15 日本電気株式会社 動き補償に伴う更新領域検出装置
JP5303192B2 (ja) * 2008-06-03 2013-10-02 株式会社日立メディコ 医療画像システム、医療画像システムの画像圧縮方法
US8910112B2 (en) 2008-07-30 2014-12-09 Sap Ag Extended enterprise connector framework using direct web remoting (DWR)
US8254704B2 (en) * 2008-10-30 2012-08-28 Microsoft Corporation Remote computing platforms providing high-fidelity display and interactivity for clients
US20100131868A1 (en) * 2008-11-26 2010-05-27 Cisco Technology, Inc. Limitedly sharing application windows in application sharing sessions
JP2010157899A (ja) * 2008-12-26 2010-07-15 Sharp Corp 画像処理装置、画像形成装置、画像処理方法、コンピュータプログラム及び記録媒体
US8195768B2 (en) 2008-12-29 2012-06-05 Apple Inc. Remote slide presentation
US9311618B2 (en) * 2009-04-07 2016-04-12 Clearslide, Inc. Mixed content type presentation system
US20100306406A1 (en) 2009-05-29 2010-12-02 Alok Mathur System and method for accessing a remote desktop via a document processing device interface
US9143570B2 (en) * 2010-05-04 2015-09-22 Microsoft Technology Licensing, Llc Desktop screen sharing over HTTP
GB2481613A (en) * 2010-06-30 2012-01-04 Skype Ltd Updating regions of shared images using a server that records image status
TWI495330B (zh) * 2010-08-02 2015-08-01 Ncomputing Inc 有效地串流數位視訊的系統及方法
US8711844B2 (en) * 2011-01-10 2014-04-29 Vtech Telecommunications Limited Peer-to-peer, internet protocol telephone system with proxy interface for configuration data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7953795B2 (en) * 2007-01-03 2011-05-31 Interwise Ltd. Method and apparatus for participating in a conference session over a data communication network
WO2008137432A2 (en) * 2007-05-01 2008-11-13 Dyyno Sharing of information and formatting information for transmission over a communication network
WO2008137432A3 (en) * 2007-05-01 2010-02-18 Dyyno Sharing of information and formatting information for transmission over a communication network
US20100077058A1 (en) * 2008-09-19 2010-03-25 Samsung Electronics Co., Ltd. Sending a remote user interface

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107924318A (zh) * 2015-08-14 2018-04-17 微软技术许可有限责任公司 基于web浏览器的桌面和应用远程处理解决方案
CN105468322A (zh) * 2015-11-20 2016-04-06 中电海康集团有限公司 一种基于分段视频播放的实时查看远程桌面方法
CN108959455A (zh) * 2018-06-15 2018-12-07 上海陆家嘴国际金融资产交易市场股份有限公司 单页Web应用实现方法、装置、计算机设备和存储介质
CN108959455B (zh) * 2018-06-15 2020-12-04 未鲲(上海)科技服务有限公司 单页Web应用实现方法、装置、计算机设备和存储介质
CN112868212A (zh) * 2018-09-12 2021-05-28 思杰系统有限公司 用于html应用的改进的远程显示协议的系统和方法
CN113169998A (zh) * 2018-10-11 2021-07-23 思杰系统有限公司 用于经由中间装置的片上系统进行流量优化的系统和方法
CN110032427A (zh) * 2019-04-19 2019-07-19 合肥谐桐科技有限公司 基于虚拟化实现在线云应用管理的系统及其方法
CN111093091A (zh) * 2019-12-11 2020-05-01 西安万像电子科技有限公司 视频处理方法、服务器及系统

Also Published As

Publication number Publication date
US9167020B2 (en) 2015-10-20
KR20140036220A (ko) 2014-03-25
US20120317236A1 (en) 2012-12-13
MX2013014599A (es) 2014-01-24
EP2719148A4 (en) 2014-11-05
KR101916980B1 (ko) 2018-11-08
JP6072018B2 (ja) 2017-02-01
EP2719148B1 (en) 2021-05-05
JP2014523669A (ja) 2014-09-11
WO2012170237A3 (en) 2013-02-21
EP2719148A2 (en) 2014-04-16
CN103597797B (zh) 2016-05-11
CA2838287A1 (en) 2012-12-13
WO2012170237A2 (en) 2012-12-13

Similar Documents

Publication Publication Date Title
CN103597797B (zh) 基于web浏览器的桌面和应用远程化解决方案
US20170046013A1 (en) Web-browser based desktop and application remoting solution
US10212244B2 (en) Information push method, server, user terminal and system
KR101773638B1 (ko) 라이트웨이트 클라이언트를 이용해서 네트워크를 거쳐 가상화 컴퓨팅 서비스와 인터페이스하기 위한 방법
JP5451397B2 (ja) リモートインターラクションに応答してビデオコンテンツを配信するためのアーキテクチャー
US10623500B2 (en) Remote desktop sharing and collaboration via image scanning
US20140074911A1 (en) Method and apparatus for managing multi-session
CN103518189A (zh) 流媒体在虚拟化的桌面环境中的集成呈现
WO2015101324A1 (zh) 网络资源传输方法和终端
CN102946409A (zh) 从多个服务器向客户机递送单个终端用户体验
EP2856753B1 (en) Communicating with an endpoint using matrix barcodes
CN102413150A (zh) 服务器、虚拟桌面控制方法以及虚拟桌面控制系统
US20140108940A1 (en) Method and system of remote communication over a network
US10638135B1 (en) Confidence-based encoding
CN104053072B (zh) 分发控制系统、分发系统以及分发控制方法
US10798399B1 (en) Adaptive video compression
CN113489805A (zh) 一种云桌面系统的对接方法、装置、设备及存储介质
US11372658B2 (en) Cross-device mulit-monitor setup for remote desktops via image scanning
US9483996B2 (en) System and method of leveraging GPU resources to increase performance of an interact-able content browsing service
EP4120660A1 (en) Cloud application-based resource transfer method and apparatus, and computer device
US10223997B2 (en) System and method of leveraging GPU resources to increase performance of an interact-able content browsing service
KR101170322B1 (ko) 웹을 기반으로 하는 개인 컴퓨터를 이용한 클라우드 컴퓨팅 서비스 제공 방법 및 장치
CN112099888A (zh) 画面显示方法、系统和零终端
KR102156234B1 (ko) 제작 의도 기반 적응형 스트리밍 서비스 장치 및 방법
CN116467535A (zh) 页面显示方法、装置、存储介质、计算机设备及程序产品

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150728

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20150728

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

C14 Grant of patent or utility model
GR01 Patent grant