CN110769048A - 本地与远程虚拟桌面的无缝衔接方法及系统 - Google Patents
本地与远程虚拟桌面的无缝衔接方法及系统 Download PDFInfo
- Publication number
- CN110769048A CN110769048A CN201910989077.9A CN201910989077A CN110769048A CN 110769048 A CN110769048 A CN 110769048A CN 201910989077 A CN201910989077 A CN 201910989077A CN 110769048 A CN110769048 A CN 110769048A
- Authority
- CN
- China
- Prior art keywords
- client
- window
- server
- virtual application
- tray
- 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
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/08—Protocols specially adapted for terminal emulation, e.g. Telnet
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/06—Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
-
- 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/14—Session management
- H04L67/141—Setup of application sessions
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Abstract
本公开公开了本地与远程虚拟桌面的无缝衔接方法及系统,包括:客户端与服务端建立连接;客户端实现服务端的窗口管理:客户端虚拟应用管理应用窗口,实现窗口事件通过向客户端操作系统的窗口管理器注册回调函数后,由虚拟应用接管并处理,实现本地客户端与远程服务端虚拟桌面的无缝衔接。本公开实现的虚拟应用针对应用窗口的图像处理,应用调用剪切板的处理,客户端对USB管理,窗口及托盘管理等部分做了修改,优化了虚拟应用的实现流程,实现与本地操作系统平台的无缝结合,解决虚拟应用对比本地应用在使用中的差异问题,并且提高了用户体验。
Description
技术领域
本公开涉及桌面虚拟化技术领域,特别是涉及本地与远程虚拟桌面的无缝衔接方法及系统。
背景技术
本部分的陈述仅仅是提到了与本公开相关的背景技术,并不必然构成现有技术。
远程桌面协议是微软实现的可以通过网络远程控制提供远程服务的服务端的通讯协议。该项协议实现的方式可以把远端电脑的桌面图像,鼠标键盘等系统操作通过远程桌面协议传输到本地操作系统中,呈现给用户;用户通过操作本地操作系统的鼠标键盘传输到服务端,实现远程控制服务端操作系统的功能。
但是,这是针对用户远程操作服务端系统桌面的功能,对于用户在客户端中的操作来说,可以看作是操作两套不同的桌面,且用户使用不在同一桌面中的应用时,需要频繁切换,产生不便。
在实现本公开的过程中,发明人发现现有技术中存在以下技术问题:
基于远程桌面协议提供的虚拟应用,虚拟应用在不同的平台中(比如linux平台桌面操作系统和国产化操作系统)使用起来会产生一系列的适配性和应用问题。比如窗口的图像更新会出现图像更新延迟,窗口残影花屏等问题;在拷贝文件和图片时在虚拟应用模式下是不支持的;打开的虚拟应用在使用本地文件和编辑保存时,磁盘通道经常出现不稳定及应用假死等状态;相比于本地应用打开时可以创建任务栏图标,在需要时可以缩小到任务栏托盘等操作,虚拟应用对于本地窗口的操作是无法做到的。
发明内容
为了解决现有技术的不足,本公开提供了本地与远程虚拟桌面的无缝衔接方法及系统;
第一方面,本公开提供了本地与远程虚拟桌面的无缝衔接方法;
本地与远程虚拟桌面的无缝衔接方法,包括:
客户端与服务端建立连接;
客户端实现服务端的窗口管理:客户端的虚拟应用管理应用窗口,实现窗口事件通过向客户端操作系统的窗口管理器注册回调函数后,由虚拟应用接管并处理,实现本地客户端与远程服务端虚拟桌面的无缝衔接。
第二方面,本公开还提供了本地与远程虚拟桌面的无缝衔接系统。
本地与远程虚拟桌面的无缝衔接系统,包括:客户端和服务端;
所述客户端,包括:窗口管理器和虚拟应用;
所述虚拟应用,包括:远程图像传输模块、托盘管理模块、窗口管理模块、剪切板管理模块、磁盘管理模块和USB外设管理模块;
所述远程图像传输模块,用于处理客户端的应用窗口、托盘或剪切板事件,提供数据的压缩、解压、封装和解封取数操作;并通过远程桌面协议与服务端的虚拟应用窗口传输模块通信;
所述托盘管理模块,用于处理客户端本地的托盘事件和消息,并响应服务端虚拟应用的托盘事件,同步到客户端本地的虚拟应用的托盘上;
所述窗口管理模块,用于处理客户端的应用窗口,窗口事件通过向操作系统的窗口管理器注册回调函数后,由虚拟应用接管并处理。
所述剪切板管理模块,用于和客户端本地的剪切板进行通信和数据交互,包括从本地剪切板中取数据,以及把服务端的剪切板数据放到本地剪切板中。
所述磁盘管理模块,用于管理客户端本地的磁盘,并通过Samba协议映射到服务端,便于虚拟应用在服务端以网络磁盘的形式来使用。
所述USB外设管理模块,用于客户端的虚拟应用使用本地USB外设的时候,把本地USB外设通过TCP协议把USB设备映射到服务端的设备列表里,方便虚拟应用使用客户端的USB设备及数据。
与现有技术相比,本公开的有益效果是:
1.在使用远程桌面协议图像数据传输的同时,针对远程桌面协议做了一些定制化开发和优化,能无缝加入linux平台操作系统和国产化操作系统中,实现虚拟应用在多平台下的使用,解决用户使用过程中出现的适配性问题和跨平台产生的问题。
2.本公开增加了本地窗口管理的机制,优化及解决了虚拟应用窗口拖动时图像更新,边框残影等图像花屏问题,优化了用户体验。
3.本公开通过客户端的剪切板管理模块,来处理远程桌面协议中的剪切板通道的数据,处理之后再放入本地操作系统的剪切板中,实现文件传输和图片的拷贝,优化文本等内容的传输。
4.本公开通过客户端的磁盘映射和服务端的磁盘加载模块,在客户端和服务端之间把用户的本地操作系统的磁盘提供给服务端作为网络磁盘来使用,对用户来说相当于在使用虚拟应用的时候可以直接对客户端本地的磁盘操作,实时同步虚拟应用在磁盘上的内容。
5.本公开根据虚拟应用在服务端的状态,通过客户端的窗口管理模块,一一实现虚拟应用在服务端的窗口和托盘状态,实现与本地操作系统平台的无缝结合,解决虚拟应用和本地应用程序在使用中的差异问题。
附图说明
构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。
图1为本公开实施例一的虚拟应用架构流程原理图;
图2为本公开实施例一的虚拟应用窗口管理处理时序图;
图3为本公开实施例一的虚拟应用在任务栏托盘的状态流程图。
具体实施方式
应该指出,以下详细说明都是示例性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。
虚拟应用使用的一般流程是当用户在客户端打开虚拟应用的时候,客户端会通过远程桌面协议的通讯请求来发送网络请求给服务端,服务端会按照请求内容,验证用户信息,创建用户会话,然后启动用户指定的虚拟应用,并把虚拟应用生成的界面图像返回给客户端,客户端将虚拟应用加载图像数据呈现给用户。本公开实现的虚拟应用针对图像处理,剪切板处理,USB管理,窗口管理等部分做了优化,修改了虚拟应用的实现流程。
实施例一,本实施例提供了本地与远程虚拟桌面的无缝衔接方法;
本地与远程虚拟桌面的无缝衔接方法,包括:
S1:客户端与服务端建立连接;
S2:客户端实现服务端的窗口管理:客户端的虚拟应用管理应用窗口,实现窗口事件通过向客户端操作系统的窗口管理器注册回调函数后,由虚拟应用接管并处理,实现本地客户端与远程服务端虚拟桌面的无缝衔接。
所述虚拟应用,对于客户端来说,虚拟应用存在于服务端,不属于客户端的本地应用;对于用户来说,这是一个和客户端本地应用没有区别的应用程序,所以,也称为客户端上的虚拟应用。
所述虚拟应用,包括:远程图像传输模块、托盘管理模块、窗口管理模块、剪切板管理模块、磁盘管理模块和USB外设管理模块;
所述远程图像传输模块,用于处理客户端的应用窗口、托盘或剪切板事件,提供数据的压缩、解压、封装和解封取数操作;并通过远程桌面协议与服务端的虚拟应用窗口传输模块通信;
所述托盘管理模块,用于处理客户端本地的托盘事件和消息,并响应服务端虚拟应用的托盘事件,同步到客户端本地的虚拟应用的托盘上;
所述窗口管理模块,用于管理客户端的应用窗口,窗口事件通过向操作系统的窗口管理器注册回调函数后,由虚拟应用接管并处理;
所述剪切板管理模块,用于和客户端本地的剪切板进行通信和数据交互,包括从本地剪切板中取数据,以及把服务端的剪切板数据放到本地剪切板中;
所述磁盘管理模块,用于管理客户端本地的磁盘,并通过Samba协议映射到服务端,便于虚拟应用在服务端以网络磁盘的形式来使用。
所述USB外设管理模块,用于客户端的虚拟应用使用本地USB外设的时候,把本地USB外设通过TCP协议把USB设备映射到服务端的设备列表里,方便虚拟应用使用客户端的USB设备及数据。
作为一个或多个实施例,所述方法,还包括:
S3:客户端将磁盘映射到服务端。
作为一个或多个实施例,所述方法,还包括:
S4:客户端将USB外设服务映射到服务端。
作为一个或多个实施例,所述方法,还包括:
S5:客户端将剪切板服务映射到服务端。
作为一个或多个实施例,所述方法,还包括:
S6:客户端将托盘服务映射到服务端。
作为一个或多个实施例,S2中,所述客户端实现服务端的窗口管理的具体步骤包括:
S21:客户端启动虚拟应用,初始化应用窗口的基本信息;
S22:客户端的操作系统层的窗口管理器创建应用窗口;
S23:客户端创建的应用窗口通过回调函数向操作系统注册窗口的事件操作,并接管应用窗口更新操作;并且把应用窗口的创建通知服务端的远程桌面服务;
S24:服务端的远程桌面服务启动虚拟应用,生成虚拟应用的图像,并根据客户端发送的请求完成虚拟应用的操作;
S25:服务端把生成的虚拟应用的图像传给客户端的窗口管理模块;
S26:窗口管理模块接收虚拟应用的图像,并更新窗口图像,保存图像缓存,记录窗口的尺寸、坐标、显示顺序和子窗体;
S27:客户端的操作系统层的窗口管理器接收图像更新的内容,并且呈现给用户;所述图像更新的内容,包括:应用窗口内容、托盘区域、窗口任务栏的更新内容和应用窗口有关的更新;
S28:客户端接收用户在虚拟应用窗口中进行的操作;等价于客户端接收用户在本地应用程序窗口中进行的操作;
S29:虚拟应用收集客户端对虚拟应用窗口的操作,把操作产生的窗口事件由虚拟应用窗口发送到客户端操作系统层的窗口管理器中;
S210:客户端的操作系统层的窗口管理器回调客户端的窗口管理模块来处理窗口事件;
S211:客户端的窗口管理模块在产生的窗口事件之后,发送数据更新请求;
客户端的窗口管理模块对比产生的窗口事件,将产生的窗口变化差异整理成图像数据更新请求;
窗口变化差异面积小于设定阈值的,则不生成图像数据更新请求;否则,生成图像数据更新请求;
对窗口的状态改变,直接产生图像数据更新请求;
S212:客户端把S211过程中生成的图像数据更新请求,发送给服务端;
S213:服务端根据图像数据更新请求,更新虚拟应用窗口状态和虚拟应用窗口的内容,把有变化的图像区域压缩成数据包;
S214:服务端把新生成的数据包发送给客户端的窗口管理模块;
S215:客户端的窗口管理模块更新虚拟应用窗口图像的图像缓存;处理图像花屏问题,刷新整个虚拟应用窗口区域以及原窗口改变后的桌面区域;
S216:客户端的窗口管理模块接到虚拟应用窗口更新完毕的通知,把虚拟应用窗口和图像内容都更新之后,通知客户端的操作系统层的窗口管理器;推送最新的图像给客户端的操作系统层的窗口管理器;
S217:客户端的操作系统层的窗口管理器给用户展示最新的虚拟应用窗口。
应理解的,所述步骤S21中,虚拟应用实现了远程应用程序的功能。远程应用程序(RemoteApp)是微软在发布Windows Server 2008之后,在其系统中集成的一项服务功能,使用户通过远程桌面访问远端的桌面与程序,客户端本机无须安装操作系统与应用程序的情况下也能正常使用远端发布的各种的桌面与应用。
应理解的,所述步骤S21中,应用窗口的基本信息,包括:窗口的大小、颜色、当前窗口的状态或鼠标初始化的形状。
应理解的,所述步骤S23中,应用窗口更新操作,包括:移动,状态改变,部分键盘事件等操作;
应理解的,所述步骤S24中,所述虚拟应用的图像,是指:虚拟应用在屏幕上展示的内容,包括窗口的整体区域或者只是其中一部分改变的区域;也包括任务栏区域、托盘区域以及弹窗。
应理解的,所述步骤S24中,所述虚拟应用的操作,是指:服务端启动应用程序执行过程中的操作。
应理解的,所述步骤S29中,所述操作窗口的窗口事件,包括:对应用窗口的拖动,激活,改变大小,鼠标操作,键盘输入,操作托盘,操作窗口任务栏等事件。
应理解的,所述步骤S215中,所述处理图像花屏问题的具体步骤包括:针对服务端传输的虚拟应用窗口图像在客户端上出现的重影,窗口位置和实际区域不一致的花屏问题,客户端的虚拟应用通过调整窗口坐标区域重新发送图像更新请求、去除窗口重影区域重新计算窗口大小或者重新加载窗口缓存的方式,保证服务端和客户端的虚拟应用窗口的一致性。
作为一个或多个实施例,S3中,所述客户端将磁盘映射到服务端的具体步骤包括:
建立客户端与服务端之间的磁盘映射通道;
客户端开启磁盘映射服务,把本地磁盘的信息传到服务端中;
服务端负责把客户端的磁盘通过磁盘管理加载到自身;
客户端与服务端之间的数据传输通过磁盘映射协议实现;
服务端通过用户名和密码,在用户创建的会话中访问客户端的磁盘,在服务端的会话中添加上客户端磁盘,以网络磁盘的方式使用。
作为一个或多个实施例,S4中,所述客户端将USB外设服务映射到服务端的具体步骤包括:
客户端负责从客户端本地的外设驱动中监听USB的U盘和移动硬盘事件,把USB事件和请求通过网络转发到服务端中;
服务端把事件添加到USB的驱动中,映射一个虚拟的USB设备,并把服务端的操作完全转发给客户端,实现客户端本地USB在服务端的使用。
作为一个或多个实施例,S5中,所述客户端将剪切板服务映射到服务端的具体步骤包括:
采用远程桌面协议的剪切板通道传输数据,客户端实现本地剪切板的操作,服务端使用用户会话的剪切板进程操作剪切板数据;实现用户在客户端本地应用与虚拟应用之间双向流畅的拷贝粘贴剪切板数据;
对于小于设定容量阈值的数据是直接传输文本内容,对于大于设定容量阈值的数据量和图片等,采用分块式依次传输数据;
对于文件的传输,先是由客户端确定要从服务端拷贝的文件对象,客户端负责拷贝文件到用户指定的本地磁盘位置。
作为一个或多个实施例,S6中,所述客户端将托盘服务映射到服务端的具体步骤包括:
S61:客户端使用虚拟应用过程中,虚拟应用本身通过客户端操作系统层的窗口管理器来给用户展示操作内容;
S62:当服务端的虚拟应用产生托盘事件时,虚拟应用通知客户端来创建托盘;并且客户端通过调用S65来向服务端发送获取虚拟应用托盘的数据请求;
服务端处理完客户端发送的托盘事件,或者服务端自己产生托盘事件主动推送数据给客户端的时候,通过S66获取服务端操作系统层产生的应用托盘的数据;在给客户端托盘管理模块发送托盘创建请求之后,把S66获得的图盘区域更新的数据以及桌面窗口更新的数据继续发送给客户端的窗口管理模块;
S63:客户端的托盘管理模块接收窗口管理模块转发的托盘数据之后,操作客户端本地的托盘服务,完成虚拟应用在托盘上的操作;
S64:客户端的托盘管理模块完成相应托盘事件操作,通知客户端的窗口管理模块;
S65:客户端的窗口管理模块产生本地的托盘请求,把客户端的托盘请求发送给服务端;
S66:服务端处理接收的托盘请求,把产生的托盘数据在内存中封装发给客户端的窗口管理模块。
应理解的,S62中,所述托盘事件,包括:创建托盘、更新托盘、删除托盘或托盘弹窗。
本公开是一种基于远程桌面协议在跨平台下虚拟应用的实现,是由用户在linux平台下的操作系统和国产化操作系统中使用的虚拟应用。当用户启动客户端平台的虚拟应用时,客户端程序获取服务端的目标IP,启动远程桌面协议建立连接,当服务端验证通过,建立链接之后,启动窗口管理模块和剪切板管理模块处理远程图像数据;启动磁盘管理模块与远端的磁盘加载模块建立数据通信,映射客户端磁盘;启动本地的USB外设管理模块与远端的USB外设服务模块,处理本地的USB存储设备在服务端的映射。
虚拟应用在接收到服务端传过来的图像数据之后,通过判断不同的数据类型,把图像数据转给窗口管理模块,把剪切板数据转发给剪切板管理模块。窗口管理模块负责创建虚拟应用的窗口,并且维护和系统窗口管理器的关系,比如窗口图像更新,窗口大小改变和移动,窗口状态改变,窗口显示顺序,子窗口创建销毁等操作。剪切板管理模块负责处理本地的剪切板事件,并且接受服务端发送过来的剪切板数据,把数据放入本地的剪切板中,提供给本地的虚拟应用和其他的应用程序使用。数据传输使用的是远程桌面协议中的部分虚拟通道传输。
请参阅图1,图2和图3。图1是对本公开的在多平台下虚拟应用实现的架构流程原理图。图2是对本公开中,虚拟应用窗口创建和使用过程中,窗口创建和更新图像的大概流程说明。图3是对虚拟应用窗口在操作本地任务栏托盘与服务端应用托盘之间的状态同步实现流程说明。
实施例二,本实施例还提供了本地与远程虚拟桌面的无缝衔接系统;
本地与远程虚拟桌面的无缝衔接系统,包括:客户端和服务端;
所述客户端,包括:窗口管理器和虚拟应用;
所述虚拟应用,包括:远程图像传输模块、托盘管理模块、窗口管理模块、剪切板管理模块、磁盘管理模块和USB外设管理模块;
所述远程图像传输模块,用于处理客户端的应用窗口、托盘或剪切板事件,提供数据的压缩、解压、封装和解封取数操作;并通过远程桌面协议与服务端的虚拟应用窗口传输模块通信;
所述托盘管理模块,用于处理客户端本地的托盘事件和消息,并响应服务端虚拟应用的托盘事件,同步到客户端本地的虚拟应用的托盘上;
所述窗口管理模块,用于处理客户端的应用窗口,窗口事件通过向操作系统的窗口管理器注册回调函数后,由虚拟应用接管并处理。
所述剪切板管理模块,用于和客户端本地的剪切板进行通信和数据交互,包括从本地剪切板中取数据,以及把服务端的剪切板数据放到本地剪切板中。
所述磁盘管理模块,用于管理客户端本地的磁盘,并通过Samba协议映射到服务端,便于虚拟应用在服务端以网络磁盘的形式来使用。
所述USB外设管理模块,用于客户端的虚拟应用使用本地USB外设的时候,把本地USB外设通过TCP协议把USB设备映射到服务端的设备列表里,方便虚拟应用使用客户端的USB设备及数据。
所述窗口管理器,用于客户端操作系统中管理所有应用窗口的程序,实现对本地应用窗口的创建、更新或销毁。
所述服务端的操作系统层,包括:会话管理虚拟窗口;
所述服务端的应用层,包括:磁盘加载模块、应用窗口传输模块和USB外设服务模块;
所述会话管理虚拟窗口,用于服务端管理虚拟应用窗口,是服务端操作系统的远程桌面服务的一部分;
所述磁盘加载模块,用于服务端加载由客户端提供的网络磁盘到操作系统中,也用于和客户端的磁盘管理模块通信;
所述虚拟应用窗口传输模块,用于处理服务端窗口的变化,对图像、托盘或剪切板数据进行压缩、解压、封装和解封取数操作,并与客户端的远程图像传输模块通信。
所述USB外设服务模块,用于服务端接收客户端的USB数据,并把客户端的USB外设加载到服务端的设备列表中,使虚拟应用能够在服务端使用客户端的USB设备。
所述磁盘管理模块与磁盘加载模块之间通过Samba协议进行连接;
所述远程图像传输模块与虚拟应用窗口传输模块之间通过远程桌面协议进行连接;
所述USB外设管理模块与USB外设服务模块之间采用tcp网络通讯进行连接。
总之,本公开实现了在多平台下虚拟应用在操作系统中的无缝接入,不影响用户的使用体验,提高了办公效率。对用户的虚拟应用的应用窗口,系统磁盘,剪切板数据,U盘等存储介质的使用有了很大的优化提升。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.本地与远程虚拟桌面的无缝衔接方法,其特征是,包括:
S1:客户端与服务端建立连接;
S2:客户端实现服务端的窗口管理:客户端的虚拟应用管理应用窗口,实现窗口事件通过向客户端操作系统的窗口管理器注册回调函数后,由虚拟应用接管并处理,实现本地客户端与远程服务端虚拟桌面的无缝衔接。
2.如权利要求1所述的方法,其特征是,所述虚拟应用,包括:
远程图像传输模块、托盘管理模块、窗口管理模块、剪切板管理模块、磁盘管理模块和USB外设管理模块;
所述远程图像传输模块,用于处理客户端的应用窗口、托盘或剪切板事件,提供数据的压缩、解压、封装和解封取数操作;并通过远程桌面协议与服务端的虚拟应用窗口传输模块通信;
所述托盘管理模块,用于处理客户端本地的托盘事件和消息,并响应服务端虚拟应用的托盘事件,同步到客户端本地的虚拟应用的托盘上;
所述窗口管理模块,用于管理客户端的应用窗口,窗口事件通过向操作系统的窗口管理器注册回调函数后,由虚拟应用接管并处理。
3.如权利要求2所述的方法,其特征是,
所述剪切板管理模块,用于和客户端本地的剪切板进行通信和数据交互,包括从本地剪切板中取数据,以及把服务端的剪切板数据放到本地剪切板中;
所述磁盘管理模块,用于管理客户端本地的磁盘,并通过Samba协议映射到服务端,便于虚拟应用在服务端以网络磁盘的形式来使用;
所述USB外设管理模块,用于客户端的虚拟应用使用本地USB外设的时候,把本地USB外设通过TCP协议把USB设备映射到服务端的设备列表里,方便虚拟应用使用客户端的USB设备及数据。
4.如权利要求1所述的方法,其特征是,
所述方法,还包括:S3:客户端将磁盘映射到服务端;
或者,
所述方法,还包括:S4:客户端将USB外设服务映射到服务端;
或者,
所述方法,还包括:S5:客户端将剪切板服务映射到服务端;
或者,
所述方法,还包括:S6:客户端将托盘服务映射到服务端。
5.如权利要求1所述的方法,其特征是,S2中,所述客户端实现服务端的窗口管理的具体步骤包括:
S21:客户端启动虚拟应用,初始化应用窗口的基本信息;
S22:客户端的操作系统层的窗口管理器创建应用窗口;
S23:客户端创建的应用窗口通过回调函数向操作系统注册窗口的事件操作,并接管应用窗口更新操作;并且把应用窗口的创建通知服务端的远程桌面服务;
S24:服务端的远程桌面服务启动虚拟应用,生成虚拟应用的图像,并根据客户端发送的请求完成虚拟应用的操作;
S25:服务端把生成的虚拟应用的图像传给客户端的窗口管理模块;
S26:窗口管理模块接收虚拟应用的图像,并更新窗口图像,保存图像缓存,记录窗口的尺寸、坐标、显示顺序和子窗体;
S27:客户端的操作系统层的窗口管理器接收图像更新的内容,并且呈现给用户;所述图像更新的内容,包括:应用窗口内容、托盘区域、窗口任务栏的更新内容和应用窗口有关的更新;
S28:客户端接收用户在虚拟应用窗口中进行的操作;等价于客户端接收用户在本地应用程序窗口中进行的操作;
S29:虚拟应用收集客户端对虚拟应用窗口的操作,把操作产生的窗口事件由虚拟应用窗口发送到客户端操作系统层的窗口管理器中;
S210:客户端的操作系统层的窗口管理器回调客户端的窗口管理模块来处理窗口事件;
S211:客户端的窗口管理模块在产生的窗口事件之后,发送数据更新请求;
客户端的窗口管理模块对比产生的窗口事件,将产生的窗口变化差异整理成图像数据更新请求;
窗口变化差异面积小于设定阈值的,则不生成图像数据更新请求;否则,生成图像数据更新请求;
对窗口的状态改变,直接产生图像数据更新请求;
S212:客户端把S211过程中生成的图像数据更新请求,发送给服务端;
S213:服务端根据图像数据更新请求,更新虚拟应用窗口状态和虚拟应用窗口的内容,把有变化的图像区域压缩成数据包;
S214:服务端把新生成的数据包发送给客户端的窗口管理模块;
S215:客户端的窗口管理模块更新虚拟应用窗口图像的图像缓存;处理图像花屏问题,刷新整个虚拟应用窗口区域以及原窗口改变后的桌面区域;
S216:客户端的窗口管理模块接到虚拟应用窗口更新完毕的通知,把虚拟应用窗口和图像内容都更新之后,通知客户端的操作系统层的窗口管理器;推送最新的图像给客户端的操作系统层的窗口管理器;
S217:客户端的操作系统层的窗口管理器给用户展示最新的虚拟应用窗口。
6.如权利要求5所述的方法,其特征是,所述步骤S215中,所述处理图像花屏问题的具体步骤包括:针对服务端传输的虚拟应用窗口图像在客户端上出现的重影,窗口位置和实际区域不一致的花屏问题,客户端的虚拟应用通过调整窗口坐标区域重新发送图像更新请求、去除窗口重影区域重新计算窗口大小或者重新加载窗口缓存的方式,保证服务端和客户端的虚拟应用窗口的一致性。
7.如权利要求4所述的方法,其特征是,所述客户端将磁盘映射到服务端的具体步骤包括:
建立客户端与服务端之间的磁盘映射通道;
客户端开启磁盘映射服务,把本地磁盘的信息传到服务端中;
服务端负责把客户端的磁盘通过磁盘管理加载到自身;
客户端与服务端之间的数据传输通过磁盘映射协议实现;
服务端通过用户名和密码,在用户创建的会话中访问客户端的磁盘,在服务端的会话中添加上客户端磁盘,以网络磁盘的方式使用;
或者,
所述客户端将USB外设服务映射到服务端的具体步骤包括:
客户端负责从客户端本地的外设驱动中监听USB的U盘和移动硬盘事件,把USB事件和请求通过网络转发到服务端中;
服务端把事件添加到USB的驱动中,映射一个虚拟的USB设备,并把服务端的操作完全转发给客户端,实现客户端本地USB在服务端的使用;
或者,
所述客户端将剪切板服务映射到服务端的具体步骤包括:
采用远程桌面协议的剪切板通道传输数据,客户端实现本地剪切板的操作,服务端使用用户会话的剪切板进程操作剪切板数据;实现用户在客户端本地应用与虚拟应用之间双向流畅的拷贝粘贴剪切板数据;
对于小于设定容量阈值的数据是直接传输文本内容,对于大于设定容量阈值的数据量和图片等,采用分块式依次传输数据;
对于文件的传输,先是由客户端确定要从服务端拷贝的文件对象,客户端负责拷贝文件到用户指定的本地磁盘位置。
8.如权利要求4所述的方法,其特征是,所述客户端将托盘服务映射到服务端的具体步骤包括:
S61:客户端使用虚拟应用过程中,虚拟应用本身通过客户端操作系统层的窗口管理器来给用户展示操作内容;
S62:当服务端的虚拟应用产生托盘事件时,虚拟应用通知客户端来创建托盘;并且客户端通过调用S65来向服务端发送获取虚拟应用托盘的数据请求;
服务端处理完客户端发送的托盘事件,或者服务端自己产生托盘事件主动推送数据给客户端的时候,通过S66获取服务端操作系统层产生的应用托盘的数据;在给客户端托盘管理模块发送托盘创建请求之后,把S66获得的图盘区域更新的数据以及桌面窗口更新的数据继续发送给客户端的窗口管理模块;
S63:客户端的托盘管理模块接收窗口管理模块转发的托盘数据之后,操作客户端本地的托盘服务,完成虚拟应用在托盘上的操作;
S64:客户端的托盘管理模块完成相应托盘事件操作,通知客户端的窗口管理模块;
S65:客户端的窗口管理模块产生本地的托盘请求,把客户端的托盘请求发送给服务端;
S66:服务端处理接收的托盘请求,把产生的托盘数据在内存中封装发给客户端的窗口管理模块。
9.本地与远程虚拟桌面的无缝衔接系统,其特征是,包括:客户端和服务端;
所述客户端,包括:窗口管理器和虚拟应用;
所述虚拟应用,包括:远程图像传输模块、托盘管理模块、窗口管理模块、剪切板管理模块、磁盘管理模块和USB外设管理模块;
所述远程图像传输模块,用于处理客户端的应用窗口、托盘或剪切板事件,提供数据的压缩、解压、封装和解封取数操作;并通过远程桌面协议与服务端的虚拟应用窗口传输模块通信;
所述托盘管理模块,用于处理客户端本地的托盘事件和消息,并响应服务端虚拟应用的托盘事件,同步到客户端本地的虚拟应用的托盘上;
所述窗口管理模块,用于处理客户端的应用窗口,窗口事件通过向操作系统的窗口管理器注册回调函数后,由虚拟应用接管并处理。
10.如权利要求9所述的系统,其特征是,
所述剪切板管理模块,用于和客户端本地的剪切板进行通信和数据交互,包括从本地剪切板中取数据,以及把服务端的剪切板数据放到本地剪切板中。
所述磁盘管理模块,用于管理客户端本地的磁盘,并通过Samba协议映射到服务端,便于虚拟应用在服务端以网络磁盘的形式来使用。
所述USB外设管理模块,用于客户端的虚拟应用使用本地USB外设的时候,把本地USB外设通过TCP协议把USB设备映射到服务端的设备列表里,方便虚拟应用使用客户端的USB设备及数据。
所述窗口管理器,用于客户端操作系统中管理所有应用窗口的程序,实现对本地应用窗口的创建、更新或销毁。
所述服务端的操作系统层,包括:会话管理虚拟窗口;
所述服务端的应用层,包括:磁盘加载模块、应用窗口传输模块和USB外设服务模块;
所述会话管理虚拟窗口,用于服务端管理虚拟应用窗口,是服务端操作系统的远程桌面服务的一部分;
所述磁盘加载模块,用于服务端加载由客户端提供的网络磁盘到操作系统中,也用于和客户端的磁盘管理模块通信;
所述虚拟应用窗口传输模块,用于处理服务端窗口的变化,对图像、托盘或剪切板数据进行压缩、解压、封装和解封取数操作,并与客户端的远程图像传输模块通信。
所述USB外设服务模块,用于服务端接收客户端的USB数据,并把客户端的USB外设加载到服务端的设备列表中,使虚拟应用能够在服务端使用客户端的USB设备。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910989077.9A CN110769048B (zh) | 2019-10-17 | 2019-10-17 | 本地与远程虚拟桌面的无缝衔接方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910989077.9A CN110769048B (zh) | 2019-10-17 | 2019-10-17 | 本地与远程虚拟桌面的无缝衔接方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110769048A true CN110769048A (zh) | 2020-02-07 |
CN110769048B CN110769048B (zh) | 2022-04-05 |
Family
ID=69332320
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910989077.9A Active CN110769048B (zh) | 2019-10-17 | 2019-10-17 | 本地与远程虚拟桌面的无缝衔接方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110769048B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338735A (zh) * | 2020-02-26 | 2020-06-26 | 深信服科技股份有限公司 | 一种虚拟化应用截图方法、装置、服务器及可读存储介质 |
CN112698964A (zh) * | 2020-12-23 | 2021-04-23 | 北京北信源软件股份有限公司 | 数据处理方法、系统、电子设备及介质 |
CN114513535A (zh) * | 2022-01-07 | 2022-05-17 | 阿里巴巴(中国)有限公司 | 数据传输系统、方法、装置及设备 |
CN114895824A (zh) * | 2022-05-12 | 2022-08-12 | 阿里巴巴(中国)有限公司 | 应用窗口的处理方法、终端设备、服务器和存储介质 |
CN115408093A (zh) * | 2022-10-31 | 2022-11-29 | 统信软件技术有限公司 | 远程连接方法、远程连接系统、计算设备和存储介质 |
CN116016480A (zh) * | 2022-12-05 | 2023-04-25 | 杭州未斯科技有限公司 | 基于虚拟桌面的流程自动化控制方法及系统 |
CN117112104A (zh) * | 2023-08-24 | 2023-11-24 | 浙江远算科技有限公司 | 基于远程桌面网关的本地存储映射方法、设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060230156A1 (en) * | 2005-04-06 | 2006-10-12 | Ericom Software Ltd. | Seamless windows functionality to remote desktop sessions regarding z-order |
CN104038535A (zh) * | 2010-12-22 | 2014-09-10 | 北京华夏未来信息技术有限公司 | 在虚拟应用环境下改善用户体验的方法及虚拟应用系统 |
WO2016202105A1 (zh) * | 2015-06-19 | 2016-12-22 | 中兴通讯股份有限公司 | 实现客户端与虚拟桌面数据共享的方法、客户端和系统 |
CN107770219A (zh) * | 2016-08-19 | 2018-03-06 | 中兴通讯股份有限公司 | 一种视窗窗口的共享方法、网关服务器和系统 |
CN108667887A (zh) * | 2017-07-03 | 2018-10-16 | 无锡辰云科技股份有限公司 | 基于融合计算的桌面虚拟方法、装置和系统 |
-
2019
- 2019-10-17 CN CN201910989077.9A patent/CN110769048B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060230156A1 (en) * | 2005-04-06 | 2006-10-12 | Ericom Software Ltd. | Seamless windows functionality to remote desktop sessions regarding z-order |
CN104038535A (zh) * | 2010-12-22 | 2014-09-10 | 北京华夏未来信息技术有限公司 | 在虚拟应用环境下改善用户体验的方法及虚拟应用系统 |
WO2016202105A1 (zh) * | 2015-06-19 | 2016-12-22 | 中兴通讯股份有限公司 | 实现客户端与虚拟桌面数据共享的方法、客户端和系统 |
CN107770219A (zh) * | 2016-08-19 | 2018-03-06 | 中兴通讯股份有限公司 | 一种视窗窗口的共享方法、网关服务器和系统 |
CN108667887A (zh) * | 2017-07-03 | 2018-10-16 | 无锡辰云科技股份有限公司 | 基于融合计算的桌面虚拟方法、装置和系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111338735A (zh) * | 2020-02-26 | 2020-06-26 | 深信服科技股份有限公司 | 一种虚拟化应用截图方法、装置、服务器及可读存储介质 |
CN112698964A (zh) * | 2020-12-23 | 2021-04-23 | 北京北信源软件股份有限公司 | 数据处理方法、系统、电子设备及介质 |
CN114513535A (zh) * | 2022-01-07 | 2022-05-17 | 阿里巴巴(中国)有限公司 | 数据传输系统、方法、装置及设备 |
CN114513535B (zh) * | 2022-01-07 | 2024-03-08 | 阿里巴巴(中国)有限公司 | 数据传输系统、方法、装置及设备 |
CN114895824A (zh) * | 2022-05-12 | 2022-08-12 | 阿里巴巴(中国)有限公司 | 应用窗口的处理方法、终端设备、服务器和存储介质 |
CN115408093A (zh) * | 2022-10-31 | 2022-11-29 | 统信软件技术有限公司 | 远程连接方法、远程连接系统、计算设备和存储介质 |
CN115408093B (zh) * | 2022-10-31 | 2023-05-02 | 统信软件技术有限公司 | 远程连接方法、远程连接系统、计算设备和存储介质 |
CN116016480A (zh) * | 2022-12-05 | 2023-04-25 | 杭州未斯科技有限公司 | 基于虚拟桌面的流程自动化控制方法及系统 |
CN116016480B (zh) * | 2022-12-05 | 2023-09-29 | 杭州未斯科技有限公司 | 基于虚拟桌面的流程自动化控制方法及系统 |
CN117112104A (zh) * | 2023-08-24 | 2023-11-24 | 浙江远算科技有限公司 | 基于远程桌面网关的本地存储映射方法、设备和介质 |
CN117112104B (zh) * | 2023-08-24 | 2024-03-29 | 浙江远算科技有限公司 | 基于远程桌面网关的本地存储映射方法、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110769048B (zh) | 2022-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110769048B (zh) | 本地与远程虚拟桌面的无缝衔接方法及系统 | |
JP6092381B2 (ja) | ウェブクライアントを介したリモートアプリケーションへのアクセスを提供する方法、システム、及びコンピュータ読取可能記憶媒体 | |
RU2420797C2 (ru) | Предоставление возможности применения команды изменения графического окна к дистанционно сгенерированному графическому окну | |
US7908325B1 (en) | System and method for event-based collaboration | |
JP4482615B2 (ja) | ローカルモジュールとリモートモジュールとの間でオブジェクトをドラッグアンドドロップすること | |
US7197751B2 (en) | Real-time collaboration client | |
US7516179B2 (en) | Control unit operations in a real-time collaboration server | |
US8689115B2 (en) | Method and system for distributed computing interface | |
US9501258B2 (en) | Method of sharing a desktop with attendees of a real-time collaboration | |
US7206811B2 (en) | System and method for facilitating real-time collaborating by collapsing a queue for a slow client | |
WO2021093619A1 (zh) | 用于Android系统双屏异显的多输入设备交互方法、装置及介质 | |
US20070157101A1 (en) | Systems and methods for transferring data between computing devices | |
EP0834801A2 (en) | Remote control of a display system | |
US20150012831A1 (en) | Systems and methods for sharing graphical user interfaces between multiple computers | |
KR20010052420A (ko) | 지역 및 원격 윈도우를 단일 데스크탑 환경에 결합시키기위한 시스템 및 방법 | |
US10581950B2 (en) | Local operation of remotely executed applications | |
WO2023077868A1 (zh) | 应用状态同步方法、装置、电子设备和存储介质 | |
CN111343409B (zh) | 多个视频窗口动态排布的发起、同步方法及系统 | |
US7949705B1 (en) | Dynamic desktop switching for thin clients | |
JPH10215247A (ja) | データ会議システム及び装置並びに通信処理装置及び方法 | |
US11755765B2 (en) | Optimized directory enumeration and data copy for client drive redirection in virtual desktops | |
WO2023202468A1 (zh) | 显示方法、智能终端及存储介质 | |
US20140280459A1 (en) | Control of an application on a remote computer device | |
CN115048191A (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 |