一般代码转换服务的制作方法

文档序号:13145446阅读:207来源:国知局
技术领域本公开通常涉及客户端-服务器通信,且更具体地涉及用于便于客户端-服务器通信的系统和方法。

背景技术:
用于与远程计算设备例如远程桌面协议(RDP)、独立计算架构(ICA)、互联网协议上的个人计算机(PCoIP)和虚拟网络技术(VNC)通信的很多已知的客户端侧协议(CSP)是已知的。在这些协议下,CSP的后端(CBE)可与服务器通信地耦合,且客户端可经由服务器在远程计算设备的操作系统内运行应用。来自在远程计算设备的操作系统内的应用的数据可直接或通过可选的协议经由客户端的CSP的前端(CFE)输入/输出设备(例如屏幕、扬声器等)显现,且类似地,输入可经由输入设备(例如键盘、鼠标、麦克风等)或通过用户输入客户端(UIC)的可选协议被接收。然而,使专用代理与CBE或CFE数据透视通过接口连接的其它方法可能是极其有利的和合乎需要的。附图说明图1示出具有服务兼容客户端的客户端-服务器计算机系统的例子。图2示出根据本公开的一个方面的具有服务兼容客户端的客户端-服务器计算机系统的例子。图3示出根据本公开的一个方面的代理机器的例子。图4示出根据本公开的一个方面的转换模块的例子。图5是示出计算设备的例子的概念方框图。图6示出网络系统的例子的简化图。图7示出根据本公开的一个方面的便于创建在代理机器和远程服务器计算设备之间的隧道和通道的过程的例子。图8示出根据本公开的一个方面的便于在服务不兼容客户端和远程服务器计算设备之间的通信的过程的例子。图9示出根据本公开的一个方面的客户端-服务器计算机系统的过程的例子。图10示出根据本公开的一个方面的将消息从与发送计算设备相关的格式转换成与接收计算设备相关的格式的过程的例子。图11示出根据本公开的一个方面的将以与客户端计算设备格式相关的格式接收的消息认证为与服务器计算设备相关的格式的过程的例子。图12示出根据本公开的一个方面的将以与服务器计算设备相关的格式接收的消息认证为与客户端计算设备相关的格式的过程的例子。图13示出客户端-服务器通信系统的例子的方框图。图14是示出配置成在远程桌面协议和超文本传输协议之间对数据转换代码的客户端-服务器通信系统的例子的方框图。图15A是示出建立引擎的操作的例子的流程图。图15B是包括用于建立引擎的操作的指令的设备的例子。图15C是包括用于建立引擎的操作的一个或多个模块的设备的例子。图16A是示出连接引擎的操作的例子的流程图。图16B是包括用于连接引擎的操作的指令的设备的例子。图16C是包括用于连接引擎的操作的一个或多个模块的设备的例子。图17是根据主题技术的各种方面的本地设备虚拟化系统的概念方框图。图18示出示例连接引擎。图19示出通过前端和后端接口的GSP连接。图20示出运行时间API框架。具体实施方式下面阐述的详细描述意欲作为主题技术的各种配置的描述,且并不意欲代表主题技术可被实施的唯一配置。附图合并在本文中并构成详细描述的一部分。为了提供对主题技术的彻底理解的目的,详细描述包括特定细节。然而,对本领域中的技术人员将明显,主题技术可在没有这些特定细节的情况下被实施。在一些实例中,公知的结构和部件在方框图形式中示出以便避免使主题技术的概念模糊。为了理解的容易,用相同的元件号码标记相似的部件。在一个方面中,主题技术涉及便于使专有远程服务器(例如运行实现MicrosoftRemoteProcedure的Microsoft操作系统的桌上型计算机)与非专有客户端计算设备(例如实现Linux操作系统的桌上型计算机)通过接口连接的CBE远程过程调用框架和过滤器(RPCFF)主机。RPCFF主机可便于从未配置成实现专有远程过程调用协议(例如MicrosoftRPC)的客户端计算设备接收对与配置成实现专有远程过程调用协议的远程服务器通信的请求。RPCFF主机可便于经由远程过程调用层来为客户端计算设备提供网络级认证。RPCFF主机可为在远程服务器上的逻辑角色提供数据路径而不实现在专有远程过程调用协议中的服务器堆栈。逻辑角色可配置成实现专有远程过程调用协议。RPCFF主机可为在客户端计算设备和逻辑角色之间的数据路径定义通信语法。通信语法可不同于专有远程过程调用协议。通信语法可涉及在通用通信协议(例如安全壳)和专有远程过程调用协议之间转换。RPCFF主机可便于根据通信语法经由数据路径在客户端计算设备和逻辑角色之间传递数据。在一个实现中,主题技术涉及远程网关客户端代理。CBE代理帮助服务不兼容计算设备与远程服务器计算设备和在服务中的机器——包括基于网络的过程调用接口和网络接口——进行通信。客户端-服务器计算机系统时常被实现来允许客户端计算设备的用户访问存储在位于远离客户端计算设备处的服务器计算设备上的数据。然而,客户端-服务器计算机系统的一个缺点是,特定的客户端计算设备可能不能够与特定的服务器计算设备通过接口连接,如果客户端计算设备缺乏与服务器计算设备相关的操作系统。例如,实现专用操作系统例如MicrosoftWindowsServer2008的服务器计算设备可能只能够与实现某个微软操作系统例如WindowsXP或Vista的客户端计算设备交互作用。实现其它操作系统例如GoogleAndroid或AppleiOS操作系统的客户端计算设备可能不能够服务器计算设备交互作用。如前文所示的,在本领域中所需的是允许实现任意操作系统的客户端计算设备与实现专用操作系统的服务器技术设备充分交互作用的技术。已知客户端-服务器计算系统的缺点包括,这些系统很重地依赖于与服务器计算设备相关的专有协议。例如,远程过程调用(RPC)是微软专有协议。只有由微软供应的具有RPC的操作系统可使用任何微软角色,例如终端服务网关(TSGW)。这需要代码的非常大的覆盖区。一些缺点是,只有微软提供解决方案,代码尺寸很大,以及通过这个机制的访问有意地限于微软产品。在一个方面中,主题技术除了别的以外还提供可与微软的远程桌面网关/终端服务网关(RDGW/TSGW)服务通过接口连接的客户端解决方案,这暗示微软的RPC被使用。因此在理论上,不可能使非微软客户端与微软的TSGW通过接口连接,因为微软客户端没有微软的RPC能力。它因此是“桥接”RPC要求而实际上没有RPC软件堆栈的主题技术的一个方面的固有性质。这通过对具有数据结构的所有输入和输出分组“硬编码”来实现。只有数据有效载荷改变。非有效载荷信息保持不变。这在行业中被称为“专用分组过滤器”。在一个方法中,RPC用于实现TSGW/RDGW服务访问。本文所述的一个可选方案将涉及专用分组过滤器或微软RPC克隆。在一个方面中,主题技术的优点和益处可包括用于通过在具有非微软客户端的微软环境中的防火墙使数据隧道贯穿的RPC的接口技术。此外,在没有使用专用分组过滤器的RPC堆栈的情况下通过RPC的使用来使数据隧道贯穿的能力是另一目的。作为结果,主题技术的方面可提供使客户端能够在公司防火墙内使用标准微软服务或角色或在传统上需要客户端计算设备有与服务器计算设备“兼容”的操作系统的服务或角色来访问的明朗的竞争优点。客户端-服务器计算机系统的第一例子图1示出客户端-服务器计算机系统100的例子。如所示,计算机系统100包括对防火墙120、服务125和远程服务器计算设备160的进行CBE访问的服务兼容客户端110。服务125包括绑定接口130、基于网络的过程调用接口140和网关接口150。在一个方面中,服务125是微软服务,基于网络的过程调用接口140是远程过程调用(RPC)服务器,且网关接口150是终端服务网关(TSGW)或远程桌面网关(RDGW)服务器。服务器兼容客户端110可实现MicrosoftWindows操作系统,例如XP或Vista。服务兼容客户端110可以是膝上型计算机、桌上型计算机、平板计算机、个人数字助理(PDA)、移动电话或任何类似的设备。服务兼容客户端110可实现与服务125兼容的操作系统。如所示,服务兼容客户端110通过防火墙120与绑定接口130连接,防火墙120可起作用来基于一组规则创建或拒绝网络连接。在一个方面中,在服务兼容客户端110和服务125之间的通信在RPC中实现。如所示,绑定接口130包括存储器132。存储器132包括绑定进模块134和绑定出模块136。绑定进模块134和绑定出模块136可在所有软件、所有硬件或软件和硬件的组合中实现。如所示,绑定进模块134从服务兼容客户端110接收以与服务125的基于网络的过程调用通信相关的格式(例如RPC,如果服务125实现微软服务器)的输入消息并将这些输入消息传输到基于网络的过程调用接口140。绑定出模块136从基于网络的过程调用接口140接收消息并将这些消息提供到服务兼容客户端110。在一个方面中,服务125是微软服务,且穿过绑定进模块134和绑定出模块136的消息是在RPC中。在一个方面中,基于网络的过程调用接口140是RPC服务器,其实现RPC协议以允许在来自服务兼容客户端110的消息中的命令在远程服务器计算设备160上被执行。在一个方面中,在来自服务兼容客户端110的消息中的命令使用网关接口150被绑定到远程服务器计算设备160的地址空间。在一个方面中,网关接口150实现微软终端服务网关(TSGW)、微软远程桌面网关(RDGW)或与服务器计算设备160的操作系统相关的类似协议。在一个方面中,在服务兼容客户端110和远程服务器计算设备160之间创建隧道170,便于在服务兼容客户端110和远程服务器计算设备160之间的通信。在一个方面中,隧道170包括连接服务兼容客户端110与远程服务器计算设备160的隧道175。在一个方面中,存在使用单个隧道170和多个隧道175连接到单个服务兼容客户端110的多个远程服务器计算设备160。客户端-服务器计算机系统的第二例子图2示出根据本公开的一个方面的具有服务兼容客户端210的客户端-服务器计算机系统的例子。如所示,计算机系统200包括服务兼容客户端210、可包括GSP的代理机器220、防火墙120、服务125和远程服务器计算设备160。服务125包括绑定接口130、基于网络的过程调用接口140和网关接口150。当作为完整的服务被提供时,防火墙120可位于代理机器220之前。图19示出通过前端和后端接口的GSP连接的例子。防火墙可存在于GSP前端和客户端协议之间。防火墙可存在于GSP后端和GSP兼容服务器之间。在一个方面中,服务125是微软服务,基于网络的过程调用接口140是远程过程调用(RPC)服务器,且网关接口150是终端服务网关(TSGW)或远程桌面网关(RDGW)服务器。服务器兼容客户端110可实现非MicrosoftWindows操作系统,例如AppleiOS或GoogleAndroid。网关接口150可提供允许经授权的远程客户端计算设备连接到在内部公司或专用网络上的网络资源的角色服务。网络资源可以是具有被启用的远程桌面协议(例如MicrosoftRemoteDesktop)的服务器或计算机。网关接口150可使用远程桌面协议(RDP)通过HTTPS来建立在远程客户端计算设备和远程客户端计算设备试图访问的内部网络资源之间的安全加密连接。网关接口150可以给客户端计算设备提供对所有网络资源的访问。可选地,网关接口150可以给客户端计算设备提供对客户端计算设备试图经由例如点对点RDP连接来访问的仅仅一个或多个网络资源的访问。在一个方面中,远程过程调用可以是过程间通信,其允许计算机程序使子例程或过程在另一地址空间中(通常在共享网络上的另一计算机上)执行而编程员不为了这个远程交互作用而明确地对细节编码。例如,客户端计算设备可使子例程或过程在服务器的地址空间中执行。在一个实现中,编程员可以写基本上相同的代码,而不管子例程对执行程序是本地的还是远程的。在一个例子中,远程过程调用可包括远程调用或远程方法调用。在一个示例实现中,远程过程调用可由客户端发起,客户端可将请求消息发送到已知的远程服务器以使用所提供的参数执行规定过程。远程服务器可将响应发送到客户端,且应用继续其过程。在一个例子中,服务器可从客户端一次接收一个远程过程调用。可选地,客户端可将一个或多个异步请求发送到服务器,例如一个或多个XHTTP调用。(4)在服务器上的本地操作系统可将进入的分组传递到服务器。在远程过程调用和本地调用之间的一个差异是,由于不可预知的网络问题,远程过程调用可在一些情况下失败。在一些实现中,远程过程调用的调用者可处理这样的失败而不知道远程过程是否实际上被调用。在一些例子中,可在谨慎地写入的低级子系统中使用远程过程调用。在一个方面中,在远程过程调用期间的一序列事件可如下。然而,也可结合主题技术来使用在远程过程调用期间的其它序列的事件。(1)客户端可调用客户端存根。该调用可以是本地过程调用。参数可被推进到OSI堆栈。(2)客户端存根可将参数装入消息内(例如使用编组)并进行系统调用以发送该消息。(3)客户端的本地操作系统可将消息从客户端发送到服务器存根。(5)最后,服务器存根可调用服务器过程。回复可跟随例如在反方向上的相同步骤。在一个例子中,存根可以是用于转换在远程过程调用期间传递的参数的一条代码。远程过程调用在一个例子中可允许客户端远程地调用在服务器上的过程。客户端和服务器可使用不同的地址空间,所以在函数调用中使用的参数的转换可能必须被执行以允许在远程过程调用期间传递的参数的值被使用,因为到存储器的指针可指向在客户端上和在服务器上的不同数据。客户端和服务器甚至对于简单的参数(例如对于整数,大字节序相对于小字节序)也可使用不同的数据表示。存根用于执行参数的转换,所以来自客户端的远程过程调用在服务器看来像服务器的本地过程调用,反之亦然。在一个实现中,存根库安装在客户端和服务器侧上。客户端存根负责在函数调用中使用的参数的转换和在函数的执行之后从服务传递的结果的去转换。服务器骨架——在服务器侧上的存根——负责由客户端传递的参数的去转换和在函数的执行之后结果的转换。存根可手动或自动地产生。手动地:在这个方法中,远程过程调用实施者可提供一组转换函数,编程员可从这组转换函数构造存根。自动地:接口描述语言(IDL)可用于定义在客户端和服务器之间的接口。例如,接口定义具有指示每个变元是否被输入、输出或这两者的信息,只有输入变元可能需要从客户端复制到服务器,且只有输出元素可能需要从服务器复制到客户端。在一个例子中,在远程过程调用中,客户端和服务器经由网络(例如互联网、内联网或虚拟专用网)、经由远程桌面协议连接(例如经由MicrosoftRemoteDesktop经由CitrixIndependentComputingArchitecture或经由VMWare)、经由有线连接或经由无线连接来连接。在一个例子中,基于网络的过程调用可以是经由网络(例如互联网)从客户端传输到服务器的远程过程调用。客户端和服务器可经由网络来连接。服务不兼容客户端210与代理机器220耦合,代理机器220与绑定接口130通信。绑定接口130可起作用来将专有(例如)客户端接口绑定到专用(例如)服务器接口。例如,绑定接口130可将客户端接口绑定到RPC服务器接口。在第一方面中,代理机器220是服务不兼容客户端210的部件。在第二方面中,代理机器220可位于防火墙的与服务兼容客户端210相同的一侧上的服务不兼容客户端210外部,如所示。在第三方面中,代理机器220位于防火墙120内。在第四方面中,代理机器220是服务125的部件。在第五方面中,代理机器220位于防火墙的与服务125但不是服务125的部件相同的一侧上。本领域中的技术人员可认识到,代理机器的其它位置是可能的并与主题技术一致。服务不兼容客户端210可以是膝上型计算机、桌上型计算机、平板计算机、个人数字助理(PDA)、移动电话或任何类似的设备。服务不兼容客户端210可实现与服务125不兼容的任意操作系统。例如,如果服务125实现微软服务器,则服务不兼容客户端210可实现AppleiOS或GoogleAndroid操作系统。如所示,服务不兼容客户端210与代理机器220连接。在一个方面中,代理机器220在服务不兼容客户端210内部,且在代理机器220与服务不兼容客户端210之间的连接是硬线或其它内部连接。在另一方面中,代理机器220在服务不兼容客户端210外部,且本机互联网协议(IP)连接在服务不兼容客户端210与代理机器220之间实现。在一个方面中,服务不兼容客户端210可以只使用本机IP通信进行通信,且代理机器220对服务不兼容客户端210透明地操纵与服务125的通信。代理机器220也与绑定接口130连接。在一个方面中,服务不兼容客户端210使用本机IP通信技术或类似的通用格式与代理机器通信。然而,服务125设计成接受以服务125的基于网络的过程调用通信格式(例如RPC,如果服务125正运行微软服务器)的消息。代理服务器220基于对服务125的基于网络的过程调用格式的编码将消息从通用格式(例如本机IP通信)转换成服务125的基于网络的过程调用格式(例如RPC)。下面结合图3-4更详细地描述代理机器220的操作。如所示,绑定接口130包括存储器132。存储器132包括绑定进模块134和绑定出模块136。绑定进模块134和绑定出模块136可在所有软件、所有硬件或软件和硬件的组合中实现。如所示,绑定进模块134从代理机器220接收以与服务125的基于网络的过程调用通信相关的格式的输入消息并将这些输入消息传输到基于网络的过程调用接口140。绑定出模块136从基于网络的过程调用接口140接收消息并将这些消息提供到代理机器220。代理机器220然后将这些消息转换成通用格式并将它们提供到服务不兼容客户端210。在一个方面中,服务125是微软服务,且穿过绑定进模块134和绑定出模块136的消息是在RPC中。在一个方面中,代理机器220使用RPC-过滤器来建立网关接口150。一旦网关接口150被建立或设立,网关接口150就也可用于传递PRC命令,包括OPNUM命令。在一个方面中,基于网络的过程调用接口140是是RPC服务器,其实现RPC协议以允许在来自代理机器220的消息中的命令在远程服务器计算设备160上被执行。在一个方面中,在来自代理机器220的消息中的命令被绑定到远程服务器计算设备160的地址空间。在一个方面中,网关接口150实现微软终端服务网关(TSGW)、微软远程桌面网关(RDGW)或与服务器计算设备160的操作系统相关的类似协议。如果网关接口150实现TSGW,则网关接口150可使用OPNUM——在TSGW规范中所述的专用语法——来交换数据。OPNUM操作经由专用RPC分组过滤器而出现。PRC消息可使用数据交换或修改数据从存储器表示的另一技术绑定到TSGW消息。远程服务器计算设备160可包括远程桌面协议(RDP)服务器作为目标主机。代理机器120可包括RPC分组过滤器的功能以允许客户端将数据传输到服务器。在一个方面中,RPC消息结合交换数据语音(IDL)来使用用于数据交换的编组。RPC消息可使用编组或修改数据的存储器表示的另一技术绑定到TSGW消息。远程服务器计算设备160可包括远程桌面协议(RDP)服务器作为目标主机。网关接口150可以是任何网关接口。例如,网关接口150可包括公共网关接口、web服务器网关接口或简单公共网关接口。在一个例子中,网关接口150可具有两侧:网关接口150的服务器侧和网关接口150的客户端侧。网关接口150的服务器侧可调用网关接口150的客户端侧,提供环境信息加上回调函数(使网关接口150的客户端侧用于将头部传送到网关接口150的服务器侧),并作为回报提供内容(例如从远程服务器计算设备160)。在一个方面中,编组可以指用于将对象的存储器表示转换成适合于存储或传输的数据格式的技术。当必须在计算机程序的不同部分之间或从一个程序或机器到另一程序或机器(例如从客户端到服务器或从服务器到客户端)移动数据时,可使用编组。在一个实现中,编组可类似于串行化并可用于使用对象——在这种情况下是串行化对象——传递到远程对象。编组在一些情况下可使用要传递的定制/复杂对象而不是基元来简化复杂的通信。在一个方面中,RPC分组过滤器可由不访问用于创建RPC命令以传输到服务器的RPC堆栈的客户端(例如客户端210)利用。客户端可提供客户端计划要传输到代理机器220的信息。代理机器220可组合客户端计划要传输的信息与RPC头部(例如在开放系统互连模型中的会话层、即第5层中)。作为结果,不修改或没有能力修改在开放系统互连(OSI)模型中的RPC层的客户端可能仍然能够经由代理的操作来填充在RPC传输中的字段。在RPC分组过滤器中的OSI模型的下层可包括预填充的RPC头部数据。在RPC分组过滤器中的OSI模型的上层可包括客户端数据。代理机器220可包括RPC分组过滤器允许客户端将数据传输到服务器的功能。OSI模型可用于表示数据通信和联网。在一个方面中,OSI模块可包括下面的层:(1)物理层,(2)数据链路层,(3)网络层,(4)传输层,(5)会话层,(6)表示层,以及(7)应用层。物理层(第1层)可负责传输介质(例如电缆、电线或无线电)的规范和进入传输介质内的电信号。物理层可包括下列功能中的一个或多个:(1)向网络提供电气和物理接口,(b)规定介质的类型,或(c)规定信号如何在介质内传输。示例物理层协议包括IEEE802.11、IEEE802.15、和通用串行总线(USB)。数据链路层(第2层)可创建放置在传输介质上的实体(分组或帧)。数据链路层可包括下列功能中的一个或多个:(a)控制对通信通道的访问,(b)控制在通信通道内的数据的流动,(c)将数据组织成逻辑帧,(d)识别在网络上的特定计算机,或(e)检测通信错误。示例数据链路层协议包括帧中继和网络交换机。网络层(第3层)可负责对正确的计算机或正确的网络得到信息。网络层可包括下列功能中的一个或多个:(a)将信息移动到正确的地址,(b)组装和分解分组或帧,(c)确定寻址和路由,或(d)确定最佳路径。示例网络层协议包括互联网协议(IP)和AppleTalk。传输层(第4层)可负责提供包括错误校正的额外连接服务。传输层可包括下列功能中的一个或多个:(a)控制数据流,例如显示下行传输,如果缓冲器将要溢流,(b)分裂和分解分组,(c)确认成功的传输,或(d)校正错误的传输。示例传输层协议包括传输控制协议(IP)和用户数据报协议(UDP)。会话层(第5层)可负责会话的建立、终止和其它机制。在一个例子中,会话可包括协定以在两个实体(例如模块或机器)之间传递。会话层可包括下列功能中的一个或多个:(a)建立并维持连接,(b)处理名称识别,(c)通过将检查点放置在数据流内来处理数据传输的同步,使得如果被中断,则数据传输可继续它停止的地方,或(d)操纵远程过程调用,例如在远程计算机上运行程序。示例会话层协议包括RPC、网络基本输入/输出系统(NetBIOS)、会话通告协议(SAP)、点对点隧道协议(PPTP)和套接字安全(SOCKS)。会话层(第6层)可负责提供用于向应用层(第7层)呈递数据的语法和文法规则,包括编码、解码和否则转换数据。表示层可包括下列功能中的一个或多个:(a)维持字符组的表示(例如美国信息交换标准代码(ASCII)或单码,(b)数据的压缩和解压缩,例如用于数据链路层的通信协议,(c)数据的加密或解密,例如经由数据加密标准(DES)、RSA或安全套接字层(SSL)协议中的一个或多个,(d)实现位顺序转换,(e)实现字节顺序转换,或(f)维持文件结构。示例表示层协议包括SSL、传输层安全(TLS)、外部数据表示(XDR)或多用途互联网邮件扩展(MIME)。应用层(第7层)可负责向计算设备(例如客户端或服务器)和在计算设备上运行的应用提供网络服务。应用层可包括下列功能中的一个或多个:(a)提供在计算设备的操作系统和网络或通信路径之间的接口,或(b)提供网络服务例如文件传输、邮件服务或终端仿真。示例应用层协议包括超文本传输协议(HTTP)、安全壳(SSH)、文件传输协议(FTP)、会话发起协议(SIP)、网络时间协议(NTP)、实时时间传输协议(RTP)、BitTorrent协议和SPDY。在一个方面中,隧道270在代理机器220和远程桌面计算设备160之间创建,便于在代理机器220和远程桌面计算设备160之间的通信。在一个方面中,隧道270包括连接代理机器220与远程服务器计算设备160的通道275。在一个方面中,存在使用单个隧道270和多个通道275连接到单个代理机器220的远程服务器计算设备160。在一个方面中,主题技术的代理机器220可包括下面的要素:(1)包括NTLMKerberos(NTLAN管理器/Kerberos)的被称为“credssp”的NLA(网络层认证)。(2)HTTPS/SSL(超文本传输协议安全/安全套接字层)-基于加密的安全。(3)RPC认证-提供在PRC层处的NLA。(4)RPC桥/过滤器-这在没有RPC的情况下提供堆栈升高和降级。(5)隧道创建-通过RPC桥/过滤器的使用。(6)通道创建-通过RPC桥/过滤器的使用。(7)数据交换-通过RPC桥/过滤器的使用。在一个方面中,堆栈升高和降级可以指使用在OSI模型中的较高层来例如经由隧道(例如隧道170或隧道270)交易下层数据。由防火墙(例如防火墙120)分离的两个模块(例如代理机器220和远程服务器计算设备160)可使用在OSI模型中的较高层的通信协议来交易与在OSI模型中的较低层相关的数据。例如,互联网协议(IP)数据(与网络层——第3层——相关)可经由超文本传输协议(HTTP,与应用层——第7层——相关)传输技术被开放交易。在OSI堆栈模型的一个实现中,较低编号层数据可以不通过较高编号层协议来传输。因此,堆栈升高和降级可以在较低层数据可以不经由较高层协议来传输的程度上向OSI堆栈提供矛盾。作为堆栈升高和降级的结果,OSI层堆栈可代表数据的双向流,而不是数据的单向流,如在一些其它实现中的。在OSI模型的一般操作(没有堆栈升高和降级)下,较低编号层访问较高编号层,但较高编号层不访问较低编号层。例如,在OSI模型的一般操作下,物理层(第1层)可知道哪个数据链路层(第2层)协议被实现,但反过来不是如此。在堆栈升高和降级下,数据链路层(第2层)可知道哪个物理层(第1层)协议被实现,反之亦然。作为结果,OSI层堆栈可代表数据的数据的双向流,而不是数据的单向流(只从低编号层到高编号层)。此外,如果m和n代表OSI模型堆栈的层号,其中m<n,在堆栈升高和降级下,层号m(较低编号层)的数据块可经由层号n(较高编号层)被开放交易。虽然在一般实现中在第n层处的协议包括第n+l到第7层的协议ID,使用从第m层到第n层的堆栈升高和降级,其中m<n,第n层的数据包括第m+l到第7层的协议ID。在主题技术的一个方面中,NLA可认证访问TSGW服务器的用户;HTTPS/SSL可用作基本传输协议;以及RPC认证可以是RPC过滤器的组成部分。根据一个方面,需要确保给定用户有访问RPC层的许可;RPC桥可以是向被称为TSGW的逻辑角色/服务提供数据路径的方法。隧道创建是使用通过防火墙创建“漏洞”的RPC来对TSGW设置的命令的一个例子。通道创建是使用创建到目标主机的逻辑“通道”的RPC来对TSGW设置的命令的一个例子。根据一个方面,正是通过通道来从防火墙内的目标主机来回传输数据。数据交换可以是使用用于通过TSGW服务器来发送或接收数据的通道的过程。在一个例子中,当一个网络协议(交付协议)封装不同的有效载荷协议时,可使用隧道贯穿协议(例如隧道270和通道257的隧道贯穿协议)。通过使用隧道贯穿,计算机系统200可例如通过不兼容的交互网络来传送有效载荷或通过不可信网络来提供安全路径。在一个例子中,隧道可与分层协议模型例如OSI或TCP/IP的模型对照。交付协议在一些情况下可以比有效载荷协议在模型(例如OSI模型)中的更高级别处或在相同级别处操作。隧道贯穿协议可使用数据加密来通过公共网络(例如互联网)来传送不安全的有效载荷协议,从而提供例如虚拟专用网(VPN)功能。例如,IPsec协议包括端对端传送模式,但也可通过可信安全网关在隧道贯穿模式中操作。在一个例子中,安全壳(SSH)隧道可包括通过SSH协议连接来创建的加密隧道。SSH隧道可用于通过加密隧道在网络上传送未加密的业务。例如,Microsoft机器可使用服务器消息块(SMB)协议——一种未加密协议——来共享文件。在一个例子中,在通过互联网远程地安装的Microsoft文件系统中,在连接上窃听的窃听者可看到所传输的文件。然而,为了安全地安装文件系统,可建立通过加密通道将所有SMB业务按规定路线发送到远程文件服务器的SSH隧道。即使SMB协议本身可以不包含加密,加密SSH通道仍可提供安全性,SMB协议数据通过该加密SSH通道行进。在一个例子中,可通过配置SSH客户端以将指定的本地端口转发到在远程机器上的端口来建立SSH隧道。一旦SSH隧道被建立,SSH客户端就可连接到指定的本地端口以访问网络服务。本地端口不需要有与远程端口相同的端口号。SSH隧道可提供绕过禁止某些互联网服务的防火墙的手段,只要站点允许外出的连接。例如,组织可禁止用户直接访问互联网网页(端口80)而不经过组织的代理过滤器(其给组织提供监控并控制用户通过web看到什么的手段)。但用户可能不希望使他们的web业务被组织的代理过滤器监控或封锁。如果用户可连接到外部SSH服务器,则他们可创建SSH隧道以将在他们的本地机器上的给定端口转发到在远程web服务器上的端口80。一些示例SSH客户端支持允许SOCKS4/5代理的创建的动态端口转发。作为结果,应用可配置成使用本地SOCKS代理服务器,比创建到单个端口的1SSH隧道给予应用更大的复杂性。SOCKS可使客户端摆脱只连接到预定远程端口和服务器的限制。如果应用不支持SOCKS,则我们可使用“socksifier”来将应用重定向到本地SOCKS代理服务器。在一个例子中,隧道贯穿可用于使用防火墙在正常情况下封锁的协议来“偷偷穿越”防火墙,但在防火墙不封锁的协议例如超文本传输协议(HTTP)内部“被隐蔽”。如果防火墙策略不特别排除这种“隐蔽”,这样的隐蔽可起作用来回避预期防火墙策略。另一示例基于HTTP的隧道贯穿方法使用HTTPCONNECT方法。客户端可将HTTPCONNECT命令发出到HTTP代理。代理接着产生到特定的服务器端口的TCP连接,并在那个服务器端口和客户端连接之间分程传递数据。因为HTTPCONNECT可创建安全漏洞,有CONNECT能力的HTTP代理可限制对CONNECT方法的访问。代理在一个例子中允许只访问特定的经授权服务器的白名单。本机客户端隧道服务在特定的实施方式中,客户端(例如客户端210)可以是主要包括具有为web浏览器产生的CFE业务的web浏览功能的瘦客户端。可提供本机客户端隧道贯穿服务以使来自客户端的CBE业务能够通过隧道贯穿(例如VPN)机制来访问主机,该机制否则可以不是在仅浏览器环境中可用的。本机客户端隧道贯穿服务可提供使用在浏览器中找到的本机客户端协定在客户端的浏览器(例如GOOGLECHROME)内创建隧道贯穿协议(例如对于VPN)的手段。NaCl隧道贯穿服务可实现端口转发机制,其看来好像连接到本地主机但经由隧道贯穿协议将数据重新传输到可位于防火墙(例如防火墙120)后面的适当的目标主机(例如远程服务器计算设备160)。NaCl隧道贯穿服务可实现从浏览器到在防火墙内的目标主机的端对端通信而不需要在浏览器之外的外部功能。NaCl隧道贯穿服务可包括多个要素。NaCl隧道贯穿服务可包括对嵌入的解决方案的本机CHROME库支持。该服务可包括用于使用户指定目标主机、端口转发、隧道协议设备和隧道贯穿协议的类型的对话菜单。该服务还可包括通过端口转发或隧道贯穿设备的SSH隧道贯穿支持(例如以使本地连接能够通过远程防火墙使用SSH协议连接到远程主机)。该服务还可包括通过端口转发或隧道贯穿设备的TSGW隧道贯穿支持(例如以使本地连接能够通过远程防火墙使用TSGW协议连接到远程主机)。NaCl隧道贯穿服务可执行下面的步骤。首先,HTML客户端可装入并执行具有NaCl规范的HTML脚本。客户端的用户可指定(例如经由对话菜单)包括隧道的证书的连接信息。可创建端口转发或隧道设备。客户端的浏览器可接着通过端口转发或隧道设备连接到目标主机。这些步骤可允许本地连接,其通过防火墙使用隧道协议提供对主机的远程访问。这可例如从浏览器内提供全功能VPN架构,使用适当的隧道协议实现到或来自在防火墙内的任何机器的访问。代理机器的例子图3示出根据本公开的一个方面的代理机器220的例子。如所示,代理机器220包括处理器305、网络接口卡310和由总线或互连315连接的存储器320。处理器315起作用来执行从存储器320或其它存储位置提供到处理器305的指令。网络接口卡310允许代理服务器220连接到网络,例如互联网、蜂窝网络、局域网(LAN)或内联网。存储器320存储可由处理器305实现或修改的数据和指令。如所示,存储器320包括建立模块325、转换模块340、客户端证书345和服务证书350。建立模块325配置成发起在服务不兼容客户端210、代理机器220和服务225之间的通信。如所示,建立模块325包括创建隧道模块330和创建通道模块335。创建隧道模块330便于在代理机器220和服务125之间的隧道270的创建。创建通道模块便于在隧道270内的通道275的创建。虽然只示出一个通道275,在一个方面中,可创建多个通道275。在一个方面中,通道275连接代理机器220与远程服务器计算设备160。下面结合图7更详细描述建立模块的操作。转换模块340便于消息在用于与服务不兼容客户端210通信的通用格式和服务125的基于网络的过程调用格式(例如RPC)之间的转换。在一个实施方式中,服务的基于网络的过程调用格式是RPC,且命令的RPC编码和数据与转换模块340存储在一起以允许转换模块在通用格式和RPC之间转换消息。如所示,存储器320还包括客户端证书345和服务证书350。在一个方面中,客户端证书345包括用户名、密码、域名和主机名。在一个方面中,服务证书350包括服务的用户的有效用户名、与用户名相关的有效密码、域名和主机名。代理机器220和/或用于建立代理机器220的模块可存在于(例如嵌在)路由器内用于通过网关服务(例如TSGW服务或服务125)建立端口转发或虚拟专用网(VPN)。在一些实现中,RPC代码可以在运行在没有代理机器的情况下操作的非专有(例如非微软)操作系统或运行RPC的客户端设备上不是可用的,或这样的客户端可能需要大量代码。因此在一个方面中,由于所需代码的数量和RPC代码在非专有(例如非微软)操作系统上是不可用的事实,使代理机器嵌在路由器中用于通过网关服务建立VPN或端口转发目前是不可能的。应注意,TSGW是网关协议的一个例子。可结合主题技术来使用任何其它网关协议(例如专有网关协议)。此外,在一些方面中,主题技术可包括对RPC层的任何修改、增加或省略。代理可用于转换CFE业务、CBE业务或CFE业务和CBE业务。转换模块的例子图4示出根据本公开的一个方面的转换模块340的例子。如所示,转换模块325包括来自客户端的以通用格式的请求405、待发送到客户端的通用格式数据410、服务125的基于网络的过程调用接口的编码415、待发送到服务的数据的编码420和从服务接收的已编码数据425。在一个方面中,服务125的基于网络的过程调用接口在RPC中。在一个方面中,转换模块340包括来自服务不兼容客户端210的以通用格式的请求405。转换模块340使用服务的基于网络的过程调用接口的编码415来对以基于网络的过程调用通信格式的请求405编码,导致待发送到服务125的数据的编码420。在一个方面中,转换模块340然后便于将这个编码420发送到服务125。在一个方面中,转换模块340从服务125接收已编码数据425。转换模块340然后基于服务125的基于网络的过程调用接口的编码415将来自服务125的已编码数据425解码。结果是可被发送到服务不兼容客户端210的通用格式数据410。在一个方面中,转换模块340然后便于将通用格式数据410发送到服务不兼容客户端210。计算设备的例子图5是示出计算设备的例子的概念方框图。计算设备500可以是例如服务兼容客户端110、服务不兼容客户端210、代理机器220、绑定接口130、PC服务器140、网关接口150或远程服务器计算设备160。计算设备可包括一个或多个计算设备。计算设备500可包括处理系统502。处理系统502能够通过总线504或其它结构或设备与接收机506和发射机508通信。应理解,可对所公开的配置利用除了总线以外的通信装置。处理系统502可产生命令、消息和/或提供到发射机509用于通信的其它类型的数据。此外,命令、消息和/或其它类型的数据可在接收机506处被接收到并由处理系统502处理。处理系统502可结合用于执行指令的通用处理或专用处理器来操作,并且还可包括用于存储软件程序的数据和/或指令的机器可读介质519。可存储在机器可读介质510和/或519中的指令由处理系统502可执行来控制并管理对各种网络的访问以及提供其它通信和处理功能。指令还可包括由处理系统502对各种用户接口设备例如显示器512和小键盘514可执行的指令。处理系统502可包括输入端口522和输出端口524。输入端口522和输出端口524中的每个可包括一个或多个端口。输入端口522和输出端口524可以是相同的端口(例如双向端口)或可以是不同的端口。处理系统502可使用软件、硬件或这两者的组合来实现。作为例子,处理系统502可使用一个或多个处理器来实现。处理器可以是通用微处理器、微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、可编程逻辑器件(PLD)、控制器、状态机、选通逻辑、分立硬件部件和/或可执行计算或信息的其它操纵的任何其它适当的设备。本领域中的技术人员将认识到为多么好地实现处理系统502的所述功能。软件应广泛地被解释为意指指令、数据或其任何组合,不管是被称为软件、估计、中间件、微代码、硬件描述语言还是其它。指令可包括代码(例如以源代码格式、二进制代码格式、可执行代码格式或代码的任何其它适当格式)。指令可由例如计算设备(例如客户端计算设备、HTTP服务器、web服务器)或由处理系统(例如操作系统、HTTP服务器、web服务器)可执行。指令可以是例如包括代码的计算机程序。计算机可读介质可以是一个或多个机器可读介质。机器可读介质(例如510)可包括在操作系统外部的存储器,例如随机存取存储器(RAM)550、闪存530、只读存储器(ROM)540、可编程只读存储器(PROM)、可擦除PROM(EPROM)、寄存器、硬盘、可移动盘、CD-ROM、DVD或任何其它适当的存储设备。机器可读介质519还可具有易失性存储器和非易失性存储器。机器可读介质519可以是非临时机器可读介质。非临时机器可读介质可包括一个或多个易失性和/或非易失性存储器。机器可读介质519可包括集成到处理系统内的存储器,例如可以是对专用集成电路(ASIC)的情况。存储器可以是机器可读介质(例如510或519)或其一部分。根据本公开的一个方面,机器可读介质是使用指令来编码或存储的计算机可读介质,并且是定义在指令和计算设备的其余部分之间的结构和功能相互关系的计算元件,所述相互关系允许指令的功能被实现。在一个方面中,机器可读介质是非临时机器可读介质、机器可读存储介质或非临时机器可读存储介质。在一个方面中,机器可读介质是计算机可读介质、非临时计算机可读介质、计算机可读存储介质或非临时计算机可读存储介质。接口516可以是任何类型的接口并可存在于图5所示的任何部件之间。接口516还可以是例如外部世界的接口(例如互联网网络接口)。收发机块507可代表一个或多个收发机,且每个收发机可包括接收机506和发射机509。在处理系统502中实现的功能可以在接收机506的一部分、发射机509的一部分、机器可读介质510的一部分、显示器512的一部分、小键盘514的一部分或接口516的一部分中实现,反之亦然。在一个方面中,计算设备可包括图5所示的仅仅一些或全部元件。计算设备可包括未在图5中示出的其它元件。计算设备可包括多于一个相同的元件。网络系统的例子图6示出根据本公开的方面的网络系统的例子的简化图。计算机网络系统600可包括经由网络606与一个或多个服务器计算设备604(例如服务器例如HTTP服务器、web服务器、企业服务器等)通信的一个或多个客户端计算设备602(例如膝上型计算机、桌上型计算机、平板计算机、PDA、移动电话等)。在一个方面中,服务器计算设备604配置成允许远程会话(例如远程桌面会话),其中用户可通过从客户端计算设备602登录到服务器计算设备604上来访问在服务器计算设备604上的应用和文件。这样的连接可使用几种公知的技术中的任一个例如在基于Windows的服务器上的远程桌面协议(RDP)或在本文对非基于Windows的服务器公开的技术来建立。在本公开的一个方面中,客户端计算设备602可以是最终用户计算设备,例如膝上型或桌上型计算机。在一个方面中,服务器计算设备604可以是终端服务网关(TSGW)服务器或远程桌面网关(RDGW)服务器。作为例证而不是限制,客户端计算设备602可代表计算机、移动电话、膝上型计算机、平板计算机、瘦计算设备、个人数字助理(PDA)、便携式计算设备、虚拟机或具有处理器的适当设备。在一个例子中,客户端计算设备602是智能电话(例如iPhone、Android电话、Blackberry等)。在某些配置中,客户端计算设备602可代表音频播放器、游戏控制台、照相机、摄像机、音频设备、视频设备、多媒体设备或能够支持到远程计算设备的连接的设备。在有利的例子中,客户端计算设备602是移动的。在另一有利的例子中,客户端计算设备602是手持设备。在另一例子中,客户端计算设备602可以是静止的。在一个例子中,客户端计算设备602可以是具有至少处理器和存储器的设备,其中客户端计算设备602的存储器的总数量小于在服务器计算设备604中的存储器的总数量。在有利的例子中,客户端计算设备602没有硬盘。在一个有利的方面中,客户端计算设备602具有比由服务器计算设备604支持的显示器小的显示器。在一个方面中,服务器计算设备604可代表计算机、膝上型计算机、计算设备、虚拟机(例如虚拟机)、桌面会话(例如微软终端服务器)、已公布应用(例如微软终端服务器)或具有处理器的适当设备。在一个方面中,服务器计算设备604可以是静止的。在一个方面中,服务器计算设备604可以是移动的。在某些配置中,服务器计算设备604可以是可代表计算设备的任何设备。在一个方面中,服务器计算设备604可包括一个或多个计算设备。在一个例子中,当第一设备不直接连接到第二设备时,第一设备对第二设备是远程的。在一个例子中,第一远程设备可通过通信网络例如局域网(LAN)、广域网(WAN)和/或其它网络连接到第二设备。当客户端计算设备602和服务器计算设备604相对于彼此是远程的时,可通过网络606例如经由调制解调器连接、包括以太网的LAN连接、或包括DSL的宽带WAN连接、电缆、T1、T3、光纤光学器件、Wi-Fi或包括GSM、GPRS、3G、WiMax的移动网络连接或其它网络连接来将客户端计算设备602连接到服务器计算设备604。网络606可以是LAN网络、WAN网络、无线网络、互联网、内联网或其它网络。在网络上的远程设备(例如计算设备)可通过相应的网络地址——例如但不限于互联网协议(IP)地址、互联网名称、Windows互联网名称服务(WINS)名称、域名或其它系统名称——来寻址。这些示出关于一个设备可如何对另一设备是远程的一些例子。然而,主题技术不限于这些例子。便于创建在代理机器和服务之间的隧道和通道的过程的例子根据本公开的一个方面,图7示出便于创建在代理机器220和远程服务器计算设备160之间的隧道270和通道275的过程700的例子。在过程705,在代理机器220中的建立模块325认证服务不兼容客户端210。在一个方面中,通过验证客户端证书345来完成认证。客户端证书345可包括用户名、密码、域名和主机名。本领域中的技术人员将认识到其它技术,建立模块325可通过这些技术来认证服务不兼容客户端210。在处理器710,在代理机器220中的建立模块325认证服务。在一个方面中,通过验证服务证书350来完成认证。服务证书350可包括服务的用户的有效用户名、与用户名相关的密码、域名和主机名。在过程715,在代理机器220中的建立模块325认证与代理机器220中的转换模块340相关地存储的服务125的基于网络的过程调用接口的编码415。在一个方面中,服务125实现微软服务器,且服务125的基于网络的过程调用接口是微软RPC。在过程720,在代理机器220中的建立模块325便于将服务125的基于网络的过程调用数据绑定到网关接口150的协议。在一个方面中,网关服务器的协议是TSGW或RDGW。在过程725,在代理机器220中的建立模块325便于验证向服务不兼容客户端210和向服务125传输的消息大小。在一个方面中,传输到服务不兼容客户端的消息是以通用格式。在一个方面中,编组用于确保从代理机器220到服务125的消息具有适当的消息大小。在过程730,在代理机器220中的建立模块325中的创建隧道模块330便于创建在代理机器220和远程服务器计算设备160之间的隧道270。在一个方面中,隧道270使用服务125的基于网络的过程调用通信来便于在代理机器220和远程服务器计算设备160之间的通信。在过程735,在代理机器220中的建立模块325中的创建通道模块335便于创建在代理机器220和远程服务器计算设备160之间的通道275。在一个方面中,可以有多个远程服务器计算设备160,且可创建多个通道275。便于在客户端和服务之间的通信的过程的例子根据本公开的一个方面,图8示出便于在服务不兼容客户端210和远程服务器计算设备160之间的通信的过程800的例子。在过程805,在代理机器220中的转换模块340从服务不兼容客户端210接收以通用格式的数据。在一个方面中,数据是来自服务不兼容客户端210的请求405。在一个方面中,请求405通过本机IP连接由代理机器220接收。在过程810,在代理机器220中的转换模块340基于服务125的基于网络的过程调用接口的编码415将数据编码成与服务125相关的基于网络的过程调用接口。在一个方面中,结果是待发送到服务的数据420的编码。在一个方面中,服务125的基于网络的过程调用通信的格式是RPC,且编码415包括一组RPC命令和数据。在一个方面中,编码415包括在服务125的基于网络的过程调用接口中的一组命令和数据。在过程815,在代理机器220中的转换模块340便于将数据420传输到与服务125相关的基于网络的过程调用接口内。在一个方面中,数据420通过隧道270传输到服务125。在过程820,在代理机器220中的转换模块340从包括在与服务125相关的基于网络的过程调用接口中被编码的响应数据425的服务接收响应。在一个方面中,响应数据425是对提交到服务125的数据420的响应。在一个方面中,通过隧道270来接收响应数据425。在过程825,在代理机器220中的转换模块340基于服务的基于网络的过程调用接口的编码415将响应数据解码成通用格式。在一个方面中,解码的结果是待发送到服务不兼容客户端210的通用格式数据410。在过程830,在代理机器220中的转换模块340便于将通用格式数据410传输到服务不兼容客户端210。在一个方面中,通用格式数据410通过本机IP连接来传输到服务不兼容客户端210。在一个例子中,主题技术的过程被描述如下:建立(入站)通过SSL上的HTTP的NTLM认证。在HTTP上通过SSL上的RPC的NTLM认证。HTTP到RPC绑定。建立(出站)通过SSL上的HTTP的NTLM认证。在HTTP上通过SSL上的RPC的NTLM认证。HTTP到RPC绑定。建立(RPC)RPC到TSGW绑定。RPC编组大小(32位)。TSGWviaRPC操作1-9(OPNUM)。上面概述的过程的一个功能可以是入站web服务认证的HTTPS路径的建立和已认证的RPC入站接入的建立。该过程还可提供出站web服务认证的HTTPS路径的建立和已认证的出站RPC接入的建立。该过程还可提供RPC到TSGW角色的绑定的建立和RPC编组数据大小(32位字段)的建立。OPNUM的使用可提供隧道创建、隧道认证、通道创建和通道绑定。在一个例子中,所有OPNUM操作通过专用RPC分组过滤器的使用而出现。这些步骤可能需要满足微软对访问提供这个服务的TSGW角色的要求,如果服务125实现微软操作系统例如微软服务器。在一个方面中,为入站和出站数据创建唯一的HTTPS。这些在逻辑上被绑定(通过RPC协议的使用)以建立到RPC服务的单个逻辑连接。这些又使用RPC协议通过固定的过滤器机制绑定到TSGW。结果是使用OPNUM来交换数据的能力。OPNUM是由TSGW规范描述的专用语法。在一个方面中,这些需要利用来自防火墙外部的RPC路径。一旦被建立,隧道和通道就可被创建,用于将从客户端传送到目标服务器例如RDP服务器。所实现的结果可以是通过防火墙120到具有从/到远程服务器计算设备160的目标主机的通道(数据路径)的微软TSGW角色的隧道。在一个方面中,通过参数(当被包括在服务兼容客户端110或代理机器220内时)的函数传递或通过协议语法来接收实现各种RPC命令例如OPNUM的命令。主题技术可通过命令经由函数或经由协议语法来与代理机器220的特征通过接口连接。远程网关客户端代理的例子图9示出客户端-服务器计算机系统900的例子。如所示,计算机系统900包括客户端计算设备910、防火墙920、绑定服务器930、远程过程调用(RPC)服务器940、网关服务器950和远程服务器计算设备960。客户端计算设备910可以是膝上型计算机、桌上型计算机、平板计算机、个人数字助理(PDA)、移动电话或任何类似的设备。客户端计算设备可实现具有超文本传输协议安全(HTTPS)通信能力的实质上任意操作系统。如所示,客户端计算设备910通过防火墙920与绑定服务器930连接,防火墙920可起作用来基于一组规则创建或拒绝网络连接。在一个方面中,为入站数据(指向远程服务器计算设备960)和出站数据(指向客户端计算设备910)创建唯一的HTTPS连接。如所示,绑定服务器930包括存储器932。存储器932包括绑定进模块934和绑定出模块936。绑定进模块934和绑定出模块936可在所有软件、所有硬件或软件和硬件的组合中实现。如所示,绑定进模块934从客户端计算设备910接收以与客户端计算设备相关的格式例如HTTPS的输入消息并将这些消息转换成与远程服务器计算设备960相关的格式,例如远程服务器计算设备960的操作系统所特有的格式。绑定出模块936从远程服务器计算设备960接收输入消息并将消息转换成与客户端计算设备910相关的格式。如所示,来自绑定出模块936的输出传输到RPC服务器940。到绑定进模块934的输入从RPC服务器940传输。在一个方面中,RPC服务器940实现RPC协议以允许在来自客户端计算设备910的消息中的命令在远程服务器计算设备960上被执行。在一个方面中,在来自客户端计算设备910的消息中的命令使用网关服务器950被绑定到远程服务器计算设备960的地址空间。在一个方面中,网关服务器950实现微软终端服务网关(TSGW)、微软远程桌面网关(RDGW)或与服务器计算设备960的操作系统相关的类似协议。如果网关服务器950实现TSGW,则网关服务器950可使用OPNUM——在TSGW规范中所述的专用语法——来交换数据。在OPNUM实现中,可创建用于将数据从客户端计算设备910传送到远程服务器计算设备960的隧道和通道系统。OPNUM操作经由专用RPC分组过滤器而出现。PRC消息可使用编组或修改数据的存储器表示的另一技术被绑定到TSGW消息。远程服务器计算设备960可包括远程桌面协议(RDP)服务器作为目标主机。总之,根据一个方面,通过防火墙920在客户端计算设备910和绑定服务器930之间的通信在独立于任何操作系统的已认证的HTTPS路径中实现。在绑定服务器930和RPC服务器940之间的通信使用RPC协议来实现。在RPC服务器940和网关服务器950之间的通信是在RPC或远程服务器计算设备960的操作系统特定协议例如OPNUM中,如果网关服务器950实现微软TSGW。在一个方面中,主题技术可包括下面的要素:(1)包括NTLMKerberos(NTLAN管理器/Kerberos)的被称为“credssp”的NLA(网络层认证)。(2)HTTPS/SSL(超文本传输协议安全/安全套接字层)-基于加密的安全。(3)RPC认证-提供在PRC层处的NLA。(4)RPC桥/过滤器-这在没有RPC的情况下提供堆栈升高和降级。(5)隧道创建-通过RPC桥/过滤器的使用。(6)通道创建-通过RPC桥/过滤器的使用。(7)数据交换-通过RPC桥/过滤器的使用。在主题技术的一个方面中,NLA可认证访问TSGW服务器的用户;HTTPS/SSL可用作基本传输协议;以及RPC认证可以是RPC过滤器的组成部分。根据一个方面,需要确保给定用户有访问RPC层的许可;RPC桥可以是向被称为TSGW的逻辑角色/服务提供数据路径的方法。隧道创建是使用通过防火墙创建“漏洞”的RPC来对TSGW设置的命令的一个例子。通道创建是使用创建到目标主机的逻辑“通道”的RPC来对TSGW设置的命令的一个例子。根据一个方面,正是通过通道来从防火墙内的目标主机来回传输数据。数据交换可以是使用用于通过TSGW服务器来发送或接收数据的通道的过程。根据本公开的一个方面,图10示出将消息从与发送计算设备相关的格式转换成与接收计算设备相关的格式的过程的例子。如所理解的,与发送计算设备相关的格式可以是HTTPS,而接收计算设备可理解的格式可以是RPC。可选地,与发送计算设备相关的格式可以是RPC,而接收计算设备可理解的格式可以是HTTPS。在过程1010,绑定出模块936从发送计算设备例如远程服务器计算设备960接收以接收计算设备是不可理解的格式例如RPC的消息。在过程1020,绑定出模块936将消息认证为来自远程服务器计算设备960并指向客户端计算设备910。在过程1030,绑定出模块936将消息转换成接收计算设备不可理解的格式例如HTTPS。在一个方面中,实现编组以促成转换。在过程1040,绑定出模块936将消息传输到接收客户端计算设备910。在可选的方面中,绑定进模块从发送客户端计算设备910接收以HTTPS或类似格式的消息并使用与上面所述的过程类似的过程将该消息转换成接收服务器计算设备960不可理解的格式例如RPC。根据本公开的一个方面,图11示出将以与客户端计算设备910相关的格式接收的消息认证为与服务器计算设备960相关的格式的过程的例子。在过程1110,绑定进模块934接收以与客户端计算设备910相关的格式的消息。在一个实现中,从客户端计算设备910接收消息。在过程1120,绑定进模块934通过通信协议例如HTTPS在安全层例如在防火墙920中运行的安全套接字层(SSL)上认证来自客户端计算设备910的消息。在一个方面中,可使用NTLAN管理器(NTLM)来完成认证。在过程1130,绑定进模块934通过远程过程调用在安全层例如SSL上通过通信协议例如HTTPS来认证消息。在过程1140,绑定进模块934对于以与客户端计算设备910相关的格式的消息将通信协议例如HTTPS绑定到远程过程调用(RPC)。在过程1150,绑定进模块934将远程过程调用绑定到与远程服务器计算设备960相关的格式,例如终端服务网关(TSGW),如果远程服务器计算设备960实现MicrosoftWindows服务器。在过程1160,绑定进模块934提供以与远程服务器计算设备960相关的格式例如TSGW格式的消息,如果远程服务器计算设备960实现MicrosoftWindows服务器。编组可用于改变消息的格式。根据本公开的一个方面,图12示出将以与服务器计算设备960相关的格式接收的消息认证为与客户端计算设备910相关的格式的过程的例子。在过程1210,绑定出模块936接收以与远程服务器计算设备960相关的格式的消息。在一个实现中,从远程服务器计算设备960接收消息。在过程1220,绑定出模块936通过通信协议例如HTTPS在安全层例如SSL上认证来自服务器计算设备960的消息。在过程1230,绑定出模块936通过远程过程调用在安全层例如SSL上通过通信协议例如HTTPS来认证消息。在过程1240,绑定出模块936对于以与服务器计算设备960相关的格式的消息将通信协议例如HTTPS绑定到远程过程调用(RPC)。在过程1250,绑定出模块936将远程过程调用绑定到与客户端计算设备910相关的格式。在过程1260,绑定出模块936提供以与客户端计算设备910相关的格式例如HTTPS格式的消息。编组可用于改变消息的格式。在一个例子中,主题技术的过程被描述如下:建立(入站)通过SSL上的HTTP的NTLM认证。在HTTP上通过SSL上的RPC的NTLM认证。HTTP到RPC绑定。建立(出站)通过SSL上的HTTP的NTLM认证。在HTTP上通过SSL上的RPC的NTLM认证。HTTP到RPC绑定。建立(RPC)RPC到TSGW绑定。RPC编组大小(32位)。TSGWviaRPC操作1-9(OPNUM)。上面概述的过程的一个功能可以是入站web服务认证的HTTPS路径的建立和已认证的RPC入站接入的建立。该过程还可提供出站web服务认证的HTTPS路径的建立和已认证的出站RPC接入的建立。该过程还可提供RPC到TSGW角色的绑定的建立和RPC编组数据大小(32位字段)的建立。OPNUM的使用可提供隧道创建、隧道认证、通道创建和通道绑定。在一个例子中,所有OPNUM操作通过专用RPC分组过滤器的使用而出现。这些步骤可能需要满足微软对访问提供这个服务的TSGW角色的要求。在一个方面中,为入站和出站数据创建唯一的HTTPS。这些在逻辑上被绑定(通过RPC协议的使用)以建立到RPC服务的单个逻辑连接。这些又使用RPC协议通过固定的过滤器机制绑定到TSGW。结果是使用OPNUM来交换数据的能力。OPNUM是由TSGW规范描述的专用语法。在一个方面中,这些需要利用来自防火墙外部的RPC路径。一旦被建立,隧道和通道就可被创建,用于将数据从客户端传送到目标服务器例如RDP服务器。所实现的结果可以是通过防火墙920到具有从/到远程服务器计算设备960的目标主机的通道(数据路径)的微软TSGW角色的隧道。客户端-服务器通信系统的例子图13是示出客户端-服务器通信系统1300的例子的方框图。如所示,客户端服务器通信系统1300包括建立引擎1305、数据源1310、数据接收器1315、连接引擎1320、远程桌面协议(RDP)客户端1325、RDP服务器1330和远程计算设备1335。建立引擎1305、数据源1310、数据接收器1315、连接引擎1320、RDP客户端1325、RDP服务器1330和远程计算设备1335可配置成经由一个或多个网络例如互联网、内联网、有线或无线网络等来彼此通信。远程计算设备1335可以是可经由桌面扩展协议(例如RDP、ICA、VC或PCoIP协议)例如经由实现RDP的远程桌面会话远程地被访问的任何计算设备。如所示,远程计算设备1335可以(但不需要)包括操作系统1340。操作系统1340可包括可在操作系统内执行的一个或多个应用1345.1-n。操作系统1340可包括管理远程计算设备1335的硬件资源并为应用1345.1-n提供公共服务的一组程序。请注意,应用1345.1-n可以指应用1345.1到1345.n。RDP服务器1330可配置成建立与RDP客户端1325的RDP连接,例如远程桌面会话,以从RDP客户端1325接收RDP输入,根据RDP输入与远程计算设备通信,并向RDP客户端1325提供RDP输出。RDP服务器1330可在所有软件、所有硬件或软件和硬件的组合中实现。RDP服务器1330可以指单个物理机、多个物理机(例如服务器农场)、存在于单个物理机上的软件或存在于网络上或“在云中”的虚拟化软件。RDP客户端1325可配置成建立与RDP服务器1330的RDP连接,例如远程桌面会话,以向RDP服务器1330提供RDP输入并从RDP服务器1330接收RDP输出。RDP客户端1325可在所有软件、所有硬件或软件和硬件的组合中实现。RDP客户端1325可以指单个物理机、多个物理机、存在于单个物理机上的软件或存在于网络上或“在云中”的虚拟化软件。数据源1310可配置成向RDP客户端1325提供可转换成CFE输入的数据,用于例如在远程桌面会话中通过到远程计算设备1335的CBE与RDP服务器1330通信。数据源1310可以在RDP客户端1325的外部。数据源1310可以是实质上任意数据源。例如,数据源1310可以是计算机存储器、物理机、虚拟机、数据管线等。数据源1310可与键盘、鼠标、触摸屏、摄像机或音频输入单元中的一个或多个通信地耦合。数据源1310可与在与RDP相同或不同的客户端-服务器通信协议中的服务器通信地耦合。例如,数据源1310可与HTTP服务器通信地耦合。数据源1310可被实现为物理机或虚拟机。数据接收器1315可配置成接收并处理例如在远程桌面会话中从来自与RDP服务器1330或远程计算设备1335通信的RDP客户端1325的CFE输出转换的数据。数据接收器1315可以在RDP客户端1325的外部。数据接收器1315可与视频输出单元、显示输出单元(例如图像输出单元)或音频输出单元(例如具有视觉输出的任何机器例如移动电话或膝上型计算机或显示器、监视器或扬声器)中的一个或多个通信地耦合。数据接收器1315可与在与RDP相同或不同的客户端-服务器通信协议中的服务器通信地耦合。例如,数据接收器1315可与HTTP服务器和/或HTTP客户端通信地耦合。在一个例子中,数据接收器与HTTP服务器通信地耦合。数据接收器1315也可例如经由HTTP服务器与HTTP客户端通信地耦合。数据接收器1315可被实现为物理机或虚拟机。数据源1310和数据接收器1315可存在于同一物理设备上或不同的物理设备上。数据接收器1315可以是实质上任意数据接收器。数据接收器1315可以是视频输出单元、显示输出单元或音频输出单元中的一个或多个。数据接收器1315可以是配置成写所接收的数据的存储器单元(例如可写磁盘)。在一个方面中,短语“定义数据源”可包括它的浅近和普通的含义,包括但不限于识别数据源(数据源1310)和/或通信地耦合数据源(例如经由连接引擎1320)与协议(例如使用RDP客户端1325和RDP服务器1330实现的RDP协议),用于将数据传输到远程操作系统(例如远程计算设备1335的操作系统1340)或与远程操作系统(例如远程计算设备1335的操作系统1340)通信。在一个方面中,通信地耦合可包括便于通信地耦合,例如提供用于通信耦合的指令,引起通信地耦合或实现通信地耦合。在一个方面中,短语“定义数据接收器”可包括它的浅近和普通的含义,包括但不限于识别数据接收器(数据接收器1310)和/或通信地耦合数据接收器(例如经由连接引擎1320)与协议(例如使用RDP客户端1325和RDP服务器1330实现的RDP协议),用于从远程操作系统(例如远程计算设备1335的操作系统1340)接收数据或与远程操作系统(例如远程计算设备1335的操作系统1340)通信。在一个方面中,通信地耦合可包括便于通信地耦合,例如提供用于通信耦合的指令,引起通信地耦合或实现通信地耦合。连接引擎1320配置成连接数据源1310和数据接收器1315与RDP客户端1325。连接引擎1320可以在软件中实现。连接引擎1325可存在于与RDP客户端相关的物理机上或在不同的物理机上。连接引擎可存在于和数据源1310或数据接收器1315中的一个或多个相同的物理机上,或在与数据源1310和/或数据接收器1315所存在于的物理机分开或不同的物理机上。连接引擎1320可配置成连接到RDP客户端1325。连接引擎1320也可配置成接收配置成接收并处理来自在RDP客户端1325和RDP服务器1330之间的RDP通信的输出数据的数据接收器1315的指示。数据接收器1315的指示可包括例如数据接收器1315的指针或链接或数据接收器1315的网络地址。连接引擎1320还可配置成接收在RDP客户端1325和RDP服务器1330之间的RDP通信的数据源1310的指示。数据源1310的指示可包括例如数据源1310的指针或链接或数据源1310的网络地址。连接引擎1320还可配置成接收在数据源1310、数据链路1315、RDP客户端1325和RDP服务器1330之间的通信路径的指示并经由通信路径传输数据。通信路径的指示可包括例如通信路径的指针或链接。建立引擎1305可配置成便于创建在数据源1310、数据链路1315、RDP客户端1325和RDP服务器1330之间的通信路径。在一个实现中,建立引擎可配置成定义在RDP客户端1325和RDP服务器1330之间的RDP通信协议。建立引擎1305还可配置成定义例如连接引擎1320到RDP客户端1325的连接并使该连接生效。建立引擎1305还可配置成定义配置成接收并处理来自在RDP客户端1325和RDP服务器1330之间的RDP通信的输出数据的数据接收器1315。建立引擎1305还可配置成定义在RDP客户端1325和RDP服务器1330之间的RDP通信的数据源1310。建立引擎1305还可配置成经由连接引擎创建在数据源1310、数据链路1315、RDP客户端1325和RDP服务器1330之间的通信路径。建立引擎1305还可配置成经由通信路径便于在数据源1310、数据链路1315、RDP客户端1325和RDP服务器1330之间的通信。有利地,作为图13的客户端-服务器通信系统1300的结果,可在RDP通信中或在远程桌面会话中使用来自实质上任意数据源1310的数据。此外,来自RDP通信或来自远程桌面会话的数据可被输出到实质上任意数据接收器1315。作为结果,配置成经由RDP协议来访问的远程计算设备1335的操作系统1340可与来自数据源1310的任意输入数据一起被访问,并可向数据接收器1315提供以任意格式的输出数据。因此,在RDP客户端1325处接收的数据可被输出到任何源,不一定是实现RDP客户端1325的机器的用户接口设备。具体地,在一个例子中,远程计算设备1335的操作系统1340可以不与和数据源1310或数据接收器1315相关的操作系统兼容。例如,操作系统1340可与第一操作系统系列(例如Microsoft)相关,虽然与数据源1310或数据接收器相关的机器的操作系统可与第二操作系统系列(例如AppleMacintoshOSXSnow其中第二操作系统系列与第一操作系统系列不同且不兼容)相关。在一个方面中,短语“操作系统系列”可包括它的浅近和普通的含义,包括但不限于配置成彼此通信的一组操作系统。操作系统系列的第一例子可包括操作系统,例如MicrosoftWindowsMicrosoftWindowsMicrosoftWindows和MicrosoftWindowsServer与操作系统系列的第一例子分开且不同的操作系统系列的第二例子可包括操作系统,例如AppleMacintoshOSXSnow(客户端)和AppleMacintoshOSXLion虽然结合经由RDP连接进行通信的RDP客户端1325和RDP服务器1330在图13中描述了主题技术,主题技术可使用任何客户端-服务器通信协议代替RDP来实现。在一个实现中,任何屏幕抓取或远程桌面类型协议可代替RDP,如在图13中所述的。例如,如在图13中所述的RDP客户端1325和RDP服务器1330可以用独立计算架构(ICA)客户端和服务器、互联网协议上的个人计算机(PCoIP)客户端和服务器、虚拟网计算(VNC)客户端和服务器等代替。在一个例子中,如图13所述的RDP协议可以用任何其它远程桌面通信协议代替。其它远程桌面通信协议可以或可以不由微软公司发展。其它远程桌面通信协议可以是开放源协议或专有协议。在一个例子中,如图13所述的RDP协议可以用在用于远程桌面通信的开放系统互连(OSI)模型中的任何应用层协议代替。在一个方面中,远程桌面通信协议可以是给客户端计算设备(例如RDP客户端1325)提供用于访问存储在远程计算设备(例如远程计算设备1335)的操作系统(例如操作系统1340)内的数据和/或指令的图形接口的协议。使用远程桌面通信协议,客户端计算设备可便于向远程计算设备提供指令以从客户端计算设备运行在远程计算设备的操作系统内的应用(例如一个或多个应用1345.1-n),好像用户正在本地在远程计算设备上操作一样,而不是从客户端计算设备访问远程计算设备。在一个方面中,远程桌面通信协议可以是允许远程机器的桌面的控制和/或操纵的协议。此外,图13的块可存在于一个或多个物理机中。例如,单个物理机可包括建立引擎1305、数据源1310、数据接收器1315、连接引擎1320和RDP客户端1325中的任一个、一些或所有。可选地,建立引擎1305、数据源1310、数据接收器1315、连接引擎1320和RDP客户端1325中的每个可存在于分开的物理机上。在一个例子中,RDP服务器1330和远程计算设备1335可存在于同一物理机上。在另一例子中,RDP服务器1330和远程计算设备1335可存在于分开的物理机上。在图13中,示出仅仅单个建立引擎1305、仅仅单个数据源1310、仅仅单个数据接收器1315、仅仅单个连接引擎1320、仅仅单个RDP客户端1325、仅仅单个RDP服务器1330和仅仅单个远程计算设备1335。然而,可结合一个或多个建立引擎1305、一个或多个数据源1310、一个或多个数据接收器1315、一个或多个连接引擎1320、一个或多个RDP客户端1325、一个或多个RDP服务器1330或一个或多个远程计算设备1335来实现主题技术。如果有多个建立引擎1305、数据源1310、数据接收器1315、连接引擎1320、RDP客户端1325、RDP服务器1330或远程计算设备1335,则多个建立引擎1305、数据源1310、数据接收器1315、连接引擎1320、RDP客户端1325、RDP服务器1330或远程计算设备1335可存在于同一物理机上或分开的物理机上。配置成在远程桌面协议和超文本传输协议之间对数据转换代码的客户端-服务器通信系统的例子图14是示出配置成在远程桌面协议(RDP)和超文本传输协议(HTTP)之间对数据转换代码的客户端-服务器通信系统1400的例子的方框图。如所示,客户端-服务器通信系统1400包括图13的数据源1310、数据接收器1315、连接引擎1320、RDP客户端1325、RDP服务器1330或远程计算设备1335。此外,客户端-服务器通信系统1400包括HTTP客户端1405和HTTP服务器1410。HTTP服务器1410包括数据源1310和数据接收器1315。HTTP服务器1410可供应和/或利用HTTP、HTTPs、TS和/或WSs协议或任何其它适当的协议。HTTP服务器1410可经由通信路径通过连接引擎1320连接到RDP客户端1325的CFE。HTTP服务器包括数据源1310和数据接收器1315。作为结果,HTTP服务器1410可提供输入数据以与远程计算设备1335交互作用并接收来自与远程计算设备1335交互作用的输出数据。HTTP服务器1410还可配置成经由HTTP连接与HTTP客户端1405通信。HTTP客户端1405可经由HTTP连接来连接到HTTP服务器1410。作为结果,HTTP客户端可向HTTP服务器1410中的数据源1310提供数据并经由超文本标记语言(HTML)接口从HTTP服务器1410中的数据接收器1315接收数据。连接引擎1320可配置成实现上面所述的功能。此外,连接引擎1320可配置成在HTTP和RDP之间对数据转换代码。作为结果,HTTP服务器1410可能能够接收经由在RDP客户端1325上的远程桌面会话接收的数据的表示,并向RDP客户端1325提供数据用于与RDP服务器1320或远程计算设备1335通信。因此,HTTP客户端1405可经由HTTP服务器1410与RDP客户端1325、RDP服务器1330或远程计算设备1335通过接口连接。有利地,作为图14的客户端-服务器通信系统1400的结果,运行实质上任意操作系统的HTTP客户端1405可与RDP客户端1325、RDP服务器1330和远程计算设备1335通过接口连接以经由RDP进行通信。HTTP客户端1405可运行配置成经由HTTP进行通信的任何操作系统,且不需要运行配置成经由HTTP进行通信的操作系统或运行任何RDP特定软件。在一个例子中,远程计算设备1335的操作系统1340可以不与和HTTP客户端1405相关的操作系统兼容。例如,操作系统1340可与第一操作系统系列(例如Microsoft)相关,虽然HTTP客户端1405的操作系统可与第三操作系统系列(例如Linux)相关,其中第三操作系统系列与第一操作系统系列不同且不兼容。虽然结合经由RDP连接在远程桌面会话中进行通信的RDP客户端1325和RDP服务器1330和经由HTTP连接进行通信的HTTP客户端1405和HTTP服务器1410在图14中描述了主题技术,主题技术可使用任何客户端-服务器通信协议代替RDP和HTTP来实现。例如,如在图14中所述的RDP客户端1325和RDP服务器1330可以用独立计算架构(ICA)客户端和服务器、互联网协议上的个人计算机(PCoIP)客户端和服务器、虚拟网计算(VNC)客户端和服务器等代替。在一个实现中,如图14所述的HTTP客户端1405和HTTP服务器1410可以用会话发起协议(SIP)客户端和服务器代替。其它协议也可代替如图14所述的RDP或HTTP。作为结果,实现第一客户端-服务器协议的客户端(例如HTTP客户端1405)可与实现第二客户端-服务器协议的客户端(例如RDP服务器1330)通过接口连接,其中第一客户端-服务器协议可不同于第二客户端-服务器协议。在一个例子中,如图14所述的RDP协议可以用任何其它远程桌面通信协议代替。其它远程桌面通信协议可以或可以不由微软公司发展。其它远程桌面通信协议可以是开放源协议或专有协议。在一个例子中,如图14所述的RDP协议可以用在用于远程桌面通信的开放系统互连(OSI)模型中的任何应用层协议代替。建立引擎的操作的例子图15A是示出可由建立引擎(例如建立引擎1305)执行的过程1500A的例子的流程图。过程1500A在操作1510A开始,其中建立引擎可定义在客户端侧(例如RDP客户端1325)和服务器侧(例如RDP服务器1330)之间的第一客户端-服务器通信协议(例如RDP)。第一客户端-服务器协议可通信地耦合到运行至少一个应用(例如应用1345.1-n)的操作系统(例如远程计算设备1335的操作系统1340)。第一客户端-服务器协议可以是在开放系统互连(OSI)模块中的应用层协议。定义通信协议可包括:选择用于使用的特定应用层协议(例如RDP)。在操作1520A中,建立引擎可定义对客户端侧(例如RDP客户端1325)的连接,包括对服务器侧(例如RDP服务器1330)的连接和在第一客户端-服务器协议中的客户端侧和服务器侧之间的连接。客户端侧可连接到连接引擎(例如连接引擎1320)。例如,连接可包括将连接引擎通信地连接到客户端侧。连接引擎可配置成经由网络或经由有线或无线连接与客户端侧通信。定义连接可例如包括提供关于如何提供或建立通信耦合、创建或便于创建通信耦合或发起通信耦合的指令。定义连接还可包括选择特定的协议以用于OSI模型的层而不是应用层(即物理层、数据链路层、网络层、传输层、会话层和表示层中的一个或多个的协议)。定义对客户端侧(例如包括对服务器侧的连接和在客户端和服务器之间的连接)可包括选择或便于选择用于连接或通信地耦合的指定客户端(例如RDP客户端1325)和/或指定服务器(例如RDP服务器1330)。两个或多个设备或模块可通信地耦合到彼此,如果它们配置成与彼此通信。例如,例如经由网络连接或经由有线或无线连接与彼此通信的两个设备可通信地耦合到彼此。在单个计算机系统内,从第二模块接收输入和/或将输出提供到第二模块的第一模块可与第二模块通信地耦合。在操作1530A中,建立引擎可定义可用于使到客户端侧和/或到在第一客户端-服务器通信协议中的服务器侧的连接生效的生效信息。例如,建立引擎可定义用于认证到客户端侧的连接的认证信息。在一个方面中,短语“使连接生效”可包括它的浅近和普通的含义,包括但不限于验证连接被授权以及数据经由该连接被传输。在一些实现中,验证连接可包括下列操作中的一个或多个:验证与连接相关的登录信息,验证连接的至少一个终端(例如客户端侧或服务器侧)的网络地址,验证病毒扫描在连接的至少一个终端上被执行,验证连接的至少一个终端被接通并连接到网络,等等。在操作1540A中,建立引擎定义第一客户端-服务器通信协议的数据接收器(例如数据接收器1315)。数据接收器可以在客户端侧的外部和服务器侧的外部(例如数据接收器可存在于HTTP服务器1410上)。数据接收器可配置成接收并处理在数据接收器处从第一客户端-服务器通信协议内的客户端侧或服务器侧接收的输出。来自第一客户端-服务器通信协议的输出可包括基于在耦合到服务器侧的远程计算设备(例如远程计算设备1335)的操作系统(例如操作系统1340)内运行的至少一个应用(例如应用1345.1-n)的输出。数据接收器可被实现为虚拟机或物理机。在操作1550A中,建立引擎定义第一客户端-服务器通信协议的数据源(例如数据源1310)。数据源可以在客户端侧的外部和服务器侧的外部(例如数据源可存在于HTTP服务器1410上)。数据源可配置成向在第一客户端-服务器通信协议内的客户端侧或服务器侧提供输入。到在第一客户端-服务器通信协议内的客户端侧或服务器侧的输入可包括到远程计算设备(例如在耦合到服务器侧的远程计算设备的操作系统内运行的至少一个应用)的输入。数据源可被实现为虚拟机或物理机。数据源可以在与数据接收器相同的物理机上或在与数据接收器不同的物理机上存在。在一个例子中,数据源和数据接收器都可存在于HTTP服务器(例如HTTP服务器1410)内。HTTP服务器可通信地耦合到HTTP客户端(例如HTTP客户端1405)。数据源可配置成从HTTP客户端接收输入,且数据接收器可配置成向HTTP客户端提供输出。在另一例子中,HTTP服务器和HTTP客户端可以用在任何客户端-服务器通信协议中的服务器和客户端例如会话发起协议(SIP)服务器和客户端代替。在操作1560A中,建立引擎便于创建在数据源、数据接收器、客户端侧和/或服务器侧之间的通信路径。通信路径可包括连接引擎(例如连接引擎1320)。在操作1570A中,建立引擎便于经由通信路径在数据源、数据接收器、客户端侧和/或服务器侧之间的通信。如果数据源和数据接收器与第二客户端-服务器通信协议(例如HTTP或SIP)相关,则便于经由通信路径的通信可涉及在与第一客户端-服务器通信协议(例如RDP)相关的格式和与第二客户端-服务器通信协议(例如HTTP或SIP)相关的格式之间的代码转换。例如,连接引擎可在与第一客户端-服务器通信协议相关的格式和与第二客户端-服务器通信协议相关的格式之间转换代码。在操作1570A之后,过程1500A可结束。在一些方面中,在终止在数据源、数据接收器、客户端侧和/或服务器侧之间的通信会话时,建立引擎可关闭通信路径并释放(例如为了其它目的而变得可用)由通信路径消耗的资源。用于建立引擎的操作的指令的例子图15B是包括用于建立引擎(例如建立引擎1305)的操作的指令的设备1500B的例子。设备1500B可包括一个或多个设备。设备1500B可以是例如一个或多个机器可读介质,例如一个或多个存储器。设备1500B可以是例如一个或多个电路和/或一个或多个处理器。设备1500B可包括指令1510B以定义在客户端侧和服务器侧之间的第一客户端-服务器通信协议。设备1500B还可包括指令1520B以定义在第一客户端-服务器通信协议中的客户端侧和服务器侧之间的连接。设备1500B还可包括指令1530B以定义用于使在第一客户端-服务器通信协议中的连接生效的生效信息。设备1500B还可包括指令1540B以定义第一客户端-服务器通信协议的数据接收器。数据接收器可以在客户端侧的外部和服务器侧的外部。数据接收器可配置成接收并处理来自第一客户端-服务器通信协议的输出。设备1500B还可包括指令1550B以定义第一客户端-服务器通信协议的数据源。数据源可以在客户端侧的外部和服务器侧的外部。数据源可配置成向第一客户端-服务器通信协议提供输入。设备1500B还可包括指令1560B以创建在数据源、数据接收器、客户端侧和/或服务器侧之间的通信路径。设备1500B还可包括指令1570B以便于经由通信路径在数据源、数据接收器、客户端侧和/或服务器侧之间的通信。用于建立引擎的操作的模块的例子图15C是包括用于建立引擎(例如建立引擎1305)的操作的一个或多个模块的设备1500C的例子。设备1500C可包括一个或多个设备。设备1500C可以是例如一个或多个机器可读介质,例如一个或多个存储器。设备1500C可以是例如一个或多个电路和/或一个或多个处理器。模块可以是设备的部件。设备1500C可包括用于定义在客户端侧和服务器侧之间的第一客户端-服务器通信协议的模块1510C。设备1500C还可包括用于定义在第一客户端-服务器通信协议中的客户端侧和服务器侧之间的连接的模块1520C。设备1500C还可包括用于定义用于使在第一客户端-服务器通信协议中的连接生效的生效信息的模块1530C。设备1500C还可包括用于定义第一客户端-服务器通信协议的数据接收器的模块1540C。数据接收器可以在客户端侧的外部和服务器侧的外部。数据接收器可配置成接收并处理来自第一客户端-服务器通信协议的输出。设备1500C还可包括用于定义第一客户端-服务器通信协议的数据源的模块1550C。数据源可以在客户端侧的外部和服务器侧的外部。数据源可配置成向第一客户端-服务器通信协议提供输入。设备1500C还可包括用于创建在数据源、数据接收器、客户端侧和/或服务器侧之间的通信路径的模块1560C。设备1500C还可包括用于便于经由通信路径在数据源、数据接收器、客户端侧和/或服务器侧之间的通信的模块1570C。连接引擎的操作的例子图16A是示出可由连接引擎(例如连接引擎1320)执行的过程1600A的例子的流程图。过程1600A在操作1610A开始,其中连接引擎在客户端侧和服务器侧(例如RDP服务器1330)之间连接到在第一客户端-服务器通信协议(例如RDP)中的客户端侧(例如RDP客户端1325)。在操作1620A中,连接引擎接收第一客户端-服务器通信协议的数据接收器(例如数据接收器1315)的指示。数据接收器的指示可包括例如数据接收器的网络地址或数据接收器的指针或链接。数据接收器可以在客户端侧的外部和服务器侧的外部。数据接收器可配置成接收并处理第一客户端-服务器通信协议的输出数据。数据接收器可与视频输出单元或音频输出单元通信地耦合。数据接收器可被实现为虚拟机或物理机。在操作1630A中,连接引擎接收第一客户端-服务器通信协议的数据源(例如数据源1310)的指示。数据源的指示可包括例如数据源的网络地址或数据源的指针或链接。数据源可以在客户端侧的外部和服务器侧的外部。数据源可配置成向第一客户端-服务器通信协议提供输入数据。数据源可与键盘、鼠标、触摸屏、摄像机或音频输入单元通信地耦合。数据源可被实现为虚拟机或物理机。数据源可以在与数据接收器相同的物理机上或在与数据接收器不同的物理机上存在。在一个例子中,第一客户端-服务器协议可通信地耦合到运行至少一个应用(例如应用1345.1-n)的操作系统(例如远程计算设备1335的操作系统1340)。输入可包括到应用的输入,而输出可包括来自应用的输出。在一个例子中,数据源和数据接收器可存在于超文本传输协议(HTTP)服务器(例如HTTP服务器1410)中。HTTP服务器可与HTTP客户端通信地耦合。数据源可配置成从HTTP客户端接收输入,且数据接收器可配置成向HTTP客户端提供输出。在操作1640A中,连接引擎可配置成接收在数据源、数据接收器、客户端侧和/或服务器侧之间的通信路径的指示。在一个实现中,数据源和数据接收器可与任何第二客户端-服务器通信协议(例如HTTP或会话发起协议[SIP])相关,且通信路径可包括在与第一客户端-服务器通信协议(例如RDP)相关的格式和与第二客户端-服务器通信协议(例如HTTP或SIP)相关的格式之间的代码转换器。在操作1650A中,连接引擎便于经由通信路径将输入数据从数据源传输到客户端侧。例如,连接引擎可包括用于将输入数据从数据源传输到客户端侧的代码。连接引擎可使数据源和/或客户端侧执行用于将输入数据从数据源传输到客户端侧的代码。输入数据可经由连接引擎从数据源传输到客户端侧。在操作1660A中,连接引擎便于输入数据从客户端侧到服务器侧的传输。例如,连接引擎可包括用于将输入数据从客户端侧传输到服务器侧的代码,使得输入数据可被提供到远程计算设备。连接引擎可使客户端侧和/或服务器侧执行用于将输入数据从客户端侧传输到服务器侧的代码。在操作1670A中,连接引擎便于输出数据从服务器侧到客户端侧的传输。例如,连接引擎可包括用于将输出数据从服务器侧传输到客户端侧的代码,使得输出数据可被提供到连接引擎。连接引擎可使服务器侧和/或客户端侧执行用于将输出数据从服务器侧传输到客户端侧的代码。在操作1680A中,连接引擎便于经由通信路径将输出数据从客户端侧传输到数据接收器。例如,连接引擎可包括用于将输出数据从客户端侧传输到数据接收器的代码。连接引擎可使客户端侧和/或数据接收器执行用于将输出数据从客户端侧传输到数据接收器的代码。输出数据可经由连接引擎从客户端侧传输到数据接收器。在操作1480A之后,过程400A可结束。用于连接引擎的操作的指令的例子图16B是包括用于连接引擎的操作的指令的设备1600B的例子。设备1600B可包括一个或多个设备。设备1600B可以是例如一个或多个机器可读介质,例如一个或多个存储器。设备1600B可以是例如一个或多个电路和/或一个或多个处理器。设备1600B可包括指令1610B以在客户端侧和服务器侧之间连接到在第一客户端-服务器通信协议中的客户端侧。设备1600B还可包括指令1620B以接收第一客户端-服务器通信协议的数据接收器的指示。数据接收器可以在客户端侧的外部和服务器侧的外部。数据接收器可配置成接收并处理第一客户端-服务器通信协议的输出数据。设备1600B还可包括指令1630B以接收第一客户端-服务器通信协议的数据源的指示。数据源可以在客户端侧的外部和服务器侧的外部。数据源可配置成向第一客户端-服务器通信协议提供输入数据。设备1600B还可包括指令1640B以接收在数据源、数据接收器、客户端侧和/或服务器侧之间的通信路径的指示。设备1600B还可包括指令1650B以经由通信路径将输入数据从数据源传输到客户端侧。设备1600B还可包括指令1660B以便于输入数据从客户端侧到服务器侧的传输。设备1600B还可包括指令1670B以便于输出数据从服务器侧到客户端侧的传输。设备1600B还可包括指令1680B以经由通信路径将输出数据从客户端侧传输到数据接收器。用于连接引擎的操作的模块的例子图16C是包括用于连接引擎的操作的一个或多个模块的设备1600C的例子。设备1600C可包括一个或多个设备。设备1600C可以是例如一个或多个机器可读介质,例如一个或多个存储器。设备1600C可以是例如一个或多个电路和/或一个或多个处理器。模块可以是设备的部件。设备1600C可包括用于在客户端侧和服务器侧之间连接到在第一客户端-服务器通信协议中的客户端侧的模块1610C。设备1600C还可包括用于接收第一客户端-服务器通信协议的数据接收器的指示数据的模块1620C。数据接收器可以在客户端侧的外部和服务器侧的外部。数据接收器可配置成接收并处理第一客户端-服务器通信协议的输出数据。设备1600C还可包括用于接收第一客户端-服务器通信协议的数据源的指示的模块1630C。数据源可以在客户端侧的外部和服务器侧的外部。数据源可配置成向第一客户端-服务器通信协议提供输入数据。设备1600C还可包括用于接收在数据源、数据接收器、客户端侧和/或服务器侧之间的通信路径的指示的模块1640C。设备1600C还可包括用于经由通信路径将输入数据从数据源传输到客户端侧的模块1650C。设备1600C还可包括用于便于输入数据从客户端侧到服务器侧的传输的模块1660C。设备1600C还可包括用于便于输出数据从服务器侧到客户端侧的传输的模块1670C。设备1600C还可包括用于经由通信路径将输出数据从客户端侧传输到数据接收器的模块1680C。示例虚拟化系统图17是根据本公开的方面的本地设备虚拟化系统1700的概念方框图。系统1700可包括例如通过网络(如在图6中详细示出的)与服务器1704通信的客户端1702。客户端1702可包括代理1710、存根驱动器1720和总线驱动器1730。客户端1702可连接到设备1740,如图17所示。服务器1704可包括代理1750和虚拟总线驱动器1760。根据所示配置,当车辆1740未在本地或物理地连接到服务器1704且对服务器1704是远程的时,设备1740在服务器1704看来好像它在本地连接到服务器1704一样,如下面进一步讨论的。因此,设备1740在服务器1704看来作为虚拟设备1790。在一个实现中,图13的数据源1310或数据接收器1315中的一个或多个可被实现为虚拟设备(例如虚拟设备1790)。作为例证而不是限制,设备1740可以是机器可读存储介质(例如闪存设备)、打印机、扫描仪、摄像机、传真机、电话、音频设备、视频设备、外围设备或可连接到客户端1702的其它适当设备。设备1740可以是外部设备(即在客户端1702外部)或内部设备(即在客户端1702内部)。在本公开的一个方面中,设备1740是通用串行总线(USB)设备,其可使用有线USB或无线USB连接在本地连接到客户端1702并根据UEB通信协议与客户端1702通信。在另一方面中,设备1740可以是除了USB设备以外的设备。如在本文使用的,系统的“本地”设备或“在本地”连接到系统的设备可以是使用一个或多个电线或连接器直接连接到系统(例如物理地连接到系统)的设备或使用无线链路(例如蓝牙)直接连接到系统的设备。例如,设备1740是客户端1702的本地设备。此外,在本公开的一个方面中,系统的本地设备或在本地连接到系统的设备可包括在系统内的设备(例如客户端1702的内部设备)。“远程”设备或对系统是“远程的”设备可以是不直接连接到系统的设备。例如,服务器1704对客户端1702和设备1740都是远程的,因为服务器1704不直接连接到客户端1702或设备1740,但通过网络606(在图6中示出)间接地连接,网络606可包括例如另一服务器或互联网。总线驱动器1730可配置成允许操作系统和客户端1702的程序与设备1740交互作用。在一个方面中,当设备1740连接到客户端1702(例如插到客户端1702的端口内)时,总线驱动器1730可检测设备1740的存在并从设备1740读取关于设备1740的信息(“设备信息”)。设备信息可包括设备所特有的特征、特性和其它信息。对于USB设备的例子,设备信息可包括设备描述符(例如产品ID、卖方ID和/或其它信息)、配置描述符、接口描述符、端点描述符和/或字符串描述符。总线驱动器1730可通过计算机总线或其它有线或无线通信接口与设备1740通信。在一个方面中,在本地在客户端1702上运行的程序(例如应用)可访问设备1740。例如,当客户端1702未连接到服务器1704时,设备1740可在本地被访问。在这个方面中,客户端1702的操作系统(例如Microsoft)可使用设备信息来找到并装入设备1740的适当的设备驱动器(未示出)。设备驱动器可包括具有对设备1740的高级接口的程序。在一个方面中,设备1740可从服务器1704被访问,好像设备在本地连接到服务器1740一样。例如,设备1740可以是从在服务器1704上运行的桌面(即虚拟桌面环境)可访问的。在这个方面中,总线驱动器1730可配置成装入存根驱动器1720作为设备1740的默认驱动器。存根驱动器1720可配置成向代理1710报告设备1740的存在并向代理1710提供设备信息(例如设备描述符)。代理1710可配置成通过网络606(在图6中示出)向服务器1704的代理1750报告设备1740的存在连同设备信息。因此,存根驱动器1720经由代理1710将设备1740重定向到服务器1704。代理1750可配置成从代理1710接收设备1740连接到客户端1702的报告以及设备信息。代理1750可向虚拟总线驱动器1760提供设备1740的通知连同设备信息。虚拟总线驱动器1760可配置成向服务器1704的操作系统报告设备1740被连接,并向操作系统提供设备信息。这允许服务器1704的操作系统识别设备1740的存在,即使设备1740连接到客户端1702。服务器1704的操作系统可使用设备信息来找到并在服务器1804处装入设备1740的适当设备驱动器1780,其例子在图17中示出。作为结果,在服务器1704上列举设备1740。一旦设备1740的存在被报告给服务器1704的操作系统,设备1740就是从在服务器1704上运行的桌面(即虚拟桌面环境)可访问的。例如,设备1740可作为图标出现在虚拟桌面环境上和/或可由在服务器1704上运行的应用访问。在一个方面中,在服务器1704上运行的应用170可通过直接地或经由设备驱动器1780将设备140的交易请求发送到虚拟总线驱动器来访问设备1740。虚拟总线驱动器1760可将交易请求引导到代理1750,其通过网络106将交易请求发送到代理1710。代理1710从代理1750接收交易请求,并将所接收的交易请求引导到存根驱动器1720。存根驱动器1720然后通过总线驱动器1730将交易请求引导到设备1740。总线驱动器1730从设备1740接收交易请求的结果并将交易请求的结果发送到存根驱动器1720。存根驱动器120将交易请求的结果引导到代理1710,其通过网络106将交易请求的结果发送到代理1750。代理1750将交易请求的结果引导到虚拟总线驱动器1760。虚拟总线驱动器1760然后直接地或通过设备驱动器1780将交易请求的结果引导到应用1770。因此,虚拟总线驱动器1760可从应用1770接收设备1740的交易请求并将交易请求的结果发送回到应用1770(直接地或通过设备驱动器1780)。因此,应用1770可以用与在本地连接到服务器1704的设备的总线驱动器相同的方式与虚拟总线驱动器1760交互作用。虚拟总线驱动器1760可隐藏下面的事实:它将交易请求发送到代理1750并从代理150而不是在本地连接到服务器1704的设备接收交易请求的结果。作为结果,连接到客户端1702的设备1740可在应用1770看来好像物理设备1740在本地连接到服务器1704一样。在一个实现中,图13的数据源1310或数据接收器1315中的一个或多个可被实现为虚拟设备(例如虚拟设备1790)。远程计算设备335也可被实现为虚拟设备。可选地,数据源1310、数据接收器1315或远程计算设备1335中的一个或多个可被实现为虚拟设备(例如设备1740)。在一个实现中,操作系统1340可被实现为在虚拟设备(例如虚拟设备1790)内运行且不捆绑到任何物理设备的虚拟操作系统。服务器1704可包括RDP服务器1330或HTTP服务器1410。客户端1702可包括RDP客户端13225或HTTP客户端1405。在一个例子中,客户端1702可包括项目1305、1310、1315、1320或1325中的一个或多个。一般客户端引擎RDP、ICA、VNC、PcoIP是提供类似的特征的协议的例子。然而,主题技术可包括一经要求就装入这些协议中的任一个的任何部件(例如使用建立引擎1305和连接引擎1320,它们是一般客户端引擎的部件)的能力,但不使用这些中的任一个或组合来定义客户端。未实现RDP客户端代码的客户端计算设备可配置成使用本文所述的技术来与RDP服务器通信。在一些实现中,RDP、ICA、PCoIP和类似的协议可以使用客户端——包括例如屏幕、键盘、鼠标和网络接口来实现。客户端可连接到服务器,其对客户端开放交易的协议的使用来向客户端提供操作系统(OS)扩展。主题技术的一些方面可包括一般部件引擎,其允许操作的每层在适当的时间对适当的协议被装入。主题技术的一些实现可包括下列内容。(1)在客户端和服务器之间利用协议;对于这个部件,装入协议层。(例如在图16A的操作1610A和相应的公开中所述的通信协议。)(2)分析程序从协议筛选部件移除并将它们发送到渲染例程。(渲染例程可以在数据接收器1315内,与数据接收器的通信在图16A的步骤1620A、1640A和1650A-1680A和相应的公开中被描述。)(3)键盘、鼠标和其它用户输入通过到服务器的协议被传输回到服务。(键盘、鼠标和其它用户输入可以在数据源1310内,与数据源的通信在图16A的步骤1630A、1640A和1650A-1680A和相应的公开中被描述。)(4)整个客户端侧协议通过通信队列被附加到设备和功能(例如屏幕、音频输入、音频输出、智能卡阅读器等)。(通信队列可以是图16A的步骤440A-480A和相应的公开的通信路径的一部分)。(5)通信队列实现协议的级联,其中每个连续级使用对客户端侧队列(CSQ)的配合。(通信队列可以是图16A的步骤440A-480A和相应的公开的通信路径的一部分。协议可包括在开放系统互连模型的应用层内的协议,例如RDP。)(6)客户端互补队列(CCQ)附加到CSQ以终止i/o;CSQ将设备流连接到客户端侧编解码器/协议。这可被写为如下:[N]DevicesCCQ::CSQclient-side-codec::server。(设备可包括在数据源1310内的输入设备和在数据接收器1315内的输出设备。连接设备在图16A的步骤1620A、1630A和1650A-1680A和相应的公开中被描述。)通过RDP客户端(RDPc)通过RDP服务器(RDPs)RDP客户端发源/接收数据的设备可被写为如下:[N]DevicesCCQ::CSQRDPc::RDPs。CCQ/CSQ的使用是隐含的。因此,相同的表示可被写为如下:[N]Devices::RDPc::RDPs。也就是说,“N”个设备经由CCQ/CSQ连接到RDPc并连接到远程RDPs。(7)RDPc(例如RDP客户端1325)的创建和到RDPs(例如RDP服务器1330)的操作连接通过RDPc创建设备(RDPcS)被传递。RDPcS的角色是创建RDPc,并根据需要使用适当的协议OP、隧道、证书…附加到指定的RDP),并通过RDPc实例来附加设备作为数据源/接收器(例如数据源1310和数据接收器1315)。为每个RDPc指定设备和RDPs的能力提供创建客户端并将数据业务以它的各种形式按规定路线发送到正确的目标/源的动态手段。(见例如图16A的步骤420A、430A和450A-480A以及相应的公开。)以类似的方式管理其它功能、重定向和特征。每个可在逻辑上用于相同的功能或目的。然而在一个方面中,实现是协议特定的,且整个责任链对给定的协议是定制的。在一些实现中,可为所支持的每个协议装入唯一的个性。没有一般堆栈层装入部件并不同地解释操作,如协议所规定或展示的。而且,利用远程桌面协议作为一般编解码器(或复合编解码器)的能力不是本领域。如果多于一个个性(协议)被支持,则成本可能更高。如果多个客户端应用需要在本地存在,则代码足迹可能更大。有在“根据需要/视需要”基础上动态地装入部件的能力简化了总设计。客户端可以只有屏幕、键盘和USB端口(或更少)。可下载代码以提供将数据转换到屏幕所需的CODEC。而且,添加设备支持的能力通过USB外围扩展和指定实际设备由软客户端(RDPc)使用的代码交换来继续。一旦设备I/O被附加,到RDPs的数据传递就可发生。然而,一些实现的一个优点是在远程主机上创建多个客户端的能力。设备路径可抽象化,且对这些的数据交换通过与常规路径完全不同的路径被开放交易。这真正是“虚拟客户端”架构。一些方面可提供简化的方法来在通用协议交换环境中接收、解释并交换数据。一旦在适当的地方,操作就可利用其它规范或在运行时间确定操作特征。这可通过RDPc的创建、到RDPs的连接和通过设备的数据的终止/发源来明确规定。主题技术可包括定义基本协议的规范或预先读取开放分组以确定目标客户端特征的运行时间“嗅探器”。一旦被确定,提供与服务协议的网络兼容性的规范就被装入。其它规范定义将数据流拆开并划分到相应的目标(屏幕、扬声器等)的手段。规范定义所有输入和输出数据处理程序。而且,规范规定规范信息(方法和位置)的起源。另一实施方式将具有使应用能够指定期望协议、连接、证书、设备终止/发源等的一般“协议服务”。而且,为了理想设备接口的生效或选择和编码机制而执行选项交换以及提供用于使数据变老的时间戳信息的手段。主题技术的一些实现可包括下列项。(1)定义协议(或编解码器例如RDPc)。(见例如图15A的操作310A极其相应的公开。)(2)定义要连接的连接(RDPs)。(例如定义在RDP客户端1325和RDP服务器1330之间的RDP连接;见例如图15A的操作320A极其相应的公开。)(3)定义证书和其它连接/用户/机器生效信息。(见例如图15A的操作330A极其相应的公开。)(4)定义设备、它们各自的编码和目标路径,(a)定义接收方提取(屏幕、声音输出等),(b)定义发送方提取(键盘、鼠标不、触摸、照相机、声音输入等)。(例如定义数据源1310和数据接收器1315,例如,如在图15A的步骤340A-350A极其相应的公开中的;例如定义或便于定义在数据源1310和数据接收器1315中的各种设备的编码和/或目标路径用于经由通信路径进行通信,如在图15A的步骤360A和370A极其相应的公开中所示的。)(5)使用设备流数据附件来创建实例(RDPc)。(例如经由通信路径创建通信会话的实例,其中在数据源1310和数据接收器1315中的设备与RDP客户端1325通信地耦合。在一个实现中,RDP客户端1325可以表现为好像数据源1310和数据接收器1315是它自己的输入/输出设备一样。例如,RDP客户端1325可以表现为好像数据源1310包括它的键盘和鼠标以及数据接收器1315包括它的屏幕和音频扬声器一样。)(6)使用通信路径。(见例如图15A的操作370A极其相应的公开。)(7)结束操作。(例如在操作370A之后,操作300A可结束。)定义通信协议可能对建立数据流的提取和插入的手段是有用的。定义接收方/发送方提取可能对实现数据发源和接收是有用的。结束操作可能对关闭规范创建的客户端是有用的。可提供能够发起任何类型的客户端的规范定义的客户端或一般客户端引擎(GCE)。连接引擎的例子图18示出示例连接引擎1800。在一些例子中,连接引擎1800可相应于图1和2的连接引擎1320。如所示,连接引擎1800可包括一个或多个输入设备1805.1到1805.4、输入转换块1810、输出转换块1820和一个或多个输出设备1825.1到1825.4。连接引擎1800可接收一个或多个输入流1815和一个或多个输出流1815。虽然示出四个输入设备1805.1到1805.4和四个输出设备1825.1到1825.4,可使用任何数量的输入设备和/或输出设备实现主题技术。具体地,可使用一个输入设备、两个输入设备或多于两个输入设备实现主题技术。可使用一个输出设备、两个输出设备或多于两个输出设备实现主题技术。输入设备1805.1到1805.4可包括例如键盘、鼠标、麦克风、摄像机、触摸屏输入、通用串行总线(USB)端口等中的一个或多个。输入设备1805.1到1805.4可存在于连接引擎1800上或可远离连接引擎1800而存在并配置成与连接引擎1800通信。例如,输入设备1805.1到1805.4可存在于图13的数据源1310上或图14的HTTP客户端1405上。输入设备1805.1到1805.4可将数据传输到输入转换块1810。输入转换块1810可配置成从输入设备1805.1到1805.4中的一个或多个接收输入数据,以将所接收的输入数据转换成与输入/输出流1815相关的格式并将所接收的输入数据转换成输入/输出流1815。连接引擎1800可配置成从输入/输出流1815接收输入数据,处理输入数据并向输入/输出流1815提供输出数据。连接引擎1800可例如通过使用输入数据进行计算或向图1和2的RDP客户端1325提供输入数据用于处理来处理输入数据。输入/输出流1815还可包括来自RDP客户端1325的输出数据。输出转换块1820可配置成从输入/输出流1815接收输出数据,将所接收的输出数据转换成与输出设备1825.1到1825.4相关的格式,并向一个或多个输出设备1825提供所接收的输出数据。输出设备1825.1到1825.4可包括例如屏幕或显示单元、音频输出单元(例如扬声器或头戴式耳机)、数据可被写到的存储器等。输出设备1825.1到1825.4存在于连接引擎1800上或可远离连接引擎1800而存在并配置成与连接引擎1800通信。例如,输出设备1825.1到1825.4可存在于图13的数据接收器1315上或图14的HTTP客户端1405上。输出设备1825.1到1825.4可从输出转换块1820接收数据。具有负载平衡的一般客户端引擎在特定的实施方式中,远程计算设备(例如远程计算设备1335或HTTP客户端1405)可以是“瘦客户端”。瘦客户端可包括硬件(例如显示器、键盘、鼠标等)和可能能够使用远程桌面扩展协议(例如RDP、ICA、VNC、PcoIP等)来操作的设备。瘦客户端还可包括web浏览器,且可以例如是HTML(例如HTML5)客户端。在特定的实施方式中,一个或多个代码转换服务或仪器(其可在硬件中或实质上在软件中实现)可使瘦客户端的web浏览器与远程桌面扩展协议通过接口连接。代码转换服务可以例如由GCE发起(例如作为建立引擎1305或连接引擎1320的部分)。GCE可包括负载平衡功能或服务以最小化在给定远程主机上的负载(例如通过确定要执行多个代码实例中的哪个)。GCE架构可经由websockets、HTTP隧道或任何其它适当的HTTP客户端兼容协议进行代码转换到HTTP,且这可独立于拦截所有数据并将所有数据来回转换到特定的远程桌面协议的任何专用硬件仪器或web服务而执行。GCE架构因此可实现对等连接和代码转换,允许在HTTP服务开销中的减小。在特定的实施方式中,GCE架构包括下面描述的多个部件或与多个部件交互作用。以HTML或JavaScript的形式由web服务提供到HTML客户端的HTML语法可由GCE修改(如果适当)。HTML兼容流可以使用标准HTML或JavaScript兼容语言起到和来自HTML客户端的接口的作用,用于将远程客户端任务重构到远程桌面协议或从远处桌面协议拆开远程客户端任务。远程客户端套接字指向的客户端可被包括以使用由套接字(由发起函数定义)定义的客户端接口连接将数据从HTML或远程桌面协议来回进行代码转换。在特定的实施方式中,同一客户端套接字可用于使用升高的套接字类型(例如WS或WSS)的所有客户端连接。在负载平衡考虑因素被分析之后,发起函数服务允许客户端连接到远程桌面套接字指向的客户端。GCE可提供由下面的步骤概述的服务,导致HTML代码转换的多会话远程桌面:(1)GCE可使用连接信息创建HTML脚本(被定义为例如连接负载和策略的结果)。(2)HTML客户端可装入并执行HTML脚本。这可帮助确保为了代码转换目的而选择最佳主机。(3)连接页面可被装在HTML客户端上。这可描述连接如何发生。(4)用户可指定连接信息,包括例如证书。这可能需要(例如,如果在脚本中不是硬编码的)定义连接信息。(5)GCE等待来自HTTP兼容客户端的连接。这可能需要接收连接变元并提供连接服务。(6)HTML客户端连接由GCE分配唯一的套接字。这可能需要创建可完全定义连接信息的参考。(7)GCE使用套接字规范发起代码转换远程桌面客户端。这可开始代码转换操作。(8)HTML客户端终止连接。这可结束代码转换操作。(9)GCE更新它的负载平衡信息。这个步骤可包括记录(或说明)连接,并将这个信息馈送回以为了代码转换目的而选择最佳主机(例如,在步骤(2)中的)。以这种方式,代码的单个实例允许使用HTML兼容协议对所有图形设备接口(GDI)和虚拟通道进行代码转换。使用由GCE定义的套接字来发起代码转换的客户端(在分析在不同的远程主机上的负载条件之后)。HTML客户端接收(经由标准HTML方法兼容代码,例如JavaScript)数据流以用于解释代码转换的数据。HTML客户端可提取所有输入流并将此应用于本地函数和设备。HTML客户端可对如在脚本(JavaScript)中指定的所有输出流编码并将它应用于远程函数和设备。如上所述,GCE可提供服务以在建立连接之前得到用户证书和主机连接信息。GCE使来自客户端特定协议的这样的信息的捕获能够确定连接如何被建立并可发起唯一的实例来在那些条件下操作。GCE可用作独立服务(例如以将标准HTML客户端转换成选择的协议,包括RDP、ICA、VNC等),并实现充分集成的设备I/O)。GCE还可用于增强基于web的代码转换服务。一般代码转换服务在特定的实施方式中,客户端(例如HTML客户端)可能能够进行HTML通信,但不包括远程桌面协议(RDP)的功能。可提供允许客户端(例如HTML5客户端)连接到RDP服务器的一般代码转换服务。此外,虽然关于客户端应用的HTML编码和代码转换被描述,任何协议可用于编码或代码转换。一般代码转换服务可允许经由指定的协议通过“覆盖”客户端的操作来转换客户端的所有函数(或客户端的应用)。一般代码转换服务可例如附加到客户端(例如RDP客户端1325)并向客户端导入和导出GDI、虚拟通道和I/O设备(例如鼠标或键盘)。一般代码转换服务可以起作用来充分提供一般操作系统函数调用,并可使这些函数串行化用于由远程客户端使用。这可允许甚至在客户端和服务器处的不兼容协议之间的端对端通信(包括富含特征的体验)。在特定的实施方式中,可以用独立的方式使用一般代码转换服务。在又一些其它实施方式中,可结合上面描述的一般客户端引擎(GCE)来使用一般代码转换服务(在有或没有负载平衡的情况下)。这可例如提供允许任何数量的代码转换客户端实例的服务。GCE如上所述可在发起一般代码转换客户端服务的实例之前得到用户证书和主机连接信息。在特定的实施方式中,一般代码转换服务可定义桌面的函数基元和数据或设备I/O导入和导出,允许客户端的应用扩展。一般代码转换服务可以例如是具有预定义的导出协议的客户端的一部分。一般代码转换服务可使用一个或多个下面的要素来操作或包括一个或多个下面的要素。HTML语法可由web服务以HTML或JavaScript的形式提供到HTML客户端。语法可描述必要的扩展协议的所有特征。语法还可包括在利用与HTML5(包括例如H.264、视频、音频或其它编解码器传送定义)兼容的其它协议时的指令。一般代码转换服务还可包括HTML兼容流服务。流服务提供到和来自客户端的接口,并可使用用于将远程客户端任务重构到远程桌面协议或从远处桌面协议拆开远程客户端任务的标准HTML或JavaScript兼容代码。一般代码转换服务还可包括远程桌面客户端函数,其可使用HTML兼容流服务来解释、处理并代码转换操作(例如不是在客户端硬件上有设备终止和发源)。在特定的实施方式中,为HTML客户端执行的一般代码转换服务可包括下列步骤中的一个或多个,导致HTML代码转换的多会话远程桌面:(1)HTML客户端可装入并执行描述连接交换如何发生的HTML脚本。(2)用户可指定连接信息,包括例如证书。用户可定义可能在脚本中没有硬编码的连接信息。(3)在具有特定端口的代码转换远程桌面客户端上通过导入/导出协议服务产生HTML客户端连接。这开始代码转换操作。(4)HTML客户端终止连接,结束代码转换操作。在特定的实施方式中,结合HTML5来使用一般代码转换服务,使得它可转换设备I/O并从HTML5来回起作用。它可将对客户端设备和功能的基于HTML5的渲染重新编码并转换。客户端功能可包括例如显示器、键盘、鼠标、扬声器、麦克风等。客户端功能可以在可以是RDP客户端的部分(作为代码转换实例)的专用导出HTML协议服务中终止。这可允许HTML5客户端使用最新定义的HTML5协议连接到RDP服务器。一般代码转换服务因此可附加到客户端的设备函数。HTML5客户端可使用websockets或HTML操作直接与一般代码转换服务通过接口连接。一般代码转换服务可将RDP客户端分成协议和设备片。在特定的实施方式中,一般代码转换服务可通过websockets或HTTP连接的使用来由HTTP客户端使用。一般代码转换服务可与任何适当的客户端——包括例如嵌入式无头设备(需要I/O但只访问数据通信设备)或提供对在IP云中的代码转换实例的访问的整个服务——一起被使用。在特定的实施方式中,将一般代码转换服务附到RDP协议末尾可导致代码转换实例,由此,协议(RDP、ICA或VC)再次经由可兼容的客户端协议被直接编码。在客户端处的设备I/O可利用这个指定的协议来转换在客户端处的设备的操作。在特定的实施方式中,应用例如桌面共享或视频流式传送利用一般代码转换服务来透明地导出到可选的主机用于利用。也可结合压缩或解压缩方法例如zlib压缩或解压缩来使用一般代码转换服务。在特定的实施方式中,一般代码转换服务可附加到在浏览器内的RDP客户端。例如,可使用CHROME的本机客户端环境的特征在CHROME浏览器内创建全功能RDP实例。到客户端即服务的基于web的代码转换在特定的实施方式中,服务可以给HTML客户端提供经由在基于互联网的服务基础设施(例如微软的互联网信息服务)内的代码转换协议函数将信息发送到服务器(例如RDP服务器)并从服务器接收信息的能力。这可在一个实施方式中以下面的方式完成。首先,HTML客户端(例如客户端1405)的浏览器可连接到web服务(例如IIS或Apache)。浏览器可以例如是由GOOGLE提供的CHROME浏览器。客户端首先连接到web服务服务器(例如http://rdpservice.dell.com)。客户端可然后在web服务服务器处读取包含脚本(例如JavaScript)的index.html文件。可选地,客户端可从本机文件系统装入脚本。客户端可经由对话框(例如指定远程DP服务器)来提供连接信息。客户端可然后经由HTML客户端浏览器来连接(例如通过选择“连接”按钮或自动地),该浏览器产生到一般客户端引擎(例如连接引擎1320或建立引擎1305的部分)的连接。特定的端口例如端口443、标准加密HTTP路径可用于这个连接。接着,客户端可使用定义GCE服务的变元、应用和应用变元来打开到GCE的连接(例如执行“打开”操作)。变元可例如指示连接信息,且客户端可经由webrtc使用任何浏览器兼容协议,包括例如HTTP、HTTPS、WS、WSS、FTP或暴露的设备。打开到GCE的连接的客户端的例子如下:wss://gce.dell.com/GCE01/Application-a32-ujoe-ppasstargethost在这个例子中,建立连接的主机是GCE0l。可以或可以不根据通过与主机GCEOl的WSS连接而建立的证书和规则来建立应用。此外,到GCE的连接也可通过端口443出现。一旦在客户端和GCE之间的连接产生,GCE就可创建新过程或运行时间环境(例如派生)并使用由用户指定的变元并使用与当前连接相同的套接字标识符发起应用(其可例如包括上面所述的一般代码转换服务附件)。作为例子,所发起的应用可以是RDP客户端。在特定的实施方式中,GCE可经由在应用内的明确启用或通过标准库调用的操作系统拦截来将一般代码转换服务附加到应用。作为一个例子,命令行输入可以是“rdpclient<ARGS>—icecapSOCKET—localoff”。这可产生具有一般代码转换服务附件的唯一RDP客户端实例和通过指定套接字(例如SOCKET)到HTML客户端浏览器的连接。接着,应用(例如RDP客户端)可产生如在变元中指定的到远程服务器(例如RDP服务器1330)的连接。HTML客户端浏览器可接着用于通过规定路径的使用(例如通过应用的变元的协定)与服务器(例如RDP服务器)通信。在MicrosoftWindows和RDP的上下文中描述这个架构的方程如下:HTMLc::HTMLsGTS:RDPc::RDPs:Desktop:WindowsOS:application,其中HTMLc是HTML客户端,GTS代表一般代码转换服务(早些时候描述的),且“应用”是在目标桌面上的应用。使用这个框架,利用HTML浏览器的任何客户端可使用标准MSWindows协定连接到在目标桌面上的应用。如果期望执行在不同操作系统(例如Linux)的目标桌面上的应用,则可使用由下面的方程描述的不同的协议(例如VNC):HTMLc::HTMLsGTS:VNCc::VNCs:Desktop:LinuxOS:application。以这种方式,在Linux上运行的桌面可经由VNC被导出到HTML浏览器。具有多个通道的代码转换实例在特定的实施方式中,多个通道可被创建并与一般代码转换服务的单个原始实例有关,使得数据的多个独立流可被传送。这可允许一般化的数据传递或流式传送,例如视频流式传送、音频流式传送、设备流式传送、桌面流式传送等。如在本文所述的,当应用例如RDP客户端产生到远程服务器(例如RDP服务器)的连接时,应用可产生如在由HTML客户端提供的变元中指定的连接。在特定的实施方式中,当RDP客户端产生到远程服务器的连接时,控制通道可在大量生产过程(例如新环境)和GCE(例如GCE-HTTP/WS服务)之间打开。当GCE发起具有一般代码转换服务附件的RDP客户端时,则GCE和一般代码转换服务(GTS)可使用GTS的每个实例的唯一参考标识符在控制通道上双向地通信,因为多个实例是可能的。此外,在HTML客户端浏览器和GTS之间的通信通道可被称为主通道,且它可包括将数据以及语法命令进行代码转换。如果应用(例如RDP客户端)打开到远程服务器(例如RDP服务器)的一个或多个应用,则这些连接是分开的变元通道。如本文所述的,HTML客户端浏览器可接着用于通过规定GTS路径的使用(例如通过应用例如RDP客户端的变元的协定)与远程服务器(例如RDP服务器)通信。在这个例子中,数据的所有RDP服务器导出和导入通过GTS出现。通过GTS来管理RDP客户端的特定实例的所有输入和输出。到RDP服务器(和最终在目标主机上的桌面)的后端连接如本文所述的出现。一旦这个建立出现,RDP客户端的最小实例就代码转换到在在适当位置上的HTML客户端浏览器(RDP服务器提供对在目标主机的桌面上的应用的访问)。如果多个通道传送被期望(例如对于虚拟通道支持),则可创建从HTML客户端浏览器到目标主机的额外的连接,且每个连接可与具有GTS附件的应用(例如RDP客户端)的原始实例有关。每个连接路径是来自浏览器的独立路径(例如所有连接可由执行打开操作的客户端引起),且因此在路径中的一个流的性能独立于在不同路径中的另一流的性能(例如与其无关)。供应多个数据路径并使它们与一个初始连接有关的这个能力可例如允许高吞吐量和快速执行。这个架构的一个组成部分是,当服务器通过名称和有关连接开协调打开时,客户端打开连接。所有连接是分开的,起源于客户端并与单个控制会话有关。以这种方式使单独通道信息有关的这个能力使同时的多个路径能够完成运行时间线程。一旦在HTML客户端浏览器和远程服务器(例如RDP服务器)之间的连接通过原始GTS实例的规定路径而建立,额外的通道传送(例如虚拟通道)就可由客户端打开并与应用(例如RDP客户端)的GTS附件的原始实例有关。作为例子,下面的步骤可出现。首先,应用(例如RDP客户端)可从远程服务器(例如RDP服务器)接收命令以打开通道传送(例如虚拟通道)。这个命令经由主通道以命令的形式从GTS实例(应用的附件)发送到HTML客户端浏览器以执行“打开”操作。“打开”操作的命令可包括参考标识符(对GTS的特定实例是唯一的)、协议标识符、一个或多个iFrame参数和通过GCE服务的URL路径。HTML客户端浏览器可接着通过GCE服务执行“打开”操作。GCE服务经由控制通道使参考标识符的连接信息生效。如果GTS实例(例如由参考标识符指定)不引导待打开的新连接,则GCE将拒绝连接企图。然而,如果GTS实例引导HTML客户端浏览器以创建新连接,则GCE将接受连接并经由控制通道将连接的套接字标识符传递到GTS。GTS实例通过由GCE所传递的套接字标识符定义的唯一套接字来发送虚拟通道数据。此时,HTML客户端可用于使用额外的GTS路径来与远程服务器(例如RDP服务器)通信。虚拟通道连接此时被建立,且数据通过唯一套接字从HTML客户端浏览器来回流式传送。GTS实例可接着通过HTML客户端浏览器来协调多个连接(根据需要)的创建,通过远程服务器(例如RDP服务器)建立的每个虚拟通道(例如VC[k])通过唯一套接字实例(例如相应于VC[k]的socket[k])来建立。HTML客户端浏览器可通过规定GTS路径的使用来与远程服务器(例如RDP服务器)通信。在特定的实施方式中,可以没有虚拟通道被创建。在其它实施方式中,可以有被建立并从HTML客户端浏览器来回流式传送(每个通过唯一套接字)的一个或多个虚拟通道连接;这些虚拟通道连接中的每个与具有GTS附件的应用(例如RDP客户端)的原始实例的主通道有关。在客户端侧上,多个套接字连接(例如N个连接的socket[l]、socket[2]、socket[3]、socket[N])每个与用于处理或覆盖的唯一iFrame有关。作为例子,多媒体重定向(MMR)可利用只有使iFrame独立于主页面而再现所需的坐标、高度和宽度信息的iFrames。在特定的实施方式中,远程服务(“r-service”)而不是GCE(例如数据暂存器)可用于打开一个或多个套接字连接。例如,就像任何套接字连接(例如socket[k])可附加到GTS前端并由iFrame或在客户端内的其它手段终止一样,可选择不同的r-service。r-service可例如存在于HTML客户端浏览器或GTS前端有连接的能力的任何地方。在主通道(例如对于GTS的特定实例)和所有相应的套接字连接(例如分别到GCE或到r-service)之间的关系可被称为“套接字束”。在特定的实施方式中,GCE(或r-service)可维持套接字束的所有相关套接字连接的所链接的列表。前端高可用性代理如在本文所述的,在特定的实施方式中,多个通道或连接可由单个GCE实例管理。可在唯一执行或运行时间主机中指定每个连接,也就是说,对于每个连接“connection[i]”,可指定主机“host[h]”。为初始GCE连接(例如在客户端和GCE之间)创建的同一套接字连接可与具有GTS附件的应用(例如RDP客户端)的特定实例一起重新使用。GCE实例必须基于负载平衡规则来确定在哪里执行具有GTS附件的应用的特定实例。当负载平衡时,对于具有GTS附件的应用的每个实例,GCE实例需要定义和访问多个执行主机。因为可以有与特定的GCE实例相关的多个额外连接,GCE实例必须通过同一GCE路径管理所有随后的连接。对于具有GTS附件(例如GTS:RDPc)的应用的每个实例,GCE的单个实例随时知道负载平衡条件(例如越过所有可用的执行主机)并以最小化资源的消耗的方式指定实例的特定执行主机。HTML客户端浏览器然后通过指定的远程服务器(例如RDP服务器)透明地连接到指定目标。在特定的实施方式中,前端高可用性代理用于(例如在企业LAN的前端处)管理给定环境的利用率(而不是通过GCE的单个实例管理执行主机)是合乎需要的。HTML客户端浏览器可(例如通过WAN来连接)产生到高可用性代理的连接并从那里产生到目标GCE(例如多个可能的目标GCE之一)的连接以建立连接(例如connection[i])。高可用性代理可利用一个或多个规则或策略来确定连接的最佳分配。例如,代理可遵循负载平衡规则以为具有GTS附件的应用的特定实例确定初始连接的目标GCE主机。代理可例如选择具有最少数量的当前连接的主机。这可允许对最少利用的主机的访问,用于应用执行。代理还可基于前端、端口、协议、提高的协议、服务、URL/URI或这些中的任一个的任何部分的健康状况来选择主机。一旦初始连接(例如GTS:RDPc[i])被分配到特定的GCE主机(例如GCE[h]),任何随后的虚拟通道(例如提供增加物)就包含路径信息以使它们与适当的主机有关。代理规则将每个连接按规定路线发送到正确的主机,将套接字束一起保持在同一主机上。也就是说,具有GTS附件(例如GTS:RDPc)的应用的实例的初始连接基于负载平衡规则由代理分配到GCE主机,且实例的额外连接按规定路线被发送到与初始连接相同的GCE主机。额外的连接提供适当的GCE路径(例如GCE指定通道的名称始于包括目标GCE主机的完全合格的域名的URI或URL)。因此,具有GTS附件的应用的实例可具有多个连接(例如GTS:RDPc[q],对于q个连接),都存在于单个执行主机(例如GCE[h])上。相反,对于具有GTS附件(例如GTS:RDPc[q])的应用的实例,每个执行主机(例如GCE[h])可具有多个连接。如本文所述的,到目标GCE的初始连接分配由高可用性代理的规则确定,且通过正确的目标GCE由URI或URL路径来维持每个随后的通道或增加物(例如对于GTS:RDPc的给定实例)。对于任何连接,唯一的GCE主机由高可用性代理选择。一旦GCE主机被选择,代理就被绕过,且通信通过所选择的GCE主机直接出现。被打开(例如经由打开操作)的每个额外的通道与管理那个特定路径的适当GCE主机相关。在用户具有任何数量的桌面、应用或主机的情况下,这些中的每个可向主服务注册为完全合格的域名。主服务可通过维持对应用和位置的特定部件的访问来提供对所有用户计算数据的访问。主服务也可允许远程服务(例如“r-service”)的代理,由此,可从第三方位置来存储或使用数据。连接映射如下:Connection[i]url/Application/<ARGS>-->Routestourl/GCE[h]/GTS:RDPc[i]/<ARGS>Augmentation[k]->RoutestoGCE[h]:[i]:[k]高可用性(HA)代理功能的范例代码如下:具有库附件的GTS如本文所述的,GTS系统架构可绑定到应用(例如RDP客户端)。在特定的实施方式中,GTS系统架构可绑定到运行时间库(例如运行时间库),且具有GTS附件上下文的库可与具有GTS附件的应用的实例类似地起作用。对于应用的每个实例,操作系统函数(例如系统调用)可由库拦截。库可经由通过控制通道发送的环境变量获得GCE的资格。当GCE发起实例(或上下文)时,那个实例(或上下文)可读取环境变量以使操作对参考标识符(例如过程标识符)生效。库如果被找到则可对应用的特定实例实现主通道和与HTML客户端浏览器的套接字输入/输出。库可例如在对应用的系统调用和GTS之间转换。应用本身可被直接导出(例如GTS绑定到库),或框架可被添加以提供开窗能力(例如GTS框架绑定到库)。运行时间库的一个益处是本机操作系统调用的透明拦截,而不需要重新写应用。这将在应用当前存在(例如遗产应用)的环境中起作用。遗产应用又被转换用于经由利用通道束的网络来导入/导出,而不需要操作系统本身提供输入/导出。这导致不为远程使用设计或优化的应用的虚拟化应用框架(VAF)。最终结果使应用能够在主机可被远程访问的任何地方存在,且运行时间输入/输出和/或结果可附加在客户端或远程主机可被处理的任何地方而不卷入桌面(如果期望)。这是用于使应用操作而不需要重新写给定遗产应用的虚拟化范例。运行时间API框架在特定的实施方式中,可提供用于所有数据到应用的远程导入和所有数据从应用的远程导出的运行时间API框架。这类似于运行时间库情形,除了在这个实施方式中被写入的应用设计成为了远程访问而在这个框架内操作以外。可为每个操作系统(其中应用可被使用)定义API框架,或API框架可作为虚拟化操作系统环境的部分而存在。所有远程客户端可具有相同的用户体验,无论使用这个运行时间API框架在哪里执行应用,而不考虑被使用的操作系统。API框架可在不使用远程桌面扩展协议(例如RDP、ICA、VNC等)的情况下起作用。设备的函数可被串行化并经由框架被导出或导入。例如,可经由规定代码转换协议来导出开窗和GDI函数。以这种方式,在特定的实施方式中,API框架可代替某些远程桌面导出协议(或去除对某些远程桌面导出协议的需要),同时以一般多平台方式提供所有相关特征。API框架具有很多角色和功能。API框架可包括负载平衡。API框架还可包括认证用户的证书(例如基于存在、时间和其它因素)以提供对访问应用的许可的认证服务。认证服务还可包括供应并可包括服务例如OAUTH2。API框架还可包括在给定持续时间期间或为了给定目的提供(例如基于证书或其它数据,例如支付信息)执照的发执照服务。API框架还可包括导入/导出服务,其提供用于将附加到/来自远程客户端和应用的所有导入/导出数据流类型的API。这个导入/导出服务可包括GDI(用于开窗)和远程通道例如虚拟通道(用于定制数据传送)。应用可被引入或创建以在API框架的顶部上运行,API框架本身可在给定操作系统的顶部上运行。API框架的库可使应用能够被构建并在给定操作系统上运行,所有I/O以它的各种形式被导入和导出到远程客户端。如果框架与GCE(上面所述的)一起使用,则框架可对不同的用户允许同一应用的同时多会话多实例操作。然而,框架可在不使用GCE的情况下起作用。框架可因此提供用于操作系统诊断操作的手段,操作系统诊断操作向在任何操作系统上运行的应用提供认证、发执照、GDI的导出、视频和音频的导入/导出和一般虚拟通道数据。这可因此防止对操作系统特定代码基础的复杂或耗时的端口的需要。在特定的实施方式中,API框架可结合一般代码转换服务(早些时候描述的)来操作以再现对应用的使用无关(因为没有特定的操作系统是需要的)的操作系统的协定。下面的方程表达操作:HTMLc::HTMLsGTS:APIFrameWork:OS:application这个方程体现对特殊桌面导出协议的可选方案。框架导出整个桌面体检,因为它与这个应用有关,且所有逻辑设备函数是框架的函数。API框架不需要与操作系统(其中感兴趣的应用被执行)包含在一起。更确切地,框架可在现有操作系统的顶部上起作用,并例如在可应用的场合使用户证书和执照生效。与一般代码转换服务组合的API框架可位于同一主机上或在具有授权权限的任何主机上。在服务器通过使用API框架来使证书、执照和支付信息生效之后,任何HTTP浏览器可因此连接到或打开在任何主机上的任何应用。图20示出结合GCE来操作的API框架的例子。在这个例子中,在服务器通过使证书、执照和支付信息生效之后,任何HTTPweb浏览器可打开在任何主机上的任何应用。在特定的实施方式中,框架可放置到任何数量的运行时间环境(例如MSWINDOWS、LINUX、IOS、ANDROID)内。框架可需要具有使用套接字束来发起和代码转换的能力的应用存在。当与GCE一起被地递送时,GTS套接字束可从连接可产生的任何地方实现对任何应用的访问。在特定的实施方式中,每应用可使用一个或多个套接字束。在一个实施方式中,GCE框架可放置在HTML客户端浏览器本身内。使用运行时间环境例如CHROMENaCl或pNaCl,浏览器(例如CHROME浏览器)可向它所运行于的客户端提供整套HTML客户端浏览器和GCE能力,允许数据和应用的广泛访问。可使用不同的应用模式。在“在浏览器内”应用模式中,应用作为本机插件(例如pNaCl和NaCl)来操作。在“通过浏览器”应用模式中,应用在桌面上操作或通过本机OS的使用来独立地被流式传送。以这种方式,在服务器使证书、执照和支付信息生效之后,本机HTTPweb浏览器(或任何应用)可打开在任何主机上的任何应用。使用NaCl或pNaCl,每个协议是“本机的”且可以是使用的证书。作为一个例子,“Chromoting”和WebRTC每个都是本机的并可用作目标协议的基础,允许直接附加到本机应用的导出。这个框架通过标准浏览器(例如)实现任何应用的遥控、代码转换、利用或访问。在特定的实施方式中,与一般代码转换服务组合的API框架可使用函数API来拦截对I/O和相关函数的系统调用。函数API可以是例如IPC、套接字、函数接口等。函数API可接收与标准本地函数有关的数据并导出这个数据。转换对本地函数设计的数据并为了在不同设备上使用或操作而导出的过程被称为“串行化”。设备相关函数可通过通信方法被串行化。这样的方法可“串行化”变元和函数描述。例如,图形设备接口(GDI)可能需要x,y坐标和表示用于正确操作的像素信息的数据。而且,额外的信息可定义位深度(用于描述像素的位的数量)。这样的示例函数将如下被调用:codel:write_Gdi(xl,yl,x2,y2,bits,Pixel_data);这可通过经由通信路径如下对同一信息编码来串行化:code2:send(DESTINATION,\write_gdi\,xl,yl,,x2,y2,bits,Pixel_data);code2可以是使用传送器来编码的相同信息。函数的名称也可作为文字正文被编码。现在可将函数导出到远程主机,其中操作可如下发生:code3:packet=receive(SOUCE);整个操作现在可放置到接收主机上的分组串内。这可对数据如下进一步被解析:code4:operation=GET_OPERATION(packet);//这将取回要执行的操作(writegdi)。一旦操作被接收到,与这个操作有关的变元就可被满足:最后,可在目标主机上执行操作:code6:write_Gdi(x1,y1,x2,y2,bits,Pixel_data);视频组成函数在特定的实施方式中,可使用累积(例如整理)相关GDI数据(例如来自图像中的区)的手段。函数可以例如是这里所述的一般代码转换服务(GTS)的一部分。这可例如减小对GDI系统的调用的数量,这可能对提高视频性能或视频质量是合乎需要的。直接从应用对系统做出一般GDI调用。下面的示例方程描绘应用的GDI操作(其与应用需要GDI一样经常地由系统SYS执行)。每个调用用索引“k”标注,其中k是从0到N-1的整数。每个“要执行的项目”(itp)具有被修改的“区”:APPgdiEvent[k](itp+region)->SYSgdi[k](itp+region),在特定的实施方式中,不是允许应用APP直接访问系统GDI(SYSgdi),中间函数(例如在油漆和渲染函数之间)可被创建以允许大k,但只需要如下一次写到SYSgdi:APPgdiEvent[k](itp+region)—>VC[k](itp+region),且在某个稍后的时间:VC-->SYSgdi(itp+region)也就是说,对于每k个事件,有仅仅单个SYSgdi事件。因此,VC(视频整理)函数累积并整理所有区域性地相关的图形数据并发送到渲染API,一旦区被充分界定或是完整的。例如当不相关的新区域被写入时,当特定的时间段消逝、某个百分比的区是完整的时,区是完整的。VC函数维持用于在稍后的时间重新创建的所有事件(例如k个事件)的列表,减小了SYSgdi调用的数量。当系统被重置时,VC函数将虚拟区重置到NULL。可采用下面的步骤:1)VC函数接受图像区数据作为用于使用X-Y坐标和宽度及高度例如以Region[I](X,Y,width,height)的形式再现到屏幕的要素。2)如果Region[I]没有任何要素,则第一Region[J]被放置到尾部/头部位置上。3)对于每个Region[I],阵列的尾部和头部代表连续的区。附到头部末尾的、加在尾部开始处的或位于区内的这些边界内的任何额外的区继续以区域化顺序累积。4)如果Region[J]被接收到,使得Region[J]与Region[I]无关,如在(3)中陈述的,则Region[I]将被再现以显示且Region[I]=singleelementRegion[J]。5)如果Region[I]存在且时间在最后一个要素项目之间消逝,则Region[I]将被再现以显示且Region[I]将是空集。6)如果Region[I]存在并跨越特定区域或地理空间的区,则它被立即再现以显示且Region[I]将是空集。当在方程APPgdiEvent[k](itp+region)—>VC[k](itp+region)中被调用时,VC函数比较所通过的“区”与所包含的vregion(虚拟区)。vregion具有头部和尾部(开头和末尾)。对于函数VC,示例伪代码如下:在一个方面中,在本文所述或所主张的任何方法、指令、代码、逻辑、部件、块、模块等(例如软件或硬件)可在附图(例如流程图、方框图)中示出,这样的附图(不考虑是否清楚地示出)通过引用被明确地并入本文,且这样的附图(如果还没有清楚地示出)可添加到本公开而不构成新内容。为了简洁,子句/描述/权利要求中的一些(但不一定是全部)在附图中清楚地表示,但子句/描述/权利要求中的任一个可以用与被清楚地示出的那些附图类似的方式在附图中表示。例如,可为方法的子句、句子或权利要求中的任一个绘制流程图,使得每个操作或步骤由箭头连接到下一操作或步骤。在另一例子中,可为具有元件的装置(例如用于执行行动的装置)的子句、句子或权利要求中的任一个绘制方框图,使得元件的每个装置可被表示为元件的模块(例如用于执行行动的模块)。本领域中的技术人员将认识到,项目例如本文所述的各种例证性块、模块、元件、部件、方法、操作、步骤和算法(例如服务不兼容客户端210、代理机器220、防火墙120、绑定接口130、基于网络的过程调用接口140、网格接口150、远程服务器计算设备160和其中的部件)可被实现为硬件、计算机软件或这两者的组合。为了示出硬件和软件的可互换性,项目例如各种例证性块、模块、元件、部件、方法、操作、步骤和算法通常从其功能方面被描述。这样的功能被实现为硬件还是软件取决于特定的应用和在总系统上强加的设计约束。技术人员可以用各种方式为每个特定的应用实现所述功能。在一个方面中,“装置”、块、模块、元件、部件或处理器可以是用于执行一个或多个功能或操作的项目(例如一个或多个块、模块、元件、部件或处理器)。在一个方面中,这样的项目可以是装置、硬件或其一部分。在一个例子中,项目可具有以例如用于执行功能或操作的指令的形式的结构,其中指令在计算机可读介质上、在另一设备上或在其一部分上被编码或存储,其中指令可以是软件、应用、子例程或其一部分。在例子中,项目可被实现为配置成执行功能或操作的一个或多个电路。电路可包括一个或多个电路和/或逻辑。电路可以是模拟的和/或数字的。电路可以是电气的和/或光学的。电路可包括晶体管。在例子中,一个或多个项目可被实现为处理系统(例如数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等或任一前述装置的一部分或组合)。本领域中的技术人员将认识到如何实现指令、电路和处理系统。对以单数形式的元件的提及并不打算意指“一个且仅仅一个”,除非特别这样规定,而更确切地指“一个或多个”。例如,消息可以指一个或多个消息。除非另外特别规定,术语“一些”指一个或多个。在男性中的代词(例如他的)包括女性和中性性别(例如她的和它的),反之亦然。标题和子标题——如果有的话——仅为了方便而使用,且并不限制本发明。词“示例性”在本文用于意指“用作例子或例证”。在本文被描述为“示例性的”任何方面或设计不一定被解释为相对于其它方面或设计是优选的或有利的。在一个方面中,本文所述的各种可选的配置和操作可被考虑为至少等效的。短语例如“方面”并不暗示这样的方面对主题技术是本质的,或这样的方面适用于主题技术的所有配置。与方面有关的公开可适用于所有配置或一个或多个配置。方面可提供一个或多个例子。短语例如方面可以指一个或多个方面,反之亦然。短语例如“实施方式”并不暗示这样的实施方式对主题技术是本质的,或这样的实施方式适用于主题技术的所有配置。与实施方式有关的公开可适用于所有实施方式或一个或多个实施方式。实施方式可提供一个或多个例子。短语例如实施方式可以指一个或多个实施方式,反之亦然。短语例如“配置”并不暗示这样的配置对主题技术是本质的,或这样的配置适用于主题技术的所有配置。与配置有关的公开可适用于所有配置或一个或多个配置。配置可提供一个或多个例子。短语例如配置可以指一个或多个配置,反之亦然。在本公开的一个方面中,当行动或功能被描述为由项目执行(例如接收、确定、提供、产生、转换、显示、通知、接受、选择、控制、传输、报告、发送、认证、验证、绑定、创建或任何其它行动或功能)时,应理解,这样的行动或功能可由项目直接执行。在另一例子中,当项目被描述为执行行动时,项目可被理解为例如通过便于这样的行动(例如实现、引起或执行其一部分)来间接地执行行动。例如,产生可以指便于产生。在一个方面中,执行行动可以指执行行动的一部分(例如执行行动的开始部分、执行行动的末尾部分或执行行动的中间部分)。在一个方面中,除非另有规定,在本说明书中——包括在接下来的权利要求中——阐述的所有测量、值、额定值、位置、幅值、尺寸和其它规范是近似的,而不是确切的。在一个方面中,它们被预期具有与它们相关的功能和与在它们所属的领域中惯常的内容一致的合理范围。在一个方面中,术语“耦合”等可以指直接耦合。在另一方面中,术语“耦合”等可以指间接耦合。各种项目可不同地被布置(例如以不同的顺序布置或以不同的方式定位),都不偏离主题技术的范围。在本公开的一个方面中,在附随的权利要求中列举的元件可由一个或多个模块或子模块执行。应理解,所公开的步骤、操作或过程的特定的顺序或等级是示例性方法的说明。基于设计偏好,应理解,可管理步骤、操作或过程的特定的顺序或等级。步骤、操作或过程中的一些可同时被执行。步骤、操作或过程中的一些或全部可自动被执行而没有用户的干预。附随的方法权利要求——如果有的话——以范例顺序呈现各种步骤、操作或过程的元件,且并不意欲被限制到所呈现的特定顺序或等级。本公开被提供来使本领域中的任何技术人员能够实施本文所述的各种方面。本公开提供主题技术的各种例子,且主题技术不限于这些例子。对这些方面的各种修改将对本领域中的技术人员容易明显,且在本文定义的一般原理可应用于其它方面。本领域中的普通技术人员已知的或以后开始已知的对在整个这个公开中描述的各种方面的元件的所有结构和功能等效形式通过引用被明确地并入本文,且被规定为由权利要求包括。而且,本文所公开的没有什么东西被规定为专用于公众,而不考虑这样的公开是否在权利要求中被明确地列举。没有权利要求元件应在35U.S.C.§112第六段的规定下被解释,除非元件使用短语“用于…的装置”被明确列举,或在方法权利要求的情况下,元件使用短语“用于…的步骤”被列举。此外,在术语“包括(include)”、“具有”等被使用的场合,这样的术语被规定为以与术语“包括(comprise)”类似的方式是包括界限的,如当“comprise”在用作权利要求中的过渡词时被解释的。本公开的标题、背景、概述、附图的简要说明和摘要特此通过引用被并入本公开中,并作为本公开的例证性例子而不是限制性描述而被提供。建议理解它们不用于限制权利要求的范围或含义。此外,在详细描述中可看到,该描述提供例证性例子,且各种特征可在各种实施方式中为了精简本公开的目的而被分组在一起。本公开的这个方法不应被解释为反映所主张的主题需要比在每个权利要求中明确列举的特征更多的特征的意图。更确切地,如下面的权利要求反映的,创造性主题在于单个所公开的配置或操作的少于全部的特征。下面的权利要求特此通过引用被并入详细描述中,每个权利要求独立地作为单独主张的主题。权利要求并没有比规定为限制到本文所述的方面,而是符合与语言权利要求一致的全范围并包括所有合法的等效形式。然而,没有一个权利要求意欲包括未能满足35U.S.C.§101、102或103的要求的主题,它们也不应以这样的方式被解释。这样的主题的任何未预期的包括因此被放弃。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1