CN108021425A - 一种集成多个应用图形窗口的虚拟桌面系统及运行方法 - Google Patents
一种集成多个应用图形窗口的虚拟桌面系统及运行方法 Download PDFInfo
- Publication number
- CN108021425A CN108021425A CN201711452437.9A CN201711452437A CN108021425A CN 108021425 A CN108021425 A CN 108021425A CN 201711452437 A CN201711452437 A CN 201711452437A CN 108021425 A CN108021425 A CN 108021425A
- Authority
- CN
- China
- Prior art keywords
- virtual desktop
- application
- server device
- virtual
- user
- 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
Links
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种集成多个应用图形窗口的虚拟桌面系统及运行方法,属于计算机领域。该虚拟桌面系统包括虚拟桌面服务器装置、应用运行中心装置、用户终端装置及网络装置。该系统的运行方法:“虚拟桌面服务器”装置创建及管理多个“虚拟桌面”;用户终端装置通过“虚拟桌面访问协议”访问指定“虚拟桌面”来启动“应用”;“虚拟桌面”启动的“应用”运行于“应用运行中心”装置的指定“应用运行容器”,“应用运行容器”通过“应用窗口访问协议”将应用的图形窗口数据传递给“虚拟桌面服务器”装置;“虚拟桌面服务器”装置将该应用图形窗口合成到指定“虚拟桌面”并进一步传递给用户终端装置。本发明有效实现用户终端同时访问多个网络应用。
Description
技术领域
本发明属于计算机领域,主要关注用户终端统一访问和管理分散在网络多个节点上运行的带图形界面的应用程序。
背景技术
目前用户终端访问和管理分散在网络多个节点上运行的应用程序主要有两类手段,一类是将多个网络应用放在同一个计算机操作系统中运行,并通过远程桌面来访问,这种方式限制了网络应用的数量和类型;另外一类是将多个网络应用分散在多个计算机操作系统中运行,并通过多个远程桌面来访问,这种方式使得用户终端访问过于麻烦。传统的“远程桌面”无法实现将分散运行于多个结点的多个应用统一在一个“桌面”环境下。
发明内容
本发明目的是为了有效实现用户终端同时访问和管理分散在网络多个节点上运行的应用程序,特别是带图形界面的应用程序的能力。本发明给出一种集成多个应用图形窗口的虚拟桌面系统及运行方法。
本发明能够将分散在多个计算机操作系统中运行的多个网络应用的图形窗口集成在同一个虚拟桌面中,从而通过一个用户终端同时访问和管理分散在网络多个节点上运行的应用程序,特别是带图形界面的应用程序。
本发明首先提供了一种集成多个应用图形窗口的虚拟桌面系统,该系统包含虚拟桌面服务器装置、应用运行中心装置、用户终端装置及网络装置,用户终端装置、虚拟桌面服务器装置和应用运行中心装置三者之间通过网络装置采用网络通信方式互联;该系统中的用户通过“用户终端装置”发起启动指定“应用”的请求,该“应用”的程序代码将被运行于应用运行中心装置的指定“应用运行容器”中,而该“应用”的图形窗口数据则传递并合成到指定的虚拟桌面服务器装置的“虚拟桌面”实例中,用户通过“用户终端装置”访问该“虚拟桌面”实例来操控多个“应用”;
其中:
“虚拟桌面服务器装置”:主要负责“虚拟桌面”实例的管理、“虚拟桌面”实例中的将多个应用图形窗口数据合成为“虚拟桌面图像”的管理、以及“虚拟桌面”实例的相关联输入输出设备管理;“虚拟桌面服务器装置”包括至少一个“虚拟桌面管理服务器”、以及零个或者多个“虚拟桌面”实例;其中“虚拟桌面管理服务器”具体负责“虚拟桌面”实例的创建和销毁,“虚拟桌面管理服务器”也负责向“用户终端装置”提供对“虚拟桌面”实例的访问接口、以及从“应用运行中心装置”的“应用运行容器”接收应用的图形窗口数据,“虚拟桌面管理服务器”还负责与用户终端装置、应用运行中心装置之间相关联输入输出设备的“事件和数据”的传递;一个“虚拟桌面”实例包括一个“虚拟桌面功能菜单”和零个或者多个“应用窗口”,“虚拟桌面”实例负责启动和关闭指定应用,“虚拟桌面”实例还负责在本实例范围内的相关联输入输出设备管理,“虚拟桌面”实例还负责在本实例范围内将多个应用图形窗口数据合成为“虚拟桌面图像”的管理,“虚拟桌面”实例通过“虚拟桌面访问协议”将“虚拟桌面”实例的“虚拟桌面图像”传递给指定的“用户终端装置”;“虚拟桌面管理服务器”与“虚拟桌面”实例既可以通过网络装置互联,也可以通过操作系统内部进程间通信方式互联;
“应用运行中心装置”:主要负责“应用”的运行调度、运行、“应用”的图形窗口数据的捕捉和传递、“应用”的输入输出设备的“事件和数据”的传递;“应用运行中心装置”包括至少一个“应用运行调度器”、以及一个或者多个“应用运行容器”;“应用运行调度器”主要负责“应用”的运行调度即选择合适的“应用运行容器”来运行指定的“应用”;“应用运行容器”负责“应用”的运行、“应用”的图形窗口数据的捕捉和传递以及“应用”的输入输出设备的“事件和数据”的传递,“应用运行容器”将捕捉到的该“应用”的图形窗口数据即该“应用”所调用的图形接口函数实例或者窗口图像通过“应用窗口访问协议”传递给“虚拟桌面服务器装置”指定的“虚拟桌面”实例;“应用运行调度器”与“应用运行容器”实例既可以通过网络装置互联、也可以通过操作系统内部进程间通信方式互联;
“用户终端装置”:包括“虚拟桌面管理客户端”和“虚拟桌面客户端”实例;“用户终端装置”主要负责接收用户的输入和用户输入结果的反馈,也负责为本终端范围内的“虚拟桌面客户端”实例提供输入输出设备的“事件和数据”的产生及传递;其中“虚拟桌面管理客户端”负责连接“虚拟桌面服务器装置”中的“虚拟桌面管理服务器”、将用户的输入请求给“虚拟桌面服务器装置”中的“虚拟桌面管理服务器”、以及从“虚拟桌面服务器装置”中的“虚拟桌面管理服务器”中获取用户输入请求的执行结果并传递给用户,即“虚拟桌面管理客户端”是“虚拟桌面服务器装置”中的“虚拟桌面管理服务器”的面向用户的功能代理,用户通过“虚拟桌面管理客户端”来访问“虚拟桌面服务器装置”中的“虚拟桌面管理服务器”从而实现对“虚拟桌面”实例的管理;“虚拟桌面客户端”实例负责连接“虚拟桌面服务器装置”中的“虚拟桌面”实例、以及将用户的输入请求和本终端范围内与该“虚拟桌面客户端”实例相关联的输入设备产生“事件和数据”传递给已连接的“虚拟桌面服务器装置”中“虚拟桌面”实例、以及从已连接的“虚拟桌面服务器装置”中“虚拟桌面”实例获取“虚拟桌面图像”、以及从已连接的“虚拟桌面服务器装置”中“虚拟桌面”实例获取本终端范围内相关联的输出设备“事件和数据”并传递给相关输出设备,即“虚拟桌面客户端”实例是“虚拟桌面服务器装置”中“虚拟桌面”实例的面向用户的代理,“虚拟桌面客户端”实例与已连接的“虚拟桌面服务器装置”中“虚拟桌面”实例在“虚拟桌面图像”上完全保持一致,“虚拟桌面客户端”实例中的“虚拟桌面功能菜单”和“应用窗口”即是该“虚拟桌面客户端”实例已连接的“虚拟桌面服务器装置”中“虚拟桌面”实例中的“虚拟桌面功能菜单”和“应用窗口”的图像显示结果,用户通过“虚拟桌面客户端”实例来访问“虚拟桌面服务器装置”中“虚拟桌面”实例从而实现操控多个“应用”;
“网络装置”:负责上述用户终端装置、虚拟桌面服务器装置和应用运行中心装置之间的通信互联。
所述系统,“用户终端装置”中可以包括多个“虚拟桌面客户端”实例,用户可以在“用户终端装置”通过启动不同的“虚拟桌面客户端”实例同时登录到“虚拟桌面服务器装置”的不同“虚拟桌面”实例,这些“虚拟桌面客户端”实例可采用多进程、多线程、多容器技术彼此独立运行。
所述系统,在“应用运行中心装置”中的同一个“应用运行容器”实例中可以运行属于“虚拟桌面服务器装置”中不同“虚拟桌面”实例的多个“应用”,这些“应用”彼此隔离,可采用的“应用”隔离方法包括但不限于AppContainer、Jail、Cgroups、沙箱来实现;在“虚拟桌面服务器装置”中同一个“虚拟桌面”实例里的多个“应用”可运行于不同的“应用运行容器”实例中、而这些不同的“应用运行容器”实例也可属于不同类型的操作系统环境。
本发明同时还提供了一种集成多个应用图形窗口的虚拟桌面运行方法,所述方法包括具体步骤如下:
第1、用户在“用户终端装置”登录到“虚拟桌面服务器装置”上,并选择进入指定的“虚拟桌面”实例中;
第2、用户在“虚拟桌面”实例中选择待启动“应用”、然后发出启动运行该“应用”的请求;
第3、“虚拟桌面服务器装置”获取到步骤2中的“应用”启动运行请求,“虚拟桌面服务器装置”委托“应用运行中心装置”来运行步骤2中的“应用”启动运行请求;
第4、“应用运行中心装置”接收到步骤3中的“应用”运行请求后,“应用运行中心装置”中“应用运行调度器”选择一个可运行该“应用”的“应用运行容器”来运行步骤3中的待启动“应用”;
第5、在“应用运行容器”运行步骤4中的“应用”期间,“应用运行容器”动态捕获该“应用”的图形窗口数据即该“应用”所调用的图形接口函数或者该“应用”窗口图像,并采用“应用窗口访问协议”将该“应用”的图形窗口数据传递给“虚拟桌面服务器装置”指定的“虚拟桌面”实例;
第6、“虚拟桌面服务器装置”中的指定“虚拟桌面”实例接收到步骤5中该“应用”的图形窗口数据即该“应用”所调用的所有图形接口函数实例或者窗口图像,然后将该“应用”的图形窗口数据与同属于该指定“虚拟桌面”实例的其它“应用”的图形窗口数据合成为统一的“虚拟桌面图像”;
第7、用户在“用户终端装置”通过“虚拟桌面访问协议”来访问“虚拟桌面服务器装置”中指定的“虚拟桌面”实例,从而访问到指定“虚拟桌面”实例的“虚拟桌面图像”以及步骤2中“应用”的图形窗口;
第8、用户在“用户终端装置”也可以通过“虚拟桌面访问协议”将鼠标和/或键盘输入设备的“输入事件和数据”传递给“虚拟桌面服务器装置”中指定的“虚拟桌面”实例,“虚拟桌面服务器装置”中指定的“虚拟桌面”实例接收用户的“输入事件和数据”,并进行进一步的相应处理;用户在“用户终端装置”也可以通过“虚拟桌面访问协议”接收“虚拟桌面服务器装置”中指定的“虚拟桌面”实例传过来的输出设备的“输出事件和数据”并进行进一步的相应处理;
第9、当用户在“用户终端装置”上通过输入设备传递指定“应用”实例终止运行事件时,“虚拟桌面服务器装置”将委托“应用运行中心装置”终止该指定“应用”实例的运行、并在“虚拟桌面服务器装置”所属的“虚拟桌面”实例中删除该指定“应用”的图形窗口;
第10、当用户在“用户终端装置”上通过输入设备传递指定“虚拟桌面”实例终止运行事件时,“虚拟桌面服务器装置”将委托“应用运行中心装置”终止该指定“虚拟桌面”实例下的所有“应用”实例的运行、并最后删除该指定“虚拟桌面”实例;
第11、用户在“用户终端装置”可随时退出或者登录到“虚拟桌面服务器装置”的“虚拟桌面”实例。
其中,所述方法的第4步所述的“应用运行调度器”选择一个可运行该“应用”的“应用运行容器”,是根据“应用”所依赖的操作系统和第三方函数库、以及“应用运行中心装置”中所有“应用运行容器”所运行的操作系统和第三方函数库的情况来筛选出可运行该“应用”的备选“应用运行容器”集合,然后通过如下方法之一来选择一个“应用运行容器”来运行该“应用”:方法1是在备选“应用运行容器”集合中随机选择一个“应用运行容器”来运行该“应用”;方法2是根据“应用运行容器”的负载情况进行排序,并选择当前负载小的“应用运行容器”来运行该“应用”;方法3是在备选“应用运行容器”集合中选择包含同一个“虚拟桌面”实例的其它“应用”的“应用运行容器”来运行该“应用”。
所述方法的第5步所述的“应用窗口访问协议”,是指能够动态捕获和传递“应用”程序所调用图形接口函数或者窗口图像的面向应用窗口级别的图像应用协议,“应用窗口访问协议”包括但不限于X-Window的胖客户X协议、Thin的瘦客户ICA协议;“应用运行中心装置”的“应用运行容器”与“虚拟桌面服务器装置”中指定“虚拟桌面”实例的通信采用“应用窗口访问协议”;第5步中所述的“应用运行容器”动态捕获“应用”程序所调用图形接口函数或者窗口图像的方法1是针对“应用”程序所访问的图形GUI系统函数接口进行hook监控,从而动态捕获“应用”程序所调用图形接口函数及相应参数实例,并进一步直接将该图形接口函数实例传递给“虚拟桌面服务器装置”中指定“虚拟桌面”实例;第5步中所述的“应用运行容器”动态捕获“应用”程序所调用图形接口函数或者窗口图像的方法2是针对“应用”程序所访问的图形GUI系统函数接口进行hook监控,从而动态捕获“应用”程序所调用图形接口函数及相应参数实例,并进一步可根据该图形接口函数实例生成该“应用”的窗口图像,然后将该“应用”的窗口图像数据传递给“虚拟桌面服务器装置”中指定“虚拟桌面”实例;第5步中所述的“应用运行容器”动态捕获“应用”程序所调用图形接口函数或者窗口图像的方法3是首先动态捕捉运行该“应用”的“应用运行容器”的所属操作系统实例的桌面图像,并进一步将该“应用”窗口所对应的桌面图像区域提取出来从而生成该“应用”的窗口图像,然后将该“应用”的窗口图像数据传递给“虚拟桌面服务器装置”中指定“虚拟桌面”实例。
所述方法的第6步所述的“虚拟桌面图像”,是指将同属于同一个“虚拟桌面”实例的多个应用的图形窗口数据合成为统一的图像即虚拟桌面图像;“虚拟桌面服务器装置”中的“虚拟桌面”实例根据在本实例范围内多个应用图形窗口的位置、窗口大小、叠加层次关系、以及窗口状态信息对多个应用图形窗口进行合成、去除遮盖部分、图像渲染从而合成完整的“虚拟桌面图像”。
所述方法的第7步所述的“虚拟桌面访问协议”,是指能够动态捕获和传递“虚拟桌面”实例中的“虚拟桌面图像”的图像应用协议;“虚拟桌面访问协议”包括但不限于RDP协议、VNC协议、SPICE协议;“用户终端装置”与“虚拟桌面服务器装置”中指定“虚拟桌面”实例的通信是采用“虚拟桌面访问协议”。
所述方法的第11步所述的用户在“用户终端装置”退出或者登录到“虚拟桌面服务器装置”的“虚拟桌面”实例时,用户的退出或者登录操作不影响用户所拥有的“虚拟桌面”实例的运行,“虚拟桌面服务器装置”中的“虚拟桌面”实例独立与“用户终端装置”而运行并动态执行合成“虚拟桌面图像”的操作;用户的退出或者登录操作也不会影响“应用运行中心装置”的“应用运行容器”的“应用”运行;可通过如下方法来优化“虚拟桌面服务器装置”负载:对于“虚拟桌面服务器装置”中的没有任何“用户终端装置”登录的“虚拟桌面”实例,可降低或者暂停该“虚拟桌面”实例动态执行合成“虚拟桌面图像”操作的频率;可通过如下方法来优化“应用运行中心装置”负载:对于“虚拟桌面服务器装置”中的没有任何“用户终端装置”登录的“虚拟桌面”实例,可将该“虚拟桌面”实例中的非后台型“应用”暂时挂起或者冷冻从而降低对“应用运行中心装置”中处理器资源的消耗。
本发明所涉及的具体内容及所述术语的含义是:
(1)“应用”的图形窗口数据:是指“应用”程序所调用图形接口函数实例或者窗口图像。
(2)“远程桌面”,是指可通过网络访问到远程计算机结点上操作系统的桌面环境,传统“远程桌面”下的所有“应用”都运行在同一个操作系统实例中。
(3)“虚拟桌面”,是指将多个“应用”运行的界面集成在一个桌面环境中,这些“应用”既可以同在一个操作系统实例下运行、也可以在多个不同的操作系统实例下运行。传统“虚拟桌面”指在同一个操作系统实例下的桌面环境,即指“远程桌面”。而本专利所涉及的“虚拟桌面”的含义涵盖“远程桌面”、又超越“远程桌面”了传统概念。
(4)“应用运行容器”,是指可以运行“应用”的计算环境,例如PC计算机、服务器、VMware虚拟机、Xen虚拟机、Docker虚拟机、KVM虚拟机、OpenVZ虚拟机、QEMU虚拟机等,“应用运行容器”中一般包含了某个特定的操作系统实例以及第三方程序库。
(5)“应用窗口访问协议”,是指能够动态捕获和传递“应用”程序所调用图形接口函数的应用窗口级别的图像应用协议。“应用窗口访问协议”当前主要有X-Window的胖客户X协议、Thin的瘦客户ICA协议。
(6)“虚拟桌面访问协议”,是指能够动态捕获和传递“虚拟桌面”实例的“虚拟桌面图像”的图像应用协议。“虚拟桌面访问协议”当前主要有RDP协议、VNC协议、SPICE协议。
本发明的优点和有益效果:
本发明给出了一种集成多个应用图形窗口的虚拟桌面系统和运行方法,该系统和方法能够有效实现用户终端同时访问和管理分散在网络多个节点上运行的应用程序,特别是带图形界面的应用程序的能力。
而传统的“远程桌面”无法实现在将分散运行于多个结点的多个应用统一在一个“桌面”环境下。
采用本发明的系统和方法则可以有效实现用户终端同时访问和管理分散在网络多个节点上运行的应用程序,尤其是带图形窗口的应用程序;而且可以同时访问多个“虚拟桌面”实例,从而实现用户多种计算环境场景的有效隔离。
附图说明
图1是本发明中一种集成多个应用图形窗口的虚拟桌面系统架构图。
具体实施方式
本发明提供了一种集成多个应用图形窗口的虚拟桌面系统,该系统包含虚拟桌面服务器装置200、应用运行中心装置100、用户终端装置300及网络装置400,用户终端装置300、虚拟桌面服务器装置200和应用运行中心装置100三者之间通过网络装置400采用网络通信方式互联;该系统中的用户通过“用户终端装置”300发起启动指定“应用”的请求,该“应用”的程序代码将被运行于应用运行中心装置100的指定“应用运行容器”120中,而该“应用”的图形窗口数据则传递并合成到指定的虚拟桌面服务器装置200的“虚拟桌面”实例中,用户通过“用户终端装置”300访问该“虚拟桌面”实例220来操控多个“应用”;
其中:
“虚拟桌面服务器装置”200:主要负责“虚拟桌面”实例的管理、“虚拟桌面”实例中的将多个应用图形窗口数据合成为“虚拟桌面图像”的管理、以及“虚拟桌面”实例的相关联输入输出设备管理;“虚拟桌面服务器装置”包括至少一个“虚拟桌面管理服务器”210、以及零个或者多个“虚拟桌面”实例220;其中“虚拟桌面管理服务器”210具体负责“虚拟桌面”实例220的创建和销毁,“虚拟桌面管理服务器”210也负责向“用户终端装置”300提供对“虚拟桌面”实例220的访问接口、以及从“应用运行中心装置”100的“应用运行容器”120接收应用的图形窗口数据,“虚拟桌面管理服务器”210还负责与用户终端装置300、应用运行中心装置100之间相关联输入输出设备的“事件和数据”的传递;一个“虚拟桌面”实例220包括一个“虚拟桌面功能菜单”221和零个或者多个“应用窗口”222,“虚拟桌面”实例220负责启动和关闭指定应用,“虚拟桌面”实例220还负责在本实例范围内的相关联输入输出设备管理,“虚拟桌面”实例还负责在本实例范围内将多个应用图形窗口数据合成为“虚拟桌面图像”的管理,“虚拟桌面”实例通过“虚拟桌面访问协议”将“虚拟桌面”实例220的“虚拟桌面图像”传递给指定的“用户终端装置”300;“虚拟桌面管理服务器”210与“虚拟桌面”实例220既可以通过网络装置互联,也可以通过操作系统内部进程间通信方式互联;
“应用运行中心装置”100:主要负责“应用”的运行调度、运行、“应用”的图形窗口数据的捕捉和传递、“应用”的输入输出设备的“事件和数据”的传递;“应用运行中心装置”包括至少一个“应用运行调度器”110、以及一个或者多个“应用运行容器”120;“应用运行调度器”110主要负责“应用”的运行调度即选择合适的“应用运行容器”来运行指定的“应用”;“应用运行容器”120负责“应用”的运行、“应用”的图形窗口数据的捕捉和传递以及“应用”的输入输出设备的“事件和数据”的传递,“应用运行容器”120将捕捉到的该“应用”的图形窗口数据即该“应用”所调用的图形接口函数实例或者窗口图像通过“应用窗口访问协议”传递给“虚拟桌面服务器装置”200指定的“虚拟桌面”实例220;“应用运行调度器”110与“应用运行容器”实例120既可以通过网络装置互联、也可以通过操作系统内部进程间通信方式互联;
“用户终端装置”300:包括“虚拟桌面管理客户端”310和“虚拟桌面客户端”实例320;“用户终端装置”300主要负责接收用户的输入和用户输入结果的反馈,也负责为本终端范围内的“虚拟桌面客户端”实例320提供输入输出设备的“事件和数据”的产生及传递;其中“虚拟桌面管理客户端”310负责连接“虚拟桌面服务器装置”200中的“虚拟桌面管理服务器”210、将用户的输入请求给“虚拟桌面服务器装置”200中的“虚拟桌面管理服务器”210、以及从“虚拟桌面服务器装置”200中的“虚拟桌面管理服务器”210中获取用户输入请求的执行结果并传递给用户,即“虚拟桌面管理客户端”310是“虚拟桌面服务器装置”200中的“虚拟桌面管理服务器”210的面向用户的功能代理,用户通过“虚拟桌面管理客户端”310来访问“虚拟桌面服务器装置”200中的“虚拟桌面管理服务器”210从而实现对“虚拟桌面”实例220的管理;“虚拟桌面客户端”实例320负责连接“虚拟桌面服务器装置”200中的“虚拟桌面”实例220、以及将用户的输入请求和本终端范围内与该“虚拟桌面客户端”实例320相关联的输入设备产生“事件和数据”传递给已连接的“虚拟桌面服务器装置”200中“虚拟桌面”实例220、以及从已连接的“虚拟桌面服务器装置”200中“虚拟桌面”实例220获取“虚拟桌面图像”、以及从已连接的“虚拟桌面服务器装置”200中“虚拟桌面”实例220获取本终端范围内相关联的输出设备“事件和数据”并传递给相关输出设备,即“虚拟桌面客户端”实例320是“虚拟桌面服务器装置”200中“虚拟桌面”实例220的面向用户的代理,“虚拟桌面客户端”实例320与已连接的“虚拟桌面服务器装置”200中“虚拟桌面”实例220在“虚拟桌面图像”上完全保持一致,“虚拟桌面客户端”实例320中的“虚拟桌面功能菜单”和“应用窗口”即是该“虚拟桌面客户端”实例320已连接的“虚拟桌面服务器装置”200中“虚拟桌面”实例220中的“虚拟桌面功能菜单”221和“应用窗口”222的图像显示结果,用户通过“虚拟桌面客户端”实例320来访问“虚拟桌面服务器装
置”200中“虚拟桌面”实例220从而实现操控多个“应用”;
“网络装置”400:负责上述用户终端装置300、虚拟桌面服务器装置200和应用运行中心装置100之间的通信互联。
本发明同时还提供了一种集成多个应用图形窗口的虚拟桌面运行方法,所述方法包括具体步骤如下:
第1、用户在“用户终端装置”登录到“虚拟桌面服务器装置”上,并选择进入指定的“虚拟桌面”实例中;
第2、用户在“虚拟桌面”实例中选择待启动“应用”、然后发出启动运行该“应用”的请求;
第3、“虚拟桌面服务器装置”获取到步骤2中的“应用”启动运行请求,“虚拟桌面服务器装置”委托“应用运行中心装置”来运行步骤2中的“应用”启动运行请求;
第4、“应用运行中心装置”接收到步骤3中的“应用”运行请求后,“应用运行中心装置”中“应用运行调度器”选择一个可运行该“应用”的“应用运行容器”来运行步骤3中的待启动“应用”;
第5、在“应用运行容器”运行步骤4中的“应用”期间,“应用运行容器”动态捕获该“应用”的图形窗口数据即该“应用”所调用的图形接口函数或者该“应用”窗口图像,并采用“应用窗口访问协议”将该“应用”的图形窗口数据传递给“虚拟桌面服务器装置”指定的“虚拟桌面”实例;
第6、“虚拟桌面服务器装置”中的指定“虚拟桌面”实例接收到步骤5中该“应用”的图形窗口数据即该“应用”所调用的所有图形接口函数实例或者窗口图像,然后将该“应用”的图形窗口数据与同属于该指定“虚拟桌面”实例的其它“应用”的图形窗口数据合成为统一的“虚拟桌面图像”;
第7、用户在“用户终端装置”通过“虚拟桌面访问协议”来访问“虚拟桌面服务器装置”中指定的“虚拟桌面”实例,从而访问到指定“虚拟桌面”实例的“虚拟桌面图像”以及步骤2中“应用”的图形窗口;
第8、用户在“用户终端装置”也可以通过“虚拟桌面访问协议”将鼠标和/或键盘输入设备的“输入事件和数据”传递给“虚拟桌面服务器装置”中指定的“虚拟桌面”实例,“虚拟桌面服务器装置”中指定的“虚拟桌面”实例接收用户的“输入事件和数据”,并进行进一步的相应处理;用户在“用户终端装置”也可以通过“虚拟桌面访问协议”接收“虚拟桌面服务器装置”中指定的“虚拟桌面”实例传过来的输出设备的“输出事件和数据”并进行进一步的相应处理;
第9、当用户在“用户终端装置”上通过输入设备传递指定“应用”实例终止运行事件时,“虚拟桌面服务器装置”将委托“应用运行中心装置”终止该指定“应用”实例的运行、并在“虚拟桌面服务器装置”所属的“虚拟桌面”实例中删除该指定“应用”的图形窗口;
第10、当用户在“用户终端装置”上通过输入设备传递指定“虚拟桌面”实例终止运行事件时,“虚拟桌面服务器装置”将委托“应用运行中心装置”终止该指定“虚拟桌面”实例下的所有“应用”实例的运行、并最后删除该指定“虚拟桌面”实例;
第11、用户在“用户终端装置”可随时退出或者登录到“虚拟桌面服务器装置”的“虚拟桌面”实例。
为能进一步了解本发明的技术内容、特点及功效,兹列举以下应用实例,并配合附图详细说明如下:
应用实例1
如图1所给出的一种集成多个应用图形窗口的虚拟桌面系统架构:
该系统包含虚拟桌面服务器装置200、应用运行中心装置100、用户终端装置300及网络装置400,用户终端装置300、虚拟桌面服务器装置200和应用运行中心装置100三者之间通过网络装置400采用网络通信方式互联;该系统中的用户通过“用户终端装置”300发起启动指定“应用”的请求,该“应用”的程序代码将被运行于应用运行中心装置100的指定“应用运行容器”120中,而该“应用”的图形窗口数据则传递并合成到指定的虚拟桌面服务器装置200的“虚拟桌面”实例中,用户通过“用户终端装置”300访问该“虚拟桌面”实例220来操控多个“应用”;
用户终端装置300中启动了两个“虚拟桌面客户端”实例,即“虚拟桌面客户端”A和“虚拟桌面客户端”D,它们均以“虚拟桌面访问协议”分别与虚拟桌面服务器装置200中的“虚拟桌面”A和“虚拟桌面”D相连接;用户终端装置300中“虚拟桌面管理客户端”与虚拟桌面服务器装置200中的“虚拟桌面管理服务器”相连接,用户终端装置300中“虚拟桌面管理客户端”作为虚拟桌面服务器装置200中的“虚拟桌面管理服务器”的面向用户的功能代理;
从上述实例中可看出,“用户终端装置”中可以包括多个“虚拟桌面客户端”实例,用户可以在“用户终端装置”通过启动不同的“虚拟桌面客户端”实例同时登录到“虚拟桌面服务器装置”的不同“虚拟桌面”实例,这些“虚拟桌面客户端”实例可采用多进程、多线程、以及包括但不限于Docker、OpenVZ的多容器隔离方法使得彼此独立运行。
虚拟桌面服务器装置200中运行着“虚拟桌面”A实例、“虚拟桌面”B实例、“虚拟桌面”D实例,其中“虚拟桌面”A实例通过“虚拟桌面访问协议”与用户终端装置300中的“虚拟桌面客户端”A相连接并传递包括虚拟桌面图像在内的虚拟桌面数据,“虚拟桌面”D实例通过“虚拟桌面访问协议”与用户终端装置300中的“虚拟桌面客户端”D相连接并传递包括虚拟桌面图像在内的虚拟桌面数据,而“虚拟桌面”B实例暂时没有任何用户终端装置300的“虚拟桌面客户端”实例与之相连接;
“虚拟桌面”A实例中包含了“应用A1”的窗口、“应用A2”的窗口、“应用Am”的窗口和“虚拟桌面功能菜单”窗口;其中“应用A1”和“应用A2”都运行在应用运行中心装置100的同一个“应用运行容器X”中,而“应用Am”则运行在应用运行中心装置100的另外一个“应用运行容器Y”中,而在“应用运行容器Y”中还运行着另外一个“虚拟桌面”D的应用即“应用Di”;
从上述实例中,在“应用运行中心装置”中的同一个“应用运行容器”实例中可以运行属于“虚拟桌面服务器装置”中不同“虚拟桌面”实例的多个“应用”,这些“应用”彼此隔离,可采用的“应用”隔离方法包括但不限于AppContainer、Jail、Cgroups、沙箱来实现;在“虚拟桌面服务器装置”中同一个“虚拟桌面”实例里的多个“应用”可运行于不同的“应用运行容器”实例中、而这些不同的“应用运行容器”实例也可属于不同类型的操作系统环境,例如“应用运行容器X”是Windows10操作系统、“应用运行容器Y”是Ubuntu/Linux操作系统、“应用运行容器Z”是Android操作系统。
应用实例2
本发明所提供的一种集成多个应用图形窗口的虚拟桌面运行方法,所述方法包括具体步骤如下:
第1、用户在“用户终端装置”登录到“虚拟桌面服务器装置”上,并选择进入指定的“虚拟桌面”实例中;
例如:从“用户终端装置”300中的“虚拟桌面客户端A”320登录到“虚拟桌面服务器装置”200中的“虚拟桌面A”220中。
第2、用户在“虚拟桌面”实例中选择待启动“应用”、然后发出启动运行该“应用”的请求;
例如:用户在“虚拟桌面A”实例中选择待启动“应用A1”、然后发出启动运行该“应用A1”的请求。
第3、“虚拟桌面服务器装置”获取到步骤2中的“应用”启动运行请求,“虚拟桌面服务器装置”委托“应用运行中心装置”来运行步骤2中的“应用”启动运行请求;
例如:“虚拟桌面服务器装置”200委托“应用运行中心装置”100来运行步骤2中的“应用A1”启动运行请求。
第4、“应用运行中心装置”接收到步骤3中的“应用”运行请求后,“应用运行中心装置”中“应用运行调度器”选择一个可运行该“应用”的“应用运行容器”来运行步骤3中的待启动“应用”;
例如:“应用运行中心装置”100中“应用运行调度器”110选择一个可运行该“应用A1”的“应用运行容器X”来运行步骤3中的待启动“应用A1”。
其中“应用运行调度器”选择一个可运行该“应用”的“应用运行容器”,是根据“应用”所依赖的操作系统和第三方函数库、以及“应用运行中心装置”中所有“应用运行容器”所运行的操作系统和第三方函数库的情况来筛选出可运行该“应用”的备选“应用运行容器”集合,然后通过如下方法之一来选择一个“应用运行容器”来运行该“应用”:
方法1是在备选“应用运行容器”集合中随机选择一个“应用运行容器”来运行该“应用”;
方法2是根据“应用运行容器”的负载情况进行排序,并选择当前负载小的“应用运行容器”来运行该“应用”;
方法3是在备选“应用运行容器”集合中选择包含同一个“虚拟桌面”实例的其它“应用”的“应用运行容器”来运行该“应用”。
第5、在“应用运行容器”运行步骤4中的“应用”期间,“应用运行容器”动态捕获该“应用”的图形窗口数据即该“应用”所调用的图形接口函数或者该“应用”窗口图像,并采用“应用窗口访问协议”将该“应用”的图形窗口数据传递给“虚拟桌面服务器装置”指定的“虚拟桌面”实例;
例如:“应用运行容器X”动态捕获该“应用A1”的图形窗口数据即该“应用A1”所调用的图形接口函数或者该“应用A1”窗口图像,并采用“应用窗口访问协议”410将该“应用A1”的图形窗口数据传递给“虚拟桌面服务器装置”200的“虚拟桌面A”实例。
其中所述的“应用窗口访问协议”,是指能够动态捕获和传递“应用”程序所调用图形接口函数或者窗口图像的面向应用窗口级别的图像应用协议,“应用窗口访问协议”包括但不限于X-Window的胖客户X协议、Thin的瘦客户ICA协议;“应用运行中心装置”的“应用运行容器”与“虚拟桌面服务器装置”中指定“虚拟桌面”实例的通信采用“应用窗口访问协议”;
第5步中所述的“应用运行容器”动态捕获“应用”程序所调用图形接口函数或者窗口图像的方法1是针对“应用”程序所访问的图形GUI系统函数接口进行hook监控,从而动态捕获“应用”程序所调用图形接口函数及相应参数实例,并进一步直接将该图形接口函数实例传递给“虚拟桌面服务器装置”中指定“虚拟桌面”实例;
第5步中所述的“应用运行容器”动态捕获“应用”程序所调用图形接口函数或者窗口图像的方法2是针对“应用”程序所访问的图形GUI系统函数接口进行hook监控,从而动态捕获“应用”程序所调用图形接口函数及相应参数实例,并进一步可根据该图形接口函数实例生成该“应用”的窗口图像,然后将该“应用”的窗口图像数据传递给“虚拟桌面服务器装置”中指定“虚拟桌面”实例;
第5步中所述的“应用运行容器”动态捕获“应用”程序所调用图形接口函数或者窗口图像的方法3是首先动态捕捉运行该“应用”的“应用运行容器”的所属操作系统实例的桌面图像,并进一步将该“应用”窗口所对应的桌面图像区域提取出来从而生成该“应用”的窗口图像,然后将该“应用”的窗口图像数据传递给“虚拟桌面服务器装置”中指定“虚拟桌面”实例。
第6、“虚拟桌面服务器装置”中的指定“虚拟桌面”实例接收到步骤5中该“应用”的图形窗口数据即该“应用”所调用的所有图形接口函数实例或者窗口图像,然后将该“应用”的图形窗口数据与同属于该指定“虚拟桌面”实例的其它“应用”的图形窗口数据合成为统一的“虚拟桌面图像”;
例如:“虚拟桌面服务器装置”200中的“虚拟桌面A”实例接收到步骤5中该“应用A1”的图形窗口数据即该“应用A1”所调用的所有图形接口函数实例或者窗口图像,然后将该“应用A1”的图形窗口数据与同属于该指定“虚拟桌面”实例的其它“应用”即“应用A2”和“应用Am”的图形窗口数据合成为统一的“虚拟桌面图像”。
其中所述的“虚拟桌面图像”,是指将同属于同一个“虚拟桌面”实例的多个应用的图形窗口数据合成为统一的图像即虚拟桌面图像;“虚拟桌面服务器装置”中的“虚拟桌面”实例根据在本实例范围内多个应用图形窗口的位置、窗口大小、叠加层次关系、以及窗口状态信息对多个应用图形窗口进行合成、去除遮盖部分、图像渲染从而合成完整的“虚拟桌面图像”。
第7、用户在“用户终端装置”通过“虚拟桌面访问协议”来访问“虚拟桌面服务器装置”中指定的“虚拟桌面”实例,从而访问到指定“虚拟桌面”实例的“虚拟桌面图像”以及步骤2中“应用”的图形窗口;
例如:用户在“用户终端装置”300中的“虚拟桌面客户端A”通过“虚拟桌面访问协议”420来访问“虚拟桌面服务器装置”200中指定的“虚拟桌面A”实例,从而访问到指定“虚拟桌面A”实例的“虚拟桌面图像”以及步骤2中“应用A1”的图形窗口,同时用户在“用户终端装置”300中的“虚拟桌面客户端A”也获得了在“虚拟桌面A”实例中“应用A2”和“应用Am”的图形窗口;
其中所述的“虚拟桌面访问协议”,是指能够动态捕获和传递“虚拟桌面”实例中的“虚拟桌面图像”的图像应用协议;“虚拟桌面访问协议”包括但不限于RDP协议、VNC协议、SPICE协议;“用户终端装置”与“虚拟桌面服务器装置”中指定“虚拟桌面”实例的通信是采用“虚拟桌面访问协议”。
第8、用户在“用户终端装置”也可以通过“虚拟桌面访问协议”将鼠标和/或键盘输入设备的“输入事件和数据”传递给“虚拟桌面服务器装置”中指定的“虚拟桌面”实例,“虚拟桌面服务器装置”中指定的“虚拟桌面”实例接收用户的“输入事件和数据”,并进行进一步的相应处理;用户在“用户终端装置”也可以通过“虚拟桌面访问协议”接收“虚拟桌面服务器装置”中指定的“虚拟桌面”实例传过来的输出设备的“输出事件和数据”并进行进一步的相应处理;
例如:用户在“用户终端装置”300也可以通过“虚拟桌面访问协议”420将鼠标和/或键盘输入设备的“输入事件和数据”传递给“虚拟桌面服务器装置”200中指定的“虚拟桌面A”实例,“虚拟桌面服务器装置”200中指定的“虚拟桌面A”实例接收用户的“输入事件和数据”,并进行进一步的相应处理,例如启动“应用”、关闭“应用”、移动“应用”窗口等;用户在“用户终端装置”300也可以通过“虚拟桌面访问协议”420接收“虚拟桌面服务器装置”200中指定的“虚拟桌面A”实例传过来的输出设备的“输出事件和数据”并进行进一步的相应处理,例如播放声音、打印文件、写“用户终端装置”300的U盘等。
第9、当用户在“用户终端装置”上通过输入设备传递指定“应用”实例终止运行事件时,“虚拟桌面服务器装置”将委托“应用运行中心装置”终止该指定“应用”实例的运行、并在“虚拟桌面服务器装置”所属的“虚拟桌面”实例中删除该指定“应用”的图形窗口;
例如:当用户在“用户终端装置”300上通过输入设备例如单击鼠标左键事件传递指定“应用A1”实例终止运行事件时,“虚拟桌面服务器装置”200将委托“应用运行中心装置”100终止该指定“应用A1”实例的运行、并在“虚拟桌面服务器装置”200所属的“虚拟桌面A”实例中删除该指定“应用A1”的图形窗口。
第10、当用户在“用户终端装置”上通过输入设备传递指定“虚拟桌面”实例终止运行事件时,“虚拟桌面服务器装置”将委托“应用运行中心装置”终止该指定“虚拟桌面”实例下的所有“应用”实例的运行、并最后删除该指定“虚拟桌面”实例;
例如:当用户在“用户终端装置”300上通过输入设备例如键盘快捷键Ctrl+Alt+Del传递指定“虚拟桌面A”实例终止运行事件时,“虚拟桌面服务器装置”200将委托“应用运行中心装置”100终止该指定“虚拟桌面A”实例下的所有“应用”实例的运行即终止“应用A1”和“应用A2”以及“应用Am”的运行、并最后删除该指定“虚拟桌面A”实例。
第11、用户在“用户终端装置”可随时退出或者登录到“虚拟桌面服务器装置”的“虚拟桌面”实例。
其中,用户在“用户终端装置”退出或者登录到“虚拟桌面服务器装置”的“虚拟桌面”实例时,用户的退出或者登录操作不影响用户所拥有的“虚拟桌面”实例的运行,“虚拟桌面服务器装置”中的“虚拟桌面”实例独立与“用户终端装置”而运行并动态执行合成“虚拟桌面图像”的操作;用户的退出或者登录操作也不会影响“应用运行中心装置”的“应用运行容器”的“应用”运行;
另外,可通过如下方法来优化“虚拟桌面服务器装置”负载:对于“虚拟桌面服务器装置”中的没有任何“用户终端装置”登录的“虚拟桌面”实例,可降低或者暂停该“虚拟桌面”实例动态执行合成“虚拟桌面图像”操作的频率;可通过如下方法来优化“应用运行中心装置”负载:对于“虚拟桌面服务器装置”中的没有任何“用户终端装置”登录的“虚拟桌面”实例,可将该“虚拟桌面”实例中的非后台型“应用”暂时挂起或者冷冻从而降低对“应用运行中心装置”中处理器资源的消耗。
考虑到在此公开的对本发明的描述和特例的实施例,本发明的其他实施例对于本领域的技术人员来说是显而意见的。这些说明和实施例仅作为例子来考虑,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种集成多个应用图形窗口的虚拟桌面系统,其特征在于,该系统包含虚拟桌面服务器装置、应用运行中心装置、用户终端装置及网络装置,用户终端装置、虚拟桌面服务器装置和应用运行中心装置三者之间通过网络装置采用网络通信方式互联;
该系统中的用户通过“用户终端装置”发起启动指定“应用”的请求,该“应用”的程序代码将被运行于应用运行中心装置的指定“应用运行容器”中,而该“应用”的图形窗口数据则传递并合成到指定的虚拟桌面服务器装置的“虚拟桌面”实例中,用户通过“用户终端装置”访问该“虚拟桌面”实例来操控多个“应用”;
其中:
“虚拟桌面服务器装置”:主要负责“虚拟桌面”实例的管理、“虚拟桌面”实例中的将多个应用图形窗口数据合成为“虚拟桌面图像”的管理、以及“虚拟桌面”实例的相关联输入输出设备管理;“虚拟桌面服务器装置”包括至少一个“虚拟桌面管理服务器”、以及零个或者多个“虚拟桌面”实例;其中“虚拟桌面管理服务器”具体负责“虚拟桌面”实例的创建和销毁,“虚拟桌面管理服务器”也负责向“用户终端装置”提供对“虚拟桌面”实例的访问接口、以及从“应用运行中心装置”的“应用运行容器”接收应用的图形窗口数据,“虚拟桌面管理服务器”还负责与用户终端装置、应用运行中心装置之间相关联输入输出设备的“事件和数据”的传递;一个“虚拟桌面”实例包括一个“虚拟桌面功能菜单”和零个或者多个“应用窗口”,“虚拟桌面”实例负责启动和关闭指定应用,“虚拟桌面”实例还负责在本实例范围内的相关联输入输出设备管理,“虚拟桌面”实例还负责在本实例范围内将多个应用图形窗口数据合成为“虚拟桌面图像”的管理,“虚拟桌面”实例通过“虚拟桌面访问协议”将“虚拟桌面”实例的“虚拟桌面图像”传递给指定的“用户终端装置”;“虚拟桌面管理服务器”与“虚拟桌面”实例既可以通过网络装置互联,也可以通过操作系统内部进程间通信方式互联;
“应用运行中心装置”:主要负责“应用”的运行调度、运行、“应用”的图形窗口数据的捕捉和传递、“应用”的输入输出设备的“事件和数据”的传递;“应用运行中心装置”包括至少一个“应用运行调度器”、以及一个或者多个“应用运行容器”;“应用运行调度器”主要负责“应用”的运行调度即选择合适的“应用运行容器”来运行指定的“应用”;“应用运行容器”负责“应用”的运行、“应用”的图形窗口数据的捕捉和传递以及“应用”的输入输出设备的“事件和数据”的传递,“应用运行容器”将捕捉到的该“应用”的图形窗口数据即该“应用”所调用的图形接口函数实例或者窗口图像通过“应用窗口访问协议”传递给“虚拟桌面服务器装置”指定的“虚拟桌面”实例;“应用运行调度器”与“应用运行容器”实例既可以通过网络装置互联、也可以通过操作系统内部进程间通信方式互联;
“用户终端装置”:包括“虚拟桌面管理客户端”和“虚拟桌面客户端”实例;“用户终端装置”主要负责接收用户的输入和用户输入结果的反馈,也负责为本终端范围内的“虚拟桌面客户端”实例提供输入输出设备的“事件和数据”的产生及传递;其中“虚拟桌面管理客户端”负责连接“虚拟桌面服务器装置”中的“虚拟桌面管理服务器”、将用户的输入请求给“虚拟桌面服务器装置”中的“虚拟桌面管理服务器”、以及从“虚拟桌面服务器装置”中的“虚拟桌面管理服务器”中获取用户输入请求的执行结果并传递给用户,即“虚拟桌面管理客户端”是“虚拟桌面服务器装置”中的“虚拟桌面管理服务器”的面向用户的功能代理,用户通过“虚拟桌面管理客户端”来访问“虚拟桌面服务器装置”中的“虚拟桌面管理服务器”从而实现对“虚拟桌面”实例的管理;“虚拟桌面客户端”实例负责连接“虚拟桌面服务器装置”中的“虚拟桌面”实例、以及将用户的输入请求和本终端范围内与该“虚拟桌面客户端”实例相关联的输入设备产生“事件和数据”传递给已连接的“虚拟桌面服务器装置”中“虚拟桌面”实例、以及从已连接的“虚拟桌面服务器装置”中“虚拟桌面”实例获取“虚拟桌面图像”、以及从已连接的“虚拟桌面服务器装置”中“虚拟桌面”实例获取本终端范围内相关联的输出设备“事件和数据”并传递给相关输出设备,即“虚拟桌面客户端”实例是“虚拟桌面服务器装置”中“虚拟桌面”实例的面向用户的代理,“虚拟桌面客户端”实例与已连接的“虚拟桌面服务器装置”中“虚拟桌面”实例在“虚拟桌面图像”上完全保持一致,“虚拟桌面客户端”实例中的“虚拟桌面功能菜单”和“应用窗口”即是该“虚拟桌面客户端”实例已连接的“虚拟桌面服务器装置”中“虚拟桌面”实例中的“虚拟桌面功能菜单”和“应用窗口”的图像显示结果,用户通过“虚拟桌面客户端”实例来访问“虚拟桌面服务器装置”中“虚拟桌面”实例从而实现操控多个“应用”;
“网络装置”:负责上述用户终端装置、虚拟桌面服务器装置和应用运行中心装置之间的通信互联。
2.根据权利要求1所述的系统,其特征在于,“用户终端装置”中可以包括多个“虚拟桌面客户端”实例,用户可以在“用户终端装置”通过启动不同的“虚拟桌面客户端”实例同时登录到“虚拟桌面服务器装置”的不同“虚拟桌面”实例,这些“虚拟桌面客户端”实例可采用多进程、多线程、多容器技术彼此独立运行。
3.根据权利要求1所述的系统,其特征在于,在“应用运行中心装置”中的同一个“应用运行容器”实例中可以运行属于“虚拟桌面服务器装置”中不同“虚拟桌面”实例的多个“应用”,这些“应用”彼此隔离,可采用的“应用”隔离方法包括但不限于AppContainer、Jail、Cgroups、沙箱来实现;在“虚拟桌面服务器装置”中同一个“虚拟桌面”实例里的多个“应用”可运行于不同的“应用运行容器”实例中、而这些不同的“应用运行容器”实例也可属于不同类型的操作系统环境。
4.一种集成多个应用图形窗口的虚拟桌面运行方法,其特征在于,所述方法包括具体步骤如下:
第1、用户在“用户终端装置”登录到“虚拟桌面服务器装置”上,并选择进入指定的“虚拟桌面”实例中;
第2、用户在“虚拟桌面”实例中选择待启动“应用”、然后发出启动运行该“应用”的请求;
第3、“虚拟桌面服务器装置”获取到步骤2中的“应用”启动运行请求,“虚拟桌面服务器装置”委托“应用运行中心装置”来运行步骤2中的“应用”启动运行请求;
第4、“应用运行中心装置”接收到步骤3中的“应用”运行请求后,“应用运行中心装置”中“应用运行调度器”选择一个可运行该“应用”的“应用运行容器”来运行步骤3中的待启动“应用”;
第5、在“应用运行容器”运行步骤4中的“应用”期间,“应用运行容器”动态捕获该“应用”的图形窗口数据即该“应用”所调用的图形接口函数或者该“应用”窗口图像,并采用“应用窗口访问协议”将该“应用”的图形窗口数据传递给“虚拟桌面服务器装置”指定的“虚拟桌面”实例;
第6、“虚拟桌面服务器装置”中的指定“虚拟桌面”实例接收到步骤5中该“应用”的图形窗口数据即该“应用”所调用的所有图形接口函数实例或者窗口图像,然后将该“应用”的图形窗口数据与同属于该指定“虚拟桌面”实例的其它“应用”的图形窗口数据合成为统一的“虚拟桌面图像”;
第7、用户在“用户终端装置”通过“虚拟桌面访问协议”来访问“虚拟桌面服务器装置”中指定的“虚拟桌面”实例,从而访问到指定“虚拟桌面”实例的“虚拟桌面图像”以及步骤2中“应用”的图形窗口;
第8、用户在“用户终端装置”也可以通过“虚拟桌面访问协议”将鼠标和/或键盘输入设备的“输入事件和数据”传递给“虚拟桌面服务器装置”中指定的“虚拟桌面”实例,“虚拟桌面服务器装置”中指定的“虚拟桌面”实例接收用户的“输入事件和数据”,并进行进一步的相应处理;用户在“用户终端装置”也可以通过“虚拟桌面访问协议”接收“虚拟桌面服务器装置”中指定的“虚拟桌面”实例传过来的输出设备的“输出事件和数据”并进行进一步的相应处理;
第9、当用户在“用户终端装置”上通过输入设备传递指定“应用”实例终止运行事件时,“虚拟桌面服务器装置”将委托“应用运行中心装置”终止该指定“应用”实例的运行、并在“虚拟桌面服务器装置”所属的“虚拟桌面”实例中删除该指定“应用”的图形窗口;
第10、当用户在“用户终端装置”上通过输入设备传递指定“虚拟桌面”实例终止运行事件时,“虚拟桌面服务器装置”将委托“应用运行中心装置”终止该指定“虚拟桌面”实例下的所有“应用”实例的运行、并最后删除该指定“虚拟桌面”实例;
第11、用户在“用户终端装置”可随时退出或者登录到“虚拟桌面服务器装置”的“虚拟桌面”实例。
5.根据权利要求4所述的方法,其特征在于,第4步所述的“应用运行调度器”选择一个可运行该“应用”的“应用运行容器”,是根据“应用”所依赖的操作系统和第三方函数库、以及“应用运行中心装置”中所有“应用运行容器”所运行的操作系统和第三方函数库的情况来筛选出可运行该“应用”的备选“应用运行容器”集合,然后通过如下方法之一来选择一个“应用运行容器”来运行该“应用”:方法1是在备选“应用运行容器”集合中随机选择一个“应用运行容器”来运行该“应用”;方法2是根据“应用运行容器”的负载情况进行排序,并选择当前负载小的“应用运行容器”来运行该“应用”;方法3是在备选“应用运行容器”集合中选择包含同一个“虚拟桌面”实例的其它“应用”的“应用运行容器”来运行该“应用”。
6.根据权利要求4所述的方法,其特征在于,第5步所述的“应用窗口访问协议”,是指能够动态捕获和传递“应用”程序所调用图形接口函数或者窗口图像的面向应用窗口级别的图像应用协议,“应用窗口访问协议”包括但不限于X-Window的胖客户X协议、Thin的瘦客户ICA协议;“应用运行中心装置”的“应用运行容器”与“虚拟桌面服务器装置”中指定“虚拟桌面”实例的通信采用“应用窗口访问协议”;第5步中所述的“应用运行容器”动态捕获“应用”程序所调用图形接口函数或者窗口图像的方法1是针对“应用”程序所访问的图形GUI系统函数接口进行hook监控,从而动态捕获“应用”程序所调用图形接口函数及相应参数实例,并进一步直接将该图形接口函数实例传递给“虚拟桌面服务器装置”中指定“虚拟桌面”实例;第5步中所述的“应用运行容器”动态捕获“应用”程序所调用图形接口函数或者窗口图像的方法2是针对“应用”程序所访问的图形GUI系统函数接口进行hook监控,从而动态捕获“应用”程序所调用图形接口函数及相应参数实例,并进一步可根据该图形接口函数实例生成该“应用”的窗口图像,然后将该“应用”的窗口图像数据传递给“虚拟桌面服务器装置”中指定“虚拟桌面”实例;第5步中所述的“应用运行容器”动态捕获“应用”程序所调用图形接口函数或者窗口图像的方法3是首先动态捕捉运行该“应用”的“应用运行容器”的所属操作系统实例的桌面图像,并进一步将该“应用”窗口所对应的桌面图像区域提取出来从而生成该“应用”的窗口图像,然后将该“应用”的窗口图像数据传递给“虚拟桌面服务器装置”中指定“虚拟桌面”实例。
7.根据权利要求4所述的方法,其特征在于,第6步所述的“虚拟桌面图像”,是指将同属于同一个“虚拟桌面”实例的多个应用的图形窗口数据合成为统一的图像即虚拟桌面图像;“虚拟桌面服务器装置”中的“虚拟桌面”实例根据在本实例范围内多个应用图形窗口的位置、窗口大小、叠加层次关系、以及窗口状态信息对多个应用图形窗口进行合成、去除遮盖部分、图像渲染从而合成完整的“虚拟桌面图像”。
8.根据权利要求4所述的方法,其特征在于,第7步所述的“虚拟桌面访问协议”,是指能够动态捕获和传递“虚拟桌面”实例中的“虚拟桌面图像”的图像应用协议;“虚拟桌面访问协议”包括但不限于RDP协议、VNC协议、SPICE协议;“用户终端装置”与“虚拟桌面服务器装置”中指定“虚拟桌面”实例的通信是采用“虚拟桌面访问协议”。
9.根据权利要求4所述的方法,其特征在于,第11步所述的用户在“用户终端装置”退出或者登录到“虚拟桌面服务器装置”的“虚拟桌面”实例时,用户的退出或者登录操作不影响用户所拥有的“虚拟桌面”实例的运行,“虚拟桌面服务器装置”中的“虚拟桌面”实例独立与“用户终端装置”而运行并动态执行合成“虚拟桌面图像”的操作;用户的退出或者登录操作也不会影响“应用运行中心装置”的“应用运行容器”的“应用”运行;可通过如下方法来优化“虚拟桌面服务器装置”负载:对于“虚拟桌面服务器装置”中的没有任何“用户终端装置”登录的“虚拟桌面”实例,可降低或者暂停该“虚拟桌面”实例动态执行合成“虚拟桌面图像”操作的频率;可通过如下方法来优化“应用运行中心装置”负载:对于“虚拟桌面服务器装置”中的没有任何“用户终端装置”登录的“虚拟桌面”实例,可将该“虚拟桌面”实例中的非后台型“应用”暂时挂起或者冷冻从而降低对“应用运行中心装置”中处理器资源的消耗。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711452437.9A CN108021425B (zh) | 2017-12-28 | 2017-12-28 | 一种集成多个应用图形窗口的虚拟桌面系统及运行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711452437.9A CN108021425B (zh) | 2017-12-28 | 2017-12-28 | 一种集成多个应用图形窗口的虚拟桌面系统及运行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108021425A true CN108021425A (zh) | 2018-05-11 |
CN108021425B CN108021425B (zh) | 2020-11-03 |
Family
ID=62071986
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711452437.9A Active CN108021425B (zh) | 2017-12-28 | 2017-12-28 | 一种集成多个应用图形窗口的虚拟桌面系统及运行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108021425B (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984438A (zh) * | 2018-06-26 | 2018-12-11 | 新华三技术有限公司 | 串口权限控制方法及装置 |
CN109343970A (zh) * | 2018-08-17 | 2019-02-15 | 北京密境和风科技有限公司 | 基于应用程序的操作方法、装置、电子设备及计算机介质 |
CN109388454A (zh) * | 2018-09-14 | 2019-02-26 | 珠海国芯云科技有限公司 | 基于容器的虚拟桌面方法及系统 |
CN109669738A (zh) * | 2018-12-29 | 2019-04-23 | 北京明朝万达科技股份有限公司 | 一种应用程序的启动方法及装置 |
CN109960941A (zh) * | 2019-03-18 | 2019-07-02 | 中国科学院计算机网络信息中心 | 基于自重构的数据访问方法、装置及存储介质 |
CN110515686A (zh) * | 2019-08-28 | 2019-11-29 | 联想(北京)有限公司 | 一种图像显示方法及装置 |
WO2020135492A1 (zh) * | 2018-12-26 | 2020-07-02 | 中兴通讯股份有限公司 | 软件分层管理系统 |
WO2020177482A1 (zh) * | 2019-03-05 | 2020-09-10 | 华为技术有限公司 | 一种桌面虚拟化方法、相关设备及计算机存储介质 |
CN112114916A (zh) * | 2020-08-31 | 2020-12-22 | 北京技德系统技术有限公司 | 一种在Linux操作系统上兼容运行Android应用的方法和装置 |
CN112181545A (zh) * | 2019-07-03 | 2021-01-05 | 比亚迪股份有限公司 | 车载数据处理方法、装置、车载设备及存储介质 |
CN112231017A (zh) * | 2020-10-27 | 2021-01-15 | 北京技德系统技术有限公司 | 在Linux上兼容运行Android操作系统的虚拟键鼠方法与装置 |
CN112379963A (zh) * | 2020-11-30 | 2021-02-19 | 联想(北京)有限公司 | 远程应用窗口控制方法、装置及计算机设备 |
CN112968929A (zh) * | 2021-01-29 | 2021-06-15 | 上海安畅网络科技股份有限公司 | 一种服务器管理方法和系统 |
CN114268626A (zh) * | 2020-09-16 | 2022-04-01 | 阿里巴巴集团控股有限公司 | 窗口处理系统、方法以及装置 |
CN114443192A (zh) * | 2021-12-27 | 2022-05-06 | 天翼云科技有限公司 | 基于云桌面的多窗口虚拟应用方法及装置 |
CN114513535A (zh) * | 2022-01-07 | 2022-05-17 | 阿里巴巴(中国)有限公司 | 数据传输系统、方法、装置及设备 |
WO2023056620A1 (zh) * | 2021-10-09 | 2023-04-13 | 广州视源电子科技股份有限公司 | 桌面应用控制方法、装置、电子设备及存储介质 |
CN118036007A (zh) * | 2024-04-15 | 2024-05-14 | 建信金融科技有限责任公司 | 病毒扫描方法、系统、扫描机及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100238188A1 (en) * | 2009-03-20 | 2010-09-23 | Sean Miceli | Efficient Display of Virtual Desktops on Multiple Independent Display Devices |
CN102449604A (zh) * | 2011-08-01 | 2012-05-09 | 华为技术有限公司 | 虚拟桌面中分布处理的方法和系统 |
CN102521027A (zh) * | 2011-12-02 | 2012-06-27 | 华中科技大学 | 虚拟桌面系统中的窗口界面传输方法 |
CN103001992A (zh) * | 2011-09-19 | 2013-03-27 | 中兴通讯股份有限公司 | 虚拟桌面实现系统及其使用方法 |
CN103810019A (zh) * | 2014-02-08 | 2014-05-21 | 南开大学 | 一种支持进程粒度网络计算的虚拟计算环境系统 |
US20160162127A1 (en) * | 2014-12-05 | 2016-06-09 | Apple Inc. | User interface for combinable virtual desktops |
CN106021327A (zh) * | 2016-05-06 | 2016-10-12 | 南开大学 | 一种支持多用户同时读写的网盘系统构建方法 |
-
2017
- 2017-12-28 CN CN201711452437.9A patent/CN108021425B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100238188A1 (en) * | 2009-03-20 | 2010-09-23 | Sean Miceli | Efficient Display of Virtual Desktops on Multiple Independent Display Devices |
CN102449604A (zh) * | 2011-08-01 | 2012-05-09 | 华为技术有限公司 | 虚拟桌面中分布处理的方法和系统 |
CN103001992A (zh) * | 2011-09-19 | 2013-03-27 | 中兴通讯股份有限公司 | 虚拟桌面实现系统及其使用方法 |
CN102521027A (zh) * | 2011-12-02 | 2012-06-27 | 华中科技大学 | 虚拟桌面系统中的窗口界面传输方法 |
CN103810019A (zh) * | 2014-02-08 | 2014-05-21 | 南开大学 | 一种支持进程粒度网络计算的虚拟计算环境系统 |
US20160162127A1 (en) * | 2014-12-05 | 2016-06-09 | Apple Inc. | User interface for combinable virtual desktops |
CN106021327A (zh) * | 2016-05-06 | 2016-10-12 | 南开大学 | 一种支持多用户同时读写的网盘系统构建方法 |
Non-Patent Citations (1)
Title |
---|
李旭东等: ""一种面向进程通信的逻辑网络信息平台(NIP)的设计"", 《南开大学学报(自然科学版)》 * |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984438A (zh) * | 2018-06-26 | 2018-12-11 | 新华三技术有限公司 | 串口权限控制方法及装置 |
CN109343970A (zh) * | 2018-08-17 | 2019-02-15 | 北京密境和风科技有限公司 | 基于应用程序的操作方法、装置、电子设备及计算机介质 |
CN109388454A (zh) * | 2018-09-14 | 2019-02-26 | 珠海国芯云科技有限公司 | 基于容器的虚拟桌面方法及系统 |
WO2020135492A1 (zh) * | 2018-12-26 | 2020-07-02 | 中兴通讯股份有限公司 | 软件分层管理系统 |
CN109669738A (zh) * | 2018-12-29 | 2019-04-23 | 北京明朝万达科技股份有限公司 | 一种应用程序的启动方法及装置 |
WO2020177482A1 (zh) * | 2019-03-05 | 2020-09-10 | 华为技术有限公司 | 一种桌面虚拟化方法、相关设备及计算机存储介质 |
CN109960941A (zh) * | 2019-03-18 | 2019-07-02 | 中国科学院计算机网络信息中心 | 基于自重构的数据访问方法、装置及存储介质 |
CN112181545A (zh) * | 2019-07-03 | 2021-01-05 | 比亚迪股份有限公司 | 车载数据处理方法、装置、车载设备及存储介质 |
CN110515686A (zh) * | 2019-08-28 | 2019-11-29 | 联想(北京)有限公司 | 一种图像显示方法及装置 |
CN112114916A (zh) * | 2020-08-31 | 2020-12-22 | 北京技德系统技术有限公司 | 一种在Linux操作系统上兼容运行Android应用的方法和装置 |
CN114268626A (zh) * | 2020-09-16 | 2022-04-01 | 阿里巴巴集团控股有限公司 | 窗口处理系统、方法以及装置 |
CN112231017A (zh) * | 2020-10-27 | 2021-01-15 | 北京技德系统技术有限公司 | 在Linux上兼容运行Android操作系统的虚拟键鼠方法与装置 |
CN112379963A (zh) * | 2020-11-30 | 2021-02-19 | 联想(北京)有限公司 | 远程应用窗口控制方法、装置及计算机设备 |
CN112379963B (zh) * | 2020-11-30 | 2022-08-19 | 联想(北京)有限公司 | 远程应用窗口控制方法、装置及计算机设备 |
CN112968929A (zh) * | 2021-01-29 | 2021-06-15 | 上海安畅网络科技股份有限公司 | 一种服务器管理方法和系统 |
CN112968929B (zh) * | 2021-01-29 | 2021-11-30 | 上海安畅网络科技股份有限公司 | 一种服务器管理方法和系统 |
WO2023056620A1 (zh) * | 2021-10-09 | 2023-04-13 | 广州视源电子科技股份有限公司 | 桌面应用控制方法、装置、电子设备及存储介质 |
CN114443192A (zh) * | 2021-12-27 | 2022-05-06 | 天翼云科技有限公司 | 基于云桌面的多窗口虚拟应用方法及装置 |
CN114443192B (zh) * | 2021-12-27 | 2024-04-26 | 天翼云科技有限公司 | 基于云桌面的多窗口虚拟应用方法及装置 |
CN114513535A (zh) * | 2022-01-07 | 2022-05-17 | 阿里巴巴(中国)有限公司 | 数据传输系统、方法、装置及设备 |
CN114513535B (zh) * | 2022-01-07 | 2024-03-08 | 阿里巴巴(中国)有限公司 | 数据传输系统、方法、装置及设备 |
CN118036007A (zh) * | 2024-04-15 | 2024-05-14 | 建信金融科技有限责任公司 | 病毒扫描方法、系统、扫描机及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108021425B (zh) | 2020-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108021425A (zh) | 一种集成多个应用图形窗口的虚拟桌面系统及运行方法 | |
US7761506B2 (en) | Generic object-based resource-sharing interface for distance co-operation | |
US9100383B2 (en) | Simultaneous remote and local control of computer desktop | |
CN104704448B (zh) | 本地和远程计算环境之间的反向无缝集成 | |
JP3251800B2 (ja) | ネットワーク内のコンピュータ間でデータを交換するための通信システム | |
EP0646260B1 (en) | Distributed applications processing network | |
CN113641457B (zh) | 容器创建方法、装置、设备、介质及程序产品 | |
CN108854055A (zh) | 用于远程显示器的基于云的虚拟化图形处理方法和系统 | |
US5029077A (en) | System and method for controlling physical resources allocated to a virtual terminal | |
US20070169066A1 (en) | System and method for an extensible 3D interface programming framework | |
CN104636077A (zh) | 用于虚拟机的网络块设备存储系统与方法 | |
US20140380182A1 (en) | Multi-touch multi-user interactive control system using mobile devices | |
CN104038535A (zh) | 在虚拟应用环境下改善用户体验的方法及虚拟应用系统 | |
CN105335176B (zh) | 一种调用安装于电子设备上的应用的方法及装置 | |
CN115243838A (zh) | 针对机器人流程自动化(rpa)机器人的会话间自动化 | |
CN104883384B (zh) | 一种为轻应用提供客户端的端能力的方法与装置 | |
CN102637127A (zh) | 一种控制鼠标模块的方法及电子设备 | |
CN109766196A (zh) | 一种任务调度方法、装置及设备 | |
US20130185694A1 (en) | Declarative dynamic control flow in continuation-based runtime | |
CN108696649A (zh) | 图像处理方法、装置、设备及计算机可读存储介质 | |
CN108335342A (zh) | 在web浏览器上进行多人绘画的方法、设备和计算机程序产品 | |
Lantz et al. | Reference models, window systems, and concurrency | |
US6404430B1 (en) | Virtual space information processor | |
CN116192670A (zh) | 环境部署方法、装置、设备及介质 | |
CN112416605B (zh) | 一种基于互联网的分布式显卡调用方法及装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |