CN103518189A - 流媒体在虚拟化的桌面环境中的集成呈现 - Google Patents
流媒体在虚拟化的桌面环境中的集成呈现 Download PDFInfo
- Publication number
- CN103518189A CN103518189A CN201280021959.2A CN201280021959A CN103518189A CN 103518189 A CN103518189 A CN 103518189A CN 201280021959 A CN201280021959 A CN 201280021959A CN 103518189 A CN103518189 A CN 103518189A
- Authority
- CN
- China
- Prior art keywords
- plug
- unit
- client
- window
- hvd
- 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.)
- Pending
Links
Images
Classifications
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
Abstract
这里提供了用于建立包括诸如流媒体之类的用户界面元件的浏览器窗口在客户端端点设备上的集成呈现的技术。托管虚拟桌面(HVD)上的web浏览器生成包括浏览器窗口的HVD显示图像并通过虚拟桌面接口(VDI)协议将其传送至客户端端点设备用于显示。浏览器窗口包括主机提供的窗口元件以及可以呈现客户端提供的与标签相关联的数据的占位符。客户端端点设备上的插件服务器元件实例化端点浏览器插件,从而:呈现标签以代替HVD显示的占位符部分,之后在客户端端点设备处显示浏览器窗口和所呈现的标签内容的集成显示。
Description
技术领域
本公开总体涉及虚拟化的桌面环境,并且更具体地涉及在客户端端点设备上的浏览器中提供诸如流媒体之类的媒体的集成呈现。
背景技术
web浏览是商业和个人设置中日益流行的活动,并且随着诸如个人计算机、支持web的移动电话和平板之类的网络连接设备的增加,对于web上媒体的配设的增长的需求已经到来。例如,用户可能需要通过互联网(Intemet)进行以下活动:基于web的音频和视频会议、购买或租借web上的电影或电视节目、观看针对Adobe Flash编码的视频或动画、听流式无线电台、或者甚至与世界各地的用户玩游戏。
当使用虚拟或者基于云的桌面时,web浏览可以与其他托管的(hosted)应用一起被虚拟化。就是说,浏览器应用可以在托管虚拟桌面(HVD)中运行,或者作为托管虚拟应用(HVA)运行,同时该浏览器窗口被显示给在诸如计算机或者移动电话之类的远程客户端端点设备上的用户。虚拟化的浏览在媒体中出现了一系列独特的问题,如流媒体会比简单的文本和图形更难虚拟化。
附图说明
图1是示出可以在客户端端点设备和一个或多个托管虚拟桌面之间建立虚拟桌面接口(VDI)连接的VDI环境的框图示例。
图2是示出了VDI环境中特定的托管虚拟桌面(HVD)、客户端端点设备、web服务器和内容服务器之间的内容输送会话,VDI,插件协议,HTTP的框图示例。
图3A是包括HVD显示的显示器的示例,该HVD显示包括由托管的web浏览器呈现的、包括由HVD呈现的窗口元件和用于由客户端端点设备早现的窗口元件的占位符(placeholder)的浏览器窗口。
图3B是包括其中占位符被替换为客户端提供的内容的被修改的HVD显示窗口的客户端显示的示例。
图4A是显示的示例,其中客户端端点设备显示了聚合的HVD显示以及被其他HVD应用的窗口部分遮蔽的浏览器窗口的客户端呈现的内容。
图4B是替代显示的示例,其中客户端端点设备显示了被其他HVD应用的窗口部分遮蔽的浏览器窗口,并且客户端早现的窗口元件在显示中被变灰(greyed-out)。
图5A和5B是总体地示出了在HVD处由存根插件建立和管理插件协议会话的流程图的示例。
图6A和6B是总体地示出了在客户端端点设备处由插件服务器建立和操作插件协议会话的流程图的示例。
图7是流程图的示例,该流程图总体示出了托管的浏览器使用存根插件和端点插件的转换从而将引用诸如流媒体之类的媒体的呈现集成到浏览器窗口中。
具体实施方式
概述
这里提供了用于建立包括诸如流媒体之类的用户界面元件的浏览器窗口在客户端端点设备上集成呈现的技术。托管虚拟桌面(HVD)上的web浏览器生成了包括浏览器窗口的HVD显示图像并通过虚拟桌面接口(VDI)协议将其传送至客户端端点设备用于显示。浏览器窗口包括主机提供的窗口元件以及其中可以早现客户端提供的与标签相关联的数据的占位符。客户端端点设备上的客户端插件服务器实例化端点浏览器插件来:早现标签以代替HVD显示的占位符部分,之后在客户端端点设备处显示浏览器窗口和所呈现的标签内容的集成显示。
这里提供的其他技术用于:在托管虚拟桌面HVD上的web浏览器中呈现包括页面内容和标签的web页面;在web浏览器中实例化存根插件,使得该存根插件将占位符呈现到浏览器窗口的一部分中;在存根插件和客户端端点设备上的插件服务器之间建立插件协议会话;并且经由插件协议会话发送控制端点插件的实例化和操作的信息,从而使得客户端端点设备能够显示web页面的聚合窗口。
示例性实施例
现在参考图示,示出可以在客户端端点设备和一个或多个托管虚拟桌面之间建立VDI连接的VDI环境的框图示例在图1中示出。所示的VDI环境100包括主机设备105,客户端端点设备205a、205b,web服务器20,内容服务器30a、30b,以及内容分布缓存服务器35a、35b,它们通过网络10相互连接。VDI环境可以包括其他服务器、客户端和未示出的其他设备,并且系统的个体组件可以单个或者多个地出现,例如,可以有不止一个主机设备105,而且其他网络组件(例如,路由器和交换机)可以用于VDI环境100中。
网络10代表被配置为经由任何合适的通信介质(例如,WAN、LAN、互联网、内联网、有线、无线等等)传送信息的任何硬件和/或软件,并且可以包括任何合适形式或排列的路由器、集线器、交换机、网关、或者其他任何合适的组件。VDI环境100的多种组件可以包括用于经由任何传统的或者其他的协议在网络上通信的任何传统的或者其他的通信设备,并且可以采用任何类型的连接(例如,有线、无线的等等)来接入网络。
web服务器20是用于将包括超文本标记语言(HTML)文档和诸如图像或者样式表之类的其他内容的web页面服务到web浏览器320的传统的或者其他服务器。内容源服务器30a、30b是用于将数据服务至客户端或者内容分布缓存服务器的传统的或者其他的服务器,例如Darwin StreamingServer、Flash Media Server、Unreal Media Server等等。内容服务器可以提供任何类型的数据,例如诸如流视频或者流音频之类的媒体、游戏或者仿真、脚本等等。内容缓存服务器35a-b(例如,运行应用和内容网络系统(ACNS)的思科广域应用引擎(WAE)服务器)用作针对从内容服务器30a-b接收的内容的中介存储库。如关于图2的进一步描述,当前的实施例不需要将数据递送通过主机设备105,直接将数据从内容源服务器30和/或内容缓存服务器35输送至客户端端点设备205。通过在网络10中的关键点处放置缓存服务器35以及缓冲来自内容源服务器30a-b的内容(例如,媒体内容),客户端端点205a可以从缓存服务器35而不是内容源30接收内容,从而减少网络10的核心部分上的带宽消耗。可以理解,很多类型的内容服务器30和分布缓存35将媒体流式地传到客户端;然而,任何类型的内容可以被流式地传送。
主机设备105包括一个或多个处理器110、网络接口单元120和存储器130。处理器110例如是针对存储器130中存储的进程逻辑而执行指令的数据处理设备,如微处理器、微控制器、片上系统(SOC)或者其他固定的或者可编程的逻辑。网络接口单元120使得通信能够遍及VDI环境,如图1和图2中所示。存储器130可以由任何传统的或者其他的存储器或者存储设备实现,并且可以包括任何合适的存储容量。例如,存储器130可以包括只读存储器(ROM),随机存取存储器(RAM),可擦写可编程只读存储器(EPROM),磁盘存储介质设备,光存储介质设备,闪存设备,电的、光的或者其他物理的/有形的记忆存储设备。存储器130可以包括一个或多个编码有包括计算机可执行指令的软件的计算机可读存储介质(例如,存储器设备),并且当该软件被(处理器110)执行时,存储器130可操作以执行这里描述的、与图3-5和图7有关的操作。
主机设备105例如可以是计算刀片(computing blade),包括一个或多个固态驱动的刀片式服务器,或者包括一个或多个刀片式服务器和包括诸如网络连接、输入/输出设备连接、电源连接、冷却设备、交换机等等通用资源的刀片托架(blade chassis)的刀片中心。主机设备105可以是诸如思科统一计算系统或者集中了企业计算资源的数据中心之类的更大系统的组件。
居于存储器130中的是超级监督器(hVpervisor)140和多个托管虚拟桌面(HVD)150a-d。超级监督器或者虚拟机器监视器140向HVD150a-d展现虚拟操作平台,并且管理到主机处理器110、网络接口单元120、存储器130和其他主机资源的访问,从而使得HVD150a-d能够访问适当的主机资源而不扰乱相互的操作。每个HVD150独立于其他HVD150运行并作为主机设备105上的分立虚拟机器来运行,而且如果需要的话,每个HVD l50可以运行不同的操作系统。下文参考图3-5和图7来解释HVD的进一步操作。
每个示例客户端端点设备205a包括一个或多个处理器210、网络接口单元220、存储器230和显示呈现硬件240。处理器210例如是针对存储器230中存储的进程逻辑而执行指令的数据处理设备,如微处理器、微控制器、片上系统(SOC)或者其他固定的或者可编程的逻辑。网络接口单元220使得通信能够遍及VDI环境,如图1和图2中所示。存储器230可以由任何传统的或者其他的存储器或者存储设备实现,并且可以包括任何合适的存储容量。例如,存储器230可以包括只读存储器(ROM),随机存取存储器(RAM),可擦写可编程只读存储器(EPROM),磁盘存储介质设备,光存储介质设备,闪存设备,电的、光的或者其他物理的/有形的记忆存储设备。存储器230可以包括一个或多个编码有包括计算机可执行指令的软件的计算机可读存储介质(例如,存储器设备),并且当该软件被(处理器210)执行时,存储器230可操作以执行这里描述的、与图3,4和6有关的操作。显示呈现硬件240可以是处理器210的一部分,或者可以是,例如分立的图形处理器(例如,图形处理器单元(GPU))。
示例客户端端点设备205可以是任何传统的或其他计算机系统或者设备,如瘦客户端、计算终端或工作站、个人桌面计算机、膝上型或上网本、平板、蜂窝电话、机顶盒、网络电视、或者能够在所述VDI环境中用作客户端的其他设备。
示例客户端端点设备205与显示设备250、(一个或多个)输入设备260和(一个或多个)输出设备270相配合,并且以任何合适的方式(例如,通过有线或者无线的连接)与这些设备通信。显示设备250可以是能够向客户端端点设备的用户显示信息的任何合适的显示器、屏幕或者监视器,例如,平板的屏幕或者计算机工作站所附的监视器。(一个或多个)输入设备260可以包括任何合适的输入设备,例如,键盘、鼠标、轨迹板、触摸输入平板、触摸屏、摄像头、麦克风、远程控制、语音合成器等等。(一个或多个)输出设备270可以包括任何合适的输出设备,例如扬声器、头戴式受话器、声音输出接口等等。显示设备250、(一个或多个)输入设备260和(一个或多个)输出设备270可以是分立设备,例如结合麦克风和扬声器使用的监视器,或者可以被组合,例如为显示器和输入设备的触摸屏,或者为输入(例如,通过麦克风)和输出(例如,通过扬声器)设备二者的头戴式耳机。
处理器110和210的功能可以各自通过编码有指令的处理器或计算机可读有形(非暂态的)介质来实现,或者通过在一个或多个有形介质(例如,诸如专用集成电路(ASIC)之类的嵌入式逻辑、数字信号处理器(DSP)指令、由处理器执行的软件等等)中编码的逻辑来实现,其中存储器130和230各自存储用于这里描述的计算或者功能的数据(和/或存储被执行以实行这里描述的计算或功能的软件或者处理器指令)。可替代地,一个或多个计算机可读存储介质被提供并且被编码有软件,该软件包括计算机可执行指令并且当被执行时,该软件可操作以执行这里描述的技术。因而,参考图5到7所描述的进程逻辑的功能,例如可以用固定逻辑或者可编程逻辑(例如,由处理器或者现场可编程门阵列(FPGA)执行的软件或者计算机指令)实现。
图2是示出了VDI环境100中HVD l50、客户端端点设备205、web服务器20和内容服务器30,35之间的内容输送会话,虚拟桌面接口(VDI),插件协议以及超文本传输协议(HTTP)的框图示例。为了简化的目的,此处没有示出VDI环境100的其他组件,例如其他客户端端点设备。另外,尽管该说明涉及一个HVD150和一个客户端端点设备205之间的交互,本领域的技术人员理解:每个HVD150可以与一个或多个客户端端点设备205交互,并且每个客户端端点设备205可以与在单个或多个主机设备105上的一个或多个HVD150交互。此外,在VDI环境100中可以有多于一个的web服务器20和多于一个的内容服务器30。
示例HVD150包括VDI服务器310;(一个或多个)主机操作系统315;进一步包括HTML呈现引擎322、映射数据库330、主机插件328和存根插件324的托管的web浏览器320;并且还可以包括一个或多个其他应用330。示例客户端端点设备205包括VDI客户端350、(一个或多个)操作系统355、以及经由客户端插件应用编程接口(API)365连接到端点插件370的插件服务器360(也被称作插件元件360),它们都居于存储器230(如图1中所示)中,并且还包括显示器250、包括键盘260a和鼠标260b的输入设备、以及包括扬声器270的输出设备。
VDI服务器310与主机操作系统315交互以通过VDI会话405向客户端端点设备205提供虚拟桌面接口功能性,该VDI会话405是使用任何适合的VDI协议(例如,Citrix独立计算架构(ICA)、通过IP的VMWarePC(PCoIP)、微软远程桌面协议(RDP)或者其他合适的协议)建立的VDI协议链接。例如,客户端端点设备205的用户正在交互的任何应用由HVD150主持,同时与该应用相关联的窗口由客户端端点设备205呈现。参考图3和4,对窗口进行了示出和进一步描述。主机上的VDI服务器310可以例如接收从主机操作系统315输出的HVD显示并且通过VDI会话405将它发送到VDI客户端350以作为HVD显示。VDI会话例如可以将HVD显示中的所有窗口表示为单个图像,或者它可以指示HVD显示中每个主机提供的窗口元件和占位符的位置和大小,和/或在HVD显示中要被覆盖的每个主机提供的窗口元件和占位符的位置和大小。
VDI客户端350与客户端操作系统355、插件服务器360以及端点插件370交互以在客户端端点设备205上呈现所接收的HVD显示来显示。如将参考图3和4进一步描述的那样,插件服务器360和端点插件370还可以修改所接收的HVD显示,例如通过在呈现它来显示之前,呈现客户端提供的窗口元件(例如,用于显示流媒体的视频元件)来代替HVD显示的占位符部分。VDI客户端350还从用户界面接收用户输入,例如用户在键盘260a上打字或者运用鼠标260b,这些输入被VDI客户端350翻译并且经由VDI会话405被发送至VDI服务器310。
在VDI服务器310接收用户输入之后,它将用户输入翻译为虚拟的键盘和鼠标输入,并且通过主机操作系统315将其馈送至主机web浏览器320或者另一应用335,好似应用和输入设备260运行在一个桌面计算设备上。由HVD处的适当应用处理这些用户输入,并且由操作系统315和VDI服务器310生成HVD显示图像以传输回VDI客户端350,该VDI客户端350在显示器250上呈现HVD显示和用户生成的用户元件以显示给用户。
在另一实施例中,主机设备105可以执行来自其存储器130的托管虚拟应用(HVA),而不是完全托管虚拟桌面150。在该实施例中,客户端端点设备205可以使用它的VDI客户端350来与每个执行一个或多个HVA的多个主机设备105相交互,并且使用客户端操作系统355来聚合HVA的输出从而在显示器250上展现完全窗口化的桌面。
主机web浏览器320可以是能够结合主机操作系统315使用的任何浏览器软件,例如Mozilla Firefox,Google Chrome,Microsoft InternetExplorer,Opera Software Opera,Apple Safari等等,而且它包括HTML呈现引擎322。当客户端端点设备205的用户使用例如诸如统一资源标识符(URI)之类的web地址导航至所显示的浏览器窗口的web页面时,HTML早现引擎322通过HTTP会话410从HTML服务器20请求并且接收例如与URI相关联的HTML或者XHTML编码的web页面。这些web页面可能包含对于不能由HTML呈现引擎322本地解码的对象的引用,例如诸如其URI引用了内容服务器30,或者其多用途互联网邮件扩展(MIME)类型指示了不能被本地解码或者对于特定实施例而言不需要被本地解码的对象类型(例如,音频、视频、Java等等)的<object>或<embed>标签之类的标签。当主机web浏览器320遇到这样的对象时,它参考映射数据库330来寻找描述了用来呈现该对象的插件的入口,并且如果环境100被配置为在客户端端点设备205上执行和/或呈现该对象类型,那么它在主机web浏览器320中实例化存根插件324,并且经由插件API326与存根插件324通信。该插件API326是双向API,允许早现引擎322对存根插件324作出请求,同时也允许存根插件324通过回调机制将事件用信号通知至呈现引擎322。
可以理解,web浏览器320将只针对那些在特定的实现中想要在客户端端点设备205上本机执行的对象类型来实例化存根插件。对于所有其他的对象类型,对映射数据库330的参照为该对象类型形成在HVD150上被实例化和执行的主机插件328。可以理解,在某些实现中可以在主机(经由主机插件328)执行特定的对象类型,然而在其他实现中,相同的对象类型可以关联于存根插件324来在客户端端点设备205上执行。
在实例化之后,存根插件324与居于客户端端点设备205上的插件服务器360建立插件协议会话415。可以使用任何合适的协议来建立插件协议会话415,例如HTTP、TLS、TCP或者其他任何合适的协议。在一个实施例中,插件协议会话被复用到由VDI会话405输送的虚拟信道中。插件协议包括以下方法:识别要被实例化的端点插件370的类型的方法;描述端点插件370应该将它的数据呈现到其的、与用户交互的一个或多个占位符对象的位置的方法;识别描述与特定标签相关联的内容服务器30、35的位置的URI的方法;以及在web浏览器320和端点插件370之间输送应用编程接口(API)请求的方法。API请求可以特定于一个浏览器或者一类浏览器并且可以支持接口,例如,用于Mozilla Firefox and Seamonkey、Apple Safari、Google Chrome、Opera Software Opera浏览器的NetscapePlugin(NPAPI);用于Google Chrome和开源Chromium浏览器的PepperPlugin API(PPAPI);或者用于Microsoft Internet Explorer的ActiveXAPI。这些接口可以是双向的,即,web浏览器320可以对端点插件370作出请求,而端点插件370可以对web浏览器320作出请求。一组远程过程调用(RPC)可以用于通过该会话415的API的通信。在一个实施例中,插件协议会话415可以作为VDI会话405内的虚拟信道输送,而在另实施例中,插件协议会话415可以独立地被输送。
响应于通过插件协议会话415与存根插件324的互动,插件服务器360实例化端点插件370,并且经由客户端插件API365与端点插件370通信。该插件API365是双向的API,允许插件服务器360对端点插件370作出请求,同时也允许端点插件370通过回调机制将事件用信号通知到插件服务器360。插件服务器360可以是例如软件模块或者软件模块的元件,并且可以是例如单独的模块、与客户端端点设备205相关联的另一软件模块的一部分、或者二者的组合。
端点插件370是被设计为呈现一个或多个MIME类型或者与一个或多个MIME类型交互的浏览器插件,这些MIME类型不能够(或者不需要)被HTML早现引擎322本地解码,并且不能被在HVD150上执行的插件(例如,视频插件)高效地呈现。依据主机和客户端操作系统315、355,被用作端点插件370的合适插件可以是可供使用的“现成的”,或者插件可能需要被端接到客户端操作系统355。在一些实施例中,需要将现成的插件作为端点插件370运行,从而最小化开发成本、简化来自现有仓库的软件分发、以及最大化在客户端端点设备205上能够支持的各种MIME类型的插件的数目。然而,为了使用现成的插件,不需要重写它,插件服务器360和客户端操作系统355应该提供客户端插件API365以及与现成的端点插件370所期望的API相兼容(例如,一样)的操作系统355。
主机浏览器320与端点插件370相结合地操作以向客户端端点设备205的用户显示非本地的对象。当HTML呈现引擎322在插件API326中调用过程时,存根插件324将该过程调用及其参数转换为例如插件协议415中的远程过程调用(RPC)。当插件服务器360接收这样的RPC时,它将该RPC转换为客户端插件API365上的对于端点插件370的过程调用。相似地,如果端点插件370向插件服务器360作出回调,插件服务器360可以通过插件协议会话415生成RPC,该RPC转而被存根插件324所接收,存根插件324将它转换为插件API326对HTML呈现引擎322的回调。因此,可以了解到插件API326和客户端插件API365应该是兼容的。
在示例,响应于由客户端插件API365作出的命令,端点插件370直接与内容服务器30建立内容输送会话420。可以理解,内容服务器30在其余的示例中也能够是内容缓存服务器35a-b,没有实质差别。因而,内容(例如,媒体)数据直接流向客户端端点设备205,而不是通过HVD150流动并因此要求VDI会话405中非常高的比特率。当端点插件370解码并且呈现数据时,所呈现的数据被送往客户端操作系统355来与正在由VDI客户端350呈现的其余的HVD显示融合。数据可以用任何合适的方式被编码或者压缩,并且经由任何合适的协议(例如,HTTP、MicrosoftMedia Service(MMS)、MPEG-Transport Stream(MPEG-TS)、实时传输协议(RTP)、用户数据包协议(UDP)或者任何其他合适的协议)被传输。
从图2和上述描述中可以看出,当前的实施例提供与传统系统相比有改进的系统架构来向HVD递送内容。在传统系统中,诸如流媒体之类的内容被从内容服务器输送到主机设备,其中在通过VDI会话被重新编码和传输至客户端设备之前,内容被HVD中的浏览器使用主机插件(例如,Adobe Flash插件)进行解码和呈现。这些传统系统f现了许多缺点,如高网络负荷、内容缓存服务器的低效使用、由于主机设备上增加的计算负荷而导致的恶化的HVD扩展性等等。
与将诸如媒体之类的内容从内容服务器经过HVD并且通过VDI会话路由至客户端端点的传统方法相比,当前的实施例使用内容输送会话420直接将内容数据输送至客户端端点205。将内容直接输送到客户端端点设备有几个优点。首先,使用内容输送会话420消耗更少的网络带宽,因为它能够维持内容服务器的本地编码,而不是迫使它被转码以符合VDI会话405所使用的编码。第二,内容输送会话420的使用允许常规VDI服务和内容递送服务之间的服务质量(QoS)差异。第三,直接向客户端端点传输内容数据避免了带宽在诸如多个HVD所位于的主机设备105之类的中心位置处的不必要集中。第四,使用内容输送会话420避免了在HVD上施加高计算负荷(例如,媒体解码/编码负荷),并且因而避免了HVD设备上的扩展性问题。第五,因为VDI会话405、HTTP会话410、插件协议会话415和内容输送会话420相互分离,可以使用不同的网络路径来进行VDI通信、远程过程调用以及内容传输。第六,内容到客户端端点设备的直接输送使得能够有效地使用缓存服务器拓扑来减少网络间的总体带宽。
参考图1和图2而提到的诸如(一个或多个)主机操作系统315和(一个或多个)客户端操作系统355之类的各种操作系统可以是在VDI环境100中使用的任何合适的操作系统,如例如,FreeBSD、Linux、OS X、UNIX、Windows或者其他操作系统。操作系统可以是标准操作系统、嵌入式操作系统或者实时操作系统。例如,主机操作系统315可以是诸如Ubuntu或Red Hat Enterprise Linux之类的Linux操作系统、诸如OS X或OS X Server之类的Mac操作系统、或者诸如Windows7或WindowsServer2008R2之类的Windows操作系统。客户端操作系统355可以是,例如Blackberry、Linux、OS X、Windows或者其他操作系统。在一个实施例中,客户端操作系统355是Linux的一种,如Android、MeeGo、ThinStation、Ubuntu、webOS等等。在另一实施例中,客户端操作系统355是诸如OS X、iOS等等的Apple操作系统,或者诸如Windows7、Windows CE、Windows Vista、Windows XP或者Windows XPe之类的Windows操作系统。
当然,与内容数据对应的标签将依据从web服务器20抓取的页面的不同而不同,并且它包括规定了该标签的MIME类型的MIME属性。多数传统的浏览器能够处理例如具有诸如应用、音频、图样或者视频之类的MIME类型的<object>或者<embed>标签。这些MIME类型具有众多的子类型,例如应用类型包括数百个子类型(例如,有Flash、Silverlight等等),并且视频类型包括数十个子类型(例如,CCTV、H264、mp4、QuickTime等等)。MIME类型(也被称作互联网媒体类型)和子类型的完全列表可以从互联网名称与数字地址分配机构(也被称作ICANN)在他们的网站处获知。在优选实施例中,标签具有应用或者视频的MIME类型,而在另一优选实施例中,标签具有Flash、H264、JavaScript、mp4、Quicktime、RealPlayer、Shockwave、S ilverlight或者Windows Media Player的MIME类型。在另一优选实施例中,标签具有指示通话、视频会议、或者基于web的按键通话的MIME类型。在另一优选实施例中,MIME类型指示游戏或者仿真。
尽管这里的描述涉及单个端点插件370来早现标签,可以理解,在显示单个web页面或者与单个web页面相交互时,可以将多个端点插件370实例化为相同或者不同的类型。可以理解,在具有相同或者不同类型的多个端点插件370被实例化在客户端端点设备205上的情形中,单一类型的存根插件324能够适应所有要支持的MIME类型,并且类似地,单个插件服务器360能够相似地适应与被视为适合于特定实施例的端点插件的类型一样多的端点插件。还可以理解,不是所有的插件类型适合于本机呈现,并且在主机虚拟机器150和客户端端点设备205上托管的插件的任意混合能够被支持。
图3A是包括由HVD早现的浏览器窗口的HVD显示的HVD显示500的示例,并且图3B是由客户端端点设备修改和呈现以向用户显示的端点显示505的示例。可以了解,HVD显示500是虚拟显示,并且显示器中所示的各种元件的表示并不必须包括显示的简单位图。在Microsoft WindowsHVD中,GUI元件可以由图形设备接口(GDI)绘制命令和/或Direct3D图形命令来表示。VDI服务器310还可以处理这些表示来使能他们通过VDI会话405的传输。
特定地,图3A是HVD显示500的示例,其包括由托管的web浏览器呈现的浏览器窗口510,并且还包括由托管的web浏览器的HTML呈现引擎322或者由在托管的浏览器中执行的插件328呈现的零个或更多的web页面元件520,以及由存根插件324早现的至少一个占位符元件530,其中可以呈现诸如插件显示窗口之类的客户端提供的窗口元件。显示500还可以包括由其他HVD应用绘制的窗口540、550,以及作为背景图像为HVD显示500服务的HVD背景桌面图像560。HVD150可以通过VDI会话405发送包括占位符元件530的HVD显示500。关于客户端提供的窗口元件的占位符元件530的大小和放置的信息可以通过插件协议会话415发送。
图3B是包括由客户端端点设备205修改的用于显示的HVD显示的显示505的示例,其中占位符530已被客户端提供的、由端点插件370呈现的显示元件535替换。显示元件535可以被呈现为无框的窗口,就是说,没有与其相关联的框架装饰的窗口。占位符与客户端早现的显示元件535的视觉替换可以用数种方式达成。例如,客户端端点设备205可以在显示505的占位符部分530上呈现显示元件535,或者它可以先呈现显示元件535并接着在显示元件535上呈现带着“空洞”的显示505,其中显示元件535位于该空洞,或者以任何其他合适的方式来提供集成显示的显现。
在所示示例中,显示元件535是充满由端点插件370呈现的媒体数据的插件显示窗口535,该媒体数据在示例中为视频数据(例如,CCTV、H264、mp4、QuickTime等等),但是也可以是任何其他类型的数据,如Flash、JavaScript、或者Silverlight。另外,用户可以使用诸如鼠标或者键盘之类的端点输入设备直接与显示插件窗口交互,而不是通过VDI会话405与HVD交互。这样的交互可以发生在确定了显示插件窗口已经被同意聚焦的时候,即操作系统确定应该将用户输入指向插件正在执行的处理时。
尽管所示示例是视觉显示元件的示例,可以理解,会针对音频采取相似的聚合处理。客户端端点设备205可以经由VDI会话405从HVD150接收包括例如应用音、音乐或者语音报警的音频。客户端端点设备205还可以经由内容输送会话420从内容服务器30/35接收音频内容。客户端端点设备205应该组合来自这两个源的音频并且向扬声器270呈现连贯的声波。这两个源例如可以由操作系统355使用客户端端点设备205中的音频呈现硬件来混合。
图4A和4B是显示505a、505b的替代示例,其中客户端端点设备205显示包括浏览器窗口510以及由其他HVD应用示出的窗口540、550的HVD显示的聚合。例如在图4A中,应用窗口540、550已经通过最近的用户交互被引到显示器的前景,并且现在部分地遮蔽浏览器窗口510。因为VDI服务器310可以将HVD150上的所有应用聚合到单个HVD显示中,接着被传送到客户端端点设备205,占位符窗口530可以不是简单的矩形,暗示着不能通过请求客户端操作系统355在HVD显示上呈现简单矩形来实现客户端提供的元件535的聚合,如同图3B中的情形。因为客户端端点设备205负责呈现HVD显示505和客户端提供的显示元件535二者,客户端端点早现完整显示的能力依靠包括客户端操作系统355、显示呈现硬件240等等的多个因素。
特定地,客户端操作系统355负责完成聚合。在多数窗口化的系统中,通过操作系统根据z-次序(z-order)示出每个个体的窗口来完成聚合,z-次序描述了各种窗口的相对深度。具有最深(最低)z-次序的窗口首先被示出,而接着具有依次变浅(更高)z-次序的每个窗口被顺序地示出,这可能导致较深的窗口在显示器上被部分或者完全地遮蔽。对于较浅窗口指派更高值的整数是相当随意的,但更高的z-次序这里应当被理解为晴示较浅的窗口,即堆叠的离用户的眼睛更近的窗口。
然而应当了解,VDI客户端350从VDI会话405接收所有的虚拟显示信息(即,HVD显示包括带有主机呈现的元件520和占位符元件530的浏览器窗口510,其他HVD应用窗口540、550,以及HVD背景桌面图像560)并且请求客户端操作系统355将整个虚拟显示呈现为单个矩形窗口。因而,尽管窗口540或者550可以在HVD上具有比浏览器窗口510更高的z-次序,但是客户端端点设备205(例如包括插件服务器360、端点插件370和操作系统355)可以聚合端点呈现的元件535从而使得被聚合的图像具有比HVD显示更高的z-次序。
然而,通过将端点呈现的元件535或者显示505a的其余部分呈现为非矩形的形状,客户端端点设备205创建了端点呈现的元件535被部分地遮蔽的显现。例如,客户端端点设备205可以只在占位符元件530的未遮蔽部分聚合端点呈现的元件535。这意味着,例如如图4A中所示,端点呈现元件535可以被呈现为非矩形的形状,例如在图4A中,由于窗口550对右下角的遮蔽,客户端用户元件535已经被呈现为不规则的六边形窗口。可替代地,客户端端点设备205可以将端点呈现的元件535早现为矩形的形状,并且接着呈现带有非矩形“空洞”的显示505a的其余部分,该非矩形“空洞”在想要被显示的端点呈现的元件535的部分上。
为了高效地呈现显示505a,客户端操作系统355应当能够接受请求来呈现非矩形图形而不干扰显示器的剩下部分的图像。因此插件服务器360应该能够被通知非矩形的几何结构,从而使得该信息可以被传送到操作系统355。在一个示例中,存根插件324与HVD操作系统315交互以计算占位符窗口的未遮蔽部分的几何结构并且通过插件协议会话415向插件服务器360传送该窗口几何结构信息。在另一示例中,存根插件324用独特的色度键(chromakey)色彩填满占位符窗口530,从而使得插件服务器360、端点插件370或者操作系统355可以通过检测虚拟显示器的哪一部分包含色度键色彩来计算非矩形区域。操作系统355还应该能够以高速度和对客户端端点设备205的CPU的低影响地呈现非矩形图像。在这样高效的早现的一个示例中,操作系统355意识到例如包括能够早现非矩形图像的图像处理单元(GPU)的显示呈现硬件240。
在替代的图4B中,客户端端点设备205具有不能应付浏览器窗口510的遮蔽的配置。这会发生于,例如如果客户端端点设备205不具有应付实现图4A的实施例所必须的聚合和遮蔽所必须的能力。因为,例如,端点插件370是没有被修改过的、现成的插件,客户端操作系统355或者显示早现硬件240不能应付所要求的交互等等。接替遮蔽,在该替代的示例中,客户端端点设备205取而代之地将插件显示窗口535呈现为变灰(点状的)区域。在该实施例中,在第一或者第二窗口540、550上点击以使得它们成为活动的窗口,将带给它们比浏览器窗口510更高的z-次序,并且将暂停对于端点呈现的数据的呈现,使得插件显示窗口535变灰。如果用户又点击浏览器窗口510以使得浏览器窗口510活动,浏览器窗口510将恢复最高的z-次序并且重新使能端点插件370,使得它再次在插件显示窗口535中呈现媒体数据。
图5A和5B示出了总体地示出了用于在HVD150处由存根插件324建立和管理插件协议会话415的过程600的流程图的示例。在步骤602,web浏览器320呈现带标签(例如,<object>或者<embed>标签)的网页,并且在步骤604确定标签的MIME类型是否能够由HTML呈现引擎322本地早现。可以进行这样的确定,因为标签属性包括MIME类型。如果确定为是,那么过程600在步骤606处退出,该步骤可以例如终止过程600或者可以返回以等待浏览器呈现另一标签。如果确定为否,那么在步骤608中浏览器320在映射数据库330中寻找MIME类型以找到它所关联的记录。数据库记录对于每种MIME类型规定了是否调用可执行文件(例如,主机插件328)或者存根插件324,并且如果要调用存根插件,记录还包括对相关联的端点插件能够早现MIME类型的标记。可以理解,存根插件324的实例化与HVD150上任何其他要被执行的插件的实例化没有本质区别。是否实例化存根插件324仅仅依据映射数据库330中的MIME类型的入口是否指向存根插件或者在HVD150的上下文中本地执行的某一其他插件。在步骤610中,浏览器320经由插件API326实例化(加载)和初始化存根插件324。初始化请求的参数规定了存根插件324所负责的插件显示窗口535的窗口坐标和大小。
在步骤612中,初始化使得存根插件324与插件服务器360建立插件协议会话415。可以理解,协议会话415的输送可以采取很多实施例,包括但不限于,HTTP、TLS、TCP的使用,或者在VDI会话405的虚拟信道上的复用。在步骤614,存根插件324发送初始化远程过程调用(RPC),该调用包括来自插件API326的初始化参数和指示要加载的端点插件的类型的其他参数。现在初始化了系统,并且从这点往后,可以通过以下各项来生成事件:用户与web页面的交互、或者与web页面相关联的脚本、或者来自客户端端点设备205的回调请求。在步骤616,存根插件324等待事件,并且在返回步骤616以等待另一事件之前根据特定的路径处理该事件。
在步骤618,存根插件324从客户端端点设备205接收回调RPC,并且在步骤620中存根插件324将RPC反编列(转换和分解)为参数并且生成经由插件API326对于浏览器(例如,HTML呈现引擎322)的插件API回调。在步骤622中,存根插件324接收API回调响应,并且在步骤624中回调结果被编列(转换和装配)为RPC响应,接着在返回步骤616以等待另一事件之前,在步骤626中存根插件324经由插件协议会话415将该RPC响应发送回客户端端点设备205。
在步骤628,存根插件324经由插件API326从浏览器(例如,HTML呈现引擎322)接收插件API请求,并且存根插件在步骤630中将API请求的参数编列为RPC请求,在步骤632中经由插件协议会话415将RPC请求发送至客户端端点设备205。存根插件324在步骤634中从客户端端点设备205接收RPC响应,在返回步骤616以等待另事件之前,在步骤636中将其反编列并且将其结果返回至浏览器。
在步骤638,存根插件324检测窗口位置变化,例如因为用户正在移动在客户端端点205处显示的浏览器窗口510中的窗口或者改变其尺寸,或者因为主机应用需要重新安排窗口,并且在步骤640中将可能包括关于插件窗口535的哪些部分被重叠的信息的新窗口几何结构编列到步骤640的RPC中。在步骤642中,存根插件324经由插件协议会话415将RPC发送至客户端端点设备205。在步骤644中,存根插件324从客户端端点设备205接收确认RPC被处理的RPC确认,并接着返回步骤616以等待另一事件。
在步骤646处,存根插件324经由插件API326从浏览器(例如,HTML呈现引擎322)接收卸载web页面的插件API通知,并且在步骤648中存根插件324创建卸载RPC并在步骤650中经由插件协议会话415将其发送至客户端端点设备205。在步骤652中中,存根插件324从客户端端点设备205接收确认卸载RPC已被处理的RPC确认,并接着在步骤654存根插件退出过程600。在退出时,插件协议会话415可以被终止,也可以不被终止,这取决于具体的实施例。例如,如果用户仍然在不论浏览器中还是另一应用中活动,那么插件协议会话415可以保持活动直到浏览器被关闭、VDI会话405被终上等等。
图6A和6B示出了总体地示出了用于在客户端端点设备205处由插件服务器360建立和操作插件协议会话415的过程700的流程图的示例。这里描述的过程700为示例,其中客户端端点设备205和客户端操作系统355能够处理被遮蔽的媒体的区域从而产生图4A的显示505a,但可以理解,过程700不被如此限制,而是可以带有这些实施例可能需要的改动地用于图4B的替代实施例中。
在步骤702中,插件服务器360等待,直到插件协议会话405建立为止。该步骤可以必需验证存根插件324的证书并且回复会话建立请求。可以理解,协议会话415的输送可以采取很多实施例,包括但不限于HTTP、TLS、TCP的使用,或者VDI会话405的虚拟信道上的复用。一旦建立了会话,那么在步骤704中插件服务器360从存根插件324接收初始化RPC请求,该RPC请求包括来自插件API326的初始化参数(例如,窗口坐标和大小)以及指示要加载的端点插件的类型的其他参数(例如,MIME类型)。在步骤706中,插件服务器360使用初始化请求中的信息来定位和加载需要的类型的端点插件370。
在步骤708,插件服务器360从HVD150接收HVD显示图像500,其中HVD显示包括至少一个客户端窗口元件占位符530。插件服务器360可以经由VDI客户端350和VDI会话405接收HVD显示图像。HVD显示图像可以作为包括整个HVD显示图像的单个窗口或者作为针对每个托管虚拟应用的分离的虚拟图像或者二者的组合而被输送。
在步骤710中,基于初始化参数,插件服务器360将包含在初始化RPC中的图示矩形坐标和大小转换为适合于与客户端端点设备205相关联的显示器250的坐标。在步骤712中,插件服务器360按照初始化所规定为插件显示窗口535创建无框窗口,就是说,没有与其相关联的框架装饰的图示矩形或者窗口。此时,还可以接收和处理遮蔽图示矩形的区域列表。总而言之,图示矩形和遮蔽信息使得插件服务器360与操作系统355交互以只显示那些由端点插件370呈现的数据的、当前在HVD显示中可见的部分。
在步骤714中,插件服务器360经由客户端插件API365用插件显示窗口535的坐标和来自初始化请求的其他参数初始化端点插件370,并且在步骤716中,在等待插件指示完成初始化之后,向存根插件324发送指示初始化已经完成的响应RPC。该系统现在已被初始化,并且从这点往后,可以通过以下各项来生成事件:用户与web页面的交互、或者与web页面相关联的脚本、或者来自存根插件324的请求。在步骤718,插件服务器360等待事件,并且在返回步骤718以等待另一事件之前,在步骤720根据特定的路径处理该事件。
在步骤722,插件服务器360从端点插件370接收API回调,并且插件服务器360在步骤724中将该回调编列到RPC回调请求中而且在步骤726经由插件协议会话415将RPC回调请求发送至存根插件324。在步骤728插件服务器360等待来自存根插件324的RPC响应,而且一旦接收,在步骤730,在返回步骤718以等待另一事件之前,将RPC反编列为参数并生成返回到端点插件370的插件API。
在步骤732,插件服务器360从存根插件324接收规定窗口几何结构变化的RPC。RPC可以包括关于插件窗口535的哪些部分被重叠或者遮蔽以及实际的插件窗口535自身的位置和大小变化的信息。在步骤734中,因为需要与所接收的RPC对应,例如通过通知操作系统35应该呈现端点呈现的插件窗口535的哪些地方,插件服务器360修改遮蔽端点呈现的用户元件535的区域列表。插件服务器360在步骤736中创建确认窗口几何结构变化RPC已被处理的RPC确认,并且在步骤738中,在返回步骤718以等待另一事件之前,将该RPC确认经由插件协议会话415发送至存根插件324。
插件服务器360在步骤740从存根插件324接收RPC请求,并且在步骤742中将RPC反编列为参数并生成经由客户端插件API365对端点插件370的客户端插件API回调。插件服务器360在步骤744接收API同调响应,并且在步骤746将回调响应编列到RPC响应中,接着在步骤738,在返回步骤718以等待另一事件之前,插件服务器360将该RPC响应发送回存根插件324。
在步骤748,插件服务器360从存根插件324接收卸载RPC请求,并且在步骤750中插件服务器360卸载端点插件370。在步骤752中,插件服务器360向存根插件324发送确认卸载RPC已被处理的RPC确认,并接着在步骤754处退出过程700。在退出时,插件协议415可以被终止,也可以不被终止,这取决于具体的实施例。例如,如果用户仍然在不论浏览器中还是另一应用中活动,那么插件协议会话415可以保持活动直到浏览器被关闭、VDI会话405被终止等等。
图7是总体示出了过程800的流程图的示例,该过程800用于转换托管的web浏览器320来使用存根插件324和一个或多个端点插件370从而将引用诸如流媒体之类的一个或多个具体的MIME类型的标签集成呈现到在客户端端点设备上显示的浏览器窗口中。过程800可以通过以下方式被执行:安装模块或向导、被(例如,系统管理器)触发的脚本、或者任何其他合适的方式。在步骤805,存根插件324被安装到HVD150上的web浏览器320中。在步骤810,问询MIME至文件的映射数据库330以搜索与要由客户端端点设备205执行的MIME类型相关联的记录,并且在步骤815修改发现的每个记录,例如通过将本地可执行虚拟化的插件的文件名替换为存根插件342的文件名。在步骤820,如果还没有建立,就与客户端端点设备205建立插件协议会话415,并且在步骤825向插件服务器360发送RPC,该RPC请求插件服务器360将适合的端点插件370安装到它的环境中以处理带有特定MIME类型的标签。在步骤830,过程等待在客户端端点设备205上成功地发生安装的确认,然后该过程终止于步骤835处。
总的来讲,这里提供了用于建立包括诸如流媒体之类的用户界面元件的浏览器窗口在客户端端点设备上的集成早现的技术。HVD上的托管的web浏览器示出了浏览器窗口的托管虚拟桌面(HVD)图像并将其传送至客户端端点设备用于显示,HVD显示包括至少一个主机提供的窗口元件和至少一个可以呈现与标签相关联的客户端提供的数据的占位符。客户端插件服务器实例化端点浏览器插件来:呈现标签以代替HVD图像的一部分,之后在客户端端点设备处显示浏览器窗口和所呈现的标签内容的集成显示。
上述描述仅仅是示例的意图。已经展现的描述是为了叙述和描述的目的,并不意味是排他性的或者受限于所公开的形式的实施例。对于本领域的常规技术人员,很多修改和更正是明显的。
这里所使用的专有名词只是为了描述特定实施例的目的而不是意图限制。除非上下文另有清楚的指示,否则这里所用的单数形式“一个(a)”、“一种(an)”和“该(the)”还意图包括复数形式。还可以理解,当在本说明书使用时,术语“包括(comprises)”和/或“包括(comprising)”明确了所述特征、整体、步骤、操作、元件和/或组件的存在,但并不排除一个或多个特征、整体、步骤、操作、元件、组件和/或它们的群组的存在或者附加。所附权利要求中对应的结构、材料、动作以及所有手段或步骤与功能元件的等价物旨在包括与具体宣称的其他所要求的元素组合以用于执行功能的任何结构、材料或者动作。
关于示出了方法、装置和编码有指令的计算机可读媒体的可能实现的架构、功能和操作的附图,流程图或者框图中的每个块可以代表模块、片段或者包括用于实现规定的(一个或多个)逻辑功能的一个或多个可执行指令的部分代码。还应该注意,在某些替代的实现中,块中所注的功能可以不依图中所注的次序而发生。例如,显示为连续的两个块实际上可以基本同时被执行,或者有时可以用逆序执行这些块,这取决于所涉及的功能。还要注意,框图和/或流程图示的每个块,以及框图和/或流程图示中块的组合可以由执行规定功能或动作的专用基于硬件的系统或者专用硬件和计算机指令的组合来实现。
Claims (28)
1.一种方法,包括:
在客户端端点设备上建立插件元件;
在所述客户端端点设备处从HVD主机接收包括浏览器窗口的托管虚拟桌面(HVD)显示,所述浏览器窗口包括主机提供的窗口元件和其中能够呈现客户端提供的插件显示窗口的占位符;
由所述插件元件实例化端点插件;
在所述端点插件处接收来自web内容服务器的数据;
通过呈现所述HVD显示以及通过所述端点插件将所接收的数据呈现为客户端提供的插件显示窗口以代替所述HVD显示的占位符来生成客户端端点显示;并且
显示所述客户端端点显示以使得所述客户端端点设备的用户能够在聚合的窗口中同时观看所述主机提供的窗口元件和所述客户端提供的插件显示窗口。
2.如权利要求1所述的方法,还包括:
在所述客户端设备和所述web内容服务器之间传送所述数据而不需要递送通过所述HVD主机。
3.如权利要求1所述的方法,其中所述所接收的数据是媒体数据。
4.如权利要求1所述的方法,还包括:
在所述插件元件和所述HVD主机上的存根插件之间建立插件协议会话。
5.如权利要求4所述的方法,还包括:
所述插件元件经由所述插件协议会话从所述存根插件接收占位符信息,其中所述占位符信息包括一个或多个以下各项中的一个或多个:
描述所述web内容服务器的位置的统一资源标识符(URI);
要在所述客户端端点设备上实例化的端点插件的类型;以及
使得所述端点插件能够呈现所述插件显示窗口以代替所述占位符的窗口几何结构信息。
6.如权利要求4所述的方法,还包括:
所述插件元件从所述端点插件接收客户端应用程序接口(API)请求并且经由所述插件协议会话向所述存根插件发送客户端API请求;并且
所述插件元件经由所述插件协议会话从所述存根插件接收主机API请求并将所述主机API请求发送至所述端点插件。
7.如权利要求6所述的方法,其中所述客户端API请求和所述主机API请求是Netscape Plugin API(NPAPI)请求、Pepper Plugin API(PPAPI)请求或者ActiveX API请求。
8.如权利要求1所述的方法,还包括:
在所述客户端端点设备中的VDI客户端和所述HVD中的VDI服务器之间建立虚拟桌面接口(VDI)会话,其中所述插件协议会话是作为VDI会话中的虚拟信道被输送的。
9.如权利要求1所述的方法,其中所述HVD显示还包括应用窗口,其中所述占位符能够被所述HVD显示中的所述应用窗口部分或者完全地遮蔽。
10.如权利要求9所述的方法,其中所述客户端端点显示的所述生成还包括:
所述端点插件只在所述占位符不被所述应用窗口遮蔽时呈现所述插件显示窗口;并且
当所述占位符被所述应用窗口完全或者部分地遮蔽时,所述端点插件暂停所述插件显示窗口的所述呈现。
11.如权利要求9所述的方法,其中所述客户端端点显示的所述生成还包括:所述端点插件呈现所述插件显示窗口以代替没有被所述应用窗口遮蔽的所述占位符的部分。
12.如权利要求1所述的方法,还包括:
当所述端点插件是清晰的时,接收来自与所述客户端端点设备相关联的输入设备的用户输入;并且
由所述端点插件处理所接收的用户输入。
13.一种方法,包括:
在托管虚拟桌面(HVD)主机上的web浏览器中,呈现包括页面内容及引用数据和插件对象的标签的web页面;
在所述web浏览器中,实例化存根插件以取代由所述标签引用的所述插件对象;
生成包括浏览器窗口的HVD显示,所述浏览器窗口包括所述web浏览器呈现所述页面内容的主机提供的窗口元件以及其中客户端端点设备上的端点插件能够呈现所述标签的占位符;并且
使用虚拟桌面接口(VDI)会话将所述HVD显示发送至客户端端点设备。
14.如权利要求13所述的方法,还包括:
在所述存根插件和所述客户端端点设备上的插件元件之间建立插件协议会话。
15.如权利要求14所述的方法,其中所述标签包括规定了所述标签的MIME类型的多用途互联网邮件扩展(MIME)属性,并且早现所述web页面还包括:
在映射数据库中执行查找以找寻与所述标签的MIME类型相关联的记录,所述记录包括所述存根插件的位置以及所述客户端端点设备上能够呈现所述MIME类型的、相关联的端点插件的标记,并且
经由所述插件协议会话将初始化请求发送至所述插件元件,其中所述初始化请求命令所述插件元件初始化所述客户端端点设备上的相关联的端点插件从而使得所述端点插件能够呈现所述标签。
16.如权利要求14所述的方法,还包括:
生成占位符信息;并且
由所述存根插件经由所述插件协议会话向所述插件元件发送所述占位符信息,其中所述占位符信息包括以下各项中的一个或多个:
描述web内容服务器的位置的统一资源标识符(URI),其中,由所述标签引用的所述数据位于该位置处;
要在所述客户端端点设备上实例化的端点插件的类型;以及
使得所述端点插件能够呈现被所述标签引用的所述数据以代替所述占位符的窗口几何结构信息。
17.如权利要求14所述的方法,还包括:
所述存根插件经由所述插件协议会话接收来自所述插件元件的客户端应用程序接口(API)请求并将所述客户端API请求发送至所述web浏览器;并且
所述存根插件从所述web服务器接收主机API请求并经由所述插件协议会话向所述插件元件发送所述主机API请求。
18.一种装置,包括:
显示设备;以及
处理器,其被配置为:
在所述装置上建立插件元件;
在所述装置处从HVD主机接收包括浏览器窗口的托管虚拟桌面(HVD)显示,所述浏览器窗口包括主机提供的窗口元件和其中能够呈现客户端提供的插件显示窗口的占位符;
由所述插件元件实例化端点插件;
在所述端点插件处接收来自web内容服务器的数据;
通过呈现所述HVD显示以及通过所述端点插件将所接收的数据早现为客户端提供的插件显示窗口以代替所述HVD显示的占位符来生成客户端端点显示;并且
显示所述端点显示以使得所述装置的用户能够在聚合的窗口中同时观看所述主机提供的窗口元件和所述客户端提供的插件显示窗口。
19.如权利要求18所述的装置,其中所述端点插件从包括以下各项的群组中选择:Flash、H264、mp4、Quicktime、RealPlayer、Shockwave、Silverlight和Windows Media Player。
20.如权利要求18所述的装置,其中所述web内容服务器是内容源服务器或者内容缓存服务器。
21.如权利要求18所述的装置,其中所述装置是瘦客户端或者个人计算机。
22.如权利要求18所述的装置,其中所述处理器还被配置为:
在所述装置和所述web内容服务器之间传送所述数据而不需要递送通过所述HVD。
23.一种装置,包括:
存储器;以及
处理器,其被配置为:
在所述存储器中初始化的web浏览器中,呈现包括页面内容及引用数据和插件对象的标签的web页面;
在所述web浏览器中,实例化存根插件以取代由所述标签引用的所述插件对象;
生成包括浏览器窗口的托管虚拟桌面(HVD)显示,所述浏览器窗口包括所述web浏览器呈现所述页面内容的主机提供的窗口元件以及其中客户端端点设备上的端点插件能够呈现所述标签的占位符;并且
使用虚拟桌面接口(VDI)会话将所述HVD显示发送至客户端端点设备。
24.如权利要求23所述的装置,其中所述标签包括规定了所述标签的MIME类型的多用途互联网邮件扩展(MIME)属性,并且所述装置还包括映射数据库,所述映射数据库包括多条记录,每条记录与不同的MIME类型相关联并且所述映射数据库包括存根插件的位置和客户端端点设备上能够呈现所述MIME类型的相关联的端点插件的标记。
25.如权利要求24所述的装置,其中早现所述web页面包括:所述处理器还被配置为:
在所述映射数据库中执行查找以找寻与所述标签的MIME类型相关联的记录;并且
向客户端端点设备发送初始化远程过程调用(RPC),其中初始化RPC命令所述客户端端点设备初始化所述客户端端点设备上相关联的端点插件从而使得所述端点插件能够呈现所述标签。
26.如权利要求23所述的装置,其中所述web浏览器从由以下各项组成的群组中选择:Mozilla Firefox,Google Chrome,Microsoft InternetExplorer,Opera Software Opera和Apple Safari。
27.一种或多种编码有指令的计算机可读介质,当所述指令被处理器执行时,使得所述处理器:
在客户端端点设备上建立插件元件;
在所述客户端端点设备处从HVD主机接收包括浏览器窗口的托管虚拟桌面(HVD)显示,所述浏览器窗口包括主机提供的窗口元件和其中能够呈现客户端提供的插件显示窗口的占位符;
由所述插件元件实例化端点插件;
在所述端点插件处接收来自web内容服务器的数据;
通过呈现所述HVD显示以及通过所述端点插件将所接收的数据呈现为客户端提供的插件显示窗口以代替所述HVD显示的占位符来生成客户端端点显示;并且
显示所述客户端端点显示以使得所述客户端端点设备的用户能够在聚合的窗口中同时观看所述主机提供的窗口元件和所述客户端提供的插件显示窗口。
28.一种或多种编码有指令的计算机可读介质,当所述指令被处理器执行时,使得所述处理器:
在托管虚拟桌面(HVD)主机上的web浏览器中,呈现包括页面内容及引用数据和插件对象的标签的web页面;
在所述web浏览器中,实例化存根插件以取代由所述标签引用的所述插件对象;
生成包括浏览器窗口的HVD显示,所述浏览器窗口包括所述web浏览器呈现所述页面内容的主机提供的窗口元件以及其中客户端端点设备上的端点插件能够呈现所述标签的占位符;并且
使用虚拟桌面接口(VDI)会话将所述HVD显示发送至客户端端点设备。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/102,581 US20120284632A1 (en) | 2011-05-06 | 2011-05-06 | Integrated Rendering of Streaming Media in Virtualized Desktop Environment |
US13/102,581 | 2011-05-06 | ||
PCT/US2012/032845 WO2012154361A1 (en) | 2011-05-06 | 2012-04-10 | Integrated rendering of streaming media in virtualized desktop environment |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103518189A true CN103518189A (zh) | 2014-01-15 |
Family
ID=46025918
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280021959.2A Pending CN103518189A (zh) | 2011-05-06 | 2012-04-10 | 流媒体在虚拟化的桌面环境中的集成呈现 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20120284632A1 (zh) |
EP (1) | EP2710463B1 (zh) |
CN (1) | CN103518189A (zh) |
WO (1) | WO2012154361A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103946792A (zh) * | 2011-11-16 | 2014-07-23 | 思科技术公司 | 用于对虚拟桌面基础架构桌面图像进行转码或充实的网络应用设备 |
CN111033540A (zh) * | 2017-06-16 | 2020-04-17 | 巴科股份有限公司 | 用于通过网络流传输数据的方法和系统 |
CN112313622A (zh) * | 2018-05-04 | 2021-02-02 | 茨特里克斯系统公司 | 具有窗口监视/叠加检测的WebRTC API重定向 |
CN114443192A (zh) * | 2021-12-27 | 2022-05-06 | 天翼云科技有限公司 | 基于云桌面的多窗口虚拟应用方法及装置 |
CN116743728A (zh) * | 2023-08-11 | 2023-09-12 | 深圳竹云科技股份有限公司 | 应用运维方法、系统、设备及存储介质 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9130899B1 (en) | 2011-04-27 | 2015-09-08 | Cisco Technology, Inc. | Integrated user interface for unified communications applications |
US9225763B2 (en) * | 2011-06-07 | 2015-12-29 | Cisco Technology, Inc. | Distributed overlay browser for transparent streaming media support in virtualized desktop environment |
US20120317184A1 (en) * | 2011-06-07 | 2012-12-13 | Syed Mohammad Amir Husain | Zero Client Device With Integrated Global Position System Capability |
US9185154B2 (en) * | 2011-08-17 | 2015-11-10 | Nasdaq, Inc. | Integrated call capture for streaming audio |
US9055139B1 (en) | 2012-03-12 | 2015-06-09 | Cisco Technology, Inc. | Display protocol interception in the network for services and network-based multimedia support for VDI |
US9535559B2 (en) * | 2012-06-15 | 2017-01-03 | Intel Corporation | Stream-based media management |
US9626450B2 (en) | 2012-06-29 | 2017-04-18 | Dell Products L.P. | Flash redirection with browser calls caching |
US9354764B2 (en) | 2012-06-29 | 2016-05-31 | Dell Products L.P. | Playback of flash content at a client by redirecting execution of a script by a flash redirection plugin at a server to a flash redirection browser at the client |
US9489471B2 (en) | 2012-06-29 | 2016-11-08 | Dell Products L.P. | Flash redirection with caching |
US9442618B2 (en) * | 2012-09-17 | 2016-09-13 | Sap Se | Mobile device interface generator |
FR3000339A1 (fr) * | 2012-12-20 | 2014-06-27 | France Telecom | Procede de traitement de requetes d'acces a des services de virtualisation informatique, passerelle de virtualisation et navigateur web |
CN103914340A (zh) * | 2012-12-31 | 2014-07-09 | 联想(北京)有限公司 | 信息处理方法及相应信息处理装置 |
US10249018B2 (en) * | 2013-04-25 | 2019-04-02 | Nvidia Corporation | Graphics processor and method of scaling user interface elements for smaller displays |
WO2015035254A1 (en) * | 2013-09-05 | 2015-03-12 | Mosaiqq, Inc. | System and method for decoupling windows from the desktop it was created on in a multiple desktop environment |
US10976986B2 (en) * | 2013-09-24 | 2021-04-13 | Blackberry Limited | System and method for forwarding an application user interface |
US9329855B2 (en) * | 2014-02-07 | 2016-05-03 | Vmware, Inc. | Desktop image management for virtual desktops using a branch reflector |
US9354858B2 (en) * | 2014-02-07 | 2016-05-31 | Vmware, Inc. | Desktop image management for virtual desktops using on-demand stub creation |
US9335985B2 (en) * | 2014-02-07 | 2016-05-10 | Vmware, Inc. | Desktop image management for virtual desktops |
US9992257B2 (en) * | 2014-09-05 | 2018-06-05 | Dell Products L.P. | System and method for dynamic in-session altering of remote desktop windows |
US20160112528A1 (en) * | 2014-10-16 | 2016-04-21 | Futurewei Technologies, Inc. | Method and System for Serving a Virtual Desktop to a Client |
WO2017030607A1 (en) * | 2015-08-17 | 2017-02-23 | Five9, Inc. | Systems and methods for establishing a control channel between a virtualization server and a client device |
US10979470B2 (en) * | 2015-12-28 | 2021-04-13 | Industrial Technology Research Institute | Server device, client device and dynamic image transmission method for virtual desktop infrastructure |
CN107229454B (zh) * | 2016-03-24 | 2019-11-12 | 阿里巴巴集团控股有限公司 | 混合视图的显示方法及装置 |
WO2018089033A1 (en) | 2016-11-14 | 2018-05-17 | Google Llc | Systems and methods for providing interactive streaming media |
CN109213546B (zh) * | 2017-06-30 | 2021-09-07 | 武汉斗鱼网络科技有限公司 | 用于windows客户端程序的登录处理方法和装置 |
CN108255916A (zh) | 2017-09-14 | 2018-07-06 | 广州市动景计算机科技有限公司 | 网页页面呈现的方法、设备、客户端装置和电子设备 |
US11190573B2 (en) * | 2018-07-25 | 2021-11-30 | Vmware, Inc. | Techniques for improving implementation of a remote browser within a local browser |
US11256528B2 (en) | 2018-10-26 | 2022-02-22 | Nvidia Corporation | Individual application window streaming suitable for remote desktop applications |
US11868788B2 (en) * | 2021-11-04 | 2024-01-09 | Here Global B.V. | Method and apparatus for application plug-in management |
CN116193211A (zh) * | 2023-02-02 | 2023-05-30 | 郑州小鸟信息科技有限公司 | 一种可扩展的基于chromium内核的多媒体播控系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101420610A (zh) * | 2007-10-26 | 2009-04-29 | 闪联信息技术工程中心有限公司 | 显示远程桌面内容的方法及其装置 |
CN101582926A (zh) * | 2009-06-15 | 2009-11-18 | 中国电信股份有限公司 | 实现远程媒体播放重定向的方法和系统 |
US7681134B1 (en) * | 2006-04-25 | 2010-03-16 | Parallels Software International, Inc. | Seamless integration and installation of non-host application into native operating system |
US20100138744A1 (en) * | 2008-11-30 | 2010-06-03 | Red Hat Israel, Ltd. | Methods for playing multimedia content at remote graphics display client |
CN101978674A (zh) * | 2008-03-21 | 2011-02-16 | 皇家飞利浦电子股份有限公司 | 用于显示由客户端生成的信息的方法 |
CN101981558A (zh) * | 2008-04-01 | 2011-02-23 | 微软公司 | 用于管理远程会话中的多媒体操作的系统和方法 |
CN102037710A (zh) * | 2008-05-19 | 2011-04-27 | 思杰系统有限公司 | 用于远程处理多媒体插件调用的方法和系统 |
-
2011
- 2011-05-06 US US13/102,581 patent/US20120284632A1/en not_active Abandoned
-
2012
- 2012-04-10 WO PCT/US2012/032845 patent/WO2012154361A1/en active Application Filing
- 2012-04-10 CN CN201280021959.2A patent/CN103518189A/zh active Pending
- 2012-04-10 EP EP12718487.7A patent/EP2710463B1/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7681134B1 (en) * | 2006-04-25 | 2010-03-16 | Parallels Software International, Inc. | Seamless integration and installation of non-host application into native operating system |
CN101420610A (zh) * | 2007-10-26 | 2009-04-29 | 闪联信息技术工程中心有限公司 | 显示远程桌面内容的方法及其装置 |
CN101978674A (zh) * | 2008-03-21 | 2011-02-16 | 皇家飞利浦电子股份有限公司 | 用于显示由客户端生成的信息的方法 |
CN101981558A (zh) * | 2008-04-01 | 2011-02-23 | 微软公司 | 用于管理远程会话中的多媒体操作的系统和方法 |
CN102037710A (zh) * | 2008-05-19 | 2011-04-27 | 思杰系统有限公司 | 用于远程处理多媒体插件调用的方法和系统 |
US20100138744A1 (en) * | 2008-11-30 | 2010-06-03 | Red Hat Israel, Ltd. | Methods for playing multimedia content at remote graphics display client |
CN101582926A (zh) * | 2009-06-15 | 2009-11-18 | 中国电信股份有限公司 | 实现远程媒体播放重定向的方法和系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103946792A (zh) * | 2011-11-16 | 2014-07-23 | 思科技术公司 | 用于对虚拟桌面基础架构桌面图像进行转码或充实的网络应用设备 |
CN111033540A (zh) * | 2017-06-16 | 2020-04-17 | 巴科股份有限公司 | 用于通过网络流传输数据的方法和系统 |
CN111033540B (zh) * | 2017-06-16 | 2024-03-26 | 巴科股份有限公司 | 用于通过网络流传输数据的方法和系统 |
CN112313622A (zh) * | 2018-05-04 | 2021-02-02 | 茨特里克斯系统公司 | 具有窗口监视/叠加检测的WebRTC API重定向 |
CN114443192A (zh) * | 2021-12-27 | 2022-05-06 | 天翼云科技有限公司 | 基于云桌面的多窗口虚拟应用方法及装置 |
CN114443192B (zh) * | 2021-12-27 | 2024-04-26 | 天翼云科技有限公司 | 基于云桌面的多窗口虚拟应用方法及装置 |
CN116743728A (zh) * | 2023-08-11 | 2023-09-12 | 深圳竹云科技股份有限公司 | 应用运维方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20120284632A1 (en) | 2012-11-08 |
EP2710463B1 (en) | 2018-06-06 |
WO2012154361A1 (en) | 2012-11-15 |
EP2710463A1 (en) | 2014-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103518189A (zh) | 流媒体在虚拟化的桌面环境中的集成呈现 | |
US9197697B2 (en) | Cloud computing system and method | |
US9563929B1 (en) | Caching of content page layers | |
EP2867793B1 (en) | System and method for transparent in-network adaptation of rich internet applications | |
CN109068153B (zh) | 视频播放方法、装置和计算机可读存储介质 | |
US9864671B1 (en) | Systems and methods of live experimentation on content provided by a web site | |
US20160044115A1 (en) | Remote browsing session management | |
US9563928B1 (en) | Bandwidth reduction through delivery of hardware-independent graphics commands for portions of content pages | |
CN107924318A (zh) | 基于web浏览器的桌面和应用远程处理解决方案 | |
CN102946409A (zh) | 从多个服务器向客户机递送单个终端用户体验 | |
US11489845B1 (en) | Speculative rendering | |
US10983810B2 (en) | Implementing web browser in virtual machine | |
US20160080451A1 (en) | Real-time dynamic hyperlinking system and method | |
CN113079216B (zh) | 一种云应用的实现方法、装置、电子设备及可读存储介质 | |
CN104349177B (zh) | 一种在桌面云下转向播放多媒体文件的方法、虚拟机及系统 | |
CN112221127B (zh) | 一种云游戏的多点控制方法及装置 | |
CN115292020B (zh) | 一种数据处理方法、装置、设备以及介质 | |
CN113926185A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
Yadav et al. | Adaptive GPU resource scheduling on virtualized servers in cloud gaming | |
US9614900B1 (en) | Multi-process architecture for a split browser | |
Grimstead et al. | Automatic distribution of rendering workloads in a grid enabled collaborative visualization environment | |
Barboza et al. | A simple architecture for digital games on demand using low performance resources under a cloud computing paradigm | |
US11784887B1 (en) | Bandwidth throttling | |
US10042521B1 (en) | Emulation of control resources for use with converted content pages | |
US11169666B1 (en) | Distributed content browsing system using transferred hardware-independent graphics commands |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140115 |