本申请涉及虚拟机领域,特别涉及一种在虚拟桌面基础架构(英文:virtualdesktopinfrastructure,缩写:vdi)场景下用于人机接口设备(英文:humaninterfacedevice,缩写:hid)的重定向的方法、装置和系统。
背景技术:
虚拟桌面技术是目前企业办公环境的一种流行技术,其将运算和操作的执行托管到了服务器,客户设备在客户设备只是实现桌面的显示和捕获用户操作事件(如键盘、鼠标事件)。通过服务器的管理系统能够实现对内存资源和中央处理器(英文:centralprocessingunit,缩写:cpu)的按需调度,有效的提高了内存资源和cpu的使用效率。同时,由于客户设备只是实现显示和捕获用户操作事件的功能,因此用户可以在任意客户设备上登录服务器的同一台虚拟机,实现在任意地点对虚拟机的有效使用,大大提高了使用的便捷性。
在虚拟桌面技术的使用中,存在大量使用hid的场景,例如对hid进行读取操作。由于hid与客户设备连接,而发起对hid的操作请求的虚拟机运行于服务器上,因此需要将服务器上生成的hid的操作请求重定向至客户设备。在对hid进行重定向的过程中,需要将对hid的操作请求和从hid读取的数据在客户设备和服务器之间进行传递。现有技术中,服务器将hid的操作请求传递至客户设备的过程中采用的方法对服务器与客户设备之间的通信网络的延迟敏感,降低了hid在使用中的可靠性。
技术实现要素:
本申请提供了一种重定向的方法、装置和系统,用于提升hid重定向的可靠性。
本申请第一方面提供了一种重定向的方法,所述方法用于vdi中对hid的重定向,其中,所述vdi包括服务器和客户设备,所述客户设备与所述hid连接,所述服务器上运行有虚拟机,该重定向方法包括:
所述虚拟机获取接口调用请求,所述接口调用请求包括接口名和接口参数;所述虚拟机对所述接口参数进行序列化操作,获取序列化结果;所述虚拟机生成数据包,并通过通信网络将所述数据包发送至所述客户设备,所述数据包包括所述接口名和所述序列化结果;所述客户设备接收所述数据包,获取所述序列化结果和所述接口名,对所述序列化结果进行反序列化操作,获取所述接口参数;所述客户设备根据所述接口参数和所述接口名访问所述hid,获取所述hid的信息,并将所述hid的信息发送至所述虚拟机。
所述客户设备获取所述接口参数和所述接口名,重构所述虚拟机获取的接口调用请求,也即将服务器上运行的虚拟机中生成的接口调用请求重定向到了客户设备上,客户设备根据该接口调用请求获取所述hid的信息,并将所述hid的信息发送至所述虚拟机。所述虚拟机将所述hid的信息返回给所述应用程序。通过本申请实现的hid的重定向方法,提高了hid在使用过程中的稳定性。
在一种可能的实现方式中,所述虚拟机对所述接口参数进行序列化操作,获取序列化结果包括:所述虚拟机根据所述接口参数的参数类型获取所述接口参数对应的底层数据;所述客户设备对所述序列化结果进行反序列化操作,获取所述接口参数包括:所述客户设备根据所述接口参数对应的底层数据获取所述接口参数。
所述客户设备获取了接口名后,可以获取该接口名对应的输入参数的参数类型,则获取了该底层数据对应的接口参数的参数类型,因此可以根据底层数据重构该接口参数。
由于接口参数可能由多种数据结构的嵌套而成,而接口参数对应的底层数据存储于服务器中的存储设备,为了将接口调用请求重定向至所述客户设备,需要将接口参数对应的底层数据从所述服务器发送至所述客户设备,以使得所述客户设备能够根据所述底层数据重构接口参数,实现hid的重定向过程。
本申请第二方面提供了一种重定向装置,该装置用于vdi中对hid的重定向,其中,所述vdi包括服务器和客户设备,所述客户设备与所述hid连接,该装置包括:
接收模块,用于接收所述服务器上运行的应用程序发出的接口调用请求,所述接口调用请求指示获取hid的信息,所述接口调用请求包括接口名和接口参数。
序列化模块,用于对接口参数进行序列化操作,获取序列化结果。
通信模块,用于将所述接口名和所述序列化结果封装为数据包,并通过通信网络将所述数据包发送至客户设备。该通信模块获取该数据包后,将该数据包发送至通信网络,该数据包中携带目的客户设备的地址信息,以使得通信网络能够将该数据包路由至目的客户设备。
该重定向装置还用于将客户设备访问所述hid获取的hid的信息返回给所述应用程序。
该重定向装置属于该服务器,为该服务器中用于hid重定向的装置。该装置的接收模块能够截取该服务器上运行的虚拟机使用的操作系统发出的接口调用请求。
该重定向装置实现了将接口调用请求封装入数据包发送至客户设备,避免了在服务器上将接口调用请求转换为多个指令后再传输至客户设备对通信网络造成的压力,避免了通信网络性能不足对hid重定向过程造成的影响。
在一种可能的实现方式中,所述序列化模块具体用于根据所述接口参数的参数类型获取所述接口参数对应的底层数据。
本申请第三方面提供了一种重定向装置,该装置用于vdi中对hid的重定向,其中,所述vdi包括服务器和客户设备,所述客户设备与所述hid连接,该装置包括:
通信模块,用于接收数据包,并将该数据包包括的序列化结果和接口名发送至反序列化模块。
反序列化模块,用于获取数据包中的序列化结果和接口名,以及对所述序列化结果进行反序列化操作,获取接口参数。
通信模块,还用于根据所述接口参数和所述接口名,访问所述hid,获取所述hid的信息,并将所述hid的信息发送至所述虚拟机。
该通信模块获取了hid的信息后,将hid的信息封装入数据包发送至通信网络,所述数据包中携带发出包括该序列化结果和接口名的数据包的目的 服务器的地址信息,以使得通信网络能够将该数据包路由至该目的服务器。
该重定向装置属于该客户设备,为该客户设备中用于hid重定向的装置。该重定向装置中的通信模块能够与通信网络和hid进行通信。在一种可能的实现方式中,所述反序列化模块用于对所述序列化结果进行反序列化操作,获取接口参数,具体包括:根据所述接口参数对应的底层数据获取所述接口参数。
本申请第四方面提供了一种服务器,包括:处理器以及存储器,所述存储器用于存储指令,所述处理器用于执行所述指令以执行本申请第一方面及第一方面的任一中实现方式中提供的重定向方法中虚拟机侧执行的方法。
本申请第五方面提供了一种客户设备,包括处理器以及存储器,所述存储器用于存储指令,所述处理器用于执行所述指令以执行本申请第一方面及第一方面的任一中实现方式中提供的重定向方法中客户设备侧执行的方法。
本申请第六方面提供了一种vdi,包括至少一个第四方面提供的服务器以及至少一个第五方面提供的的客户设备,所述服务器和所述客户设备之间通过通信网络进行通信。
本申请第七方面提供了一种存储介质,该存储介质中存储了程序代码,该程序代码被计算设备运行时,执行第一方面或第一方面的任意一种实现方式提供的重定向方法。该存储介质包括但不限于快闪存储器(英文:flashmemory),硬盘(英文:harddiskdrive,缩写:hdd)或固态硬盘(英文:solidstatedrive,缩写:ssd)。
本申请提供的技术方案,将服务器上运行的虚拟机获取的hid的接口调用请求进行序列化操作之后发送至客户设备,再由客户设备将该接口调用请求解析为hid可以执行的多个指令并根据这多个指令访问hid,避免了服务器将接口调用请求解析后生成的多个指令发送至客户设备造成的通信效率降低以及对通信网络的延迟过于敏感造成的可靠性降低。
附图说明
图1为本申请所提供的vdi的示意图;
图2为本申请所提供的计算设备的一个实施例结构示意图;
图3为本申请所提供的计算设备的另一实施例结构示意图;
图4为本申请所提供的重定向的方法的一个实施例流程示意图;
图5为本申请所提供的一个应用场景下重定向的方法的流程示意图;
图6为本申请所提供的另一应用场景下重定向的方法的流程示意图;
图7为本申请所提供的重定向装置的一个实施例结构示意图;
图8为本申请所提供的重定向装置的另一实施例结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
如图1为本申请实施例所应用的vdi的示意图,该vdi包括服务器和客户设备。
其中,服务器包括硬件层,即虚拟化环境运行的硬件平台。其中,硬件层可包括多种硬件,例如处理器(如cpu)和内存、存储设备(可以包括硬盘和/或内存),还可以包括网卡等设备。
服务器上运行有vm与虚拟机监控器(英文:virtualmachinemonitor,缩写:vmm)。通过虚拟机软件可以在一台服务器上模拟出一台或者多台vm,而这些vm就像真正的计算机那样进行工作,vm上可以安装操作系统和应用程序,vm还可访问网络资源。对于在vm中运行的应用程序而言,就像是在真正的计算机中进行工作。vmm用于完成硬件层的管理、分配,为vm呈现虚拟硬件平台,实现vm的调度和隔离。其中,虚拟硬件平台对其上运行的各个vm提供各种硬件资源,如提供虚拟cpu、内存、虚拟磁盘、虚拟网卡等等。
其中,客户设备包括与服务器类似的硬件层,客户设备的硬件层上运行有操作系统,该操作系统可以为服务器的vm上运行的操作系统的裁剪版,在本申请的场景中,客户设备上运行的操作系统具有将接口调用请求转换为hid可以识别的指令的功能。客户设备也可以称为瘦终端(英文:thinclient)。 客户设备可以与一个或多个hid连接。
一台服务器可以对应一台或多台客户设备。该服务器上运行有一个或多个虚拟机(英文:virtualmachine,缩写:vm),即vm-1至vm-n。客户设备与hid连接,vm在运行过程中,vm中运行的应用程序生成用于获取hid的信息的接口调用请求,将该接口调用请求按照预先设计的协议或标准,转换为hid可以识别的指令,并将该转换后的指令发送至hid,hid执行该转换后的指令以实现接口调用请求指示的操作。由于常见的hid与客户设备通过通用串行总线(英文:universalserialbus,缩写:usb)接口连接,因此预先设计的协议或标准也需要遵从usb协议。传统的hid重定向过程中,服务器上运行的vm执行上述转换动作,再将转换生成的多个符合usb协议的指令发送至客户设备,客户设备接收并执行这些指令以实现对hid的操作。该过程中,由于这些指令数据量大且对客户设备返回数据的时延要求严格,因此现有的重定向方法对网络延迟很敏感,导致hid在使用中的可靠性不足。
贯穿本说明书,hid包括各种与用户交互的设备,例如键盘、鼠标与游戏杆、打印机、读卡器等。
贯穿本说明书,hid的信息包括hid的设备信息和hid获取到的用户信息中的一个或多个。其中,hid的设备信息为hid本身的硬件信息,例如hid的设备信息为产品id(英文:productid)和供应商id(英文:vendorid)中的一个或多个。hid获取到的用户信息包括hid获取到的用户发送给hid的信息,例如hid获取到的用户信息为hid为键盘、打印机、鼠标等设备时,用户通过对hid进行的操作信息,hid获取到的用户信息还包括用户安装在hid上的其他存储介质传输给hid的信息,例如hid为读卡器的场景下,hid的设备信息为读卡器本身的设备信息,而hid获取到的用户信息为读卡器上所安装的存储卡上携带的信息。
贯穿本说明书,设置(setup)接口为用于获取hid的设备信息的操作系统接口,以vm上运行windows操作系统为例,设置接口包括但不限于:setupdigetclassdevsa,setupdienumdeviceinterfaces,setupdigetdeviceinterfacedetaila,setupdidestroydeviceinfolist。
贯穿本说明书,hid接口为用于获取hid获取到的用户信息的操作系统接口,以vm上运行windows操作系统为例,设置接口包括但不限于:hidd_gethidguid,hidd_getproductstring,hidd_getmanufacturerstring,hidd_getpreparseddata,hidp_getcap,hidd_freepreparseddata,hidd_getattribute,hidd_gethidgui。
图1中的服务器可以通过图2中的计算设备200实现。该计算设备200的组织结构示意图如图2所示,包括处理器202、存储器204,还可以包括总线208、通信接口206。
其中,处理器202、存储器204和通信接口206可以通过总线208实现彼此之间的通信连接,也可以通过无线传输等其他手段实现通信。
存储器204可以包括易失性存储器(英文:volatilememory),例如随机存取存储器(英文:random-accessmemory,缩写:ram);存储器204也可以包括非易失性存储器(英文:non-volatilememory),例如只读存储器(英文:read-onlymemory,缩写:rom),快闪存储器(英文:flashmemory),硬盘(英文:harddiskdrive,缩写:hdd)或固态硬盘(英文:solidstatedrive,缩写:ssd);存储器204还可以包括上述种类的存储器的组合。在通过软件来实现本申请提供的技术方案时,用于实现本申请图4提供的重定向的方法中服务器侧执行的部分的程序代码保存在存储器204中,并由处理器202来执行。
计算设备200通过通信接口206与客户设备通信。
处理器202可以为cpu。
该处理器202运行时执行以下操作:接收应用程序发出的接口调用请求,该接口调用请求包括接口参数和接口名,并对所述接口参数进行序列化操作,获取序列化结果;随后将所述接口名和所述序列化结果封装为数据包,并通过通信接口206将所述数据包发送至客户设备。
通信接口206获取所述客户设备根据所述接口调用请求访问所述hid获取的hid的信息后,处理器202还用于将所述hid的信息返回给所述应用程序。
图1中的客户设备可以通过图3中的计算设备300实现。该计算设备300的组织结构示意图如图3所示,包括处理器302、存储器304,还可以包括总 线308、通信接口306。
其中,处理器302、存储器304和通信接口306可以通过总线308实现彼此之间的通信连接,也可以通过无线传输等其他手段实现通信。
处理器302可以为cpu。存储器304可以包括易失性存储器,例如ram;存储器304也可以包括非易失性存储器,例如rom,快闪存储器,hdd或ssd;存储器304还可以包括上述种类的存储器的组合。在通过软件来实现本申请提供的技术方案时,用于实现本申请图4提供的重定向的方法中客户设备侧的部分的程序代码保存在存储器304中,并由处理器302来执行。计算设备300通过通信接口306与服务器通信。
通信接口306接收服务器发来的数据包后,获取所述数据包中包括的序列化结果和接口名,并将所述序列化结果和接口名发送至处理器302。
该处理器302运行时执行以下操作:获取所述数据包中的序列化结果和接口名,并对所述序列化结果进行反序列化操作,获取接口参数;根据接口参数和所述接口名,访问hid,获取hid的信息,并将hid的信息通过通信接口306发送至发送包括了该序列化结果的数据包的服务器。
基于图1所示的vdi,本申请提供了一种重定向方法,图1中的服务器和客户设备运行时执行该方法,其流程示意图如图4所示。
401、虚拟机获取接口调用请求,所述接口调用请求包括接口名和接口参数。
所述接口调用请求指示获取hid的信息,虚拟机上运行的应用程序在需要对hid进行操作的时候,调用对应的接口调用请求,虚拟机截获该接口调用请求。实践中可以通过一个钩子模块实现对应用程序发出的接口调用请求的截获。
可选的,所述接口名为设置接口,所述hid的信息为所述hid的设备信息。
可选的,所述接口为hid接口,所述hid的信息为所述hid获取到的用户信息。
402、所述虚拟机对所述接口参数进行序列化操作,获取序列化结果。
可选的,所述虚拟机对所述接口参数进行序列化操作,获取序列化结果 具体包括:所述虚拟机根据所述接口参数的参数类型获取所述接口参数对应的底层数据。
403、所述虚拟机将所述接口名和所述序列化结果封装为数据包,并通过通信网络将所述数据包发送至客户设备。
404、所述客户设备接收所述数据包,获取所述序列化结果和所述接口名,对所述序列化操作进行反序列化操作,获取所述接口参数。
可选的,所述客户设备对所述序列化操作进行反序列化操作,获取所述接口参数包括:所述客户设备根据所述接口参数对应的底层数据获取所述接口参数。
需要说明的是,接口参数可以为各种数据结构或数据类型,例如变量类型(例如数值或者枚举类型)、间接访问类型(例如指针或指针的指针)、句柄。不同类型的接口参数可以作为不同接口调用请求的接口参数,例如windows下接口名为hidd_getpreparseddata的接口调用请求的接口参数为hiddeviceobject以及*preparseddata。
序列化操作过程中,由于需要将接口参数转换为字节序列以便将该接口参数通过通信网络传输,因此需要获取该接口参数对应的底层数据对应的字节序列。例如待处理的接口参数为指针a,则序列化操作过程中需要获取指针a指向的变量b,则变量b为指针a的底层数据。例如待处理的接口参数为指针的指针c,则需要获取指针的指针c指示的指针d,然后获取指针d指向的变量e,则变量e为指针的指针c的底层数据。不同的接口参数的序列化操作过程中获取的底层数据的类型可能不同,但根据其底层数据可以恢复出原接口参数,例如如果原接口参数为一个句柄,则通过对该接口参数的底层数据进行反序列化操作可以获得一个句柄。实际中,还会出现待处理的接口参数有更多种类型,例如多重指针嵌套、多重句柄嵌套等。vm发出的接口调用请求的接口参数对应的底层数据,在服务器的存储空间中一般指示一段连续的内存值。
反序列化操作过程包括根据底层数据,重构该底层数据对应的接口参数。例如底层数据包括变量b,则重构指针a’,指针a’指向变量b。客户设备在获取了接口名后,即可根据接口名获取该接口名对应的输入参数的类型,例 如windows下接口名为hidd_getpreparseddata的接口调用请求的接口参数包括*preparseddata,因此如果客户设备在获取包括接口名hidd_getpreparseddata的数据包后,则可以得知该接口名对应的输入参数包括一个指针,因此客户设备根据该数据包中携带的底层数据,重构一个指针作为hidd_getpreparseddata接口的输入参数。
序列化操作和反序列化操作常用于通过通信网络在不同设备间传递数据,以在图1所示的vdi中实现hid的重定向过程为例。服务器上运行的vm在运行应用程序的过程中,应用程序发起接口调用请求,该接口调用请求包括了应用程序需要调用的接口的接口名以及该接口的接口参数,服务器需要对接口调用请求进行序列化操作,使得接口调用请求能够通过数据包传送至客户设备,并且客户设备能够根据服务器发来的数据包重构该接口调用请求,以使得服务器的vm发起的针对hid的操作请求,能够重定向至客户设备。
405、所述客户设备根据所述接口参数和所述接口名访问所述hid,获取所述hid的信息。
406、所述客户设备将所述hid的信息发送至所述虚拟机。
客户设备根据获取的该接口参数和接口名重构该接口调用请求,客户设备上运行的操作系统将该接口调用请求转换为hid能够执行的多个指令,通过这些指令去访问hid,以获取hid的信息。
服务器获取了该hid的信息后,将该hid的信息返回给发出该接口调用请求的应用程序。
本申请提供的hid重定向方法,通过将服务器获取的接口参数对应的序列化结果和接口名通过数据包发送至客户设备,再由客户设备重构接口调用请求并对hid进行访问,避免了现有技术中需要将接口调用请求转换后的多个指令在通信网络中传输造成的可靠性降低,本申请提供的hid重定向方法对网络延时要求低,稳定性好。
下面以具体实例对本申请提供的重定向的方法进行说明。如图5所示,以服务器上运行的虚拟机中的读卡模块进行读卡操作为例。该方法基于图5的系统实现,该系统包括读卡器、客户设备和服务器,该客户设备包括序列 化模块、通信模块和反序列化模块,该服务器上运行有虚拟机,虚拟机包括序列化模块、通信模块、反序列化模块、读卡模块以及接收模块。该方法包括:
步骤1,该读卡模块向操作系统发起设置接口的调用请求,用于读取读卡器的设备信息。
步骤2,接收模块接收该读卡模块发出的设置接口的调用请求。
可选地,该接收模块可以为一个钩子(hook)模块。
步骤3,接收模块将设置接口的接口参数传递给服务器的序列化模块处理。
步骤4,服务器的序列化模块对设置接口的接口参数进行序列化后,将设置接口的接口参数的序列化结果和接口名发送至服务器的通信模块。
步骤5,服务器的通信模块将接口名以及设置接口的接口参数的序列化结果封装为数据包后发送给客户设备。
步骤6,客户设备的反序列化模块对设置接口的接口参数的序列化结果进行反序列化。
步骤7,客户设备的通信模块根据反序列化得到的设置接口的接口参数以及接口名,通过客户设备上运行的操作系统执行该设置接口的调用请求读取读卡器的设备信息。
步骤8,客户设备的通信模块将读到的读卡器的设备信息发送至客户端的序列化模块。
步骤9,客户设备的序列化模块将读卡器的设备信息序列化后发送到通信模块。
步骤10,客户设备的通信模块将序列化后的该读卡器的设备信息发送到服务器。
步骤11,服务器的反序列化模块处理该序列化后的读卡器的设备信息后获取读卡器的设备信息,反序列化模块将读卡器的设备信息返回给读卡模块。
步骤12,读卡模块发起hid接口调用,以读取读卡器上的存储卡内的信息。
步骤13,接收模块接收该读卡模块发出的hid接口的调用请求,并将hid接口的接口参数传递给服务器的序列化模块进行处理。
步骤14,服务器的序列化模块对hid接口的接口参数进行序列化后获取hid接口的接口参数的序列化结果,通过服务器的通信模块将hid接口的接口名以及hid接口的接口参数的序列化结果封装为数据包后发送给客户设备。客户设备的反序列化模块对收到的hid接口的接口参数的序列化结果进行反序列化。
步骤15,客户设备的通信模块根据获取的hid接口的接口名和反序列化得到的hid接口的接口参数读取存储卡内的信息。获取的存储卡内的信息经过客户设备的序列化模块处理后,获取序列化后的存储卡内的信息,通过通过客户设备的通信模块发送到服务器。
步骤16,服务器上的反序列化模块将序列化后的存储卡内的信息反序列化后,将存储卡内的信息返回给虚拟机中运行的读卡模块。
步骤17,读卡模块获取存储卡内的信息。
服务器上的序列化模块和反序列化模块在实践中可以由同一模块实现序列化和反序列化的功能,客户设备上的序列化模块和反序列化模块与之类似。服务器上的序列化模块与客户设备上的序列化模块功能类似,服务器上的反序列化模块与客户设备上的反序列化模块功能类似。
如图6所示,以用户通过身份信息进行虚拟机登陆的身份验证的应用场景为例进行说明本申请提供的重定向的方法。该方法基于图6的系统实现,该系统包括hid、客户设备、服务器和鉴权服务器。该客户设备包括重定向模块和远程协议客户端,其中重定向模块包括序列化模块、通信模块、反序列化模块。该服务器上运行有虚拟机,虚拟机包括远程协议登录模块和重定向模块,其中重定向模块序列化模块、通信模块、反序列化模块以及接收模块。鉴权服务器包括远程协议鉴权模块,鉴权服务器还可以包括用于通信的通信模块。该方法包括:
步骤1,用户通过客户设备中的远程协议客户端向服务器发起虚拟机的登录请求。
步骤2,服务器的远程协议登录模块获取该虚拟机的登录请求。
步骤3,服务器根据该虚拟机的登录请求发起设置接口以及hid接口的调用请求,并通过重定向模块将接口调用请求重定向至客户设备,以读取用户的身份信息。接口调用请求的重定向过程,基于本申请前述实施例所提供的重定向的方法实现。
该服务器的重定向模块包括实现了图4所示实施例中服务器侧方法的软件模块,重定向模块中的各个子模块参考图5所示的实施例。该客户设备的重定向模块包括实现了图4所示实施例中客户设备侧方法的软件模块,重定向模块中的各个子模块参考图5所示的实施例。
步骤4,客户设备的重定向模块获取用户的身份信息,并将用户的身份信息返回给服务器。
步骤5,服务器的重定向模块获取用户的身份信息,将用户的身份信息传递给远程协议登录模块。远程协议登录模块根据用户的身份信息向鉴权服务器发起鉴权请求。
步骤6,鉴权服务器在获得鉴权请求后,通过远程协议鉴权模块对用户的身份信息进行鉴权。如果鉴权成功,则向远程协议登录模块返回虚拟机登录信息。
步骤7,远程协议登录模块在获得虚拟机登录信息后,利用虚拟机登录信息登录虚拟机,并向客户设备返回登录结果。
用户可以选用不同的身份信息进行虚拟机登陆的身份验证(例如:账号/密码,指纹,智能卡等),而登录虚拟机之前需要通过对用户的身份信息的鉴权。通过以上提供的方法,能够更可靠地实现服务器与虚拟机之间的接口调用请求的重定向,实现用户的身份信息的鉴权,提升用户的体验。
本申请实施例还提供了重定向装置500,该装置可以通过图2所示的计算设备200实现,还可以通过专用集成电路(英文:application-specificintegratedcircuit,缩写:asic)实现,或可编程逻辑器件(英文:programmablelogicdevice,缩写:pld)实现。上述pld可以是复杂可编程逻辑器件(英文:complexprogrammablelogicdevice,缩写:cpld),fpga,通用阵列逻辑(英文:genericarraylogic,缩写:gal)或其任意组合。该重定向装置500用于实现图4所示的重定向的方法中服务器侧执行的方法。通过软件实现图4所示的重定向 的方法时,该重定向装置500及其包括的各个也可以为软件模块。
重定向装置500的组织结构示意图如图7所示,包括:接收模块501、序列化模块502和通信模块503。接收模块501工作时,执行图4所示的重定向的方法中的步骤401,序列化模块502工作时,执行图4所示的重定向的方法中的步骤402,通信模块503工作时,执行图4所示的重定向的方法中的步骤403。
本申请实施例还提供了重定向装置600,该装置可以通过图3所示的计算设备300实现,还可以通过asic实现,或pld实现。上述pld可以是复杂可编程cpld,fpga,gal或其任意组合。该重定向装置600用于实现图4所示的重定向的方法中客户设备侧执行的方法。通过软件实现图4所示的重定向的方法时,重定向装置600及其包括的各个模块也可以为软件模块。
重定向装置600的组织结构示意图如图8所示,包括:反序列化模块601和通信模块602。反序列化模块601工作时,执行图4所示的重定向的方法中的步骤404,通信模块602工作时,执行图4所示的重定向的方法中的步骤404中接收数据包的动作以及步骤405和步骤406。
上述装置的相关描述可以对应参阅方法实施例部分的相关描述和效果进行理解,本处不做过多赘述。
本申请还提供了一种vdi,其组织结构示意图如图1所示,其由至少一个服务器与至少一个客户设备构成。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合 或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。