CN107924318A - 基于web浏览器的桌面和应用远程处理解决方案 - Google Patents
基于web浏览器的桌面和应用远程处理解决方案 Download PDFInfo
- Publication number
- CN107924318A CN107924318A CN201680048404.5A CN201680048404A CN107924318A CN 107924318 A CN107924318 A CN 107924318A CN 201680048404 A CN201680048404 A CN 201680048404A CN 107924318 A CN107924318 A CN 107924318A
- Authority
- CN
- China
- Prior art keywords
- client computer
- session
- server
- browser
- client
- 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.)
- Withdrawn
Links
- 238000012545 processing Methods 0.000 title claims abstract description 23
- 238000000034 method Methods 0.000 claims description 45
- 238000003860 storage Methods 0.000 claims description 22
- 230000005540 biological transmission Effects 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 27
- 238000005192 partition Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000033001 locomotion Effects 0.000 description 6
- 238000009877 rendering Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000005611 electricity Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 208000019901 Anxiety disease Diseases 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000036506 anxiety Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 238000010422 painting Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/01—Input arrangements or combined input and output arrangements for interaction between user and computer
- G06F3/048—Interaction techniques based on graphical user interfaces [GUI]
- G06F3/0481—Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
- G06F9/452—Remote windowing, e.g. X-Window System, desktop virtualisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L65/00—Network arrangements, protocols or services for supporting real-time applications in data packet communication
- H04L65/40—Support for services or applications
- H04L65/403—Arrangements for multi-party communication, e.g. for conferences
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
公开了用于进行与客户机的远程呈现会话的发明,该客户机使用web浏览器来进行该会话。客户机先前接收了在web浏览器的运行时环境内执行的浏览器‑本机程序代码。浏览器‑本机程序代码实例化在web浏览器的运行时环境内执行的远程呈现客户端。服务器生成根据远程呈现协议编码的图形并将它们发送给远程呈现客户端以供在web浏览器中显示。客户机在web浏览器处捕捉用户输入,并将其发送给远程呈现客户端,该远程呈现客户端用远程呈现协议对其编码并将其发送给服务器以供处理。
Description
背景
在远程呈现会话中,客户机计算机和服务器计算机跨通信网络进行通信。客户机发送服务器本地接收的输入,例如鼠标光标移动和键盘按压。进而,服务器接收该输入并执行与其相关联的处理,例如在用户会话中执行应用。当服务器执行导致输出(例如图形输出或声音)的处理时,服务器将该输出发送给客户机以供呈现。以此方式,当应用实际上在服务器上执行时,对于客户机的用户来说它们看上去是在客户机上本地执行。
传统的远程呈现会话的一个问题在于参与远程呈现会话的客户机需要在其上安装了远程呈现会话应用—一种被配置为根据远程呈现会话协议与服务器通信的应用。这种需求意味着可存在许多可供用户访问的计算机,所述计算机具有可与远程呈现会话服务器通信的网络连接,但缺少用于进行远程呈现会话的远程呈现会话应用。
还存在供客户机利用web浏览器而非远程呈现会话专用应用来进行远程呈现会话的技术。在这些技术中,远程桌面图像通常被细分成多个小块(tile),并且这些图像小块的每个小块被发送给客户机(或该小块的指示,客户机已经将该小块高速缓存在了该指示处),并被显示在客户机的web浏览器中。当远程桌面图像改变时,“脏”小块-在其处图像已被改变的那些小块—被确定,并且那些脏小块被发送给客户机以供通过web浏览器显示。
这些供客户机使用web浏览器来进行远程呈现会话的技术存在很多问题,其中的一些问题是众所周知的。
概述
客户机使用web浏览器(客户机在该web浏览器处显示图像小块)来进行远程呈现会话的一个问题是性能问题。与使用专用远程呈现会话应用的远程呈现会话相比,web浏览器和图像小块技术提供了低得多的帧速率。不仅是帧速率低得多,而且帧速率经常低得使得其对用户体验有负面影响。就是说,帧速率经常如此之低,使得显示在远程呈现会话中的运动不平稳,并且在用户提供的输入和用户何时看见处理该输入的图形结果之间不存在联系。
因此,提供供缺少远程呈现会话应用的客户机使用视频而非图像小块来进行与服务器的远程呈现会话的发明是一种改进。在本发明的各实施例中,客户机具有web浏览器应用,该应用被配置为显示视频并接收定向到web浏览器应用的用户输入两者。客户机可以使用web浏览器来建立与服务器的AJAX(异步JavaScript以及XML–可扩展标记语言)的连接以打开连接。随后,客户机和服务器交换信息以向服务器认证客户机。
随后,客户机捕捉被定向到web浏览器窗口的用户输入(例如鼠标、键盘或触摸)并异步地将其发送给服务器。服务器接收该输入并将其注入到合适的应用或用户会话。当应用或用户会话生成图形输出时,服务器捕捉该图形输出、将其编码成视频,并将其发送给客户机以供通过web浏览器显示。
提供本概述以便以简化的形式介绍以下在详细描述中进一步描述的一些概念。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图简述
图1描绘了在其中可实现本发明的各实施例的示例通用计算环境。
图2描绘了用于实现本发明的各方面的示例操作环境。
图3描绘了客户机通过web浏览器进行远程呈现会话,其中在web浏览器内执行的远程会话客户端将远程呈现会话数据转换成视频。
图4描绘了要被编码成视频的两个图形数据帧,其中每个帧的一部分包含相同的图像(但是在不同的位置),并且其中一个帧可以基于另一个帧的编码而被编码。
图5描绘了要被编码成视频的一个图形数据帧,其中该帧与先前帧共享公共特征,并且具有在其中这些帧不同的“脏”区域。
图6描绘了一种使进行远程呈现会话的服务器作为远程会话主机并且使用web浏览器的客户机作为远程会话客户机的方法的实施例。
图7描绘了一种使进行远程呈现会话的服务器作为远程会话主机并且使用web浏览器的客户机作为远程会话客户机的方法的实施例。
图8描绘了可以主存一个或多个虚拟机的示例虚拟机服务器,所述虚拟机进行与客户机的远程呈现会话,所述客户机使用web浏览器并接收远程呈现图形作为视频。
图9描绘了可以主存一个或多个虚拟机的另一示例虚拟机服务器,所述虚拟机进行与客户机的远程呈现会话,所述客户机使用web浏览器并接收远程呈现图形作为视频。
图10描绘了包括主存多个虚拟机的虚拟机服务器的示例系统,每个虚拟机进行与客户机的远程呈现会话,所述客户机使用web浏览器并接收远程呈现图形作为视频。
说明性实施例的详细描述
本发明的各实施例可以在一个或多个计算机系统上执行。图1以及下述的讨论意图提供在其中可实现本发明的各实施例的合适的计算环境的简要、一般描述。
贯穿全文使用的术语电路可以包括硬件组件,例如硬件中断控制器、硬盘驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器,以及被用于操作这样的硬件的固件。术语电路还可以包括微处理器、专用集成电路以及处理器,例如执行读取并执行由固件和/或软件配置的指令的多核通用处理单元的各核。处理器可以由从存储器(例如RAM、ROM、固件和/或大容量存储)加载的、体现可操作以配置处理器执行功能的逻辑的指令来配置。
在电路包括硬件和软件的组合的示例实施例中,实施者可以写入体现逻辑的源代码,该源代码随后被编译为可以由硬件执行的机器可读代码。因为本领域技术人员可以明白现有技术已经演变为在硬件实现的功能或软件实现的功能之间几乎没有差别的地步,因而选择硬件或是软件来实现在此所述的功能仅仅是一种设计选择。换言之,由于本领域技术人员可以明白软件进程可被变换成等价的硬件结构,而硬件结构本身可被变换成等价的软件进程,是选择硬件实现或是软件实现留给了实施者处理。
现在参考图1,描绘了示例性计算设备100。计算机系统20可以包括处理器21,例如执行核。尽管示出了一个处理器21,在其它实施例中,计算机系统20可以具有多个处理器,例如每处理器基片有多个执行核和/或可各自具有多个执行核的多个处理器基片。如附图中所示,各种计算机可读存储介质可以由将各种系统组件耦合到处理器21的一个或多个系统总线来互连。系统总线可以是若干类型的总线结构中的任一种,包括存储器总线或存储器控制器、外围总线和使用各种总线架构中的任一种的局部总线。在示例实施例中,计算机可读存储介质可以包括例如随机存取存储器(RAM)25、存储设备27(例如机电硬盘驱动器、固态硬盘驱动器等)、固件(例如FLASH RAM或ROM)以及可移动存储设备(诸如例如CD-ROM31、软盘29,DVD,FLASH驱动器、外部存储设备)等。本领域的技术人员应该理解,可以使用其它类型的计算机可读存储介质,例如磁带、闪存存储卡和/或数字视频盘。
计算机可读存储介质可以提供用于计算机系统20的处理器可执行指令、数据结构、程序模块和其它数据(例如可执行指令)的非易失和易失存储。基本输入/输出系统(BIOS)26可以存储在系统存储器22中,其包含了诸如在启动期间帮助在计算机20内的元件之间传输信息的基本例程。许多程序可以被存储在固件、存储设备27、RAM 25和/或可移除存储设备29上,并由包括操作系统和/或应用程序的处理器21执行。通常,在一些实施例中,这样的计算机可读存储介质能够被用来存储有形地实现本公开的各方面的处理器可执行指令。
命令和信息可以由计算机系统20通过输入设备来接收,所述输入设备可以包括但不限于键盘40和指点设备42。其他输入设备可以包括话筒、操纵杆、游戏垫、扫描仪等等。这些及其他输入设备常常通过耦合到系统总线的串行端口接口连接到处理器21,但是,但也可以通过其他接口,如并行端口、游戏端口或通用串行总线(USB)来进行连接。显示器或其它类型的显示设备也可以通过接口(例如可以是图形处理单元90的一部分或连接到图形处理单元90的视频适配器)被连接到系统总线。除了显示器之外,计算机还通常包括其他外围输出设备,如扬声器和打印机(未示出)。图1中的示例性系统还可包括主机适配器、小型计算机系统接口(SCSI)总线以及连接到SCSI总线的外置存储设备。
计算机系统20可使用至一个或多个远程计算机,如一个远程计算机的逻辑连接在网络化环境下操作。远程计算机可以是另一个计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点,并且一般可包括上面关于计算机系统20所述的许多或全部元件。当在LAN或WAN联网环境中使用时,计算机系统20可通过网络接口卡(NIC)53连接到LAN或WAN。NIC 53(可以是内置或外置的)可以被连接到系统总线。在联网环境中,相关于计算机系统100所示的程序模块或其部分可被储存在远程存储器存储设备中。应当理解,在此所述的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。而且,尽管预想了本公开的许多实施例是尤其适用于计算机化的系统,但本文并不意在将本公开限制到这样的实施例。
在联网环境中,相关于计算机系统100所示的程序模块或其部分可被储存在可通过NIC 53访问的远程存储器存储设备中。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。在其中计算机系统20被配置为在联网环境中操作的实施例中,操作系统被远程存储在网络上,并且计算机系统20可以网络启动(netboot)该远程存储的操作系统,而不是从本地存储的操作系统来启动。在一实施例中,计算机系统100包括瘦客户机,该瘦客户机具有少于完整的操作系统的操作系统,而不包括被配置成处理联网以及显示输出的内核。
图2描绘了用于实现本发明的各方面的示例性操作环境200。例如,服务器230可以分别实现图6的方法600和图7的方法700。本领域的技术人员可以理解由图2描述的示例元素被示出以提供描述本发明的操作框架。因此,在一些实施例中,每个环境的物理布局可以依据不同的实现方案而不同。这样,示例操作框架仅被用作说明性的,并且不是要限制权项的范围。
操作环境200包括由电路组成的客户机220,所述电路被配置为实现在web浏览器或其它基于web的接口(浏览器222)的运行时环境内执行的REMOTE DESKTOP PROTOCOL(远程桌面协议,RDP)客户端223。在一个实施例中,客户机220可在图1的计算设备20中被实现。在操作环境200中用户与客户机220交互以通过网络210连接到主存在服务器230上的远程桌面或应用会话(远程会话)。在一个实施例中,远程会话是运行在服务器230上的操作系统。简言之,在本发明的示例的实施例中的远程会话通常可以包括由被配置为与服务器230的内核243交互的多个子系统(例如软件代码)实现的操作环境。例如,远程会话可以包括实例化用户界面(例如表示由远程会话创建的图形输出的桌面窗口)的进程、跟踪在窗口内的鼠标移动的子系统、将对图标的鼠标点击转换成实现程序的实例的命令的子系统等。由远程会话创建的这样的图形输出在此被描述为“图形用户界面(GUI)数据”。在一个实施例中,GUI数据是来自运行在服务器230上的操作系统的经渲染的显示输出。如在此所述,计算设备包括处理器和存储器,并且还可以包括允许多个计算设备共享底层物理硬件的虚拟化组件。
在一个实施例中,客户机220可以通过交换根据RDP协议编码的远程会话数据(启用RDP的数据)来经由远程访问服务器260连接到主存在服务器230上的远程会话。例如,客户机220可以使用浏览器222建立与远程访问服务器260的超文本传输协议(HTTP)连接。在该示例中,通过HTTP连接,远程访问服务器260向客户机220提供浏览器222执行以实例化的RDP客户端223的浏览器-本机程序代码(例如Javascript)。在一个实施例中,RDP客户端223是在浏览器222内执行的本机RDP客户端。RDP客户端223包括套接字客户端224,其建立与套接字主机的套接字连接。在一个实施例中,套接字主机被实现为网络中继(例如WebSocket(网络套接字)中继215)。在一个实施例中,套接字主机被实现为传输逻辑241中的套接字监听器,例如WebSocket监听器745。尽管在服务器230和客户机220之间交换的远程会话数据在此被描述为根据RDP协议被编码,但是本领域的技术人员可以认识到远程会话数据(例如来自服务器230上运行的操作系统的经渲染的显示输出)可以根据任何公知的远程呈现协议被编码,而不会背离本发明的精神。
一旦被连接到该会话,用户可以通过经由类似于图1的输入设备116的输入设备将命令和其它信息(用户输入)提供给客户机220来与远程会话交互。客户机220使用RDP将用户输入编码成经RDP编码的用户输入,并将该经RDP编码的用户输入传送给使用类似于图1的NIC 53的NIC主存远程会话的服务器230。在一个实施例中,客户机220可以用RDP编解码器226对用户输入进行编码。在接收到用户输入并将其注入远程会话之际,服务器230解码经RDP编码的用户输入。远程会话生成GUI数据,服务器230将其编码成经RDP编码的GUI数据以供传输给客户机220。在接收之际,在浏览器222内执行的RDP客户端223使用浏览器222在其本机运行时环境内执行的浏览器-本机程序代码来解码经RDP编码的GUI数据。在一个实施例中,RDP客户端223将经解码的经RDP编码的GUI数据转发给浏览器222的本机解码能力以显示GUI数据。例如,RDP客户端223可以将经解码的经RDP编码的GUI数据通过“视频”标签转发给浏览器222的本机解码能力。在一个实施例中,RDP客户端223将经解码的经RDP编码的GUI数据转换成一系列的浏览器本机图形操作并将其转发给浏览器222。例如,RDP客户端223可以向浏览器222转发一个或多个“画布”标签。这样,客户机220表示能够接收用户输入、将用户输入传送给主存远程会话的远程计算设备以及显示与从远程计算设备接收的远程会话相关联的图形数据的任何设备。
如本领域的技术人员所理解地,由于RDP客户端223在web浏览器222的应用框架内执行,RDP客户端223被允许仅访问web浏览器222可访问的那些系统资源(例如CPU时间、存储器等)。网页当被下载并在浏览器中加载/显示(引起模块的执行)时的提供如下所述的本发明的几个特征。另外,通过包括HTML文件的浏览器本机程序代码(例如Javascript)在web浏览器中实例化RDP客户端223。因此,本发明的各方面可以在没有将插件安装到web浏览器222或将RDP专用应用安装到客户机220的情况下被实现。
操作环境200还包括服务器230,其包括被配置为实现远程呈现会话服务器的电路。在一个实施例中,服务器230可以进一步包括被配置为支持远程桌面连接的电路。在图2所描绘的示例中,服务器230生成用于连接客户机的一个或多个远程会话,例如远程会话1到N(其中N是大于2的整数)。当例如服务器230通过网络连接(例如网络210)从客户机(例如客户机220)接收远程呈现会话连接请求时,远程会话可以由服务器230在逐用户基础上生成。通常,远程呈现会话连接请求可以首先由传输逻辑241处理,该逻辑可以例如由服务器230的电路实现。在一些实施例中,传输逻辑241包括网络适配器;固件,和可以被配置为接收连接消息并将它们转发给引擎242的软件。如图2所示,在一些实施例中传输逻辑241可以包括用于每个会话的协议栈实例。通常,每个协议栈实例可以被配置为将用户界面输出路由到客户机并将接收自客户机的用户输入路由到与其会话相关联的会话核251。
继续图2的通用描述,在本发明的一些示例实施例中,引擎242可以被配置为处理对会话的请求;确定每个会话的功能;通过为会话分配一组物理资源生成会话;以及实例化会话的协议栈实例。在一些实施例中,引擎242可以由实现上述操作过程中的一些的专用电路组件来实现。例如,在一些示例实施例中,电路可以包括存储器以及被配置为执行实现引擎242的代码的处理器。
在一些实例中,引擎242可以接收远程呈现会话连接请求,并确定例如许可证可用以及可为该请求生成会话。在其中服务器230是包括远程桌面能力的远程计算机的情况下,引擎242可以被配置为响应于远程呈现会话连接请求生成会话,而无需检查许可证。如由图2所示,会话管理器244可以被配置为接收来自引擎242的消息,并且响应于该消息,会话管理器244能够:向表格添加一个会话标识符;分配存储器给该会话标识符;以及生成在分配给会话标识符的存储器中的子系统进程的系统环境变量和实例。
如图2所示,会话管理器244可以实例化诸如运行时子系统250之类的环境子系统,该运行时子系统250可以包括内核模式部分,例如会话核251。例如,在一个实施例中,环境子系统被配置为向应用程序展现服务的某个子集并提供到操作系统240的内核243的接入点。在示例实施例中,运行时子系统250可以控制进程以及线程的执行,而会话核251可以发送执行内核243来为线程分配存储器并调度它们要被执行的时间的请求。在一个实施例中,会话核251可以包括图形显示界面254(GDI)、安全子系统253以及输入子系统252。在这些实施例中,输入子系统252可以被配置为通过与会话相关联的协议栈实例接收来自客户机220的用户输入并将该输入传送给合适的会话的会话核251。在一些实施例中,用户输入可以包括指示绝对和/或相对鼠标移动命令、鼠标坐标、鼠标点击、键盘信号、操纵杆移动信号等的信号。用户输入,例如在图标上的鼠标双击,可以由会话核251接收,并且输入子系统252可以被配置为确定图标位于与该双击相关联的坐标处。随后,输入子系统252可以被配置为发送通知给运行时子系统255,运行时子系统可以执行与图标相关联的应用的进程。
除了从客户机220接收输入之外,可以从应用和/或桌面接收绘制命令并由GDI254处理。GDI 254通常可以包括可生成图形对象绘制命令的进程。在这个示例实施例中,GDI 254可以被配置为将其输出传递给远程显示子系统255,在该处针对附连到会话的显示驱动程序格式化命令。在某些示例实施例中,一个或多个物理显示器可以被附连到服务器230,例如在远程桌面情形中。在这些示例实施例中,远程显示子系统255可以被配置为镜像由远程计算机系统的显示驱动程序所渲染的绘制命令,并将经镜像的信息通过与会话相关联的栈实例传送给客户机220。
在另一个示例实施例中,其中服务器230是远程呈现会话服务器,远程显示子系统255可以被配置为包括可以不与被物理附连到服务器230的显示器相关联的虚拟显示驱动程序,例如服务器230可以正运行无头进程(headless)。在该实施例中,远程显示子系统255可以被配置为接收一个或多个虚拟显示器的绘制命令并将它们通过与会话相关联的栈实例传送给客户机220。在本发明的一个实施例中,远程显示子系统255可以被配置为确定每个显示驱动程序的显示分辨率,例如确定与虚拟显示器相关联的虚拟显示驱动程序的显示分辨率或与物理显示器相关联的显示驱动程序的显示分辨率;并经由相关联的协议栈实例将这些分组路由到客户机220。
在一些示例实施例中,会话管理器244可以另外地实例化与该会话的会话标识符相关联的登录进程的实例,该实例可以被配置为处理会话的登录和登出。在这些示例实施例中,指示与登录进程相关联的图形用户界面的绘制命令可以被传送给客户机220,在该客户机220处,客户机220的用户可以将帐户标识符(例如用户名/密码组合、智能卡标识符和/或生物测定信息)输入到登录屏幕中。所述信息可以被传送给服务器230并被路由给引擎242以及会话核251的安全子系统253。例如,在某个示例实施例中,引擎242可以被配置为确定用户帐户是否与许可证相关联;并且安全子系统253可以被配置为生成会话的安全令牌。
图3描绘了客户机用web浏览器进行远程呈现会话,在其中服务器根据由正被远程处理的应用或桌面的实例创建的图形输出生成视频。在各实施例中,服务器330可以在图2的服务器230中实现,并且客户机320可以在图2的客户机220中实现。在各实施例中,服务器330通过与在客户机320上执行的web浏览器中运行的RDP客户端325交换经RDP编码的数据来与客户机320进行远程会话。在一个实施例中,RDP客户端325是由执行web浏览器的本机运行时环境内的浏览器-本机程序代码的web浏览器来实例化的。在一个实施例中,浏览器-本机程序代码是由客户机320从客户机320可通过网络310访问的网络资源处下载的。在一个实施例中,网络资源包括除了正与客户机320进行远程会话的服务器330之外的服务器。
客户机320可以通过以下方式来发起远程呈现:提交在与远程访问服务器360的HTTP连接上建立远程会话的连接请求,经由网络310提供对服务器330的访问。本领域的技术人员将认识到远程访问服务器360和服务器330可在相同的物理硬件上工作。HTTP连接可以是HTTP的变形,例如HTTPS(HTTP安全)连接。在一个实施例中,建立HTTP连接通过客户机320的用户为客户机320的web浏览器提供打开与远程访问服务器360相关联的网页的用户输入来实现的。例如,用户可以将统一资源定位符(URL)键入到web浏览器的地址栏中,该URL将web浏览器引导到用户可用来访问远程呈现会话的网页。在一个实施例中,URL是与登录网页相关联的网络地址。HTTP连接可以是在客户机320和远程访问服务器360之间的AJAX连接。
响应于连接请求,远程访问服务器360可以发送连接响应给客户机320,该连接响应包括针对与远程访问服务器360相关联的网页的HTML文件。在一个实施例中,客户机320可以有形地将连接响应存储在可由web浏览器访问的计算机可读存储设备中。在一个实施例中,远程访问服务器360通过将浏览器-本机程序代码嵌入在HTML文件中来向客户机320提供浏览器-本机程序代码。或者,远程访问服务器360通过在HTML文件中包括指令(例如经嵌入的链接)来向客户机320提供浏览器-本机程序代码,所述指令将客户机320的浏览器引导到可以下载浏览器-本机程序代码的网络存储位置(未示出)。
当在客户机320的浏览器的运行时环境内被执行时,浏览器-本机程序代码可以实现在与浏览器相关联的应用框架内执行的RDP客户端325。一旦被实现,RDP客户端325可以使用客户机320的浏览器的本机套接字API来建立RDP客户端325和套接字主机340之间的第一套接字连接。在一个实施例中,为了建立第一套接字连接,RDP客户端325可以通过客户机320的浏览器的本机套接字API向套接字主机340发送套接字握手请求。在接收到套接字握手请求之际,套接字主机340通过客户机320的浏览器的本机套接字API发送套接字握手响应给RDP客户端325。
类似地,在建立第一套接字信道之际,套接字主机340就建立与服务器330的第二套接字连接。第一和第二套接字信道一起使用HTTP连接作为管道建立在RDP客户端325和服务器330之间的套接字传输信道。在一个实施例中,套接字主机340在介于网络310内的客户机320和服务器330之间的网络中继(例如图2的网络中继215)内实现。在一个实施例中,套接字主机340被实现为在服务器330的传输逻辑内的套接字监听器(例如图2的套接字监听器245)。套接字传输信道允许RDP客户端325和服务器330之间的全双工、异步通信。在一个实施例中,第一套接字信道和第二信道中的一个或多个可以使用符合HTML5的WebSocketAPI来实现。在一个实施例中,RDP客户端325和服务器330之间的通信可以例如作为示例而非限制利用传输层安全(TLS)或安全套接字层(SSL)在安全传输上发生。
客户机320可以通过套接字传输信道使用RDP客户端325建立与服务器330的远程呈现会话。在该远程呈现会话中,客户机320用作使用RDP客户端325的远程会话客户机(例如图2的客户机220),而服务器330用作远程会话主机服务器(例如图2的服务器230)。在各实施例中,当服务器330建立了与客户机320的远程呈现会话时,服务器330使用与该会话相关联的登录的指示来确定要在远程呈现会话中远程处理的会话或应用。例如,可以存在与服务器330重新连接的登录相关联的断开会话,或根本没有会话(在该情况中服务器330可以为登录实例化新的会话)。在应用的会话输出而不是会话的图形输出(其可以包括一个或多个应用)被远程处理的情况下,相同的进程可以发生-重新连接断开的应用,或在不存在断开的应用的情况下实例化一个应用。
在一个实施例中,该登录可以包括客户机320自己向远程访问服务器360认证(进而,其可以使用与认证相关联的凭证来向服务器330进行认证)。该认证可以例如包括客户机320将用户标识和密码发送给远程访问服务器360,远程访问服务器360可以根据用户密码对数据库对该用户标识和密码进行认证。在一个实施例中,远程访问服务器360不自己认证客户机320,而是将来自客户机320的凭证转发给服务器330。
服务器330可以随后通过远程呈现会话向客户机320传送关于图像输出正被远程处理的内容(例如GUI数据)作为经RDP编码的GUI数据。这可以以类似于图2的服务器230如何远程处理GUI数据给客户机220的方式被执行。服务器330通过将包括多个远程呈现协议分组的经RDP编码的GUI数据发送给套接字主机340来将经RDP编码的GUI数据传送给客户机320。套接字主机340通过套接字传输信道将经RDP编码的GUI数据传送给RDP客户端325。通过将每个远程呈现协议分组-原本未经改变-封装成套接字帧来使经RDP编码的GUI数据准备好在套接字传输信道上传输。如本领域技术人员所理解地,无需中间件API来实现本发明的各种方面,因为在客户机320的web浏览器的运行时环境内执行的RDP客户机325接收由服务器330所传送的经RDP编码的GUI数据。
RDP客户机325接收经封装的经RDP编码的GUI数据并且使用在浏览器的本机运行时环境内执行的浏览器-本机程序代码解封出原本未经改变的经RDP编码的GUI数据。RDP客户机325解码经RDP编码的GUI数据并将经解码的经RDP编码的GUI数据转发给客户机320的浏览器,如上参考图2的关于RDP客户端223所述的。例如,客户机的浏览器可以被配置为处理采用HTML5格式的数据,包括本机地解码由HTML5<video>标签(<视频>标签)所引用的一个或多个视频格式。客户机320解码视频并在浏览器中显示它。在某些实施例中,RDP客户端325解码经RDP编码的GUI数据来以客户机320的浏览器可以直接显示的格式产生GUI数据。在当GPU(图形处理单元)存在于客户机上的各实施例中,RDP客户机可以使用WebGL API来将经RDP编码的GUI数据的解码进程中的一些卸载到客户机上的GPU。在当GPU(图形处理单元)存在于客户机上的各实施例中,RDP客户机可以使用WebGL API来将经RDP编码的GUI数据的解码进程中的一些卸载到客户机上的GPU。
客户机320可以发出影响服务器330处理的内容的命令。客户机320的用户可以提供定向给客户机320的浏览器的输入。该输入可以包括诸如鼠标、键盘和触摸输入的输入以及关于视频的输入在哪里做出的指示(例如在所显示的视频的左上角右边50个像素和之下50个像素)客户机320可以使用用于检测输入的JavaScript技术在浏览器处捕捉该输入。客户机320随后可以将输入发送给RDP客户机325。
RDP客户机325接收来自客户机320的输入并将该输入编码成经RDP编码的输入数据。RDP客户机325随后可以通过套接字主机340将该经RDP编码的输入数据发送给服务器330,其中服务器330将该输入注入到用于远程呈现会话的合适的应用或用户会话,并执行与被提供给应用或用户会话的输入相关联的处理。当处理导致附加的GUI数据的生成时,服务器330可以编码该附加的GUI数据并将其发送给在客户机320的浏览器内执行的RDP客户机325,该RDP客户机325将其转换成视频以供客户机320显示。
在各实施例中,服务器330和远程访问服务器360可以在虚拟机(VMs)上被执行,两个虚拟机都在相同的物理主机计算机上执行。在这样的场景中,服务器330以及远程访问服务器360可以通过回送连接(使用涉及其自己使用的网络接口的IP地址-例如127.0.0.1的连接)来通信。例如,服务器330可以监听端口3389,并且远程访问服务器360可以监听端口3390。随后,服务器330可以通过将数据传送到127.0.0.1:3390来与远程访问服务器360通信,并且远程访问服务器360可以通过将数据传送到127.0.0.1:3389来与服务器330通信。
使用在相同的物理机器上执行的服务器330和远程访问服务器360之间的回送连接允许传统的远程呈现服务器操作,而无需修改。这类似于使用远程访问服务器360作为在服务器330和使用web浏览器来进行远程呈现会话的客户机之间的中介如何允许传统服务器操作而无需修改。关于回送连接,仅被配置为跨通信网络接口将数据传送给客户机的传统的远程呈现服务器可以被用于实现本发明的各实施例,因为服务器将还是跨网络通信接口与客户机(或代理)通信。
图4和5描绘了用于将图形数据编码成要在远程呈现会话中传输的视频的技术。在服务器330正将多个远程会话的GUI数据编码成视频的情况下,服务器330的处理能力可以很快变成重负荷或紧张的。鉴于此,本发明的各实施例提供了将远程会话的GUI数据编码成视频的高效方式。这些实施例中的一些在图4和5中描绘。
图4描绘了要被编码成视频的两个GUI数据帧,其中每个帧的一部分包含相同的图像(但是在不同的位置),并且其中一个帧可以基于另一个帧的编码被编码。帧400是来自计算机桌面的GUI数据的帧,并且帧450是在稍后的时间处的描绘相同的桌面的GUI数据帧的一个帧。帧400包括部分402。在帧450中,帧400的该部分402已经从位置452移至位置454。因此,部分402和454描绘了相同的图像,只是在不同的位置中。这样,帧450的部分454无需被重新编码。而是,排除了部分454的帧450可以被编码并随后与先前被编码的部分402相组合(在经编码帧中被置于部分454的位置处)以产生经编码的帧450。在使用先前经编码的GUI数据帧来编码帧450时,编码帧450所需的计算资源可以被减少,从而允许对该帧进行编码的服务器或代理对比它原本能够同时编码的帧更多的帧进行编码(并且由此,同时进行更多的远程呈现会话)。
图5描绘了要被编码成视频的一个GUI数据帧的帧,其中该帧与先前帧共享公共特征,并且具有在其中这些帧不同的“脏”区域。帧500包含两个脏区域-脏区域502和504-在所述区域中帧500不同于在其之前且已经被编码的帧。通过编码脏区域502和504并随后将这些经编码的脏区域与从先前帧的编码中取得的先前编码的非脏区域组合可以将帧500编码成视频。如同关于图4那样,在使用先前经编码的GUI数据帧以编码帧500时,编码帧500所需的计算资源可以被减少,从而允许对帧进行编码的服务器同时对比它原本能够同时编码的帧更多的帧进行编码(并且由此,同时进行更多的远程呈现会话)。
图6描绘了一种用于使进行远程呈现会话的服务器作为远程会话主机并使使用web浏览器的客户机作为远程会话客户机的方法600的实施例。在各实施例中,方法600可以由图3的服务器330在其进行与客户机320的远程会话时实现。可领会,关于图6和7,本发明存在不实现所有描述的操作或以与所描述顺序不同的顺序实现所描述的操作的各种实施例。在步骤602中,服务器从客户机接收通过服务器的远程呈现会话进程建立远程呈现会话的请求。在一个实施例中,远程会话进程是在服务器上运行的操作系统。在一个实施例中,客户机先前已将浏览器-本机程序代码下载到了web浏览器上,如上参考图2的RDP客户端223所述的。这可以例如通过客户机经由HTTP会话向远程访问服务器发送HTTP请求来实现。在一个实施例中,对数据的请求可以包括对与远程访问服务器相关联的网页的请求。在一个实施例中,浏览器-本机程序代码实例化在web浏览器的运行时环境内执行的RDP客户端。就是说,RDP客户端在与web浏览器相关联的应用框架内执行。
在步骤604,服务器在客户机和远程会话(或在服务器上运行的操作系统)之间建立远程呈现会话。在一个实施例中,服务器可在建立与RDP客户端的远程呈现会话之前认证从客户机接收到的凭证。例如,服务器可以确定唯一地标识HTTP会话的HTTP会话令牌并将其发送给客户机。客户机可以存储该令牌(例如以HTTP cookie的形式)并随后在将来的通信中将其传送给服务器以标识HTTP会话。在一个实施例中,凭证与被授权通过远程呈现会话进程进行远程呈现会话的用户相关联。在一个实施例中,所述服务器部分基于该凭证标识远程呈现会话进程。在步骤606中,服务器根据远程呈现协议将由远程呈现会话进程生成的GUI数据编码为多个分组。在步骤608,服务器将多个分组发送给客户机以供web浏览器使用浏览器-本机程序代码进行解码以显示GUI数据。在一个实施例中,根据远程呈现协议编码的多个分组被本机地编码并被显示在web浏览器内。在一个实施例中,客户机将GUI数据显示为嵌入在网页中的视频元素。
在各实施例中,方法600的一个或多个步骤包括基于先前已将第二图形数据编码为第二视频来将图形数据编码成视频。就是说,正被编码的当前视频可以与先前编码的视频具有共性,并且服务器可以利用这些共性来减少用于将GUI数据编码成视频的处理资源。例如,这可以包括基于图形数据相对于第二图形数据的脏区域编码GUI数据,并使用第二视频的至少部分来编码图形数据。这可以例如如关于图5的帧500所描绘的那样发生。在第一GUI数据和第二GUI数据之间存在几个更新时,这些更新可以被表达为标识不同的相应GUI数据的区域的“脏区域”。随后,服务器可以仅将GUI数据的脏区域编码为视频,并且将这些经编码的脏区域与包含非脏区域的视频的第二视频相组合以创建GUI数据的视频。
基于先前将第二GUI数据编码成第二视频来将GUI数据编码成视频的各实施例还包括基于描绘在GUI数据中的元素也被描绘在第二GUI数据中来编码GUI数据,所述元素在GUI数据中被描绘在不同于在第二GUI数据中的位置中,并使用第二视频的至少部分来编码GUI数据。就是说,应用窗口(或类似物)在GUI数据和第二GUI数据之间可能已经被移动。这可以例如如关于图5的帧500和550所描述的那样发生。当该移动被标识,服务器可以采用第二视频的与应用窗口相对应的部分并使用它来创建视频。它可以将GUI数据的不是该应用窗口的那些部分编码成视频,并将其与来自第二窗口的应用窗口的经编码视频组合。
在各实施例中,方法600的一个或多个步骤包括接收GUI数据的第一部分包括文本而GUI数据的第二部分包括图像或视频的指示;并且基于所述GUI数据的第一部分包括文本而图形数据的第二部分包括图像或视频的指示将GUI数据编码成视频。一些远程呈现服务器被配置为从这些远程呈现服务器正远程处理其图形输出的应用接收“暗示”,其中这些暗示指示该图形输出是-例如文本、实体填充、图像还是视频。一些远程呈现服务器被配置为分析图形数据以确定该信息。在这样的实施例中,可以基于该信息来编码视频。例如,用户对于在文本中看见压缩伪像比在视频中看见压缩伪像更加敏感。服务器可以变化地将图形输出编码成视频,这样它在图形输出的是图像的部分上使用比图形输出的是文本的部分上更加有损的压缩。
图7描述了一种用于使进行远程呈现会话的服务器作为远程会话主机并使使用web浏览器的客户机作为远程会话客户机的方法700的实施例。在步骤702中,服务器从客户机的web浏览器接收通过服务器的远程呈现会话进程建立远程呈现会话的请求。在一个实施例中,远程呈现会话进程是在服务器上运行的操作系统。在一个实施例中,客户机先前已将浏览器-本机程序代码下载到了web浏览器,如上参考图2的RDP客户端223所述的。在步骤704,服务器在远程会话和客户端之间建立远程呈现会话。在一个实施例中,步骤702和704基本上分别类似于方法600的步骤602和604。在步骤706中,服务器与将用远程呈现协议编码的GUI数据发送到RDP客户端相异步地接收定向到web浏览器的用户输入的指示。在一个实施例中,所述指示有服务器作为经编码的RDP用户输入接收,如上参考图3所述的。例如,当客户机在web浏览器中显示了视频时,用户可以将输入提供给web浏览器,例如通过移动鼠标光标,或在键盘处键入。该信息可以由客户端捕捉并通过远程呈现会话被发送给服务器。
在步骤708,服务器将用户输入注入到远程呈现会话进程中。在步骤710中,服务器将用远程呈现协议编码的第二GUI数据发送给RDP客户端,所述第二图形数据对应于在服务器上执行与用户输入相关联的操作的图形结果。例如,服务器可以已经接收到用户输入、已经执行与用户输入相关联的处理,并且已经生成了从执行与用户输入相关联的处理所得到的图形结果(以及可能的音频结果,或可能仅有音频结果)相关联的更多的远程呈现会话图形数据。
在一个实施例中,在方法600和700的一个或多个中,客户机可接收采用客户机的浏览器本机支持的格式的经RDP编码的GUI数据。在一个实施例中,经RDP编码的GUI数据可以包括可由浏览器(例如通过使用HTML5<video(视频)>标签)显示在网页内的视频数据。在一个实施例中,在方法600和700的一个或多个中,客户机可以从经RDP编码的GUI数据中提取视频数据并使用脚本化的接口(例如W3C媒体源扩展)将其提供给HTML5<video>对象。在一个实施例中,经RDP编码的GUI数据可以包括浏览器可以使用浏览器的本机能力而不是由客户机下载的浏览器-本机程序代码来解码的视频数据。
图8和9描绘了被配置为实现虚拟机的计算机系统800和900的高级框图。在示例的本发明的实施例中,计算机系统800和900可以包括图1中所描述的元素。如由附图所示,不同的构架可以存在;然而,它们通常具有类似的组件。例如,图8示出了在其中管理程序(在本领域中也被称为虚拟机监视器)被分成微内核802以及父分区804。图9解说了包括在图8的父分区804中所找到的元素的管理程序904。
图8描绘了可以主存一个或多个虚拟机的示例虚拟机服务器,所述虚拟机进行与客户机的远程呈现会话,所述客户机使用web浏览器并接收远程呈现图形作为用远程呈现协议编码的GUI数据。管理程序微内核802可以被配置为控制并仲裁对计算机系统800的硬件的访问。宽泛地,管理程序微内核802可以生成被称为分区的执行环境,例如子分区1 850到子分区N 852(其中N是大于1的整数)。在各实施例中,子分区是由管理程序微内核802所支持的隔离的基本单位。就是说,每个子分区可以被映射到一组硬件资源,例如存储器、设备、逻辑处理器周期等,其在管理程序微内核802的控制之下并且管理程序微内核802可以将一个分区中的进程隔离以避免访问另一个分区的资源,例如在一个分区中的客操作系统与另一个分区的存储器被隔离开并且因而可能不能检测到其分区之外的存储器地址。在各实施例中,管理微内核802可以是独立的软件产品,操作系统的一部分、嵌入在主板的固件内、专用集成电路或其组合。
在这种操作环境中的父分区804可以被配置为通过使用通常在开源社区中被称为后端驱动器的虚拟化服务提供者828(VSPs)来为在子分区1-N中执行的客操作系统提供资源。宽泛地,VPS 828可以被用于借助虚拟化服务客户机(VSCs)(通常在开源社区中被称为前端驱动器)复用到硬件资源的接口,并通过通信协议与虚拟化服务客户机通信。如附图所示,虚拟化服务客户机可以在客操作系统的上下文内执行。这些驱动器与客系统中的剩余驱动器的不同之处为它们可以由管理程序提供,而不是客系统。
微内核802通过限制客操作系统对系统存储器的主张来强制实施分区化。客存储器是由管理程序控制的存储器的分区主张。客物理地址可以通过系统的物理地址(SPA)(即由管理程序管理的物理计算机系统的存储器)备份。如图所示,在一个实施例中,GPA和SPA可以被安排在存储器块中,即一个或多个存储器页。当客系统使用其页表写入块时,数据实际上被存储在根据管理程序所使用的系统级页表具有不同的系统地址的块中。
如图8所示,在本公开的实施例中,IO仿真器(834和836),例如虚拟化IDE设备、虚拟化视频适配器、虚拟化NIC等,可以被配置成在它们相应的子分区内运行。如下面更详细描述的,通过配置仿真器以在子分区内运行,管理程序的攻击面以及计算开销被减小。
每个子分区可以包括一个或多个虚拟处理器(830和832),客操作系统(820和822)可以管理并调度要在其上执行的线程。通常,虚拟处理器是为物理处理器的表示提供专用架构的可执行的指令以及相关联的状态信息。例如,一个虚拟机可以具有虚拟处理器,该虚拟处理器具有INTEL x86处理器的特性,但是另一个虚拟处理器可以具有PowerPC处理器的特性。在本示例中,虚拟处理器可以被映射到计算机系统的逻辑处理器,这样实现虚拟处理器的指令将由逻辑处理器备份。这样,在包括多个逻辑处理器的实施例中,各虚拟处理器可以由逻辑处理器同时执行,而例如其它逻辑处理器执行管理程序指令。虚拟处理器和一个分区中的存储器的组合可以被认为是一个虚拟机。
客操作系统可以包括任何操作系统,例如诸如,不同版本的MICROSOFT WINDOWS(微软视窗)操作系统(例如WINDOWS XP和WINDOWS10)。客操作系统可以包括操作的用户/内核模式并且可以具有可包括调度器、存储器管理器等的内核。通常,内核模式可以包括逻辑处理器中授权对至少经特许的指令的访问的执行模式。每个客操作系统可以具有相关联的文件系统,所述文件系统可具有存储在其上的应用,例如终端服务器、电子商务服务器、电子邮件服务器等,以及客操作系统本身。客操作系统可以调度线程以在虚拟处理器上执行,并且这样的应用的实例可以被实现。
图9描绘了可以主存一个或多个虚拟机的另一个示例虚拟机服务器,所述虚拟机进行与客户机的远程呈现会话,所述客户机使用web浏览器并接收远程呈现图形作为用远程呈现协议编码的GUI数据。图9描绘了如上在图8中所述的架构的替换架构。图9描述了与图8的组件类似的组件;然而在该示例实施例中管理程序904可以包括微内核组件以及来自图8的父分区804的组件,例如虚拟化服务提供者828以及设备驱动器824,而管理操作系统902可以包含例如用于配置管理程序904的配置工具。在这种架构中,管理程序904可以执行与图8的管理程序微内核802相同或类似的功能;然而,在该架构中,管理程序904可以被配置为向在子分区中执行的客操作系统提供资源。图9的管理程序904可以是独立的软件产品,,嵌入在主板的固件内的操作系统的一部分或者管理程序904的一部分可由专用集成电路来实现。
图10描绘了包括主存多个虚拟机的虚拟机服务器的示例系统,每个虚拟机进行与客户机的远程呈现会话,所述客户机使用web浏览器并接收远程呈现图形作为视频。在各实施例中,VM主机1000可以被具体化在图8的计算机系统800或图9的计算机系统900中。在这样的实施例中,VM 1002a和VM 1002b可以被具体化在图8和9的子分区850或852中。
如所述,VM 1002a和VM 1002b各自被配置为服务与一个或多个客户机的远程呈现会话,所述客户机通过远程呈现会话接收视频,并通过web浏览器进行该远程呈现会话。例如,VM 1002a和VM 1002b的每一者可以被配置成实现图3的服务器320的功能。在这样的实施例中,客户机320可以连接到VM主机1000,并且VM主机可以引导其VM中的一个服务与该客户机的远程呈现会话。VM主机1000可以例如基于平衡其主存的每个VM的负载来做出这种引导。
在此所述的各方面的说明旨在提供对各方面的结构的一般理解。所述说明并不旨在用作对利用在此所述的结构或方法的装置和系统的全部元素和特征的完整描述。在阅读本公开时许多其它方面对于本领域技术人员来说是显而易见的。可以使用其它方面且可以从本公开中推导出其它方面,这样,结构和逻辑置换及改变可以在不背离本公开的范围的情况下被做出。因此,本公开和附图被视为是说明性的而非限制性的。
应该理解,本文描述的各种技术可以结合硬件或软件,或在适当时结合两者的组合来实现。在此呈现的主题可被实现为计算机进程、计算机控制的装置或计算系统或诸如计算机可读存储介质之类的制品。
各种技术或其某些方面或部分可以例如采用被具体化在被实现为可被包括在计算设备中或可由计算设备访问的存储设备(例如磁或光介质、易失或非易失介质,例如RAM(例如SDRAM、DDR SDRAM、RDRAM、SRAM等),ROM等))的有形存储介质或存储器介质中的程序代码(即,指令)的形式。当程序代码被加载入机器(例如计算机)并由机器执行时,该机器变成用于实施本公开的装置。在程序代码在可编程计算机上执行的情况下,计算设备通常将包括处理器、该处理器可读的存储介质(包括易失性和非易失性的存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备。一个或多个程序可以例如通过使用应用编程接口(API)、可重用控制等来实现或利用结合本公开所述的处理器。这样的程序优选地以高级过程或面向对象的编程语言来实现以与计算机系统进行通信。然而,如果需要,该程序可以用汇编语言或机器语言来实现。在任何情形中,语言可以是编译语言或解释语言,且与硬件实现相结合。
尽管用结构特征和/或动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述特定特征和动作是作为实现权利要求书的示例而公开的,并且其他等价特征和动作旨在处于权利要求书的范围内。
提供对各方面的先前描述是为使得本领域任何技术人员皆能够制作或使用所述方面。对这些方面的各种修改对本领域技术人员而言将容易是显而易见的,并且本文中所定义的普适原理可被应用到其他方面而不会背离本公开的范围。因此,本公开并非旨在被限定于在此所示的各方面,而是应符合可能与下述权项所定义的原理和新颖性特征相一致的最广范围。
Claims (15)
1.一种用于进行与使用web浏览器的客户机的远程呈现会话的方法,包括:
从所述客户机接收建立与在服务器上运行的操作系统的远程呈现会话的请求,其中所述客户机先前已下载了浏览器-本机程序代码;
在所述客户机和所述操作系统之间建立所述远程呈现会话;
根据远程呈现协议将来自所述操作系统的经渲染的显示输出编码成多个分组;以及
将所述多个分组发送给所述客户机以供所述web浏览器使用所述浏览器-本机程序代码的进行解码以显示经渲染的显示输出。
2.如权利要求1所述的方法,其特征在于,所述客户机显示所述经渲染的显示输出,而无需在所述客户机上运行的远程呈现会话专用应用。
3.如权利要求1所述的方法,其特征在于,所述浏览器-本机程序代码实例化在与所述web浏览器相关联的应用框架内执行的远程呈现客户端。
4.如权利要求1所述的方法,其特征在于,所述浏览器-本机程序代码允许所述web浏览器在所述web浏览器的本机运行时环境内本机地解码根据所述远程呈现协议编码的所述多个分组。
5.如权利要求1所述的方法,其特征在于,所述客户机先前从提供对所述服务器的访问的远程访问服务器处下载了所述浏览器-本机程序代码。
6.一种系统,包括:
一个或多个计算设备,所述计算设备包括要至少执行以下操作的第一组指令:
处理来自客户机的建立与在服务器上运行的操作系统的远程呈现会话的请求,其中所述客户机先前已下载了浏览器-本机程序代码;
在所述客户机和所述操作系统之间建立所述远程呈现会话;以及
处理从所述客户机经由在所述客户机和套接字主机之间建立的传输信道定向到所述操作系统的用户输入的指示,其中所述指示是由所述web浏览器使用所述浏览器-本机程序代码根据远程呈现协议来编码的。
7.如权利要求6所述的系统,其特征在于,所述一个或多个计算设备进一步包括要至少执行以下操作的第二组指令:
在处理用户输入的所述指示之际,由所述服务器将用户输入的所述指示注入到所述操作系统。
8.如权利要求6所述的系统,其特征在于,所述一个或多个计算设备进一步包括要至少执行以下操作的第三组指令:
根据所述远程呈现协议将来自所述操作系统的经渲染的显示输出编码成多个分组,其中所述经渲染的显示输出对应于处理所述用户输入的所述操作系统。
9.如权利要求6所述的系统,其特征在于,所述套接字主机由介于所述服务器和所述客户机之间的WebSocket中继来实现。
10.如权利要求6所述的系统,其特征在于,所述套接字主机被实现为WebSocket监听器。
11.如权利要求6所述的系统,其特征在于,所述服务器在虚拟机内执行。
12.一种用于进行与使用web浏览器的客户机的远程呈现会话的计算机可读存储设备,所述计算机可读存储介质承载以下计算机可读指令,当这些计算机可读指令在计算设备上被执行时使得所述计算设备执行以下操作,包括:
处理从所述客户机接收的建立与在服务器上运行的操作系统的远程呈现会话的请求,其中所述客户机先前已下载了浏览器-本机程序代码;
在所述客户机和所述操作系统之间建立所述远程呈现会话;
根据远程呈现协议将来自所述操作系统的经渲染的显示输出编码成多个分组;
使所述多个分组准备好发送到所述客户机以供所述web浏览器使用所述浏览器-本机程序代码进行解码以显示所述经渲染的显示输出;以及
响应于所述经渲染的显示输出处理,处理从所述客户机接收的定向到所述操作系统的用户输入的指示,其中所述指示是由所述web浏览器使用所述浏览器-本机程序代码根据所述远程呈现协议来编码的。
13.如权利要求12所述的计算机可读存储设备,其特征在于,从所述客户机接收的指示与将所述多个分组发送给所述客户机相异步地被接收。
14.如权利要求12所述的计算机可读存储设备,其特征在于,进一步承载以下计算机可读指令,当这些计算机可读指令在所述计算设备上被执行时使得所述计算设备执行以下操作,包括:
根据所述远程呈现协议将来自所述操作系统的经更新的经渲染的显示输出编码成多个经更新的分组,所述经更新的经渲染的显示输出对应于处理所述用户输入的所述操作系统;以及
使所述多个经更新分组准备好发送给所述客户机以供所述web浏览器使用所述浏览器-本机程序代码进行解码以显示所述经更新的经渲染的显示输出。
15.如权利要求14所述的计算机可读存储设备,其特征在于,所述经更新的经渲染的显示输出表示所述经渲染的显示输出的子部分。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/827,229 US20170046013A1 (en) | 2015-08-14 | 2015-08-14 | Web-browser based desktop and application remoting solution |
US14/827,229 | 2015-08-14 | ||
PCT/US2016/045443 WO2017030794A1 (en) | 2015-08-14 | 2016-08-04 | Web-browser based desktop and application remoting solution |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107924318A true CN107924318A (zh) | 2018-04-17 |
Family
ID=56741174
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201680048404.5A Withdrawn CN107924318A (zh) | 2015-08-14 | 2016-08-04 | 基于web浏览器的桌面和应用远程处理解决方案 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20170046013A1 (zh) |
EP (1) | EP3335113A1 (zh) |
CN (1) | CN107924318A (zh) |
WO (1) | WO2017030794A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109683990A (zh) * | 2018-12-27 | 2019-04-26 | 四川新网银行股份有限公司 | 基于混合模式移动应用的h5多端接入方法 |
CN110909081A (zh) * | 2019-12-02 | 2020-03-24 | 孙正佳 | 一种后端数据相融合渲染服务方法 |
CN112805982A (zh) * | 2018-09-11 | 2021-05-14 | 思杰系统有限公司 | 用于跨域应用的应用脚本 |
CN112997180A (zh) * | 2018-09-19 | 2021-06-18 | 思杰系统有限公司 | 用于将基于html的应用与嵌入式浏览器集成的系统和方法 |
CN114902686A (zh) * | 2020-01-02 | 2022-08-12 | 微软技术许可有限责任公司 | Web浏览器多媒体重定向 |
CN116743728A (zh) * | 2023-08-11 | 2023-09-12 | 深圳竹云科技股份有限公司 | 应用运维方法、系统、设备及存储介质 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10324745B2 (en) * | 2016-02-01 | 2019-06-18 | Airwatch, Llc | Thin client with managed profile-specific remote virtual machines |
US10469562B2 (en) * | 2016-06-24 | 2019-11-05 | Vmware, Inc. | Virtual machine pixel remoting |
US10558824B1 (en) | 2019-02-04 | 2020-02-11 | S2 Systems Corporation | Application remoting using network vector rendering |
US10552639B1 (en) | 2019-02-04 | 2020-02-04 | S2 Systems Corporation | Local isolator application with cohesive application-isolation interface |
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 |
CN110837665A (zh) * | 2019-09-20 | 2020-02-25 | 久瓴(上海)智能科技有限公司 | 建筑模型展示方法、装置、计算机设备及可读存储介质 |
CN115277657B (zh) * | 2022-05-30 | 2023-06-13 | 上海上讯信息技术股份有限公司 | 一种数据库协议运维的方法及设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101981558A (zh) * | 2008-04-01 | 2011-02-23 | 微软公司 | 用于管理远程会话中的多媒体操作的系统和方法 |
CN103597797A (zh) * | 2011-06-10 | 2014-02-19 | 微软公司 | 基于web浏览器的桌面和应用远程化解决方案 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080313545A1 (en) * | 2007-06-13 | 2008-12-18 | Microsoft Corporation | Systems and methods for providing desktop or application remoting to a web browser |
US9535560B1 (en) * | 2010-12-10 | 2017-01-03 | Wyse Technology L.L.C. | Methods and systems for facilitating a remote desktop session for a web browser and a remote desktop server |
US8504654B1 (en) * | 2010-12-10 | 2013-08-06 | Wyse Technology Inc. | Methods and systems for facilitating a remote desktop session utilizing long polling |
WO2014100754A1 (en) * | 2012-12-20 | 2014-06-26 | Robert Hunter | Methods and systems for a power firewall |
US9648052B2 (en) * | 2015-01-23 | 2017-05-09 | Oracle International Corporation | Real-time communications gateway |
-
2015
- 2015-08-14 US US14/827,229 patent/US20170046013A1/en not_active Abandoned
-
2016
- 2016-08-04 CN CN201680048404.5A patent/CN107924318A/zh not_active Withdrawn
- 2016-08-04 EP EP16754352.9A patent/EP3335113A1/en not_active Withdrawn
- 2016-08-04 WO PCT/US2016/045443 patent/WO2017030794A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101981558A (zh) * | 2008-04-01 | 2011-02-23 | 微软公司 | 用于管理远程会话中的多媒体操作的系统和方法 |
CN103597797A (zh) * | 2011-06-10 | 2014-02-19 | 微软公司 | 基于web浏览器的桌面和应用远程化解决方案 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112805982A (zh) * | 2018-09-11 | 2021-05-14 | 思杰系统有限公司 | 用于跨域应用的应用脚本 |
CN112805982B (zh) * | 2018-09-11 | 2022-04-08 | 思杰系统有限公司 | 用于跨域应用的应用脚本 |
CN112997180A (zh) * | 2018-09-19 | 2021-06-18 | 思杰系统有限公司 | 用于将基于html的应用与嵌入式浏览器集成的系统和方法 |
CN109683990A (zh) * | 2018-12-27 | 2019-04-26 | 四川新网银行股份有限公司 | 基于混合模式移动应用的h5多端接入方法 |
CN110909081A (zh) * | 2019-12-02 | 2020-03-24 | 孙正佳 | 一种后端数据相融合渲染服务方法 |
CN114902686A (zh) * | 2020-01-02 | 2022-08-12 | 微软技术许可有限责任公司 | Web浏览器多媒体重定向 |
CN116743728A (zh) * | 2023-08-11 | 2023-09-12 | 深圳竹云科技股份有限公司 | 应用运维方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2017030794A1 (en) | 2017-02-23 |
EP3335113A1 (en) | 2018-06-20 |
US20170046013A1 (en) | 2017-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107924318A (zh) | 基于web浏览器的桌面和应用远程处理解决方案 | |
KR101916980B1 (ko) | 웹-브라우저 기반 데스크탑 및 어플리케이션 원격화 솔루션 기법 | |
KR101507629B1 (ko) | 기존 애플리케이션들의 커스터마이징 및 분산을 위한 브라우저-기반 프록시 서버 | |
Sehgal et al. | Cloud computing | |
CN102932405B (zh) | 对应用的多租户访问 | |
CN102946409B (zh) | 从多个服务器向客户机递送单个终端用户体验 | |
JP6092381B2 (ja) | ウェブクライアントを介したリモートアプリケーションへのアクセスを提供する方法、システム、及びコンピュータ読取可能記憶媒体 | |
US20070260702A1 (en) | Web browser architecture for virtual machine access | |
KR100998515B1 (ko) | 클라이언트-서버 네트워크에서 파일-유형 연관성을 이용한분산 프로그램 실행 방법 | |
US20140333508A1 (en) | System and method for communicating and interacting with a display screen using a remote device | |
CN108701034A (zh) | 向适于托管与用户相关联的一组应用程序的虚拟机供应计算资源 | |
US8762544B2 (en) | Selectively communicating data of a peripheral device to plural sending computers | |
CN103518189A (zh) | 流媒体在虚拟化的桌面环境中的集成呈现 | |
US8549093B2 (en) | Updating a user session in a mach-derived system environment | |
CN106797398B (zh) | 用于向客户端提供虚拟桌面服务的方法和系统 | |
WO2016049186A1 (en) | Computer-implemented methods, computer readable media, and systems for co-editing content | |
CN107710720A (zh) | 用于移动客户端设备的云计算 | |
Raji et al. | Scalable web-embedded volume rendering | |
Barboza et al. | A simple architecture for digital games on demand using low performance resources under a cloud computing paradigm | |
US20130282560A1 (en) | Application accessibility system and method | |
US11758016B2 (en) | Hosted application as web widget toolkit | |
CN113835816A (zh) | 一种虚拟机桌面显示方法、装置、设备及可读存储介质 | |
CN112767225A (zh) | 前端图像处理方法、装置、电子设备和可读存储介质 | |
Bentele et al. | Towards a GPU-Accelerated open source VDI for OpenStack | |
US20220137988A1 (en) | Virtualization for web-based application workloads |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20180417 |