CN102656562A - 用于选择桌面执行位置的方法和*** - Google Patents

用于选择桌面执行位置的方法和*** Download PDF

Info

Publication number
CN102656562A
CN102656562A CN2010800383687A CN201080038368A CN102656562A CN 102656562 A CN102656562 A CN 102656562A CN 2010800383687 A CN2010800383687 A CN 2010800383687A CN 201080038368 A CN201080038368 A CN 201080038368A CN 102656562 A CN102656562 A CN 102656562A
Authority
CN
China
Prior art keywords
application
server
client computer
computer device
local computer
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
Application number
CN2010800383687A
Other languages
English (en)
Other versions
CN102656562B (zh
Inventor
H·L·帝沃克斯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Citrix Systems Inc
Original Assignee
Citrix Systems Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Publication of CN102656562A publication Critical patent/CN102656562A/zh
Application granted granted Critical
Publication of CN102656562B publication Critical patent/CN102656562B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)

Abstract

描述了用于动态确定在本地计算机器和远程计算机器的其中一个上执行虚拟机的***。***可以包括本地计算机器、远程计算机器和在处理器上执行的执行管理器。执行管理器可获得本地计算机器的特征,以及在本地计算机器与远程计算机器之间的网络的特征。执行管理器接着可将策略应用于本地计算机器特征和网络特征以确定是在本地计算机器上还是在远程计算机器上执行虚拟机。响应于应用策略,执行管理器可将执行指令转发到在本地计算机器执行的管理程序和远程计算机器的其中一个,以执行虚拟机。

Description

用于选择桌面执行位置的方法和***
相关申请
本专利申请要求2009年6月30日提交的美国临时专利申请序列号61/221860的优先权,该申请的公开被视为本申请公开的一部分并且通过引用将其整体包含于此。
技术领域
本发明总的涉及远程地执行计算机器上的应用。更具体地,本发明涉及选择桌面执行位置。
背景技术
存在许多不同种类的虚拟平台,这些平台的每一个可允许多个操作***并发地运行在同一硬件平台上。一个这样的虚拟平台,即管理程序,通常被安装在服务器上,但也可以被安装在客户机上。当安装了管理程序时,该管理程序管理在其上安装该管理程序的机器上的硬件,使得可以在该机器上执行的虚拟机之间共享该硬件。管理程序可以执行包含虚拟堆栈的操作***,该虚拟堆栈包括与机器上的硬件交互的驱动程序。通常,运行管理程序的客户机将在管理程序的操作***上启动。
运行管理程序的客户机可以与一个或多个服务器通信,所述一个或多个服务器也可执行管理程序。一个这样的服务器为应用服务器,其可允许多个用户访问在应用服务器上运行的操作***内执行的应用实例。又一个这样的服务器为桌面执行服务器,其可运行允许多个客户操作***在该服务器上执行的管理程序。一个用户每次可访问客户操作***中的至少一个。服务器可以是服务器群或刀片。
发明内容
从最宽泛的解释,本公开描述了用于确定执行桌面或应用的位置的方法和***。动态地确定桌面或应用执行的位置可通过选择将给用户提供对该用户可用的最多应用的位置,以及通过选择将快速和/或可靠地执行应用或桌面的位置,来给用户提供最优的端用户体验。桌面/应用可本地运行在客户机或第一计算机器上,或者远程地运行在服务器、远程计算机器或第二计算机器上。因此,当本地运行时,桌面/应用可在多个操作***上执行。类似地,可以在客户机或第一计算机器没有连接到网络时访问桌面/应用。可以使用由管理程序、执行管理器或策略引擎所作的决策来确定执行位置。
在一个方面,此处描述的是用于动态地确定在本地计算机器上执行虚拟机的***和方法。在处理器上执行的执行管理器可获得本地计算机器的特征,和在本地计算机器与远程计算机器之间的网络的特征。在获得计算机和网络特征后,执行管理器可将策略应用于本地计算机器特征和网络的特征以确定是否在本地计算机器上执行虚拟机。基于策略的应用,执行管理器可确定在本地计算机器上执行虚拟机。响应于做出该确定,执行管理器可将本地执行指令转发到在本地计算机器上执行的管理程序。管理程序可相应地在本地计算机器上执行虚拟机。
在一个实施例中,获得本地计算机器的特征还包括识别在本地计算机器上执行的操作***。在又一个实施例中,获得本地计算机器的特征还包括识别本地计算机器的中央处理器单元。在又一个实施例中,获得本地计算机器的特征还包括识别在本地计算机器上执行的虚拟环境的类型。
在一些实施例中,获得网络的特征还包括确定本地计算机器和远程计算机器是否通过网络连接。在其他实施例中,获得网络的特征还包括确定可用带宽量。
在又一个方面,此处描述的是用于动态地确定在远程计算机器上执行虚拟机的方法和***。在处理器上执行的执行管理器获得本地计算机器的特征,和在本地计算机器与远程计算机器之间的网络的特征。执行管理器接着将策略应用于本地计算机器特征和网络特征以确定是否在本地计算机器上执行虚拟机。响应于确定在远程计算机器上执行虚拟机,执行管理器将远程执行指令转发到在本地计算机器上执行的管理程序,该管理程序指示远程计算机执行虚拟机。
附图说明
下面的附图描述了用于将应用启动到现有的隔离环境中的方法和***的某些示意性实施例,其中相同的参考标记值是指相同的元素。每个所描述的实施例是对这些方法和***的说明而不是限制。
图1A是说明具有与服务器通信的客户机的远程访问的、联网的环境的实施例的框图。
图1B和1C是说明用于实施此处所描述的方法和***的计算机器的实施例的框图。
图1D是描述服务器群的实施例的框图;
图1E是描述用于通过在web服务目录中发布GUI来提供对客户机可用的多个应用程序的***的一个实施例的框图。
图2是描述选择应用程序的执行方法所采用的步骤的一个实施例的流程图。
图3A是描述客户机通过万维网初始化程序邻近应用的执行的一个实施例的框图。
图3B是描述由客户机访问用web服务目录列举的应用程序所采用的步骤的一个实施例的流程图。
图4A是为客户机提供对应用程序的基于策略的访问的网络的实施例的框图。
图4B是描述策略引擎更详细的实施例的框图。
图4C是描述由策略引擎基于所接收的关于客户机的信息做出访问控制决策所采用的步骤的一个实施例的流程图。
图4D是描述在其中提供了对多个应用会话的授权的远程访问的计算机网络的实施例的框图。
图4E是描述由会话服务器将客户机与其所关联的应用会话相连接所采用的步骤的一个实施例的流程图。
图5是描述由会话服务器将客户机节点与其所关联的应用会话相连接所采用的步骤的一个实施例的流程图。
图6是描述包括提供应用列举的管理服务的服务器的一个实施例的框图。
图7是描述访问包含应用程序的多个文件所采用的步骤的一个实施例的流程图。
图8A是描述在具有减小的应用兼容性和应用群集性问题的操作***的控制下运行的计算机的一个实施例的框图。
图8B是描述具有减小的应用兼容性和应用群集性问题的多用户计算机的框图。
图8C是描述在将进程和隔离范围相关联的方法中所采用的步骤的一个实施例的流程图。
图9是描述在用于执行应用程序的方法中所采用的步骤的一个实施例的流程图。
图10是描述多个应用文件驻留在服务器上的一个实施例的流程图。
图11是描述在用于对与远程存储的文件相关联的文件元数据的请求进行本地响应的方法中所采用的步骤的一个实施例的流程图。
图12是描述包括许可管理子***的服务器的一个实施例的框图。
图13是描述服务器上管理服务中的组件的一个实施例的框图。
图14是描述请求和维护来自服务器的许可所采用的步骤的一个实施例的流程图。
图15是描述可与由管理服务监控的会话关联的状态的一个实施例的框图。
图16是描述在应用隔离环境中安装应用所采用的步骤的一个实施例的流程图。
图17A和图17B是描述虚拟环境的实施例的框图。
图18是描述具有多个桌面执行位置的***的一个实施例的框图。
图19是描述用于确定桌面执行位置的方法的一个实施例的流程图。
具体实施方式
为了阅读下述各种具体实施例的描述,下述对于说明书的部分以及它们各自内容的描述可能是有益的:
-A部分描述可能有益于实施此处描述的实施例的网络环境和计算环境;
-B部分描述用于向远程用户传送计算环境、应用或桌面的***和方法的实施例;
-C部分描述用于向远程用户流式传输和传送应用或桌面的***和方法;
-D部分描述用于提供虚拟环境的***和方法的实施例;
-E部分描述用于提供具有多个执行环境的***和方法的实施例。
A.网络和计算环境
图1A描述了计算环境101的一个实施例,该计算环境包括与服务器106A-106N通信的一个或多个客户机102A-102N,以及在客户机102A-102N与服务器106A-106N之间安装的网络104。在一些实施例中,客户机102A-102N可被认为是单个客户机102或客户机102的一个组,而服务器可被认为是单个服务器106或服务器106的一个组。在一个实施例中,单个客户机102与不只一个服务器106通信,在又一个实施例中,单个服务器106与不只一个客户机102通信,而在又一个实施例中,单个客户机102与单个服务器106通信。
在一些实施例中,计算环境之内的客户机102可被称为下面术语中的任何一个:客户机102、客户端、客户计算机、客户装置、客户计算装置、本地机器、远程机器、客户节点、端点、端节点或第二机器。在一些实施例中,服务器106可被称为下列术语中的任何一个:服务器、本地机器、远程机器、服务器群、主计算装置或第一机器。
在一些实施例中,客户机102可以执行、操作或者以其它方式提供应用,该应用可为下列应用中的任何一个:软件、程序、可执行指令、虚拟机、管理程序、web浏览器、基于web的客户机、客户机-服务器应用、瘦客户端计算客户机、ActiveX控件、Java小程序、与类似软IP电话的网络电话(VoIP)通信相关的软件、流式传输视频和/或音频的应用、便于实时数据通信的应用、HTTP客户机、FTP客户机、Oscar客户机、Telnet客户机或能够在客户机102上执行的任何其他类型和/或形式的可执行指令。在其他实施例中,计算环境101包括可以是基于服务器的应用或基于远程的应用,并且可以在服务器106上代表客户机102来执行应用。在计算环境101的其他实施例中,服务器106被配置为使用瘦客户端或远程显示协议将输出的图形数据显示到客户机102,其中所使用的协议可以是下列协议的任何一个:由位于佛罗里达州Ft.Lauderdale的Citrix Systems公司制造的独立计算架构(ICA)协议;或由位于Washington,Redmond的微软公司制造的远程桌面协议(RDP)。
在一个实施例中,客户机102可以是虚拟机102C,例如由XenSolution、Citrix Systems、IBM、VMware公司出品的那些虚拟机,或能够实现此处所描述的方法和***的任何其他虚拟机。
在一些实施例中,计算环境101可包括不只一个服务器106A-106N,其中服务器106A-106N:一起聚合为单个服务器106实体、逻辑上一起聚合到服务器群106中、地理上分散并且逻辑上一起聚合到服务器群106中,或者互相之间位置接近的且逻辑上一起聚合到服务器群106。在一些实施例中,服务器群106中地理上分散的服务器106A-106N可使用WAN、MAN或LAN通信,其中不同地理区域可以被表征为:不同大陆、大陆的不同地区、不同国家、不同州、不同城市、不同校园、不同房间、或前述地理位置的任一组合。在一些实施例中,服务器群106可以作为单个实体被管理,而在其它实施例中,服务器群106可包括多个服务器群106。计算环境101可包括一起聚合到单个服务器群106中的不只一个服务器106A-106N,其中,服务器群106是异构的,从而一个服务器106A-106N被配置为根据第一类型的操作***平台(例如,由Washington,Redmond的Microsoft公司制造的WINDOWS NT)操作,而一个或多个其他服务器106A-106N被配置为根据第二类型的操作***平台(例如,Unix或Linux)操作;不只一个服务器106A-106N被配置为根据第一类型的操作***平台(例如,WINDOWS NT)操作,而另一个服务器106A-106N被配置为根据第二类型的操作***平台(例如,Unix或Linux)操作;或者不只一个服务器106A-106N被配置为根据第一类型的操作***平台(例如,WINDOWS NT)操作,而不只一个其他服务器106A-106N被配置为根据第二类型的操作***平台(例如,Unix或Linux)操作。
在一些实施例中,计算环境101可包括被配置为提供下列服务器类型的任何一个的功能的一个或多个服务器106:文件服务器、应用服务器、web服务器、代理服务器、装置、网络装置、网关、应用网关、网关服务器、虚拟服务器、部署服务器、SSL VPN服务器、防火墙、web服务器、应用服务器或主应用服务器、被配置为作为活动目录而操作的服务器106、被配置为作为提供防火墙功能、应用功能或负载平衡功能的应用加速程序而操作的服务器106、或者被配置为作为服务器106而操作的其他类型的计算机器。在一些实施例中,服务器106可以包含远程认证拨入用户服务,使得该服务器106为RADIUS服务器。在服务器106包括设备的计算环境101的实施例中,服务器106可以是由下列制造商的任何一个制造的设备:Citrix应用网络组、Silver Peak Systems公司、Riverbed Thechnology公司、F5 Networks公司、或Juniper NetWorks公司。一些实施例中包括具有下列功能的服务器106:第一服务器106A接收来自客户机102的请求、将该请求转发到的第二服务器106B,以及使用来自第二服务器106B的响应来对客户机所产生的请求进行响应;获得对客户机102可用的应用列表和与寄载由应用列表所识别的应用的服务器106关联的地址信息;使用web接口提供对客户机请求的响应;并直接与客户机102通信以向客户机102提供对所识别应用的访问;接收通过在服务器106上执行所识别的应用而产生的输出数据,例如显示数据。
服务器106可被配置为执行下列应用中的任何一个:提供瘦客户端计算的应用或远程显示呈现应用;Citrix Systems公司的CITRIX ACCESS SUITE的任何部分,诸如METAFRAM或者CITRIX PRESENTATION SERVER;Microsoft公司制造的MICROSOFT WINDOWS终端服务;或由Citrix Systems公司开发的ICA客户端。又一个实施例中包括被配置为执行应用以使得该服务器作为应用服务器而运行的服务器106,所述应用服务器例如为下列应用服务器类型的任何一个:提供电子邮件服务的邮件服务器,例如由Microsoft公司制造的MICROSOFT EXCHANGE;web或Internet服务器、桌面共享服务器,或协同服务器。在其他实施例中服务器106执行下列类型的所寄载的服务器应用的任何一个:Citrix Online Division公司提供的GOTOMEETING、位于加利福尼亚州Santa Clara的WebEx公司提供的WebEx,或者Microsoft公司提供的Microsoft Office LIVE MEETING。
在一个实施例中,服务器106可以是虚拟机106B,例如由CitrixSystems、IBM、VMware公司出品的那些虚拟机,或能够实现此处所描述的方法和***的任何其他虚拟机。
在一些实施例中,客户机102可以作为寻求对服务器106提供的资源进行访问的客户机节点,或者作为向其他客户机102A-102N提供对所寄载的资源的访问的服务器106。在计算环境101的一个实施例中包括提供主节点功能的服务器106。客户机102和一个服务器106或多个服务器106A-106N之间的通信可以是通过下列方法的任何一个而建立的:客户机102与服务器群106中的服务器106A-106N直接通信;客户机102使用程序邻近应用(programneighborhood application)以与服务器群106中的服务器106a-106n通信;客户机102使用网络104与服务器群106中的服务器106A-106N通信。在计算环境101的一个实施例中,客户机102使用网络104来请求执行由服务器群106中的服务器106A-106N所寄载的应用,以及使用网络104来接收来自服务器106A-106N的代表应用执行的图形显示输出。在其他实施例中,主节点提供识别和提供与寄载所请求的应用的服务器106相关的地址信息所需的功能。在其他实施例中,主节点可以是下列的任何一个:服务器群106中的服务器106A-106N、与服务器群106连接但不被包含在服务器群106之内的远程计算机器、与客户机102连接但不被包含在客户机102组内的远程计算机器、或者客户机102。
客户机102和服务器106之间的网络104是通过其在客户机102和服务器106之间传输数据的连接。尽管在图1A所示描述了连接客户机102和服务器106的网络104,但在计算环境101的其他实施例中,客户机102和服务器106安装在同一网络上。在包括计算环境101的其他实施例中,网络104可以是下列的任何一个:局域网(LAN)、城域网(MAN)、广域网(WAN),包括位于客户机102和服务器106之间的多个子网104’的主网104、具有专用子网104’的主公共网104、具有公共子网104’的主专用网104或者具有专用子网104’的主专用网104。在进一步的实施例中,网络104可以是任何的下列网络类型:点对点网络、广播网络、电信网络、数据通信网络、计算机网络、ATM(异步传输模式)网络、SONET(同步光纤网络)网络、SDH(同步数字体系)网络、无线网络、有线网络、包括可能是红外信道或者卫星频带的无线链路的网络104或能够将数据从客户机102传输到服务器106且反之亦然以便实现此处所描述的方法和***的任何其他网络类型。网络拓扑在不同的实施例中可以不同,可能的网络拓扑包括:总线型网络拓扑、星型网络拓扑、环型网络拓扑、基于中继器的网络拓扑、分层星型网络拓扑、或能够将数据从客户机102传输到服务器106且反之亦然以便实现此处所描述的方法和***的任何其他网络拓扑。额外的实施例中包括使用协议在移动装置间通信的移动电话网络的网络104,其中,协议可以是下列协议的任何一个:AMPS、TDMA、CDMA、GSM、GPRS UMTS或能在移动装置间传输数据以实现此处所描述的***和方法的其他任何协议。
图1B所示是计算装置100的实施例,其中如图1A所示的客户机102和服务器106可以被部署为和/或被执行在此处所描述和图示的计算装置100的任何实施例上。被包含在计算装置100中的***总线150可以和下列组件通信:中央处理单元121、主存储器122、存储装置128、输入输出(I/O)控制器123、显示装置124A-124N、安装装置116和网络接口118。在一个实施例中存储装置128包括:操作***、软件程序和客户机代理120。在一些实施例中,I/O控制器123还连接到键盘126和指示装置127。其他实施例中可包括连接到不只一个输入/输出装置130A-130N的I/O控制器123。
图1C描述了计算装置100的一个实施例,其中如图1A所示的客户机102和服务器106可以被部署为和/或被执行在此处所描述和图示的计算装置100的任何实施例上。被包含在计算装置100中的***总线150可以和下列组件通信:桥170和第一I/O装置130A。在又一个实施例中,桥170还和主中央处理单元121通信,其中中央处理单元121可进一步与第二I/O装置130B、主存储器122和高速缓冲存储器140通信。I/O端口、存储器端口103和主处理器被包含在中央处理单元121中。
在计算装置100的实施例中可包括被下列组件配置的任何一个所表征的中央处理单元121:响应并处理从主存储器单元122取出的指令的逻辑电路;微处理器单元,诸如:由Intel公司制造的微处理器单元;由Motorola公司制造的微处理器单元;由加利福尼亚州Santa Clara的Transmeta公司制造的微处理器单元;诸如国际商业机器公司(International BussinessMachines)制造的RS/6000处理器;由Advanced Micro Devices公司制造的处理器;或能够执行此处所描述的***和方法的逻辑电路的任何其他组合。中央处理单元122的其他实施例可包括下列任何组合:微处理器、微控制器、具有单处理核的中央处理单元、具有两个处理核的中央处理单元或具有不只一个处理核的中央处理单元。
在计算装置100的一个实施例中包括通过也称为背侧总线的第二总线与高速缓冲存储器140通信的中央处理单元121,而在计算机器100的又一个实施例中包括使用***总线150与高速缓冲存储器通信的中央处理单元121。在一些实施例中,本地***总线150也被中央处理单元所使用来与不只一种类型的I/O装置130A-130N进行通信。在一些实施例中,本地***总线150可以是下列类型总线的任何一个:VESA VL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。计算装置100的其他实施例中包括为通过高级图形端口(AGP)与中央处理单元121通信的视频显示器124的I/O装置130A-130N。在计算装置100的其他形式中包括通过下列连接的任何一个连接到I/O装置130A-130N的处理器121,这些连接如下:超传输(HyperTransport)、快速I/O或者InfiniBand。计算装置100的进一步的实施例包括通信连接,其中处理器121使用本地互连总线与一个I/O装置130A进行通信并使用直接连接与第二I/O装置130B进行通信。
在一些实施例中,计算装置100包括主存储器单元122和高速缓冲存储器140。高速缓冲存储器140可以在一些实施例中可以是下列类型存储器的任何一个:SRAM、BSRAM或EDRAM。其他实施例中包括的高速缓冲存储器140和主存储器单元122,可以是下列类型存储器的任何一个:静态随机存取存储器(SRAM)、Burst(脉冲串)SRAM或SynchBurst SRAM(BSRAM)、动态随机存取存储器DRAM、快速页模式DRAM(FPM DRAM)、增强DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、脉冲串扩展数据输出DRAM(BEDO DRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDECSRAM、PC100 SDRAM、双数据传输率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)、铁电RAM(FRAM)或能够执行此处所描述的***和方法的任何其他类型的存储器装置。在一些实施例中,主存储器单元122和/或高速缓存存储器140可包括能够存储数据并且允许中央处理单元121直接访问任何存储单元的一个或多个存储器装置。进一步的实施例包括可通过下列之一访问主存储器122的中央处理单元121:***总线150、存储器端口103、或允许处理器121访问存储器122的任何其他连接、总线或端口。
计算装置100的一个实施例支持下列安装装置116的任何一个:用于接收例如3.5英寸、5.25英寸或ZIP盘的软盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、多种格式的磁带驱动器、USB装置、可引导介质、可引导CD、诸如的用于GNU/Linux分发的可引导CD、硬盘驱动器或适于安装应用或软件的任意其它装置。在一些实施例中应用可包括客户机代理120或客户机代理120的任意部分。计算装置100还可以包括可以为一个或多个硬盘驱动器或者一个或多个独立磁盘冗余阵列的存储装置128,这里存储装置被配置为存储操作***、软件、程序应用、或者至少客户机代理120的一部分。计算装置100的进一步实施例中包括用作存储装置128的安装装置116。
此外,计算装置100还可包括网络接口118以通过多种连接来连接到局域网(LAN)、广域网(WAN)或因特网,所述连接包括但不限于标准电话线路、LAN或WAN链路(例如802.11,T1,T3、56kb、X.25、SNA、DECNET)、宽带连接(如ISDN、帧中继、ATM、千兆以太网、SONET上以太网(Ethernet-over-SONET))、无线连接、或上述任意或全部的某个组合。也可使用多种通信协议(例如TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET、SONET、SDH、光纤分布数据接口(FDDI)、RS232、RS485、IEEE802.11、IEEE802.11a、IEEE802.11b、IEEE802.11g、CDMA、GSM、WiMax和直接异步连接)来建立连接。计算装置100的一个形式包括可以通过任意类型和/或形式的网关或诸如安全套接字层(SSL)或传输层安全(TLS),或CitrixSystems公司制造的Gitrix网关协议的隧道协议来与其他计算装置100’通信的网络接口118。网络接口118的形式可以包括下列的任何一个:内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适用于将计算装置100连接到能够通信并执行这里所描述的方法和***的网络的任意其它装置。
计算装置100的实施例包括下列I/O装置130A-130N的任何一个:键盘126、指示装置127、鼠标、触控板、光笔、轨迹球、话筒、绘图板、视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机、或可执行此处描述的方法和***的任何其他输入/输出装置。在一些实施例中I/O控制器123可连接多个I/O装置130A-130N以便控制一个或多个I/O装置。I/O装置130A-130N的一些实施例被配置为提供存储或安装介质116,而其他实施例可为接收诸如由Twintech Industry公司制造的装置的USB闪存驱动线的USB存储装置提供通用串行总线(USB)。在其他实施例中I/O装置130可以是***总线150和外部通信总线之间的桥,所述外部通信总线例如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、千兆位以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、光纤信道总线或串行连接的小型计算机***接口总线。
在一些实施例中,计算装置100可以连接多个显示装置124A-124N,在其他实施例中计算装置100可以连接单个显示装置124,而在其他实施例中计算装置100可以连接相同类型或形式的显示装置124A-124N或不同的类型或形式的显示装置。显示装置124A-124N的实施例可被如下方式支持和实现:一个或多个I/O装置130A-130N、I/O控制器123、I/O装置130A-130N和I/O控制器123的组合、能支持显示装置124A-124N的硬件和软件的任何组合、任意类型和/或形式的视频适配器、视频卡、驱动器和/或库,以便与显示装置124A-124N对接、通信、连接或以其他方式使用显示装置124a-124n。在一些实施例中,计算装置100可被配置为使用一个或多个显示装置124A-124N,这些配置包括:有多个连接器以与多个显示装置124A-124N对接;多个视频适配器且每个视频适配器与显示装置124A-124N中的一个或多个连接;有操作***被配置用于支持多个显示装置124A-124N;使用被包含在计算装置100内部的电路和软件来连接并使用多个显示装置124A-124N;和在主计算装置100和多个次级计算装置上的执行软件来使主计算装置100能使用次级计算装置的显示装置作为用于主计算装置100的显示装置124A-124N。计算装置100的其它实施例可包括由多个次级计算装置提供的多个显示装置124A-124N,所述多个显示装置124A-124N通过网络连接到主计算装置100。
在计算装置100的一些实施例中,可包括操作***以便控制任务调度和对***资源的访问。在计算装置100的实施例中可运行下列操作***的任何一个:诸如WINDOWS 3.x、WINDOWS 95、WINDOWS 98、WINDOWS 2000、WINDOWSNT 3.51、WINDOWS NT 4.0、WINDOWS CE、WINDOWS XP和WINDOWS VISTA的版本的MICROSOFT WINDOWS的操作***;不同发行版本的Unix和Linux操作***;由苹果计算机公司(Apple Computer)出品的MAC OS的任意版本;由国际商业机器公司出品的OS/2;任意嵌入式操作***;任意实时操作***;任意开源操作***;任意专有操作***;任意用于移动计算装置的操作***,或者能够在计算装置上运行并执行此处所描述的操作的任意其它操作***。在计算装置100的一个实施例中,可在其上安装多个操作***。
计算装置100可以体现为下列计算装置的任何一个:计算工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话、便携通信装置、媒体播放装置、游戏***、移动计算装置、上网本、由苹果计算机公司出品的IPOD系列装置、由索尼公司出品的PLAYSTATION系列装置的任何一个、由Nintendo公司出品的Nintendo系列装置的任何一个;由微软公司出品的XBOX系列装置的任何一个,或能够通信并有足够的处理器能力和存储容量以执行此处所述的方法和***的任意其它类型和/或形式的计算或者电信或媒体装置。在其它实施例中,计算装置100可以是诸如下列移动装置的任何一个的移动装置:JAVA使能蜂窝电话或个人数据助理(PDA),诸如i55sr、i58sr,i85s,i88s,i90c,i95c1或im1100,以上这些均由摩托罗拉公司制造;由Kyocera公司制造的6035或7135;由Samsung电子有限公司制造的i300或i330;由Palm公司出品的TREO180、270、600、650、680、700p、700w或750智能电话;或具有符合该装置的不同的处理器、操作***和输入装置的任何计算装置;或能执行此处所述的方法和***的任何其他移动计算装置。计算环境101的其他实施例包括移动计算装置100,所述移动计算装置100可以是下列的任何一个:黑莓(Blackberry)的任一系列,或由Research In Motion Limited公司出品的其他手持装置;由苹果计算机公司出品的iPhone;任何手持或智能电话;掌上电脑;掌上电脑电话或支持Microsoft Windows Mobile Software的任何其他手持移动装置。
B.计算环境、应用或桌面传送
现参考图1D,在一起的服务器106包括群38或服务器群,其中,每个服务器106可包括网络侧接口202和群侧接口204。网络侧接口202可与一个或多个客户机102或网络104通信。网络104可为WAN、LAN或者网络的任何其他实施例(例如上文所述的那些网络)。
每个服务器106的群侧接口204与群38中的其他服务器106的一个或多个群侧接口204相连接。在一个实施例中,每个群侧接口204与其他群侧接口204互联连接,使得群38中的服务器106可互相通信。在每个服务器106上,群侧接口204与网络侧接口202通信。群侧接口204也与持久存储器230通信(通过箭头220指出)并且,在一些实施例中,也可与动态存储器240通信。服务器106、持久存储器230、以及动态存储器240(当提供时)的组合共同称为群38。在一些实施中,服务器106与持久存储器230通信,而其他服务器106’与服务器106通信,以访问在持久存储器中所存储的信息。
持久存储器230可在磁盘、磁盘群、独立磁盘冗余阵列(RAID)、可写紧密磁盘或其他允许数据读出和写入并且如果存储装置没电则保存写入的数据的任何其他装置上物理地实现。单个物理装置可为多个持久存储器提供存储,也就是单个物理装置可用于为不只一个群38提供持久存储器230。持久存储器230保持与在群38中的每个服务器106相关联的静态数据,以及在群38中的所有服务器106使用的全局数据。在一个实施例中,持久存储器230可在轻量级目录访问协议(LDAP)数据模型中保持服务器数据。在其他实施例中,持久存储器230在兼容ODBC的数据库中存储服务器数据。为了该说明书的目的,术语“静态数据”指不经常改变的数据,也就是仅基于每小时、每天、或者每星期改变的数据,或者从不改变的数据。每个服务器使用持久存储子***从持久存储器230中读数据和将数据写入持久存储器230。
出于可靠的目的,可以对持久存储器230存储的数据进行物理上或逻辑上复制。例如,使用一组冗余的镜像磁盘可提供物理冗余,每个冗余的镜像磁盘提供数据的副本。在另一个实施例中,使用标准数据库技术对数据库本身进行复制,以提供数据库的多个副本。在进一步的实施例中,可以并发地使用物理和逻辑复制。
可以以各种方式实现动态存储器240(即所有记录表的集合)。在一个实施例中,动态存储器240被集中化;即,所有的运行时数据存储在群38中的一个服务器106的存储器中。该服务器作为主网络节点操作,在群38中的所有其他服务器106当寻求对该运行时数据的访问时与该服务器通信。在又一个实施例中,在群38中的每个服务器106保留动态存储器240的完整副本。此处,每个服务器106与每个其他服务器106通信,以保持其动态存储器240副本及时更新。
在又一个实施例中,每个服务器106保持它自己的运行时数据,并且当寻求从其他服务器106获得运行时数据时与其他服务器106进行通信。因此,例如,试图寻找客户机102所请求的应用程序的服务器106可直接与在群38中的每个其他服务器106进行通信以发现寄载所请求的应用的一个或多个服务器。
对于有大量的服务器106的群38,这些实施例产生的网络通信量变得十分繁重。一个实施例通过在群38中指定服务器106的子集(通常为两个或更多个)作为“收集点”,来减小繁重的网络通信量。通常,收集点是收集运行时数据的服务器。每个收集点存储从群38中的某些其他服务器106收集的运行时数据。群38中的每个服务器106可以作为收集点操作,并因此可以被指定为收集点。在一个实施例中,每个收集点存储整个动态存储器240的副本。在又一个实施例中,每个收集点存储动态存储器240的一部分,即保持特定数据类型的运行时数据。可根据一个或多个标准预先确定由服务器106存储的数据的类型。例如,服务器106可基于启动顺序保存不同类型的数据。替代地,可由管理员使用管理工具配置服务器106存储的数据类型。在这些实施例中,动态存储器240分布于群38中的两个或更多个服务器106之间。
没有被指定为收集点的服务器106知道群38中指定作为收集点的服务器106。没有被指定为收集点的服务器180在传送和请求运行时数据时可与特定收集点通信。因此,由于当群38中的每个服务器106寻求对运行时数据的访问时,其是与单个收集点服务器106通信,而不是与每个其它的服务器106通信,所以收集点减小了网络通信量。
每个服务器106可作为用于不只一种类型的数据的收集点而操作。例如,服务器106”可作为用于许可信息和负载信息的收集点而操作。在这些实施例中,每个收集点可积聚不同类型的运行时数据。例如,为了说明这种情形,服务器106”’可收集许可信息,而服务器106”收集负载信息。
在一些实施例中,每个收集点存储在群38内的所有服务器106间共享的数据。在这些实施例中,特定类型的数据的每个收集点与群38中的用于该类型数据的每个其他收集点交换由该收集点收集的数据。因此,一旦完成了这样的数据的交换,每个收集点106”和106处理相同的数据。也在这些实施例中,对于运行时数据的任何更新,每个收集点106和106”也使每个其他收集点一起保持更新。
浏览使得客户机102能够查看群38、服务器106和群38中的应用,以及访问可用的信息,诸如整个群38的会话。每个服务器106包括I CA浏览器子***260以便为客户机102提供浏览的能力。在客户机102建立与任何服务器106的ICA浏览器子***260的连接之后,该浏览器子***支持多种客户机请求。这样的客户机请求包括:(1)列举在群中的服务器的名称,(2)列举群中发布的应用的名称,(3)将服务器名称和/或应用名称解析为对客户机102可用的服务器地址。ICA浏览器子***260也支持由客户机10作出的运行程序邻近应用的请求,该程序邻近应用根据请求为客户机102提供群38中的给用户授权的那些应用的视图。ICA浏览器子***260转发所有上述提及的客户机请求到服务器106中的适当的子***。
在一个实施例中,在群38中有程序邻近子***270的每个服务器106,可为客户机102的用户提供在群38中的应用的视图。程序邻近子***270可以限制对于这些客户机102的用户有权访问的那些应用的视图。通常,该程序邻近服务将这些应用作为列表或图标组呈现给用户。
由程序邻近子***270提供的功能可以被两种类型的客户机利用,(1)可直接从客户机桌面访问该功能的程序邻近使能客户机,以及(2)可通过运行在服务器上的程序邻近使能桌面来访问该功能的非程序邻近使能客户机(例如,传统客户机)。
在程序邻近使能客户机和程序邻近子***270间的通信可发生于专用虚拟通道上,该专用虚拟通道建立在ICA虚拟通道之上。在其他实施例中,该通信使用XML服务而发生。在这些实施例的一个中,程序邻近使能客户机与提供服务器106上的程序邻近功能的XML子***通信,该XML子***为例如下述参考图6描述的XML服务516。
在一个实施例中,程序邻近使能客户机没有与带有程序邻近子***270的服务器的连接。对于该实施例,客户机102向ICA浏览器子***260发送建立到服务器106的ICA连接的请求,以识别对客户机102可用的应用。客户机102接着运行获取用户证书的客户端侧对话。通过ICA浏览器子***260接收该证书,并将其发送到程序邻近子***270。在一个实施例中,程序邻近子***270将该证书发送到用户管理子***以用于认证。该用户管理子***可返回表示用户所属的账户列表的一组区别性的名称。在认证后,程序邻近子***270建立程序邻近虚拟通道。该通道在应用过滤完成之前一直保持开放。
程序邻近子***270接着从与这些账户关联的公共应用子***524请求程序邻近信息。公共应用子***524从持久存储器230获得程序邻近信息。一旦接收到程序邻近信息,程序邻近子***270格式化该程序邻近信息,并且通过程序邻近虚拟通道将其返回到客户机。然后关闭部分ICA连接。
对于程序邻近使能客户机与服务器建立部分ICA连接的又一个实施例,考虑选择群38的客户机102的用户。群38的选择从客户机102向ICA浏览器子***260发送与所选择的群38中的服务器106之一建立ICA连接的请求。该ICA浏览器子***260将该请求发送到程序邻近子***270,该子***选择在群38中的服务器106。与该服务器106相关联的地址信息被识别并经由ICA浏览器子***260返回到客户机102。客户机102随后可连接到对应于接收到的地址信息的服务器106。
在又一个实施例中,程序邻近使能客户机102建立ICA连接,程序邻近虚拟通道在该ICA连接上被建立并在ICA连接持续的时候保持打开。通过该程序邻近虚拟通道,程序邻近子***270将程序邻近信息更新推送到客户机102上。为了获得更新,程序邻近子***270从公共应用子***524订阅事件,以使得程序邻近子***270检测所发布的应用的变化。
参考图1E,框图描述了用于通过在web服务目录中的GUI的发布提供对客户机可用的多个应用程序的***架构的又一个实施例。该***包括客户机102和多个服务器106。第一服务器106具有内容服务器的功能。第二服务器106’提供web服务器功能,以及第三服务器106”提供用于提供对应用文件访问的功能并且充当应用服务器或文件服务器。客户机102可通过网络104从内容服务器106、web服务器106’、应用服务器106”下载内容。在一个实施例中,客户机102可通过客户端-应用服务器通信通道150从应用服务器106”下载内容(例如应用)。
在一个实施例中,客户机102上的web浏览器11使用安全套接字层(SSL)支持到内容服务器106和/或web服务器106’的通信。SSL是由位于美国加利福尼亚州Mountain View的Netscape Communication公司开发的安全协议,并且现在是由Internet工程任务组(IETF)发布的标准。该web浏览器11可选地可使用其他安全协议连接到内容服务器106和/或web服务器106’,所述其他安全协议例如,但不限于,由位于美国加里福尼亚州Los Altos的Terisa System公司开发的安全超文本传输协议(SHTTP)、HTTP over SSL(HTTPS)、由位于美国华盛顿州Redmond的Microsoft公司开发的私人通信技术(PCT),以及IETF发布的传输层安全(TLS)标准。在其他实施例中,web浏览器11使用没有加密的通信协议与服务器106通信,例如超文本传输协议(HTTP)。
另外,客户机102包括应用客户端13,该应用客户端13用于通过客户机-应用服务器通信通道150与应用服务器106”建立并交换通信。在一个实施例中,应用客户端13是GUI应用。在一些实施例中,应用客户端13是独立计算结构(ICA)客户端,其是由美国佛罗里达州Fort Lauderdale的CitrixSystem有限公司开发的,并且在下文也被称为ICA客户端13。应用客户端13的其他实施例包括由美国华盛顿州Redmond的Microsoft公司开发的远程显示协议(RDP)客户端,X-Windows客户端13、可执行多媒体应用、email、Java、或者.NET代码的客户端侧播放器、解释器或仿真器。而且,在一个实施例中在应用服务器106”上执行的应用的输出可通过ICA客户端13在客户机102上显示。在一些实施例中,应用客户端13是例如结合图5更详细描述的应用流客户端552的应用客户端。
客户机102搜索web服务目录160以获得web服务。在一个实施例中,此搜索是手动搜索。可选的,此搜索可为自动搜索。web服务目录160也可提供基于服务的视图,例如,白页和黄页,以在web服务目录中搜索web服务。在又一个实施例中,web服务目录160支持用于GUI应用的基于结构化的服务名称和服务种类的层次化的浏览。在一个实施例中,web服务目录160在独立于内容服务器106的服务器(例如目录服务器)上执行。在其他实施例中,web服务目录160在多个服务器上执行。
在一些实施例中,通过在web服务目录160中提供额外的信息或分析,内容服务器106使得客户机102能基于该分析或信息来选择web服务。web服务目录160可列出的服务信息示例包括,但不限于,提供服务的商务的名称、服务类型、服务的文本描述、一个或多个服务接入点(SAP)、网络类型、使用的路径(例如TCP或HTTPS)、以及服务质量(QoS)信息。而且服务信息可是客户端装置类型或用户(例如角色)细节。因此,可基于一个或多个上述属性选择服务。
在一个实施例中,服务类型指示客户机102访问web服务必须使用的编程接口。例如,服务类型可规定通过接口描述语言(例如web服务描述语言(WSDL))来对服务进行编码。
服务接入点(或SAP)是应用的唯一的地址。SAP使计算机***能支持在客户机102和每个服务器106处的多个应用。例如,应用服务器106”可支持电子邮件(即,e-mail)应用、文件传输应用、和/或GUI应用。在一个实施例中,这些应用各自具有在应用服务器106”内是唯一的SAP。在一个实施例中,SAP是web或Internet地址(例如,域名***(DNS)名称、IP/端口、或者统一资源定位符(URL))。因此,在一个实施例中,SAP将web服务器106’的地址识别为在web服务器106’上所存储的应用的地址的一部分。在一些实施例中,如下文所述,SAP将发布服务器插件165的地址识别为在web服务器106’上所存储的应用的地址的一部分。在一个实施例中,SAP是来自于UDDI注册中心的“接入点”。
为了准备在web服务目录160中发布的项目,内容服务器106包括web发布工具170。在一个实施例中,web发布工具170是软件模块。可选的,web发布工具173是另一个服务器,该服务器位于内容服务器106的外部或内部。
在一个实施例中,web服务器106’向客户机102传送web页。该web服务器106’可以是能够向客户机102提供web页的任何服务器106。在又一个实施例中,web服务器106’为企业信息门户(例如,企业内部网或安全的企业对企业的外部网)。企业门户为公司网站,用于聚集、个性化以及向用户提供应用、数据和内容,同时提供管理工具用于更有效地组织和使用信息。在一些公司中,门户以基于浏览器的对虚拟工作环境的访问来代替传统桌面软件。
web服务器106’也包括发布服务器插件165以进行图形用户接口(GUI)应用的发布。更具体地,发布服务器插件165将新的web服务入口URL转换到GUI应用服务中,以使得可通过web服务目录160来访问GUI。在一个实施例中,发布服务器插件165是通用网关接口(CGI)脚本,其是被设计为接收和返回符合CGI规范的数据的程序。可以任何程序语言来编写该程序,例如C、Perl、Java或者Visual Basic。在又一个实施例中,发布服务器插件165是Java服务器页面(JSP)。使用发布服务器插件165以方便远程GUI应用的发布,客户机102因此可以通过完全的GUI接口(例如用Citrix的I CA或者Microsoft的RDP)来访问web服务,而不通过编程接口或网页。
应用服务器106”寄载客户机102可用的一个或多个应用。这样的应用的例子包括字处理程序,例如MICROSOFT WORD以及电子表格程序,例如MICROSOFT EXCEL(两个都是由Washington,Redmond的Microsoft公司制造的),财务报告程序、客户注册程序、程序提供技术支持信息、客户数据库应用、或者应用集合管理器。
在一些实施例中,在不同的网络上建立一个或多个通信链接150。例如,客户机-内容服务器通信通道150’可能属于第一网络(例如,万维网)而客户机-web服务器通信通道150”可能属于第二网络(例如,安全的外部网或虚拟专用网(VPN))。
在一个实施例中,web发布工具173将关于该web发布工具173当前在web服务目录160中发布的应用的信息存储到持久大容量存储器225中。在一个实施例中该信息是用于动态发布服务器插件165的URL。持久大容量存储器225可为磁盘或磁光驱动器。在一个实施例中,持久大容量存储器225是数据库服务器,其将与所发布的应用相关的数据存储在一个或多个本地服务数据库中的。该持久大容量存储器225可以是位于任一或所有服务器106内部或外部的部件。
在其他实施例中,内容服务器106或者web服务器106’与群38中的服务器106通信,以检索应用列表。在这些实施例的一个中,内容服务器106或者web服务器106’与群38通信,而不是与持久大容量存储器225通信。
现参考图2,流程图描述了选择应用程序执行方法所采取的步骤的一个实施例。总的来说,接收与客户机或与客户机的用户相关联的证书以及列举可用于客户机执行的应用的请求(步骤202)。响应于接收到的证书,提供对客户机可用的多个应用程序的列举(步骤204)。接收执行所列举的应用的请求(步骤206)。响应于策略,选择执行所列举的应用的预定数量的方法之一,预定数量的方法包括用于所列举的应用的应用流式传输的方法(步骤208)。
接收与客户机或与客户机的用户相关联的证书以及列举可用于客户机执行的应用的请求(步骤202)。在一个实施例中,服务器从客户机102接收列举可用应用的请求以及证书。在又一个实施例中,在服务器106上的XML服务接收该请求和该证书,并且该请求和证书传输到服务器106上的管理服务。
在一些实施例中,作为web服务器运行的服务器106接收来自客户机102的通信并将该通信转发到服务器106’。在这些实施例的一个中,web服务器将该通信转发到服务器106’上的XML服务。在这些实施例的又一个中,web服务器驻留在客户机上。在由web服务器将来自客户机102的通信路由到服务器106’的其他的实施例中,响应客户机102的互联网协议(IP)地址选择服务器106。
在一些实施例中,客户机102请求对驻留在服务器106上的应用的访问。在这些实施例的一个中,客户机102请求由服务器106执行驻留在服务器106上的应用。在这些实施例的又一个中,客户机102请求检索包括该应用的多个应用文件。
在一些实施例中,用户通过由服务器106提供给客户机102的图形用户接口向服务器106提供证书。在其他实施例中,具有web服务器功能的服务器106”’给客户机102提供图形用户接口。在其他实施例中,由服务器106传输到客户机102的收集代理从客户机102收集证书。在一个实施例中,证书指用户名和密码。在又一个实施例中,证书不限于用户名和密码,但包括而不限于客户机102的机器ID、操作***类型、操作***补丁的存在、所安装网卡的MAC地址、在客户机装置上的数字水印、在活动目录中的成员、病毒扫描器的存在、个人防火墙的存在、HTTP头部、浏览器类型、装置类型、例如互联网协议地址或者地址的范围的网络连接信息、服务器106的机器ID、包括用于改变时区的调整的访问请求的日期或时间,以及授权证书。
在一些实施例中,与客户机相关联的证书与客户机的用户相关联。在这些实施例的一个中,证书是用户拥有的信息。在这些实施例的又一个中,证书是用户认证信息。在其他实施例中,与客户机相关联的证书与网络相关联。在这些实施例的一个中,证书是与客户机可连接到的网络相关联的信息。在这些实施例的另一个中,证书是与收集关于客户机的信息的网络相关联的信息。在其他实施例中,与客户机相关联的证书是客户机的特征。
响应于所接收的证书,提供对客户机可用的多个应用程序的列举(步骤204)。在一个实施例中,客户机102的用户可以在不知道何处去寻找这样的应用和没有链接到这样的应用的所需要的技术信息的情况下,了解由网络104中的服务器106所寄载的应用程序的可用性。这些可用的应用程序可以包括用户的“程序邻近”。用于确定用于客户机的程序邻近的***可包括应用程序(以下称为“程序邻近”应用)、用于存储应用程序的组件的存储器、以及用于执行应用程序的处理器。如下文所述,可在客户机102的存储器中和/或在服务器106上安装该程序邻近(PN)应用。
根据程序邻近应用操作的服务器106从在群38中的每个服务器106中收集应用相关的信息。对于每个所寄载的应用的应用相关的信息可以是多种信息,其包括,例如,寄载该应用的服务器的地址、应用名称、授权使用该应用的用户或用户组、以及在建立连接以运行该应用之前客户机102需要的最小能力。例如,该应用可流式传输视频数据,因此需要的最小能力可能是客户机支持视频数据。其他示例要求客户机支持音频数据或有能力处理加密的数据。可将应用相关信息存储在数据库中。
当客户机102连接到网络104时,客户机102的用户提供用户证书。用户证书可包括客户机102的用户的用户名、用户密码、以及用户被授权的域名。可选地,可以从智能卡、基于时间的令牌、社会保险号、用户密码、个人身份证(PI N)号码、基于对称键值或椭圆曲线加密的数字证书、用户的生物学特征,或者可用于获得并提交客户机102的用户身份用于验证的任何其他方式来获得用户证书。响应于客户机102的服务器106可基于用户证书来对用户进行认证。可将用户证书存储于程序邻近应用执行的任何地方。对于客户机102执行程序邻近应用的实施例,可将用户证书存储于客户机102。对于服务器106执行程序邻近的实施例,可将用户证书存储于服务器106。
服务器106也可从用户证书和应用相关的信息确定服务器106所寄载的哪些应用程序可被客户机102的用户使用。服务器106将表示可用应用程序的信息传输到客户机102。该过程消除了客户机102的用户建立应用连接的需要。此外,服务器106的管理员可在客户机102的多个用户之间控制对应用的访问。
在一些实施例中,由服务器106执行的用户认证足可以授权呈现给客户机102的每个所寄载的应用程序的用户,尽管这样的应用程序可驻留在另一服务器106’上。因此,当客户机102启动(例如初始化执行)所寄载的应用之一时,由客户机102额外地输入用户证书来对该应用的使用进行认证是没有必要的。因此,用户证书的单次输入可服务于确定可用的应用,以及在没有用户其他的手动登录认证过程的情况下授权启动这样的应用。
客户机102或者服务器106可启动程序邻近应用。可在客户机102的显示屏上显示该结果。在基于图形窗口的实现中,可在程序邻近图形窗口中显示该结果,并且通过该窗口中的图标表示每个授权的应用程序。
在一个实施例中,程序邻近应用过滤掉客户机102没有被授权执行的应用程序,并只显示授权的(即可用的)程序。在其他实施例中,程序邻近应用可显示授权的和未授权的应用。当没有从显示中过滤掉未授权的应用时,可提供指示这样应用程序是不可用的通知。可选地,在没有标识哪些应用被授权或未被授权给客户机102执行的情况下,程序邻近应用可以向客户机102的用户报告由服务器106所寄载的所有应用。可在随后当客户机102试图运行这些应用之一时确定授权。
客户机102从服务器106请求应用列举。应用列举可使客户机102的用户查看每个发布的应用的名称。在一个实施例中,无论用户是否有权执行该应用,客户机102的用户可查看该应用的名称。在又一个实施例中,用户只查看该用户被授权执行的那些应用的名称。
对于应用列举的请求传递到ICA浏览器子***260、程序邻近子***270、或者到公共应用子***524,这取决于由客户机102正运行的特定过程。例如,当客户机102运行程序邻近应用时,对于应用列举的请求被发送到服务器106上的程序邻近子***270。当客户机102通过网页提交列举请求时,该请求传递到公共访问点子***524。对于这些实施例,当客户机102想要列举应用时,公共应用子***524作为用于程序邻近子***270、ICA浏览器子***260、以及公共应用子***的初始访问点。在一些实施例中,当客户机102通过网页提交列举请求时,寄载web服务器的中间服务器106接收该请求并向服务器106’转发该请求。
一旦接收到列举请求,公共应用子***524在持久存储器230中查询所有应用的列表。对于从程序邻近子***270和公共访问点(未示出)子***接收到的请求,根据客户机102的用户的证书对该应用列表进行过滤(即,用户只能查看那些授权给用户的应用)。
客户机102也可请求服务器列举。服务器列举使客户机102的用户能查看群38中的服务器的列表。在一个实施例中,可根据服务器的类型来过滤服务器的列表,如由在该服务器上的专门的服务器子***确定。
对于服务器列举的请求传递到ICA浏览器子***260或者公共访问点子***(未示出),这取决于客户机120正在运行的特定过程。例如,当客户机120通过网页提交服务器列举请求时,该请求传递到公共访问点子***(未示出)。对于这些实施例,公共服务器子***300用作用于ICA浏览器子***260和公共访问点(未示出)子***的初始访问点。一旦接收到服务器列举请求,公共服务器子***向持久存储器230查询所有服务器列表。可选地,根据服务器类型来过滤服务器列表。
图3A描述了客户机102通过其初始化程序邻近应用的执行的过程的又一个实施例的框图,在该示例中是通过万维网。客户机102执行web浏览器应用80,例如由位于加利福尼亚州的Mountain View的NetscapeCommunication有限公司制造的NETSCAPE NAVIGATOR,或者由位于华盛顿州的Redmond的Microsoft公司制造的MICROSOFT INTERNET EXPLORER,或者由位于加利福尼亚州的Mountain View的Mozilla基金会制造的FIREFOX,或者由Norway,Oslo的Opera Software ASA制造的OPERA,或者由加里福尼亚州的Cupertino的Apple Computer有限公司制造的SAFARI。
客户机102通过web浏览器80传输访问对应于驻留在服务器106上的HTML页面的统一资源定位符(URL)的请求82。在一些实施例中,由服务器106向客户机102返回的第一HTML页面84为寻求识别客户机102的认证页面。
仍参考图3A,一旦客户机102经服务器106认证,响应另一请求86,该服务器106准备并向客户机102传送HTML页面88,所述页面88包括程序邻近窗口58,其中显示表示客户机102访问的应用程序的图标57。客户机102的用户通过点击图标57引起图标57所表示的应用的执行。
在一些实施例中,服务器106代表客户机102的用户执行程序邻近应用。在这些实施例的一个中,服务器106是位于客户机102和服务器106’之间的中间服务器。
参看图3B,其描述通过在web服务目录中发布GUI来提供对客户机可用的多个应用程序的所采取的步骤的一个实施例的流程图。web发布工具173接收用于发布的应用(例如GUI应用)的web服务描述和访问信息(步骤300)。在一个实施例中,web服务描述包括上文所述的服务信息(例如,提供web服务的商家的名称、服务类型、服务的文本描述、以及SAP)。访问信息可包括,例如,发布的应用名称、传输控制协议(TCP)浏览服务器群地址、以及MetaFrame服务器IP地址。在一些实施例中,访问信息指定使用的地址和用于穿过网络或安全网关或桥装置的标签。
web发布工具173接着构造服务发布请求以请求该web服务(即,GUI应用)的发布(步骤305)。在一个实施例中,服务发布请求包括SAP。在一些实施例中,SAP是包括web服务器106’的网络地址和发布服务器插件165的URL。进一步的,网络地址可为统一资源标识符(URI),其是用于指向web上的对象的地址和名称的类型的通用术语。URL是一种URI。URI的一个示例是web服务器106’的名称(例如,“web服务器”)以及用于发布服务器插件165的CGI脚本名称(例如“dynamic-component”(“动态组件”))。
web发布工具173将与SAP相关联的SAP条目存储在持久大容量存储器225中(步骤310)。在一些实施例中,web发布工具173也将所发布的应用信息(例如,ICA-published-app-info)与GUI应用相关联。在进一步的实施例中,web发布工具173还在服务发布请求中包括标识内容服务器106在持久大容量存储器225中存储的SAP条目的键。例如,该键的值可以是“123456677”。“http://web-server/dynamic-component/?app=123456677”是识别web服务器106’、发布服务器插件165的CGI脚本名称,以及上文所述的键的SAP的示例。
与上述的SAP相关联的SAP条目的示例是“key=123456677,value=ICA-published-app-info”。该键可以是任意长度(例如,56位键,128位键)。在一个实施例中,该键是加密的随机数字。该键也为键持有者提供访问权限。尽管以键的方式进行了说明,但可使用任何方式为存储在持久大容量存储器225中的SAP条目提供安全形式。
web发布工具173向内容服务器106提供用于在web服务目录160中发布的服务发布请求(步骤315)。而且,在一个实施例中,内容服务器106向客户机102传输请求随后用于定位SAP条目的特定网络服务的SAP的键。在一个实施例中,服务发布请求的发布使客户机102的用户能访问该服务。在一个实施例中,可使用位于佛罗里达州的Fort Lauderdale的CitrixSystem有限公司开发的NFUSE在web服务目录160上发布GUI应用。在一些实施例中,GUI应用的发布者使用应用启动和嵌入(ALE)定制web服务目录160上的GUI应用的发布,ALE也是由Citrix System有限公司开发的。ALE使得能从HTML页面启动GUI应用或者将该应用嵌入HTML页面中。
客户机102接着从web服务目录160查询服务名称(步骤320)。内容服务器106从客户机102接收该查询(325)并在web服务目录160中寻找所请求的服务名称。在又一个实施例中,客户机102的用户导航web服务目录160,直到定位到客户机102的用户试图去寻找的特定的服务名称。虽然以客户机102进行说明,但是任何web服务目录客户机(例如,UDDI客户机或者LDAP浏览器)可查询或导航该web服务目录160以发现所发布的web服务。
一旦定位与所接收的查询相关联的SAP,内容服务器106向客户机102传输该SAP(步骤330)。客户机102接收该SAP(步骤335)并确定来自于该SAP的发布服务器插件165的地址。客户机102随后向web服务器106’传输对GUI应用的请求(步骤340)。在一些实施例中,来自于客户机102的请求是从web浏览器11传输到web服务器106’的HTTP请求。在其他实施例中,在客户机102上执行的应用(例如,通用目录浏览器或HTML UI)从内容服务器106接收SAP并将该SAP作为参数提供给web浏览器11。web浏览器11接着可以向web服务器106’自动传输HTTP请求(对于GUI应用)。沿着前述示例的思路,http://web-server/dynamic-component/?app=123456677是对web服务器106’的应用请求的具体示例。
web服务器106’,和更具体地,发布服务器插件165,接收与SAP相关联的应用请求(步骤345),并确定与该请求相关联的SAP条目(步骤350)。在一个实施例中,发布服务器插件165从客户机102接收请求,并且检索与该请求关联的、与已被(作为SAP条目的一部分)存储在持久大容量存储器225中的所发布的应用信息。在一些实施例中,发布服务器插件165使用客户机102从内容服务器106接收的SAP(或SAP的一部分)作为访问在持久大容量存储器225中存储的适当服务条目(例如,所发布的应用信息)的键。
发布服务器插件165接着构造具有所发布的应用信息(例如,应用服务器106”的HTTP地址)的文件或文档,并将该文档传输到客户机102(步骤355)。该发布服务器插件165构造文件以便该文件的格式与应用客户端13兼容。在一个实施例中,该文档是多用途的互联网邮件扩展协议(MIME)或安全MIME(S/MIME)文档。在又一个实施例中,该文档是包含ICA web客户端嵌入式对象HTML标签的HTML文档。在又一个实施例中,该文档是包含应用流客户端嵌入式对象HTML标签的HTML文档。
web浏览器11随后接收文档并试着打开该文档。在一个实施例中,如果没有在客户机102上安装应用客户端13,则客户机102与应用服务器106”通信以下载并安装应用客户端13。一旦安装了应用客户端13或者可选地,如果已经在客户机102上安装了应用客户端13,那么客户机102启动该应用客户端13以查看从web服务器106’接收的文档(步骤360)。
一旦在客户机102上安装并执行应用客户端13,应用服务器106”接着执行应用并在应用客户端13上显示该应用(步骤365)。如以下结合图7进一步详细描述的,在一个可选的实施例中,该应用服务器106”传输包括该应用的多个应用文件到应用客户端13,以在客户机102上执行。在又一个实施例中,客户机102查看该文档(甚至在启动应用客户端13之前)并使用该文档中的信息来从应用服务器106”获得GUI应用。在该实施例中,GUI应用的显示包括应用客户端106”的安装和执行。此外,查看该文档可以是对客户机102的用户透明的。例如,客户机102可从web服务器106’接收文档,并在自动从应用服务器106”请求GUI应用之前解释该文档。
因此,应用客户端13提供对所发布的应用、桌面、桌面文档、以及应用客户端13所支持的任何其他应用的基于服务的访问。应用客户端13可提供访问的应用的示例包括,但不限于,WINDOWS桌面、诸如MICROSOFT EXCEL、WORD以及POWERPOINT的WINDOW文档,(其所有都是由华盛顿州Redmond的Microsoft Corporation开发的),Unix桌面(例如由加利福尼亚州PaloAlto的Sun Microsystems开发SUN SOLARIS和由北卡罗来纳州Durham的Red Hat有限公司发布的GNU/Linux),以及其他。
在一些实施例中,响应于策略引擎确定客户机是否可以和如何访问应用,提供对客户机102可用的多个应用程序的列举(步骤204)。该策略引擎可在作出确定之前收集关于客户机的信息。现在看图4A,描述了计算机网络的一个实施例,其包括客户机102、收集代理404、策略引擎406、策略数据库408、群38、以及应用服务器106’。在一个实施例中,策略引擎406是服务器106。虽然在图4A所示的实施例中描述了只有一个客户机102、收集代理404、策略引擎406、群38、以及应用服务器106’,应理解该***可提供这些组件的每个或任意的多个。
总的来看,当客户机102向策略引擎406传输访问应用的请求410时,收集代理404与客户机102通信,检索关于客户机102的信息,并向策略引擎406传输客户机信息412。该策略引擎406通过向接收到的信息412应用来自于策略数据库408的策略来作出访问控制决策。
更详细的,客户机102向策略引擎406传输对资源的请求410。在一个实施例中,策略引擎406驻留在应用服务器106’上。在又一个实施例中,该策略引擎406是服务器106。在又一个实施例中,应用服务器106’从客户机102接收请求410,并将该请求410传输到策略引擎406。在又一个实施例中,客户机向服务器106”’传输对资源的请求410,该服务器106”’将该请求410传输到策略引擎406。
在一些实施例中,客户机102通过网络连接传输请求410。该网络可以是局域网(LAN)、城域网(MAN)或诸如互联网的广域网(WAN)。客户机102和策略引擎406可以通过各种连接连接到网络,所述连接包括标准电话线、LAN或WAN链接(例如,T1、T3、56kb、X.25)、宽带连接(ISDN、帧中继、ATM)、无线连接。在客户机102和策略引擎10之间的连接可使用各种数据链路层通信协议(TCP/IP、IPX、SPX、Ne tBIOS、NetBEUI、SMB、以太网、ARCNET、光纤分布式数据接口(FDDI)、RS232、IEEE802.11、IEEE802.11a、IEEE802.11b、IEEE802.11g和直接异步连接)。该连接也可以是如上文所述的通信链路150。
一旦接收到该请求,策略引擎406通过收集代理404启动信息收集。收集代理404收集关于客户机102的信息,并向策略引擎406传输信息412。
在一些实施例中,收集代理404收集并通过网络连接传输信息412。在一些实施例中,收集代理404包括字节码,例如以字节码编程语言JAVA写的应用。在一些实施例中,收集代理404包括至少一个脚本。在那些实施例中,收集代理404通过在客户机102上运行至少一个脚本来收集信息。在一些实施例中,收集代理包括客户机102上的Active X控件。Active X控件是专门的组件对象模型(COM)对象,其实现为一组接口使得其看起来像控件并且类似控件工作。
在一个实施例中,策略引擎406向客户机102传输收集代理404。在一个实施例中,策略引擎406在收集代理404向策略引擎406传输信息412后要求第二次执行收集代理404。在该实施例中,策略引擎406可能没有足够的信息412来确定客户机102是否满足特定条件。在其他实施例中,策略引擎406响应于接收到的信息412要求多次执行收集代理404。
在一些实施例中,策略引擎406向收集代理404传输确定收集代理404收集的信息的类型的指令。在那些实施例中,***管理员可以配置从策略引擎406传输到收集代理404的指令。这提供了对所收集的信息的类型的更强的控制。由于对所收集的信息的类型的更强的控制,也扩展了策略引擎406可做出的访问控制决策的类型。收集代理404收集信息412,所述信息412包括但不限于,客户机102的机器ID、操作***类型、操作***补丁的存在、安装的网卡的MAC地址、客户端装置上的数字水印、在活动目录中的成员、病毒扫描器的存在、个人防火墙的存在、HTTP头部、浏览器类型、装置类型、例如互联网协议地址或者地址的范围的网络连接信息、服务器106的机器ID,包括用于改变时区的调整的访问请求的日期或时间、以及授权证书。
在一些实施例中,装置类型是个人数字助理。在其他实施例中,装置类型是蜂窝电话。在其他实施例中,装置类型是膝上型电脑。在其他实施例中,装置类型是台式计算机。在其他实施例中,装置类型是上网亭(InternetKiosk)。
在一些实施例中,数字水印包括数据嵌入。在一些实施例中,水印包括***到文件中提供关于该文件的源信息的数据模式。在其他实施例中,水印包括数据散列文件以提供篡改检测。在其他实施例中,水印提供关于文件的版权信息。
在一些实施例中,网络连接信息涉及带宽能力。在其他实施例中,网络连接信息涉及互联网协议地址。在其他实施例中,网络连接信息包括互联网协议地址。在一个实施例中,网络连接信息包括识别登录代理的网络时区,客户机向该登录代理提供验证证书。
在一些实施例中,授权证书包括多种类型的认证信息,包括但不限于,用户名、客户机名、客户机地址、密码、PIN、声音样本、一次性密码、生物特征数据、数字证书、标签等、以及上述的组合。在接收到所收集的信息412后,策略引擎406基于接收到的信息412作出访问控制决策。
现在看图4B,框图描述了策略引擎406的一个实施例,包括第一组件420和第二组件430,所述第一组件420组件包括条件数据库422和登录代理424,所述第二组件430包括策略数据库432。第一组件420将来自于条件数据库422的条件应用到所接收的关于客户机102的信息,并且确定所接收的信息是否满足该条件。
在一些实施例中,条件可能要求客户机102执行特定的操作***以满足该条件。在其他实施例中,条件可以要求客户机102执行特定的操作***补丁以满足该条件。在其他实施例中,条件可以要求客户机102提供每个安装的网卡的MAC地址以满足该条件。在一些实施例中,条件可以要求客户机102指出在特定的活动目录中的成员以满足该条件。在又一个实施例中,条件可以要求客户机102执行病毒扫描器以满足该条件。在其他实施例中,条件可以要求客户机102执行个人防火墙以满足该条件。在一些实施例中,条件可以要求客户机102包括特定的装置类型以满足该条件。在其他实施例中,条件可以要求客户机102建立特定类型的网络连接以满足该条件。
如果所接收的信息满足条件,第一组件420将该条件的标识符存储在数据集426中。在一个实施例中,如果所接收的信息使条件为真,则该信息满足该条件。例如,条件可以要求安装特定的操作***。如果客户机102有该操作***,则该条件为真并且被满足。在又一个实施例中,如果所接收的信息使条件为假,则该信息满足该条件。例如,条件可以针对恶意软件是否存在于客户机102上。如果客户机102不包括恶意软件,则条件为假并且被满足。
在一些实施例中,登录代理424驻留在策略引擎406之外。在其他实施例中,登录代理424驻留在策略引擎406上。在一个实施例中,第一组件420包括登录代理424,该代理发起关于客户机102的信息的收集。在一些实施例中,登录代理424进一步包括数据存储。在这些实施例中,数据存储包括收集代理可为其收集信息的条件。该数据存储与条件数据库422明显不同。
在一些实施例中,登录代理424通过执行收集代理404发起信息收集。在其他实施例中,登录代理424通过向客户机102传输用于客户机102上的执行的收集代理404来发起信息收集。仍在其他实施例中,登录代理424在接收信息412后发起额外的信息收集。在一个实施例中,登录代理424也接收信息412。在该实施例中,登录代理424基于所接收的信息412生成数据集426。在一些实施例中,登录代理424通过将来自数据库422的条件应用到从收集代理404接收的信息而生成数据集426。
在又一个实施例中,第一组件420包括多个登录代理424。在该实施例中,多个登录代理424中的至少一个驻留在每个网络域,从这些网络域,客户机102可传输资源请求。在该实施例中,客户机102向特定的登录代理424传输资源请求。在一些实施例中,登录代理424通过网络域传输到策略引擎406,客户机102从该网络域访问登录代理424。在一个实施例中,客户机102从其访问登录代理424的网络域被称为客户机102的网络区域。
条件数据库422存储第一组件420将应用于所接收的信息的条件。策略数据库432存储第二组件430将应用于所接收的数据集426的策略。在一些实施例中,条件数据库422和策略数据库432将数据存储在ODBC兼容的数据库中。例如,条件数据库422和策略数据库432可作为ORACLE数据库而被提供,该数据库由加利福尼亚州Redwood Shore s的Oracle公司制造。在其他实施例中,条件数据库422和策略数据库432可为Microsoft ACCESS数据库或Microsoft SQL服务器数据库,上述产品由华盛顿州Redmond的Microsoft公司制造。
在第一组件420将所接收的信息应用到条件数据库422中的每个条件之后,第一组件向第二组件430传输数据集426。在一个实施例中,第一组件420仅仅向第二组件430传输数据集426。因此,在该实施例中,第二组件430不接收客户机信息412,仅仅接收所满足的条件的标识符。第二组件430接收数据集426,并基于在数据集426中所识别的条件,通过应用来自策略数据库432的策略做出访问控制决策。
在一个实施例中,策略数据库432存储应用于所接收的信息412的策略。在一个实施例中,通过***管理员至少部分的指定存储在策略数据库432中的策略。在又一个实施例中,用户指定在策略数据库432中存储的至少一些策略。将用户指定的一个策略或多个策略存储为优选项。策略数据库432可存储于易失性或非易性存储器中,或者例如分布在多个服务器上。
在一个实施例中,只有在一个或多个条件被满足时,策略才允许对资源的访问。在又一个实施例中,策略允许对资源的访问但严禁向客户机102传输资源。另一个策略可能在请求在安全网络内访问的客户机102上做出临时连接。在一些实施例中,资源为应用程序并且客户机102已请求执行该应用程序。在这些实施例的一个中,策略允许在客户机102上执行应用程序。在这些实施例的又一个中,策略可使客户机102能接收包括该应用程序的文件流。在该实施例中,可在隔离环境中存储和执行该文件流。在这些实施例的又一个中,策略可以仅仅允许在服务器(例如应用服务器)上执行该应用程序,并要求该服务器将应用输出数据传输到客户机102。
现参考图4C,流程图描述了由策略引擎406基于所接收的关于客户机102的信息作出访问控制决策而采取的步骤的一个实施例。一旦接收到所收集的关于客户机102的信息(步骤450),策略引擎406基于该信息生成数据集(步骤452)。该数据集426包含每个被所接收的信息412满足的条件的标识符。该策略引擎406将策略应用于数据集426内的每个所识别的条件。该应用产生客户机102可访问的资源的列举(步骤454)。策略引擎406接着将该列举呈现给客户机102。在一些实施例中,策略引擎406创建超文本标记语言(HTML)文档,用于将所述列举呈现给客户机。
现参考图4D,更详细地描述了所构造的网络的一个实施例,其包括客户机102、收集代理404、策略引擎406、策略数据库408、条件数据库409、客户机102、102’、会话服务器420、所存储的应用数据库422、第一服务器106’、第一数据库428、第二服务器106”、以及第二数据库432。概括地说,当客户机102向访问控制服务器406或策略引擎传输访问应用程序的请求410时,收集代理404与客户机102通信,检索关于客户机102的信息,并向策略引擎406传输客户机信息412。如上文在图4A和4B中讨论的,策略引擎406作出访问控制决策,而客户机102接收与客户机102相关联的可用的应用的列举。
在一些实施例中,会话服务器420在客户机102和与客户机102相关联的多个应用会话间建立连接。在其他实施例中,策略引擎406确定客户机102有权检索包含该应用的多个应用文件,以及有权在本地执行该应用程序。在这些实施例的一个中,服务器106’存储应用会话数据以及包括该应用程序的多个应用文件。在这些实施例的又一个中,客户机102与服务器106’建立应用流会话,该服务器106’存储应用会话数据和包含该应用程序的多个应用文件。
现在看图4E,流程图描述了会话服务器420为客户机102提供对其相关的应用会话的访问而采取的步骤的一个实施例。该会话服务器420从策略引擎406接收关于客户机102的、包括策略引擎406作出的访问控制决策的信息(步骤480)。会话服务器420生成关联的应用的列举(步骤482)。会话服务器420可将客户机102连接到关联的应用(步骤484)。在一个实施例中,该信息也可包括客户机信息412。在又一个实施例中,该信息包括在本地执行应用程序的授权。
会话服务器420生成关联的应用的列举(步骤482)。在一些实施例中,策略引擎406识别已经与客户机102相关联的多个应用会话。在又一个实施例中,会话服务器420识别所存储的与客户机102相关联的应用会话。在这些实施例的一些中,一旦从策略引擎406接收到该信息,会话服务器420自动识别所存储的应用会话。在一个实施例中,所存储的应用数据库422驻留在会话服务器420上。在又一个实施例中,所存储的应用数据库422驻留在策略引擎406上。
所存储的应用数据库422包含与群38中的多个服务器相关联的数据,所述服务器执行应用会话或提供对应用会话数据和包含该应用程序的应用文件的访问。在一些实施例中,识别与客户机102相关联的应用会话要求查询所存储的与一个或多个服务器相关联的数据。在这些实施例的一些中,会话存储器420查询所存储的与一个或多个服务器相关联的数据。在这些实施例的其他一些实施例中,策略引擎406查询所存储的与一个或多个服务器相关联的数据。在一些实施例中,第一应用会话在第一服务器106’上运行,并且第二应用会话在第二服务器106”上运行。在其他实施例中,所有的应用会话在群38中的单个服务器106上运行。
会话服务器420包括与由用户启动的应用会话相关的信息。该会话服务器可存储于易失性或非易失性存储器中,或者例如,分布在多个服务器上。表1示出包括在示例的会话服务器420的一部分中的数据:
  应用会话  应用会话1  应用会话2  应用会话3
  用户ID  用户1  用户2  用户1
  客户机ID  第一客户机  第一客户机
  客户机地址  172.16.0.50  172.16.0.50
  状态  活动的  断开的  活动的
  应用  字处理器  数据库  电子表格
  进程号  1  3  2
  服务器  服务器A  服务器A  服务器B
  服务器地址  172.16.2.55  172.16.2.55  172.16.2.56
表1
表1中示例的会话服务器420包括将每个应用会话与启动该应用会话的用户相关联的数据,还包括用户当前从其连接到服务器106的客户端计算机102或102’的标识(如果有的话),还包括客户端计算机102或102’的IP地址。该示例的会话服务器420也包括每个应用会话的状态。应用会话状态可为,例如,“活动的”(意味着用户连接到应用会话),或者“断开的”(意味着用户没有连接到该应用会话)。在可选的实施例中,应用会话的状态也可被设置为“执行-断开”(意味着用户已经从应用会话断开,但是在应用会话中的应用仍然在执行),或者“停止-断开”(意味着用户断开并且在应用会话中的应用没有正在执行,但是紧接在断开之前的它们的操作状态已被存储)。会话服务器420进一步存储信息和数据,所述信息指示正在每个应用会话内执行的应用,并且所述数据指示服务器上每个应用的进程。在服务器106’是群38一部分的实施例中,会话服务器420至少是动态存储的一部分,并且该会话服务器也包括在表1的最后两行中的数据,该数据指示每个应用现在正在/过去正在群38中的哪个服务器106上执行,以及该服务器106的IP地址。在可选的实施例中,会话服务器420包括用于每个应用会话中的每个应用的状态指示器。
例如,在表1的例子中,存在三个应用会话,应用会话1、应用会话2以及应用会话3。应用会话1与用户1相关联,用户1正在使用终端1。终端1的IP地址是152.16.2.50。应用会话1的状态是活动的,并且在应用会话1中正执行字处理程序。字处理程序正在服务器A上执行,进程号为1。服务器A’的IP地址是152.16.2.55。表1中的应用会话2是断开的应用会话118的示例。应用会话2与用户2相关联,但应用会话2没有连接到客户机102或者20。应用会话2包括正在I P地址为152.16.2.55的服务器A上执行的、进程号为3的数据库程序。应用会话3是用户如何与在不同服务器106上操作的应用会话交互的示例。应用会话3像应用会话1一样与用户1相关联。应用会话3包括在I P地址为152.16.2.56的服务器B上正在执行的、进程号为2的电子表格程序,而在应用会话1中所包含应用会话正在服务器A上执行。
在又一个例子中,当跨越与诸如服务器B的第二服务器106”的应用流会话进行通信来获取来自第二服务器106”的第二应用程序用于本地执行时,用户可以通过在诸如服务器A的服务器106’上执行的应用会话来访问第一应用程序。当不满足第一应用程序的执行所必须的条件时,客户机102的用户可能有获得的在本地执行第二应用程序的授权。
在一个实施例中,将会话服务器420配置为接收断开与客户机102相关联的应用会话的断开请求,并且响应于该请求来断开该应用会话。该会话服务器420在从应用会话断开客户机102后,继续执行该应用会话。在该实施例中,会话服务器420访问所存储的应用数据库422,并更新与每个断开的应用会话相关联的数据记录,以便该记录指示与客户机102相关联的应用会话是断开的。
在接收到与连接到网络的客户机相关联的认证信息之后,会话服务器420查询所存储的应用数据库422以识别与客户机的用户相关联的任何活动的应用会话,但是例如如果认证信息与客户机102’相关联,则识别连接到例如客户机102’的不同客户机的任何活动的应用会话。在一个实施例中,如果会话服务器420识别任何这样的活动的应用会话,该会话服务器420从客户机102自动断开应用会话,并将该应用会话连接到当前的客户机102’。在一些实施例中,所接收的认证信息将限制客户机102可重新连接的应用会话。在其他实施例中,所接收的认证信息授权在客户机102’上执行应用程序,其中,对于客户机102可能已经拒绝该授权。在这些实施例的一个中,会话服务器420可提供客户机访问信息以获取用于本地执行的应用程序。
接收执行所列举的应用的请求(步骤206)。在一个实施例中,客户机102的用户从所接收的可用应用的列举中选择用于执行的应用。在又一个实施例中,用户独立于所接收的列举来选择用于执行的应用。在一些实施例中,用户通过选择客户端代理在客户机102上呈现的应用的图形表示来选择用于执行的应用。在其他实施例中,用户通过选择呈现给web服务器或其他服务器106”’上的用户的应用的图形表示来选择用于执行的应用。
在其他的实施例中,用户请求访问文件。在这些实施例的一个中,需要执行应用以给用户提供对文件的访问。在这些实施例的又一个中,在选择用于访问的文件后,自动选择用于执行的应用。在这些实施例的又一个中,在访问文件的请求之前,将应用与文件的类型相关联,使得在识别与所请求的文件相关联的文件类型后能自动选择应用。
在一个实施例中,所列举的应用包括多个应用文件。在一些实施例中,该多个应用文件驻留在服务器106’上。在其它实施例中,该多个应用文件驻留在单独的文件服务器或服务器106”上。在其它实施例中,该多个应用文件可被传输到客户机102。在其他实施例中,在该多个应用文件中的文件可在将该多个应用文件中的第二个文件传输到客户机102之前被执行。
在一些实施例中,服务器106从服务器106’检索关于所列举的应用的信息。在这些实施例的一个中,服务器106接收寄载多个应用文件的服务器106”的标识。在这些实施例的又一个中,服务器106接收多个应用文件的位置标识,该标识符合通用命名约定(UNC)。在这些实施例的又一个中,该标识包括网络位置和用于应用流协议的套接字。
在一个实施例中,服务器106检索包含关于所列举的应用的信息的文件。该文件可包括寄载所列举应用的服务器的位置的标识。该文件可包括所列举的应用的多个版本的标识。该文件可包括包含所列举的应用的多个应用文件的列举。该文件可包括压缩文件的标识,该压缩文件包括包含所列举的应用的多个应用文件。该文件可包括执行所列举的应用的机器要满足的先决条件的标识。该文件可以包括与所列举的应用相关联的数据文件的列举。该文件可包括将要在执行所列举的应用的机器上执行的脚本的列举。该文件可包括与所列举的应用相关联的注册数据的列举。该文件可包括规则的列举,所述规则用于所列举的应用在隔离环境之内执行的实施例中。在一个实施例中,该文件可被称为“清单(manifest)”文件。
在一些实施例中,服务器106将策略应用于客户机102的所识别的特征。在这些实施例的一个中,响应所识别的特征,服务器106识别所列举的用于执行的应用的版本。在这些实施例的又一个中,服务器106做出执行与客户机102的特征相兼容的所列举的应用的版本的确定。在这些实施例的又一个中,服务器106做出执行与在客户机102上执行的操作***相兼容的所列举的应用的版本的确定。在这些实施例的又一个中,服务器106做出执行与客户机102上的操作***的修订级相兼容的所列举的应用的版本的确定。在这些实施例的一个中,服务器106做出执行与客户机102上的操作***所指定的语言相兼容的所列举的应用的版本的确定。
响应于策略来选择用于执行所列举的应用的预定数量的方法之一,预定数量的方法包括用于所列举应用的应用流式传输的方法(步骤208)。在一个实施例中,响应将策略应用于与客户机102相关联的所接收的证书来做出选择。在一些实施例中,该选择是由策略引擎做出的,例如在上文图4A、4B、4C中所描述的策略引擎406。在其他实施例中,接收证书和执行所列举应用的请求的服务器106还包括这样的策略引擎406。
在一个实施例中,预定数量的方法包括用于在服务器106’上执行所列举应用的方法。在又一个实施例中,预定数量的方法包括用于在客户机102上执行所列举应用的方法。在又一个实施例中,预定数量的方法包括用于在第二服务器106’上执行所列举的应用的方法。
在一些实施例中,预定数量的方法包括用于通过应用流会话向客户机102提供所列举的应用的方法。在这些实施例的一个中,客户机102包括流服务代理,该代理能够启动与服务器106’的连接,并从服务器106’接收传输的数据分组的流。
数据分组的流可以包括应用文件,所述应用文件包括所列举的应用。在一些实施例中,应用文件包括与应用程序相关联的数据文件。在其他实施例中,应用文件包括执行应用程序所需的可执行文件。在其他实施例中,应用文件包括元数据,该元数据包括关于文件的信息,例如位置、兼容性需求、配置数据、注册数据、用于使用在隔离环境中的执行脚本规则的标识、或者授权需求。
在一些实施例中,在传输包括流式应用的多个应用文件中的每个应用文件之前执行该流式应用。在这些实施例的一个中,在客户机102收到多个应用中的一个应用文件后,开始执行流式应用。在这些实施例的又一个中,在客户机102收到多个应用文件中的可执行应用文件后,开始执行流式应用。在这些实施例的又一个中,客户机102执行多个应用文件中的第一个所接收的应用文件,并且第一个所接收的应用文件请求对多个应用文件中的第二个应用文件访问。
在一个实施例中,流式应用在客户机102上执行,而无需永久驻留在客户机102上。在该实施例中,流式应用可在客户机102上执行,并且一旦终止流式应用,则将其从客户机102上移除。在又一个实施例中,在每个应用文件的预先部署的副本存储在客户机102上之后,流式应用在客户机102上执行。在又一个实施例中,在将每个应用文件的副本存储在客户机102的隔离环境中之后,流式应用在客户机102上执行。在又一个实施例中,在将每个应用文件的副本存储在客户机102上的高速缓存中之后,流式应用在客户机102上执行。
在一个实施例中,响应于确定客户机102可接收流式应用文件,从预定数量的方法中选择用于将应用流式传输到客户机102的方法。在又一个实施例中,响应于确定客户机102有权在客户机102本地执行流式应用文件,从预定数量的方法中选择用于将应用流式传输到客户机102的方法。
在其他实施例中,预定数量的方法包括用于向客户机102提供应用输出数据的方法,应用输出数据是在服务器106上执行所列举应用而生成的。在这些实施例的一个中,服务器106是接收执行所列举应用的请求的服务器106。在这些实施例的又一个中,服务器106是第二服务器106’,例如文件服务器或应用服务器。在一些实施例中,所列举的应用驻留在执行所列举的应用的服务器106’上。在其他实施例中,执行所列举的应用的服务器106’首先从第二服务器106’通过应用流会话接收所列举的应用。在这些实施例的一个中,服务器106’包括流服务代理,该流服务代理可以开始与第二服务器106’的连接,并从第二服务器106’接收所传输的数据流。在这些实施例的又一个中,可使用负载平衡技术识别第二服务器106’。在这些实施例的又一个中,可基于与服务器106’的邻近度来识别第二服务器106’。
在一些实施例中,服务器106从用于执行所列举的应用的预定数量的方法中选择方法,该方法用于将所列举的应用流式传输到服务器106、在服务器106上执行所列举的应用,以及向客户机102提供由执行所列举的应用而产生的应用输出数据。在这些实施例的一个中,服务器106响应于对客户机102的评价来选择方法。在这些实施例的又一个中,响应于将策略应用到对客户机102的评价来做出确定。在这些实施例的又一个中,响应于对所接收的证书的评价来做出确定。在一个实施例中,服务器106接收包括所列举的应用的多个应用文件。在又一个实施例中,服务器106通过表示层协议提供应用输出数据,所述表示层协议例如ICA表示层协议或远程桌面窗口表示层协议或者X-Window表示层协议。
在一些实施例中,服务器106也提供与所列举的应用相关联的访问信息,该访问信息是响应于所选择的方法而生成的。在这些实施例的一个中,访问信息向客户机102提供用于执行所列举的应用程序的所选择的方法的指示。在这些实施例的又一个中,访问信息包括所列举的应用的位置的标识,该标识服从通用命名约定(UNC)。在这些实施例的又一个中,访问信息包括会话管理服务器的标识。
在一些实施例中,访问信息包括启动标签,该启动标签包括认证信息。在这些实施例的一个中,客户机102可使用该启动标签来对从服务器106接收的访问信息进行认证。在这些实施例的又一个中,客户机102可使用该启动标签来向寄载所列举的应用的第二服务器106认证该客户机本身。在这些实施例的又一个中,响应于来自于客户机102的对启动标签的请求,服务器106将启动标签包含在访问信息中。
C.应用或桌面流式传输和传送
现参考图5,框图描述了此处所述的***的实施例,在其中客户机102请求执行应用程序而服务器106选择执行应用程序的方法。在一个实施例中,服务器106从客户机102接收证书。在又一个实施例中,服务器106接收来自客户机102的列举可用应用的请求。
在一些实施例中,提供多个、冗余的服务器106,106’,106”,106”’以及106””。在这些实施例的一个中,例如,存在多个文件服务器、多个会话管理服务器、多个开发用机器(staging machine)、多个web接口、或者多个接入套件控制台(access suite console)。在这些实施例的又一个中,如果服务器失效,选择冗余服务器106提供该失效机器的功能。在其他实施例中,虽然服务器106、106’、106”、106”’以及106””、以及web接口558和接入套件控制台520被描述为具有管理服务器、会话管理服务器、开发用机器、文件服务器、web服务器、以及接入套件控制台的单独功能的单独服务器106,但是可提供具有所有这些机器功能的单个服务器106。在其他实施例中,服务器106可提供一个或多个其他服务器的功能和服务。
现更详细参考图5,该框图描述了提供对应用程序的访问的服务器106的一个实施例。除了上述结合图1D描述的接口和子***之外,服务器106还包括管理通信服务514、XML服务516以及管理服务504。管理服务504包括应用管理子***506、服务器管理子***508、会话管理子***510以及许可管理子***512。服务器106可与接入套件控制台520通信。
在一个实施例中,管理服务504进一步包括专用远程过程调用子***、元帧(Metaframe)远程过程调用(MFRPC)子***522。在一些实施例中,MFRPC子***522在诸如XML服务516以及管理服务504的服务器106上的子***间路由通信。在其他实施例中,MFRPC子***522提供用于调用管理功能的远程过程调用(RPC)接口、向管理服务504传送RPC调用,并且向作出该调用的子***返回结果。
在一些实施例中,服务器106与协议引擎通信,例如上文图4B中描述的协议引擎406。在这些实施例的一个中,服务器106与驻留在服务器106’上的协议引擎406通信。在其他实施例中,服务器106进一步包括协议引擎406。
服务器106可与接入套件控制台520通信。接入套件控制台520可寄载管理工具到服务器106或群38的管理员。在一些实施例中,服务器106使用XML与接入套件控制台520通信。在其他实施例中,服务器106使用简单对象访问协议(SOAP)与接入套件控制台520通信。
对于例如图1D和图5中描述的实施例,其中服务器106包括子***的子集,管理服务504可包括多个子***。在一个实施例中,每个子***或者为单线程或者为多线程子***。线程是运行在多任务环境中的独立的执行流。单线程子***在一个时间只可以执行一个线程。多线程子***可以支持多个并发执行的线程,例如,多线程子***可同时执行多个任务。
应用管理子***506管理与能够被流式传输的多个应用相关联的信息。在一个实施例中,应用管理子***506处理来自于其他组件的请求,例如用于存储、删除、更新、列举、或解析应用的请求。在又一个实施例中,应用管理子***506处理由与能被流式传输的应用相关的组件发出的请求。这些事件可分为三种类型的事件:应用发布、应用列举以及应用启动,将在下文进一步详细地描述每一个事件。在其他实施例中,应用管理子***506进一步包括对于应用解析、应用公布(publication)以及应用发布(publishing)的支持。在其他实施例中,应用管理子***506使用数据存储器来存储应用属性和策略。
服务器管理子***508处理服务器群配置中的专用于应用流的配置。在一些实施例中,服务器管理子***508也处理需要检索与群38的配置相关联的信息的事件。在其他实施例中,服务器管理子***508处理由与服务器相关的其他组件发送的事件,所述组件提供通过应用流对应用的访问和这些服务器属性。在一个实施例中,服务器管理子***508存储服务器属性和群属性。
在一些实施例中,服务器106还包括一个或多个公共应用子***524,该子***为一个或多个专用应用子***提供服务。这些服务器106也可具有一个或多个公共服务器子***,该子***为一个或多个专用服务器子***提供服务。在其他实施例中,不提供公共应用子***524,每个专用应用和服务器子***实现所有所需的功能。
在服务器106包括公共应用子***524的一个实施例中,公共应用子***524管理所发布的应用的公共属性。在一些实施例中,公共应用子***524处理要求检索与发布的应用或公共属性相关联的信息的事件。在其他实施例中,公共应用子***524处理所有由与公共应用及其属性相关的其他组件发送的事件。
公共应用子***524可向群38“发布”应用,这使每个应用可用于由客户机102进行列举和启动。通常,应用被安装在每个期望该应用的可用性的服务器106上。在一个实施例中,为了发布应用,管理员运行指定信息的管理工具,这些信息诸如寄载该应用的服务器106、在每个服务器上的可执行文件的名称、用于执行该应用的客户机的所需的能力(例如,音频、视频、加密等)、以及能够使用该应用的用户列表。该指定的信息被分类为应用专用信息以及公共信息。应用专用信息的示例为:用于访问应用的路径名和用于运行应用的可执行文件的名称。公共信息(即,公共应用数据)包括,例如,应用的用户友好名称(例如“Microsoft WORD 2000”),应用的唯一标识以及应用的用户。
应用专用信息和公共信息可被发送到专用应用子***,该子***控制在寄载该应用的每个服务器106上的应用。专用应用子***可将应用专用信息和公共信息写入到持久存储器240中。
当其被提供时,公共应用子***524也提供用于管理群38中的发布的应用的功能。通过公共应用子***524,管理员可使用例如接入套件控制台520的管理工具配置应用组并且产生这些应用组的应用树层次结构来管理群38的应用。每个应用组可以被表示为应用树层次结构中的文件夹。在应用树层次结构中的每个应用文件夹可包括一个或多个其他应用文件夹和服务器的具体实例。公共应用子***524提供创建、移动、重命名、删除、以及列举应用文件夹的功能。
在一个实施例中,公共应用子***524在处理应用列举和应用解决请求中支持应用管理子***506。在一些实施例中,响应于数据文件类型和用于处理该类型的数据文件的应用之间的映射,公共应用子***524提供识别用于执行的应用的功能。在其它实施例中,第二应用子***提供用于文件类型关联的功能。
在一些实施例中,服务器106还可以包括策略子***。策略子***包括用于在客户机102请求执行应用时确定应用是否可被流式传输到客户机102的策略规则。在一些实施例中,策略子***识别与在接入套件控制台520中发布的流式应用相关联的服务器访问选项。在这些实施例的一个中,策略子***服务器使用服务器访问选项作为策略以代替策略规则。
会话监控子***510保持并更新与客户机102相关联的应用流会话的会话状态,并实施应用流会话的许可要求。在一个实施例中,会话管理子***510监控会话和记录事件,例如应用的启动或者应用流会话的终止。在又一个实施例中,会话监控子***510接收从客户机102传输到服务器106的通信,例如心跳消息。在又一个实施例中,会话管理子***510响应来自诸如接入套件控制台520内的工具的管理工具的关于会话的查询。在一些实施例中,管理服务504还包括许可管理子***,该子***与会话管理子***通信以便给客户机提供和维护对执行应用的许可。
在一个实施例中,管理服务504提供用于应用列举和应用解决的功能。在一些实施例中,管理服务504也提供用于应用启动、会话监控和跟踪、应用发布以及许可实施的功能。
现参考图6,框图描述了包括提供应用列举的管理服务的服务器106的一个实施例。管理服务504通过使用与XML服务516交互的web接口可以提供应用列举。在一个实施例中,XML服务516列举用于客户机102的用户的应用。在又一实施例中,XML服务516实现上文所述的ICA浏览器子***以及程序邻近子***的功能。XML服务516可以与管理通信服务514交互。在一个实施例中,XML服务516使用管理通信服务514产生应用列举请求。应用列举请求可以包括客户机类型,该客户机类型指示当执行所列举的应用时所使用的执行方法。应用列举请求被发送到公共应用子***524。在一个实施例中,公共应用子***524返回与应用列举请求的客户机类型相关联的应用的列举。在又一个实施例中,公共应用子***524返回对客户机102的用户可用的应用列举,该列举是响应于将策略应用到与客户机102相关联的证书而被选择的。在该实施例中,如上述结合图4B所描述的,策略引擎406可将该策略应用于由收集代理404收集的证书。在又一个实施例中,返回该应用的列举,并且直到请求执行所列举的应用时才将策略应用于客户机102。
管理服务504可提供用于识别寄载应用的第二服务器106’的应用解决服务。在一个实施例中,第二服务器106’为文件服务器或应用服务器。在一些实施例中,管理服务504查询包括寄载应用的多个服务器106的标识符的文件。在一个实施例中,管理服务504响应来自客户机102的执行应用的请求来提供应用解决服务。在又一个实施例中,管理服务504识别第二服务器106’,该第二服务器106’能实现与第一服务器106的不同的执行应用的方法。在一些实施例中,管理服务504识别能向客户机102流式传输应用程序的第一服务器106’以及能执行应用程序并响应于应用程序的执行将所产生的应用输出数据提供给客户机102的第二服务器106’。
在一个实施例中,web接口向XML服务516传输应用解决请求。在又一个实施例中,XML服务516接收应用解决请求并将该请求传输到MFRPC子***522。
在一个实施例中,MFRPC子***522识别在所接收的应用解决请求中包含的客户机类型。在又一个实施例中,MFRPC子***将策略应用于该客户机类型并确定将该应用“流式传输”到客户机102。在该实施例中,MFRPC子***522可向应用管理子***506转发该应用解决请求。在一个实施例中,一旦接收到来自于MFRPC子***522的应用解决请求,应用管理子***506可为客户机102识别作为会话管理服务器562运行的服务器106””。在一些实施例中,客户机向会话管理服务器562传输心跳消息。在又一个实施例中,应用管理子***506可识别寄载包括将要被流式传输到客户机102的应用的多个应用文件的服务器106’。
在一些实施例中,应用管理子***506使用文件来列举寄载多个应用文件的多个服务器以识别服务器106’。在其它实施例中,应用管理子***506识别其IP地址与客户机102的IP地址相似的服务器106’。在其它实施例中,应用管理子***506识别其IP地址在对客户机102可访问的IP地址范围内的服务器106’。
在又一个实施例中,MFRPC子***522将策略应用于客户机类型并确定可在服务器106’上执行应用,服务器106’向客户机102传输由应用的执行而产生的应用输出数据。在该实施例中,MFRPC子***522可向公共应用子***524转发该应用解决请求,以检索服务器106’的主机地址的标识符。在一个实施例中,所识别的服务器106’可使用例如ICA或RDP或X Windows的表示层协议向客户机传输应用输出数据。在一些实施例中,服务器106’通过应用流会话从第二服务器106’接收应用。
在一个实施例中,一旦完成应用列举和应用解决,将包括所列举的应用的执行方法的标识和寄载所列举的应用的服务器106’的标识符的访问信息传输到客户机102。在一个实施例中,其中管理服务504确定所列举的应用将会在客户机102上执行,web接口创建包括关于所列举的应用的名称解析信息的文件并将其传输到客户机102。在一些实施例中,该文件可使用扩展名“.rad”来进行标识。客户机102可响应于所接收的文件的内容来执行所列举的应用。表2描述在文件中包含的信息的一个实施例:
Figure BDA0000139023090000421
表2
如表2所示,文件也可包含客户机在执行应用中使用的启动标签。在一些实施例中,启动标签在预定时间段之后过期。在一个实施例中,客户机向寄载将要被执行的所列举的应用的服务器提供启动标签。使用启动标签来对客户机的用户访问所列举的应用进行授权,这有助于禁止用户重新使用文件或者产生文件的未授权版本以对应用进行不适当的访问。在一个实施例中,启动标签包括大的随机生成数。
如上文结合图2所述的,当接收到与客户机102或客户机102的用户相关联的证书时,开始用于选择应用程序的执行方法的方法(步骤202),并且响应于所接收的证书,提供对客户机102可用的多个应用程序的列举(步骤204)。接收执行所列举的应用的请求(步骤206),并且响应于策略来选择用于执行所列举的应用的预定数量的方法中的一个,所述预定数量的方法包括所列举的应用的应用流式传输的方法(步骤208)。
现参考图7,流程图描述了访问包括应用程序的多个文件所采用的步骤的一个实施例。客户机执行客户机的启动前分析(步骤210)。在一个实施例中,在检索和执行包括应用程序的多个应用文件之前,客户机102执行启动前分析。在又一个实施例中,客户机102响应于所接收的、启动前分析是用于授权访问包括应用程序的多个应用文件的必要条件的指示来执行启动前分析。
在一些实施例中,客户机102从服务器106接收与多个应用文件相关联的访问信息。在这些实施例的一个中,访问信息包括寄载多个应用文件的服务器106’的位置的标识。在这些实施例的又一个中,客户机102接收包括一个或多个版本的应用程序的多个应用的标识。在这些实施例的又一个中,客户机102接收包括一个或多个应用程序的多个应用文件的标识。在其它实施例中,客户机102接收对客户机102可用的、用于检索和执行的应用程序的列举。在这些实施例的一个中,该列举产生于对客户机102的评价。在其他实施例中,客户机102响应于包括应用程序的多个应用文件的所检索的标识来检索至少一个特征。
在一些实施例中,访问信息包括能授权客户机访问多个应用文件的启动标签。在这些实施例的一个中,响应于对客户机102的评价,向客户机102提供启动标签。在这些实施例的又一个中,在客户机102进行客户机102的启动前分析之后向客户机102提供启动标签。
在其他实施例中,客户机102检索执行多个应用文件所必需的至少一个特征。在这些实施例的一个中,访问信息包括至少一个特征。在这些实施例的又一个中,访问信息指示用于由客户机102检索的文件的位置,该文件列出至少一个特征。在这些实施例的又一个中,列举至少一个特征的该文件还包括多个应用文件的列举和寄载该多个应用文件的服务器106的标识。
客户机102确定客户机上的至少一个特征的存在。在一个实施例中,客户机102将该确定作为启动前分析的一部分。在又一个实施例中,客户机102确定客户机102是否有至少一个特征。
在一个实施例中,确定客户机102上至少一个特征的存在包括确定装置驱动器是否被安装在客户机上。在又一个实施例中,确定客户机102上至少一个特征的存在包括确定操作***是否安装在客户机102上。在又一个实施例中,确定客户机102上至少一个特征的存在包括确定特定的操作***是否安装在客户机102上。也在又一个实施例中,确定客户机102上至少一个特征的存在包括确定特定修订版的操作***是否安装在客户机102上。
在一些实施例中,确定客户机102上至少一个特征的存在包括确定客户机102是否已经获得授权以执行所列举的应用。在这些实施例的一个中,客户机102作出关于客户机102是否已接收到执行所列举的应用的许可的确定。在这些实施例的又一个中,客户机102作出关于客户机102是否已接收到通过应用流会话接收包括所列举应用的多个应用文件的许可的确定。在其它实施例中,确定客户机102上至少一个特征的存在包括确定客户机102是否有足够的可用带宽来检索和执行所列举的应用。
在一些实施例中,确定客户机102上至少一个特征的存在包括客户机102上脚本的执行。在其他实施例中,确定客户机102上至少一个特征的存在包括客户机102上软件的安装。在其他实施例中,确定客户机102上至少一个特征的存在包括客户机102上注册表的修改。在其他实施例中,确定客户机102上至少一个特征的存在包括向客户机102传输收集代理404,所述收集代理404用于在客户机102上执行以收集与客户机102相关联的证书。
客户机102从服务器106请求对执行多个应用文件的授权,该请求包括启动标签(步骤212)。在一些实施例中,客户机102响应于至少一个特征存在于客户机102上的确定而作出请求。在这些实施例的一个中,客户机102确定在客户机102上存在多个特征,该多个特征是与所列举的应用相关联,并且是响应于执行所列举的应用的请求被接收的。在这些实施例的又一个中,客户机102是否接收对执行所列举的应用文件的授权的指示,依赖于客户机102上至少一个特征的存在。在一个实施例中,客户机102接收应用程序的列举,请求执行所列举的应用,并且接收访问信息,该访问信息包括至少一个特征和启动标签,该启动标签在确定客户机102上至少一个特征的存在时授权所列举的应用的执行。
在一个实施例中,客户机102从服务器106接收授权执行多个应用文件的许可。在一些实施例中,该许可授权执行特定的时间段。在这些实施例的一个中,许可要求传输心跳消息以维持对执行多个应用文件的授权。
在又一个实施例中,客户机102从服务器106接收许可和与监控多个应用文件的执行的服务器106相关联的标识符。如上文图5中描述的,在一些实施例中,服务器为会话管理服务器562。在这些实施例的一个中,会话管理服务器562包括监控与客户机102相关联的会话的会话管理子***510。在其它实施例中,单独的服务器106””是会话管理服务器562。
客户机102接收并执行多个应用文件(步骤214)。在一个实施例中,客户机102通过应用流会话接收多个应用文件。在又一个实施例中,客户机102在客户机102上的隔离环境中存储多个应用文件。在又一个实施例中,客户机102在接收到多个应用文件的第二个文件之前,执行多个应用文件中的一个。在一些实施例中,服务器向多个客户机传输多个应用文件,多个客户机中的每一个已经与服务器建立了单独的应用流会话。
在一些实施例中,客户机102在高速缓存中存储多个应用文件,并延迟应用文件的执行。在这些实施例的一个中,客户机102接收对在预定义的时间段内执行应用文件的授权。在这些实施例的又一个中,当客户机102缺少对网络的访问时,客户机102接收对在预定义的时间段内执行应用文件的授权。在其他实施例中,客户机在高速缓存中存储多个应用文件。在这些实施例的一个中,应用流客户端552建立内部应用流会话以从高速缓存检索多个应用文件。在这些实施例的又一个中,当客户机102缺少对网络的访问时,客户机102接收授权以在预定的时间段内执行应用文件。
客户机102向服务器传输至少一个心跳消息(步骤216)。在一些实施例中,客户机102传输至少一个心跳消息以保留对执行包括所列举的应用的多个应用文件的授权。在其他实施例中,客户机102传输至少一个心跳消息以保留对在多个应用文件中检索应用文件的授权。在其他实施例中,客户机102接收授权在预先确定的时间段内执行多个应用文件的许可。
在一些实施例中,客户机102向第二服务器106””传输心跳消息。在这些实施例的一个中,第二服务器106””可包括会话管理服务器562,该会话管理服务器562监控多个应用文件的检索和执行。在这些实施例的又一个中,第二服务器106””响应于所传输的心跳消息,可以更新用于授权执行多个应用文件的许可。在这些实施例的又一个中,第二服务器106””响应于所传输的心跳消息,可以向客户机102传输命令。
回看图5,客户机102可包括应用流客户端552、流服务554以及隔离环境556。
应用流客户端552可以是可执行程序。在一些实施例中,应用流客户端552可以启动另一个可执行程序。在其他实施例中,应用流客户端552可启动流服务554。在这些实施例的一个中,应用流客户端552可向流服务554提供与执行应用程序相关联的参数。在这些实施例的又一个中,应用流客户端552可使用远程过程调用来启动流服务554。
在一个实施例中,客户机102请求应用程序的执行并从服务器106接收关于执行的访问信息。在又一个实施例中,应用流客户端552接收该访问信息。在又一个实施例中,应用流客户端552向流服务554提供该访问信息。在又一个实施例中,访问信息包括与包含应用程序的多个应用文件相关联的文件的位置的标识。
在一个实施例中,流服务554检索与多个应用文件相关联的文件。在一些实施例中,所检索的文件包括多个应用文件的位置的标识。在这些实施例的一个中,流服务554检索多个应用文件。在这些实施例的又一个中,流服务554在客户机102上执行所检索的多个应用文件。在其他实施例中,流服务554向服务器传输心跳消息以维持授权来检索和执行多个应用文件。
在一些实施例中,所检索的文件包括多于一个的多个应用文件的位置的标识,多个应用文件的每个包括不同的应用程序。在这些实施例的一个中,流服务554检索包括与客户机102兼容的应用程序的多个应用文件。在这些实施例的又一个中,响应于客户机102的评价,流服务554接收授权以检索特定的多个应用文件。
在一些实施例中,多个应用文件被压缩并存储在文件服务器上档案文件中,例如CAB、ZIP、SIT、TAR、JAR或其他档案文件中。在一个实施例中,在档案文件中存储的多个应用文件包括应用程序。在又一个实施例中,在档案文件中存储的不同的多个应用文件各自包括不同版本的应用程序。在又一个实施例中,在档案文件中存储的不同的多个应用文件各自包括不同的应用程序。在一些实施例中,档案文件包含与该多个应用文件中的每个文件相关联的元数据。在这些实施例的一个中,流服务554响应于所包含的元数据产生目录结构。如下面结合附图12的更详细描述,可使用元数据来满足应用程序对目录列举的请求。
在一个实施例中,流服务554解压缩档案文件以获得该多个应用文件。在又一个实施例中,在从该多个应用文件检索文件之前,流服务554确定该多个应用文件中的文件的本地副本是否存在于客户机102的高速缓存中。在又一个实施例中,文件***过滤器驱动器564确定本地副本是否存在于高速缓存中。在一些实施例中,在该多个应用文件中检索文件之前,流服务554修改注册表项。
在一些实施例中,流服务554在客户机102上的高速缓存中存储多个应用文件。在这些实施例的一个中,一旦接收缓存该多个应用文件的请求,流服务554可提供用于缓存多个应用文件的功能。在这些实施例的又一个中,流服务554可提供保护客户机102上的高速缓存的功能。在这些实施例的又一个中,流服务554可使用算法调整高速缓存的尺寸和位置。
在一些实施例中,流服务554在客户机102上创建隔离环境556。在这些实施例的一个中,流服务554使用隔离环境应用编程接口来创建隔离环境556。在这些实施例的又一个中,流服务554在该隔离环境556中存储该多个应用文件。在这些实施例的又一个中,流服务554执行在隔离环境中的该多个应用文件中的文件。在这些实施例的又一个中,流服务554在隔离环境中执行应用程序。
对于收到在客户机102上执行应用的授权的实施例,该应用的执行可发生在隔离环境556中。在一些实施例中,在执行应用前,将包括该应用的多个应用文件存储在客户机102上。在其他实施例中,在执行该应用之前,将该多个应用文件的子集存储在客户机102上。在其他实施例中,该多个应用文件没有驻留在隔离环境556中。在其他实施例中,该多个应用文件的子集没有驻留在客户机102上。无论该多个应用文件的子集或者该多个应用文件中的每个应用文件是否驻留在客户机102上或隔离环境556中,在一些实施例中该多个应用文件中的应用文件可在隔离环境556中被执行。
隔离环境556可由核心***组成,该核心***能够提供File SystemVirtualization(文件***虚拟化)、Registry System Virtualization(注册***虚拟化)、以及Named Object Virtualization(命名对象虚拟化),以便不需要请求对应用源代码作任何改变而减少应用兼容性问题。隔离环境556可使用在用于注册表和命名对象虚拟化的用户模式中以及在使用用于文件***虚拟化的文件***过滤器驱动器的内核中的钩子(hooking)来重定向应用资源请求。下述是对隔离环境556的一些实施例的描述。
现在看图8A,示出了在操作***8100控制下运行的计算机的一个实施例,该操作***8100已经减少了应用兼容性和应用群集性问题。操作***8100通过它的***层8108使得各种本地资源对应用程序8112、8114可用。***层8108所体现的资源的视图可称为“***范围(scope)”。为了避免应用程序8112、8114对本地资源8102、8104、8106、8107访问的冲突,提供隔离环境8200。如图8A所示,隔离环境8200包括应用隔离层8200以及用户隔离层8240。概念上的,隔离环境8200通过应用隔离层8220给应用程序8112、8114提供本地资源的唯一视图,例如文件***8102、注册表8104、对象8106、以及窗口名称8107。每个隔离层修改提供给应用的本地资源的视图。通过层提供的本地资源的经修改的视图被称为该层的“隔离范围”。如图8A所示,应用隔离层包括两个应用隔离范围8222、8224。范围8222表示提供给应用8112的本地资源的视图,而范围8224表示提供给应用8114的本地资源的视图。因此,在图8A所示的实施例中,给APP1 8112提供专用的文件***8102’的视图,而给APP2 8114提供其专用的另一个文件***8102”的视图。在一些实施例中,应用隔离层8220给在操作***8100上层执行的每个单独的应用程序提供本地资源8102、8104、8106、8107的专用视图。在其他实施例中,应用程序8112、8114可被分为多个集合,并且在这些实施例中,应用隔离层8220为每个应用程序集合提供本地资源的专用视图。将冲突的应用程序放入分开的组中以增强应用的兼容性和群集性。在进一步的实施例中,通过管理员配置属于集合的应用。在一些实施例中,“穿过(passthrough)”隔离范围可被定义恰恰对应于***范围。换句话说,在穿过隔离范围内执行的应用直接在***范围内操作。
在一些实施例中,应用隔离范围进一步被分为分层的子范围。主子范围包括基本应用隔离范围,并且附加子范围包括对应用的多个执行实例可能是可见的该范围的各种修改。例如,子范围可包括对实现对应用的补丁级别的改变或者附加部件的安装或者删除的范围的修改。在一些实施例中,对执行应用的实例可见的附加子范围的子集是可配置的。在一些实施例中,无论应用正在代表哪个用户执行,对执行应用的所有实例而言可见子范围的集合是相同的。在其他实施例中,对于执行应用的不同用户,可见子范围的集合可以不同。在其他实施例中,可定义子范围的各种集合,并且用户有机会选择使用哪个集合。在一些实施例中,当不再需要子范围时可将其丢弃。在一些实施例中,可以将在子范围的集合中包含的修改合并在一起以形成单个子范围。
现参考图8B,描述了具有减少的应用兼容性和应用群集性问题的多用户计算机。该多用户计算机包括在***层8108中的本地资源8102、8104、8106、8107、以及上文刚刚讨论的隔离环境8200。该应用隔离层8220如上所讨论的运行,给应用或应用组提供本地资源的经修改的视图。用户隔离层8240,概念上,给应用程序8112、8114提供本地资源的视图,该视图进一步基于用户的用户标识进行改变,应用代表该用户而被执行。如图8B所示,用户隔离层8240可以被视为包括许多的用户隔离范围8242’、8242”、8242”’、8242””、8242””’、8242”””(统称8242)。用户隔离范围8242提供本地资源的应用专用视图的用户专用视图。例如,给代表用户“a”的用户会话8110中执行的APP1 8112提供文件***视图8102’(a),通过用户隔离范围8242’和应用隔离范围8222来对该文件***视图8102’(a)进行改变或修改。
换一种方式说,用户隔离层8240通过对由用户隔离范围8242’提供的用户特定视图修改进行“分层”来改变用于每个单独用户的本地资源的视图,该用户特定视图修改在由应用隔离范围8222提供的应用特定视图修改“之上”,该应用特定视图修改进而是在由***层提供的本地资源的整个***视图“之上分层的”。例如,当APP1 8112的第一实例访问注册数据库8104中的条目时,查阅对于第一用户会话和应用8104’(a)专用的注册数据库的视图。如果在注册表8104’(a)的用户专用视图内发现了所请求的注册键(registry key),则将该注册键返回到APP1 8112。如果没有,则查阅对于该应用8104’专用的注册数据库的视图。如果在注册8104’表的应用特定视图内找到所请求的注册键,则将该注册键返回到APP1 8112。如果没有,则将在***层8108中的注册数据库8104中存储的该注册键(即,本地注册键)返回给APP1 8112。
在一些实施例中,用户隔离层8240为每个单独的用户提供隔离范围。在其他实施例中,用户隔离层8240为用户组提供隔离范围,可通过在组织内的角色定义用户组,或者由管理员预先确定用户组。在其他实施例中,不提供用户隔离层8240。在这些实施例中,应用程序所见的本地资源视图是由应用隔离层8220提供的。虽然通过支持多个用户并发执行应用程序的多用户计算机来描述隔离环境8200,但是隔离环境8200也可用于单用户计算机上以解决应用兼容性和群集性的问题,这些问题来源于在同一计算机***上的不同的用户对应用程序的顺序执行,并且这些问题来源于相同的用户安装和执行不兼容的程序。
在一些实施例中,用户隔离范围进一步被分为子范围。通过用户隔离范围对呈现给在该范围内执行的应用的视图的修改是在该范围内的每个子范围中包含的修改的聚集。每个子范围层叠在彼此之上,并且在聚集的视图中,在更高子范围中的对资源的修改覆盖在较低层中的对同一资源的修改。
在这些实施例的一些中,这些子范围的一个或多个可包含对用户特定的视图的修改。在这些实施例的一些中,一个或多个子范围可包括对用户集特定的视图的修改,其可以由***管理员定义的或者被限定为操作***中的用户组。在这些实施例的一些中,这些子范围的其中一个可包含对特定登录会话特定的视图的修改,以及因此当会话结束时将其丢弃。在这些实施例的一些中,与用户隔离范围相关联的应用实例对本地资源的改变总是影响这些子范围之一,并且在其他实施例中,依赖于特定资源的改变,这些改变可影响不同的子范围。
上文所讨论的概念上结构允许给代表用户执行的应用提供本地资源的聚集的、或统一的、虚拟化的视图,对应用和用户的组合是特定的。该聚集的视图可被称为“虚拟范围”。给代表用户执行的应用实例提供本地资源的单一视图,该视图反映本地资源的所有操作的虚拟化实例。从概念上来讲,该聚集的视图首先包含在***范围内的操作***提供的本地资源的集合,其上覆盖在应用隔离范围内包含的、适用于执行应用的修改,进一步覆盖在用户隔离范围内包含的、适用于代表用户执行的应用的修改。除了操作***准许对特定的用户或应用拒绝访问以外,在***范围内的本地资源的特征在于对在***上所有用户和应用是公共的。对在应用隔离范围内包含的资源视图的修改的特征在于对与该应用隔离范围相关联的应用的所有实例是公共的。对在用户隔离范围内包含的资源视图的修改的特征在于对与代表与用户隔离范围相关联的用户执行的可应用的应用隔离范围相关联的所有应用是公共的。
该概念可延伸到子范围;对在用户子范围内包含的资源范围的修改对与代表与用户隔离子范围相关联的用户或用户组执行的可应用的隔离子范围相关联的所有应用都是公共的。应该理解在整个说明书中,无论何时对“范围”引用,意味着如果子范围存在的话,其也指子范围。
当应用请求列举本地资源(例如文件***或注册数据库的一部分)时,通过首先列举本地资源的“***范围的”实例来构建虚拟化的列举,即,若有的话,找到***层中的实例。接着,若有的话,则列举所请求的资源的“应用范围的”实例,即在该适当的应用隔离范围内找到的实例。将在应用隔离范围内遇到的任何所列举的资源加入到视图内。如果所列举的资源已经存在于该视图内(也就是因为它已经存在于***范围内),它被应用隔离范围内遇到的资源的实例所替代。类似地,若存在,则列举所请求的资源的“用户范围的”实例,即在适当的用户隔离范围内找到的实例。再一次地,将在用户隔离范围内遇到的任何所列举的资源加入到视图。如果本地资源已经存在于该视图中(由于它已经存在于***范围中或者在适当的应用隔离范围内),则它被在用户隔离范围内遇到的资源的实例所替代。以此方式,本地资源的任何列举将会恰当地反映所列举的本地资源的虚拟化。从概念上来讲,相同的方法应用于列举包括多个子范围的隔离范围。列举单独的子范围以及在聚集视图中用来自更高子范围的资源代替来自更低子范围的匹配的实例。
在其他实施例中,从用户隔离范围层下至***层执行列举,而非反过来。在这些实施例中,列举用户隔离范围。接着列举应用隔离范围,并且将出现在应用隔离范围内的没有在用户隔离范围中列举的任何资源实例加入到结构之下的聚集视图。相似的处理过程可被重复用于仅出现在***范围内的资源。
在其他实施例中,可以同时列举所有的隔离范围并且合并各个列举。
如果应用试图打开本地资源的现有的实例,但不试图修改该资源,则返回到应用的特定的实例是在虚拟范围内发现的那个实例,或者说,是将出现在所请求的资源的父虚拟化列举中的实例。从隔离环境的角度而言,该应用就是在请求打开“虚拟资源”,并且用于满足该请求的本地资源的特定实例就是对应于所请求的资源的“字面上的资源”。
如果代表用户执行的应用试图打开资源并指示它这样做的目的是改变该资源,当在应用隔离范围和***范围内的资源对代表其他用户执行的应用是公共的时,通常将用于修改的资源的私有副本给该应用实例。典型地,制作资源的用户范围副本,除非用户范围实例已经存在。通过虚拟范围提供的聚集视图的定义意味着向用户隔离范围复制应用范围或***范围的资源的动作没有改变该聚集视图,该聚集视图由虚拟范围提供给正被讨论的用户和应用,不给其他用户,也不给任何其他应用实例。由代表用户执行的应用实例对所复制的资源的随后修改不会影响不共享相同的用户隔离范围的任何其他应用实例的聚集视图。换句话说,这些修改不改变用于其他用户或者用于与同一应用隔离范围不相关的应用实例的本地资源的聚集视图。
应用可安装于特定的隔离范围内(下文更详细地描述的)。安装在隔离范围内的应用总是与该范围相关联。可替代地,可在特定隔离范围内或者许多的隔离范围内启动应用。事实上,启动应用并且该应用与一个或多个隔离范围相关联。相关联的一个或多个隔离范围给进程提供本地资源的特定视图。应用也可在***范围内启动,即,它们可以不与隔离范围相关联。这使得在隔离环境中可选择性地执行操作***应用,例如Internet Explorer,以及第三方应用。
无论应用安装在何处,在隔离范围内启动应用的能力缓解了应用兼容性和群集性问题,而不要求在隔离范围内单独安装应用。在不同隔离范围内的选择性地启动所安装的应用的能力提供使需要帮助者应用的应用(例如Word,Notepad等)以相同规则集合启动这些帮助者应用的能力。
另外,在多个隔离环境中启动应用的能力允许在隔离的应用和公共的应用之间更好的集成。
现参考图8C,总的来说,用于将进程和隔离范围相关联的方法包括以暂停状态启动该进程的步骤(步骤882)。检索与期望的隔离范围相关联的规则(步骤884)并且在存储器元件中存储该进程的标识符和所检索的规则(步骤886),并且继续执行暂停的进程(步骤888)。拦截或钩住随后由该进程作出的访问本地资源的调用(步骤890),以及如果有的话,将与该进程标识符相关联的规则用于虚拟化对所请求资源的访问(步骤892)。
仍参考图8C,更详细地,以暂停状态启动进程(步骤882)。在一些实施例中,使用定制的启动程序完成此项任务。在这些实施例的一些中,启动器被特别地设计为将进程启动到所选择的隔离范围中。在其他实施例中,启动器例如通过命令行选项接受对期望的隔离范围的规范来作为输入。
检索与期望的隔离范围相关联的规则(步骤884)。在一些实施例中,从持久存储元件中检索规则,该持久存储元件例如硬盘驱动器或其他固态存储器元件。规则可作为关系数据库、平面文件数据库、树形结构数据库、二叉树结构或其他持久性数据结构被存储。在其他实施例中,规则可存储于为存储它们特别配置的数据结构中。
将进程的标识符(例如进程id(PID))和所检索的规则存储在存储器元件中(步骤886)。在一些实施例中,提供内核模式驱动器以接收关于新进程创建的操作***消息。在这些实施例中,PID和所检索的规则可被存储在该驱动器的上下文中。在其他实施例中,提供文件***过滤器驱动器,或迷你过滤器来拦截本地资源请求。在这些实施例中,PID和所检索的规则可存储在过滤器中。在其他实施例中,通过用户模式钩子来执行所有的拦截,并且根本不存储PID。在进程初始化期间,通过用户模式钩子设备来加载规则,因为规则关联完全在进程中执行,所以不需要其他的组件知道应用到PID的规则。
继续执行暂停的进程(步骤888),并且拦截或钩住随后由该进程作出的访问本地资源的调用(步骤890),并且与该进程标识符相关联的规则,如果有的话,被用于虚拟化对所请求的资源的访问(步骤892)。在一些实施例中,文件***过滤器驱动器,或者迷你过滤器,或者文件***驱动器拦***问本地资源的请求,并确定与所拦截的请求相关联的进程标识符是否已经与规则集合相关联。如果已关联,则将与所存储的进程标识符相关联的规则用于虚拟化访问本地资源的请求。如果没有关联,则访问本地资源的请求可不被修改地进行传递。在其他实施例中,动态链接库被加载到新创建的进程中,并且该库加载隔离规则。在其他实施例中,内核模式技术(钩子、过滤器驱动器、迷你过滤器)以及用户模式技术都被用于拦截对访问本地资源的调用。对于文件***过滤器驱动器存储规则的实施例,该库可加载来自于文件***过滤器驱动器的规则。
与隔离范围相关联的进程的“子”进程与它们的“父”进程的隔离范围相关联。在一些实施例中,这是通过内核模式驱动器在创建子进程时通报文件***过滤器驱动器来实现的。在这些实施例中,文件***过滤器驱动器确定父进程的进程标识符是否与隔离范围相关联。如果关联,则文件***过滤器驱动器存储在新创建的子进程的进程标识符和父进程的隔离范围间的关联。在又一个实施例中,可从***直接调用文件***过滤器驱动器而不需使用内核模式驱动器。在其他实施例中,在与隔离范围相关联的进程中,创建新进程的操作***功能被钩住或拦截。当从这样的进程接收创建新进程的请求时,存储在新的子进程和父进程的隔离范围间的关联。
在一些实施例中,可以将范围或子范围与单独的线程相关联而不是与整个进程相关联,这使得在每一线程的基础上进行隔离。在一些实施例中,每线程隔离可以被用于服务或COM+服务器。
在一些实施例中,使用隔离环境向应用流客户端552提供附加的功能。在这些实施例的一个中,在隔离环境中执行应用程序。在这些实施例的又一个中,所检索的多个应用文件驻留在隔离环境中。在这些实施例的又一个中,在隔离环境中对客户机810上的注册表做出改变。
在一个实施例中,应用流客户端552包括隔离环境556。在一些实施例中,应用流客户端552包括拦截对于文件的应用请求的文件***过滤器驱动器564。在这些实施例的一个中,文件***过滤器驱动器564拦截打开已有的文件的应用请求并确定该文件没有驻留在隔离环境556内。在这些实施例的又一个中,文件***过滤器驱动器564响应于确定该文件没有驻留在隔离环境556中来将该请求重定向到流服务554。流服务554可从多个应用文件中提取文件,并将该文件存储在隔离环境556中。文件***过滤器驱动器564接着可以用该文件的所存储的副本来响应对该文件的请求。在一些实施例中,响应于流服务554没有检索文件或多个应用文件的指示和该文件没有驻留在隔离环境556中的确定,文件***过滤器驱动器564可以将对该文件的请求重定向到文件服务器540。
在一些实施例中,文件***过滤器驱动器564使用严格的隔离规则来阻止冲突或不一致数据出现在隔离环境556中。在这些实施例的一个中,在用户隔离环境中拦截对资源的请求的文件***过滤器驱动器564可以将该请求重定向到应用隔离环境。在这些实施例的又一个中,文件***过滤器驱动器564不将该请求重定向到***范围。
在一个实施例中,流服务554使用IOCTL命令与过滤器驱动器通信。在又一个实施例中,使用Microsoft SMB流协议接收到文件服务器540的通信。
在一些实施例中,打包机制530在清单文件(manifest file)中存储已发布文件类型的列表作为可用的应用并且使得此信息对应用发布软件可用。在这些实施例的一个中,打包机制530接收来自监控应用程序安装到开发用机器上的隔离环境中的信息。在这些实施例的又一个中,打包机制530的用户向打包机制530提供此信息。在其他实施例中,在接入套件控制台520中的应用发布软件查阅该清单文件以便向接入套件控制台520的用户呈现可能的文件类型,该文件类型与正在被发布的所请求的应用相关联。用户选择文件类型以关联特定的发布的应用。在应用列举时将该文件类型呈现给客户机102。
客户机102可包括客户机代理560。客户机代理560提供将文件类型与应用程序相关联的功能,和响应于该关联来选择应用程序的执行方法的功能。在一个实施例中,客户机代理560为程序邻近应用。
当选择用于执行的应用程序时,客户机102确定与该应用程序的文件类型相关联的执行方法。在一个实施例中,客户机102确定文件类型与执行方法相关联,该执行方法要求用于检索应用文件和在隔离环境中执行的应用流会话。在该实施例中,客户机102可将该请求重定向到应用流客户端552,而不是启动应用程序的本地版本。在又一个实施例中,客户机代理560作出确定。在又一个实施例中,客户机代理560将该请求重定向到应用流客户端552。
在一个实施例中,应用流客户端552从服务器106请求与应用程序相关联的访问信息。在一些实施例中,应用流客户端552接收包含访问信息的可执行程序。在这些实施例的一个中,应用流客户端552接收可执行程序,该可执行程序能够在客户机102上显示来自服务器上执行应用程序而产生的应用输出数据。在这些实施例的又一个中,应用流客户端552接收可执行程序,该可执行程序能够通过应用流会话检索该应用程序并且在客户机102上的隔离环境中执行该应用程序。在这个实施例中,应用流客户端552可执行所接收的可执行应用程序。在这些实施例的又一个中,服务器106响应于执行如上所述的应用解决来选择可执行程序以便提供给客户机102。
现参考图9,流程图描述了在执行应用的方法中所采用的步骤的一个实施例。如上文在图7中所述,关于步骤214,客户机102接收并执行多个应用文件。总的来说,客户机102接收包括访问信息的文件,所述访问信息用于访问多个应用文件以及用于执行可以接收应用流的第一客户端(步骤902)。响应于该文件,客户机102检索多个应用文件的标识(步骤904)。响应于该文件,客户机102检索在多个应用文件的执行中需要的至少一个特征(步骤906)。客户机102确定客户机102是否包括至少一个特征(步骤908)。响应于确定客户机102缺少该至少一个特征,客户机102执行第二客户端,第二客户端请求在服务器上执行多个应用文件(步骤910)。
参考图9,更详细地,客户机102接收包括访问信息的文件,所述访问信息用于访问多个应用文件以及用于执行能够接收应用流的第一客户端(步骤902)。在一个实施例中,客户机102接收包括包含应用程序的多个应用文件的位置标识的访问信息。在又一个实施例中,客户机102响应于请求应用程序的执行来接收文件。在又一个实施例中,访问信息包括该多个应用文件驻留在服务器106’(例如应用服务器或文件服务器)上的指示。在又一个实施例中,访问信息指示客户机102可通过应用流会话从服务器106检索该多个应用文件。
响应于文件,客户机102检索该多个应用文件的标识(步骤904)。在一个实施例中,响应于包括访问信息的文件,客户机102识别在其上有该多个应用文件驻留的服务器。在又一个实施例中,客户机102从服务器106检索识别该多个应用文件的文件。在一些实施例中,该多个应用文件包括应用程序。在其他实施例中,该多个应用文件包括多个应用程序。在其他实施例中,该多个应用文件包括单个应用程序的多个版本。
现提前参考图10,流程图描述了驻留在例如文件服务器540的服务器106’上的多个应用文件的一个实施例。在图10中,多个应用文件(称为包),包括包含一个或多个应用程序的三个不同版本的应用文件。
在一个实施例中,包括一个或多个应用程序的版本并被存储在包中的应用文件的每个子集被称为目标。目标1,例如,包括字处理应用程序和电子表格程序的版本,该版本与Microsoft Windows 2000操作***的英语版本相兼容。目标2包括字处理应用程序和电子表格程序的版本,该版本与Microsoft XP操作***的英语版本相兼容。目标3包括字处理应用程序和电子表格程序的版本,该版本与带服务包3的Microsoft Windows 2000操作***的日语版本相兼容。
现回到图9,在一些实施例中,从寄载该多个应用文件的服务器106检索的文件包括包的描述和在该多个应用文件中所包含的目标。在其他实施例中,从服务器106检索的文件识别包括由客户机102请求执行的应用程序的该多个应用文件。
响应于该文件,客户机102检索执行该多个应用文件需要的至少一个特征(步骤906)。在一些实施例中,客户机102可以不执行应用程序,除非客户机包括特定特征。在这些实施例的一个中,不同的应用程序要求客户机102包括来自于被其他应用程序需要的特征的不同的特征。在这些实施例的又一个中,客户机102接收执行包括客户机102请求的应用程序的该多个应用文件所需的至少一个特征的标识。
客户机确定客户机102是否包括至少一个特征(步骤908)。在一个实施例中,客户机102评价客户机102上的操作***以确定客户机102是否包括至少一个特征。在又一个实施例中,客户机102识别客户机102上的操作***所使用的语言,以确定客户机102是否包括该至少一个特征。在又一个实施例中,客户机102识别客户机102上的操作***的修订级,以确定客户机102是否包括该至少一个特征。在又一个实施例中,客户机102识别驻留在客户机102上的应用程序的应用版本以确定客户机102是否包括该至少一个特征。在一些实施例中,客户机102确定客户机102是否包括装置驱动器以确定客户机102是否包括该至少一个特征。在其他实施例中,客户机102确定客户机102是否包括操作***以确定客户机102是否包括该至少一个特征。在其他实施例中,客户机102确定客户机102是否包括执行该多个应用文件的许可以确定客户机102是否包括该至少一个特征。
响应于确定客户机102缺少该至少一个特征,客户机102执行第二客户端,该第二客户端请求在服务器106上执行该多个应用文件(步骤910)。在一个实施例中,当客户机102确定该客户机102缺少该至少一个特征时,客户机102不执行能够接收应用流的第一客户端。在又一个实施例中,当客户机102缺少该至少一个特征时,策略禁止客户机102通过应用流接收该多个应用文件。在一些实施例中,客户机102确定客户机102确实包括该至少一个特征。在这些实施例的一个中,客户机102执行第一客户端,该第一客户端从服务器106接收包括该多个应用文件的应用流以用于在客户机上执行。
在一些实施例中,一旦确定客户机102缺少该至少一个特征,客户机102执行第二客户端,该第二客户端请求在服务器上执行该多个应用文件。这些实施例的一个中,第二客户端向寄载该多个应用文件的服务器106传输该请求。在这些实施例的又一个中,服务器106执行包括应用程序的该多个应用文件,并产生应用输出数据。在这些实施例的又一个中,第二客户端接收通过在服务器上的该多个应用文件的执行所产生的应用输出数据。在一些实施例中,第二客户端通过独立计算结构表示层协议或远程桌面窗口表示层协议或X-Windows表示层协议接收应用输出数据。在这些实施例的又一个中,第二客户端在客户机102上显示应用输出。
在一些实施例中,第二客户端向没有寄载该多个应用文件的服务器106传输请求。在这些实施例的一个中,服务器106可从寄载该多个应用文件的第二服务器106请求该多个应用文件。在这些实施例的又一个中,服务器106可通过应用流会话从第二服务器106接收该多个应用文件。在这些实施例的又一个中,服务器106将所接收的该多个应用文件存储在隔离环境中并在该隔离环境中执行应用程序。在这些实施例的又一个中,服务器向在客户机上的第二客户端传输所产生的应用输出数据。
现回到图5,在一个实施例中,能够接收应用流的第一客户端是应用流客户端552。应用流客户端552接收该文件,响应于该文件,检索多个应用文件的标识和执行该多个应用文件需要的至少一个特征,以及确定客户机102是否包括该至少一个特征。在又一个实施例中,第二客户端是客户机代理560。在一些实施例中,响应于应用流客户端552作出的客户机102缺少该至少一个特征的确定,客户机代理560从应用流客户端552接收该文件。
在一些实施例中,在客户机102上执行的应用566使用Win32FindFirstFile()和FindNextFile()API调用来列举与应用566相关联的文件。在这些实施例的一个中,多个应用文件包括应用566。在这些实施例的又一个中,不是所有的在多个应用文件中的文件都驻留在客户机102上。在这些实施例的又一个中,流服务554检索在存档文件中的多个应用文件但只提取该多个应用文件的子集。在这些实施例的又一个中,即使在所请求的文件没有驻留在客户机102上时,流服务554和文件过滤器驱动器564仍然提供用于满足列举请求的功能。
在一个实施例中,通过拦截列举请求并且好像在该多个应用文件内的所有的文件都驻留在客户机102上那样提供数据来提供该功能。在又一个实施例中,通过由文件***过滤器驱动器564拦截以IOCTL命令传输的列举请求,例如IRP_MJ_DIRECTORY_CONTROL IOCTL,来提供该功能。当文件***过滤器驱动器564拦截该调用时,文件***过滤器驱动器564将该请求重定向到流服务554。在一个实施例中,在将该请求重定向到该流服务554前,文件***过滤器驱动器564确定所请求的列举驻留在客户机102上的隔离环境中。在又一个实施例中,流服务554使用在该多个应用文件中的文件满足该请求,该文件包括与该多个应用文件相关联的目录结构的列举。在又一个实施例中,流服务554向文件***过滤器驱动器564提供对该请求的响应以用于满足列举请求。
图12显示了在群38中的服务器106的一个实施例,其中服务器106包括许可管理子***1510,组子***1520,持久存储***服务模块1570,动态存储***服务模块1580,关系子***1530,专用服务器子***1540,以及与事件总线1570通信的公共接入点子***524。图12中示出的这些子***目的在于描述许可管理子***1510的行为。服务器106可以包括其他类型的子***。
许可管理子***1510通过事件总线与组子***1520通信,从而形成和维持许可的逻辑分组(下文,“许可组”)以便于许可池、分配和组。许可组包括下文描述的许可串的集合和/或其他许可组。许可组收集相似部件(fea tuer)的许可并从而实现许可池化。池化的许可以是可被群38中的任何服务器106使用的许可。每个许可组具有在许可组和其他许可子组(即在许可组内的其他许可组)中的许可的集体能力。在一个实施例中,许可池相关信息被保持在动态存储器240中。在该实施例中,每个许可管理子***1610本地存储许可总数和分配给群38中的服务器106的许可的数量。一旦授予池化的许可,该授予的许可管理子***1510在动态存储器240中记入指示该池化的许可“正使用中”的条目。每个其他许可管理子***1510识别这样的池化的许可不可用于授予。在一个特定实施例中,动态存储器240存储与每个许可组相关联的服务器ID/客户机ID对以识别使用中的池化的许可。
关系子***1530维持在许可和服务器106间以及在许可组和服务器106间的关联。该关联为每个许可和许可组定义只有相关联的服务器106可获得的许可(即“本地许可”)的数量。本地许可是分配给群38中的一个服务器的并且没有被其他服务器38共享的许可。许可管理子***1510与关系子***1530通信以创建、删除、查询和更新这样的关联。公共接入点子***524提供驻留在服务器106上的软件产品所使用的远程过程调用(RPC)。这些RPC接口使这样的软件产品能通过公共接入子***524通信来访问许可信息。
仍参考图15,专用服务器子***1540与许可管理子***1510通信以获得部件许可,该特征许可用于需要许可的专用服务器子***1540的每个能力。这发生在专用服务器子***1540初始化时和任何许可事件后。如果不能获得部件许可,专用服务器子***1540限制子***将提供许可的功能。同样的,每当开始与服务器106的客户机会话时,专用服务器子***1540使用许可管理子***1510获得客户端连接许可。
许可管理子***1510与持久存储***服务模块352通信以便将部件和连接许可作为依照命名规定形成的许可串存储在许可库1550中。许可库1550驻留在持久存储器230中。当这样的许可被存储在许可库1550中时,循环冗余码校验(CRC)禁止许可的篡改。许可管理子***1510也存储与许可库1550中的许可串相关的信息。例如,该信息可指示哪个许可被分配给群38的哪个服务器106,以及在一些实施例中,每个许可的激活状态。在一个实施例中,连接许可表1560存储这些已经获得了连接许可的客户机的标识符。
在一个实施例中,许可管理子***1510支持来自子***的请求使用许可能力的事件,例如对可用的池化许可的请求。事件包含请求许可的子***的UID和该子***驻留的服务器106的UID。该事件也包含以许可组ID形式被请求的许可类型(即部件或连接许可)。在持久存储器230中存储的实际的许可组ID是任意的,但符合命名规定,为服务器106提供将来添加新软件产品(即子***)的便利。
由寻求许可的请求子***发送的事件包括(1)许可组类型的指示,请求许可的客户机和服务器的标识,以及“强制获得”标志。许可组类型的指示可包括部件许可(例如负载管理)或者连接类型许可(例如软件应用产品)的标识。识别寻求许可的客户机和服务器的字段可包括与服务器和客户机相关联的唯一的标识符。强制获得标志可被用于,例如,在许可改变事件之后重新获得连接许可。许可改变事件指示在持久存储器230中的许可信息已经改变;例如,已经删除、增加或者分配许可。一旦许可改变事件发生,因为服务器不知道许可改变事件的特定原因,所以每个服务器106试图重新获得在许可改变事件之前所持有的所有的连接许可。该标志,如果设置,指示必须获得连接许可,即使这样做使到服务器106的连接数量增加到超过允许连接的预定的最大量。随后不授予新的连接许可,直到使用中的连接许可量下降到低于预定的最大量为止。在此方式中,客户机连接将不会由于许可改变事件而被在会话中间终止。
现参考图13,框图描述了在许可实施中所涉及的组件的一个实施例。服务器106包括服务器管理子***508和许可管理子***512。在一些实施例中,该服务器管理子***508和许可管理子***512提供上述的许可管理子***1510的功能。在其他实施例中,应用管理子***506和会话管理子***510提供上述的许可管理子***1510的功能。在其他实施例中,其他子***提供上述的许可管理子***1510的功能。
在一个实施例中,服务器管理子***508可包括用于请求发给和撤销许可的许可组件。在又一个实施例中,许可管理子***512可将策略应用于从服务器管理子***508接收的用于许可或撤销许可的请求。在又一个实施例中,许可管理子***512可向提供许可实施功能的服务器106传输该请求。在一些实施例中,管理服务504可维持与提供许可实施功能的第二服务器106的连接。在其他实施例中,服务器106提供许可实施功能。
在一些实施例中,当客户机102没有向服务器传输预定数量的心跳消息时,许可终止且不再是有效的。在这些实施例的一个中,许可的终止取消由客户机102执行应用程序的授权。
在其他实施例中,在预定时间段到期后,会话暂停。在一个实施例中,在许可到期后,直到会话到期,管理服务504维持会话相关的数据。在一些实施例中,会话相关数据可包括信息例如会话名、会话iD、客户机iD、客户机名、会话开始时间、服务器名(文件服务器的UNC路径)、应用名称(由客户机基于浏览器名称产生的唯一名称)、别名、会话状态(活动的/许可的、活动的/未许可的、重连接的/未许可的)。在又一个实施例中,客户机102停止传输心跳消息并在稍后的时间点重新开始传输心跳消息。在又一个实施例中,如果在会话到期之前客户机102重新开始传输心跳消息,则管理服务504可重新发出许可并使得所维持的会话相关数据对客户机102可用。
现参考图14,流程图描述了在客户机102上的会话持续期间请求并维持来自服务器106的许可所采用的步骤的一个实施例。总的来说,应用流客户端请求许可(步骤1702)。服务器106接收对许可的请求,验证与该请求相关联的标签,并产生许可(步骤1704)。服务器106向客户机102提供该许可和与该许可相关联的信息(步骤1706)。如上文结合图7中的步骤214所描述的,客户机102执行应用。客户机传输指示客户机已经执行了应用的心跳消息(步骤1708)。服务器106接收该心跳消息并验证与心跳消息一起被传输的识别信息(步骤1708)。服务器106创建与所执行的应用和与客户机102相关联的会话(步骤1710)。将创建会话的结果传输到客户机102(步骤1712)。如上文结合图7中的步骤216描述的,在整个应用执行期间,客户机传输心跳消息。客户机接收对所传输的心跳消息的响应(步骤1714)。客户机传输指示该应用终止执行的心跳消息(步骤1716)。服务器106接收该心跳消息并确定是否删除会话相关数据以及是否释放与客户机102和所终止的应用相关联的许可(步骤1718)。将服务器106作出的确定的结果传输到客户机102(步骤1720)。
现参考图14,更详细的,在客户机102上的应用流客户端请求许可(步骤1702)。在一些实施例中,当接收到与应用程序相关联的访问信息时,客户机102请求许可。在这些实施例的一个中,客户机请求来自服务器106的许可,该许可授予客户机102执行应用程序的授权。在一些实施例中,对许可的请求包括从服务器106接收的带有访问信息的启动标签。在其他实施例中,客户机102上的应用流客户端552向web接口558传输该请求,并且web接口558向服务器106传输该请求。在其他实施例中,服务器上的会话管理子***510接收并处理该对许可的请求。
服务器106接收对许可的请求,验证与该请求相关联的标签,并产生许可(步骤1704)。在一个实施例中,服务器106验证客户机102被授权执行该应用。在又一个实施例中,服务器106确定客户机102是否已经与现有的许可相关联。在又一个实施例中,服务器106确定客户机102与现有的许可相关联并为客户机102提供管理该现有的许可的会话管理服务器562的标识符。在又一个实施例中,服务器106产生新许可、会话标识符、和管理该新许可的会话管理服务器562的标识,并且将其提供给客户机102。
在一些实施例中,服务器106使用许可管理子***1510来响应在一个实施例中的许可请求。许可管理子***1510接收许可请求。该请求可能是针对部件许可或者连接许可。该许可管理子***1510确定该许可已是否经被授予,即,该部件已经被开始或者客户机的连接已经存在。如果该许可已经被授予,该许可管理子***1510向该许可请求者发送“授予”事件。如果许可没有事先授予,该许可管理子***1510确定本地许可(即,已经永久分配给服务器106的许可)是否可用。在一些实施例中,该许可管理子***1510通过检查本地存储器来执行该确定。如果本地许可是可用的,即,服务器106的永久分配的许可比当前授予的许可多,则该许可管理子***1510向该许可请求者发送“授予”事件。
服务器106向客户机102提供许可和与该许可相关联的信息(步骤1706)。在一个实施例中,当从服务器106接收到许可、会话标识符以及会话管理服务器562的标识后,客户机102执行应用。如结合上述图7中的步骤214所描述的,客户机102可执行应用。客户机传输指示该客户机已经执行应用的心跳消息(步骤1708)。在一个实施例中,客户机将心跳消息传输到向会话管理服务器562传输该心跳消息的服务器106。在又一个实施例中,响应于从服务器106接收的会话管理服务器562的标识符,客户机102直接向会话管理服务器562传输心跳消息。
服务器106接收心跳消息并验证与该心跳消息一起传输的识别信息(步骤1708)。在一个实施例中,服务器106’是会话管理服务器562。在又一个实施例中,会话管理服务器562验证与心跳消息一起由客户机102提供的服务器标识符。在又一个实施例中,服务器标识符是由服务器106向客户机102提供的标识符。
服务器106创建与所执行的应用和与客户机102相关联的会话(步骤1710)。在一个实施例中,会话管理服务器562当接收到该心跳消息后创建与执行的应用相关联的新会话。在又一个实施例中,第三方服务器106创建新会话。在一些实施例中,会话管理服务器562在创建新会话时,存储会话相关信息。
将创建会话的结果传输到客户机102(步骤1712)。在一些实施例中,该结果确认会话的创建。在其他实施例中,该结果识别与会话相关联的一个或多个应用。如上文结合图7中步骤216描述的,客户机在该应用执行的整个期间传输心跳消息。在一个实施例中,客户机102在整个应用程序的执行期间周期性地以固定的间隔向会话管理服务器562连续传输心跳消息。客户机接收对已传输的心跳消息的响应(步骤1714)。在一个实施例中,客户机102接收来自会话管理服务器562的对收到心跳消息的确认。在又一个实施例中,响应于会话管理服务器562收到心跳消息,客户机102从会话管理服务器562接收用于执行的命令。
客户机传输指示终止执行该应用的心跳消息(步骤1716)。服务器106接收该心跳消息并确定是否删除会话相关数据以及是否释放与客户机102和所终止的应用相关联的许可(步骤1718)。将服务器106所作的确定的结果传输到客户机102(步骤1720)。
现参考图15,框图描述了可与管理服务504监控的会话相关联的状态的实施例。在一个实施例中,在管理服务504上的会话维持子***510监控客户机102的会话并为该会话分配状态。在又一个实施例中,会话维持子***510维持许可相关数据的列表,该列表包括与客户机相关联的标识符、与会话相关联的标识符、会话状态以及指示服务器106上一次收到来自客户机102的消息的时间戳。在一些实施例中,会话维持子***510包括会话监控线程。在这些实施例的一个中,会话监控线程在定期的许可超时间隔唤醒,以扫描该许可相关数据的列表和更新会话的会话状态。
会话可处于的第一状态是活动的且被许可的状态。在一个实施例中,当在此状态中时,客户机102已经维持了授权执行应用的有效的许可。在又一个实施例中,会话管理服务器562维持会话相关数据。在一些实施例中,会话管理服务器562在第二服务器上存储会话相关数据。在一个实施例中,当客户机102最初执行应用时,用于客户机的会话处于活动的和被许可的状态。
会话可处于的第二状态是活动的且未许可的状态。在一个实施例中,当客户机102传输心跳消息失败并且对客户机102的许可已经到期时,会话处于此状态。在又一个实施例中,如果会话处于这个状态,尽管该许可已经过期,但对于会话到期尚有一段时间,则将该会话视为活动的。在一些实施例中,当会话处于该状态,服务器106或会话管理服务器562可存储代表客户机102的会话相关数据。在其它实施例中,如果客户机102在会话到期之前传输心跳消息,则将会话相关数据与新的许可一起传输到客户机102,并且该会话返回到活动的且被许可的状态。在一个实施例中,服务器106使用会话标识符和与客户机相关联的标识符来验证会话没有到期,并向客户机提供适当的会话相关数据。
会话可处于的第三状态是断开连接的且不存在的状态。当会话到期,删除会话相关数据。
会话可处于的第四状态是重连接的且未许可的状态。在一个实施例中,当客户机102上的会话到期时,则删除会话相关数据。在又一个实施例中,当客户机102传输新的心跳消息时,为客户机102生成新会话标识符和客户机标识符。在一些实施例中,客户机102重认证到服务器106,接收新许可,并进入活动的且被许可的状态。
表3总结了与会话相关联的状态。
Figure BDA0000139023090000641
表3
在一些实施例中,打包机制进行与应用程序相关联的多个应用文件的创建。在这些实施例的一个中,打包机制进行对多个应用文件的识别。在这些实施例的又一个中,打包机制能够将单个的应用文件分组到多个应用文件中。在这些实施例的一个中,打包机制能实现在例如文件服务器或应用服务器的服务器上寄载该多个应用文件。
在一个实施例中,打包机制在被描述为“开发用机器”的服务器上执行。在又一个实施例中,打包机制在“干净的机器”上执行。干净的机器可为其上只安装了操作***的服务器,而没有附加的软件、驱动器、注册表项或其他文件。在又一个实施例中,打包机制在服务器上执行,该服务器类似应用程序可在其上执行的客户机。在一些实施例中,打包机制在其上执行的服务器包括隔离环境,即使服务器本身不是干净的机器,该隔离环境可提供可将应用程序安装在其中的干净的机器环境。
在一个实施例中,该多个应用文件被称为“包”。在又一个实施例中,该包可以是存储多个应用文件的档案文件。在又一个实施例中,包可以是存储该多个应用文件和包括与在该多个应用文件中的至少一个文件相关联的元数据的文件的档案文件。在一些实施例中,包包含多个应用文件,该多个应用文件包括应用程序。在其它实施例中,包包括多个应用文件,该多个应用文件包括一组应用程序。在其他实施例中,包包含包括应用程序的多个应用文件和执行该应用程序需要的先决条件。
在一个实施例中,打包机制在隔离环境中开始执行安装程序。在又一个实施例中,打包机制监控由安装程序所产生的对隔离环境的改变。在又一个实施例中,打包机制监控安装程序在隔离环境中的文件的创建。在又一个实施例中,打包机制监控通过安装程序对在隔离环境中的文件的修改。在一些实施例中,该多个应用文件包括由安装程序创建或修改的文件。在其他实施例中,打包机制实现文件***过滤器驱动器564以监控该隔离环境。
在一些实施例中,打包机制可产生多种的该多个应用文件(multiplepluralities of application files),各自包括被配置为在不同目标环境中执行的应用程序的不同版本。在这些实施例的一个中,将多个应用文件配置为在有特定的操作***、修订级、语言配置和主驱动器的客户机上执行(例如,可以将一种多个应用文件配置为在客户机上执行,该客户机有带有修订级SP2及以上的Windows XP Professional操作***、使用英语并有主驱动器C:\)。在这些实施例的又一个中,多于一种多个应用文件可被组合为单个档案文件。在这些实施例的又一个中,每种多个应用文件可被称为“目标”。在这些实施例的又一个中,包含一种或多种多个应用文件的档案文件可被称为“包”。
现参考图16,流程图描述了在应用隔离环境2512中安装应用所使用的步骤的一个实施例。应用隔离环境2512给应用安装程序提供服务器操作***的虚拟化视图(步骤2602)。在服务器上涉及***重启和关闭的API被钩住(步骤2604)以防止应用安装程序2506引起重启。应用安装程序2506请求文件复制操作以锁定文件,该请求被拦截并被重定向到无冲突位置(步骤2606)。当应用安装程序2506试图通过调用***API重启时,拦截该请求并且阻止重启(步骤2608)。安装后处理器模块2510执行通常在重启后发生的动作(步骤2610)并且可以接着在应用隔离环境2512中执行该应用而不必重启服务器106(步骤2612)。
在一些实施例中,在将应用程序安装到应用隔离环境2512中之后,打包机制识别在应用程序安装期间创建或修改的多个应用文件。在这些实施例的一个中,该多个应用文件被存储在服务器上。在这些实施例的又一个中,获取该多个应用文件的客户机可执行该应用程序。
在一些实施例中,打包机制530在包括隔离环境532和文件***过滤器驱动器534的服务器上执行,并且将应用程序安装到隔离环境532中。在这些实施例的一个中,服务器被称为“干净的机器”或者“开发用机器”。在这些实施例的又一个中,隔离环境532包括应用隔离范围,该应用隔离范围提供由在干净的机器上的操作***提供的本地资源的可修改的、虚拟化的实例。在这些实施例的又一个中,隔离环境532包括***隔离范围,该***隔离范围提供本地资源的只读视图。在这些实施例的又一个中,本地资源的只读视图包括驻留在干净机器上的文件***和注册表的快照。
在一个实施例中,重定向器拦截改变本地资源的请求。在一些实施例中,重定向器是文件***过滤器驱动器534。在又一个实施例中,由打包机制530执行的安装程序做出改变的请求。在又一个实施例中,在干净的机器上安装应用程序要求对本地资源的改变。在又一个实施例中,重定向器将该请求重定向到隔离环境532。
在一些实施例中,将改变本地资源的请求重定向到隔离环境532导致与应用程序的安装相关联的改变的隔离。在其他实施例中,改变本地资源的请求被记录并被存储在存储元件中。在这些实施例的一个中,与应用程序的安装相关联的所有改变驻留在该存储元件中。在这些实施例的又一个中,客户机552检索该存储元件的内容并实施对驻留在客户机552的隔离环境556中的本地资源的改变导致应用程序安装在客户机552上。
在一些实施例中,需要对客户机102的启动前分析。在这些实施例的一个中,客户机102验证在客户机102中包括至少一个特征。在这些实施例的又一个中,在启动前分析确定客户机102缺少该至少一个特征之后,将该至少一个特征加入到客户机102中。在这些实施例的又一个中,该至少一个特征被包括在寄载应用程序的服务器上,并且客户机不包括该至少一个特征将阻止应用程序的执行。在又一个实施例中,应用程序需要客户机上的该至少一个特征的存在以用于执行。
在一些实施例中,打包机制实现对在客户机上启动前分析中使用的至少一个特征的识别。在又一个实施例中,打包机制实现至少一个特征与可用于客户机上执行的应用程序的关联。在其他实施例中,打包机制实现可执行脚本与应用程序间的关联,客户机执行该可执行脚本以完成启动前分析。在又一些实施例中,在应用程序的执行之后,需要该至少一个特征存在于客户机上。
打包机制可提供用于对多个应用文件进行签名的功能。在一个实施例中,对多个应用文件进行签名使客户机能验证多个应用文件的完整性。在又一个实施例中,对多个应用文件进行签名防止客户机执行被破坏的应用程序。在一些实施例中,计算在多个应用文件中的文件的密码校验和,例如MD4哈希,MD5哈希或者SHA-1哈希。
在其他实施例中,计算在多个应用文件中的每个文件的密码校验和。在这些实施例的一个中,将密码校验和存储在第二文件中。在这些实施例的又一个中,第二文件与该多个应用文件关联。在一些实施例中,第二文件被加入到多个应用文件。在其他实施例中,使用诸如X.509证书的证书来对第二文件进行签名。在其他实施例中,获取多个应用文件的客户机使用证书的公开部分来验证签名。在其他实施例中,客户机接收证书的公开部分以及证书信任列表的标识用于签名的验证。在这些实施例的一个中,客户机接收包括证书信任列表的标识的注册表键。
在一个实施例中,打包机制提供用于定制隔离环境的功能。在又一个实施例中,打包机制提供用于生成存储隔离环境的定义的文件的功能。在又一个实施例中,打包机制将该文件包含到包括应用程序的多个应用文件中。在又一个实施例中,客户机从服务器接收该文件及访问信息。
在一些实施例中,将多个应用文件存储在档案文件中。在这些实施例的一个中,档案文件为CAB文件格式。在这些实施例的又一个中,档案文件格式不支持应用程序对短文件名的文件的规范(specification)。在这些实施例的又一个中,诸如WINDOWS 2000的操作***可能不支持对应用程序对短文件名的文件的规范。在其他实施例中,诸如WINDOW XP的操作***支持应用程序对短文件名的文件的规范。在这些实施例的一个中,执行文件的请求必须包括正确短文件名的文件。
在一个实施例中,可以生成映射以将在多个应用文件中的长文件名的文件与短文件名的文件相关联。在又一个实施例中,该映射被存储在该多个应用文件中的文件中。在又一个实施例中,仅当文件的长文件名称大于十二个字符时,文件有短文件名。在一些实施例中,短文件名是与该文件相关联的虚拟文件名。在这些实施例的一个中,文件被传输到客户机102用于执行,在客户机102上用长文件名存储该文件。在这些实施例的又一个中,客户机102上的应用文件使用短文件名请求执行该文件。在这些实施例的又一个中,虽然执行文件的请求不使用客户机上的文件的名称(长文件名),但该映射使文件能执行。
在一些实施例中,打包机制530生成该映射。在这些实施例的一个中,打包机制530为有长文件名的文件选择短文件名。在这些实施例的又一个中,在打包机制530在其上执行的服务器106’上的操作***为有长文件名的文件选择短文件名。在这些实施例的又一个中,选择与服务器106’上的第二短文件名不冲突的唯一的短文件名。在这些实施例的又一个中,由打包机制530执行的安装程序产生包括在长文件名和短文件名之间的映射的文件。在其他实施例中,将该映射发送到检索该文件的客户机102。在这些实施例的一个中,客户机102当执行该文件时引用该文件。
D.虚拟环境
图17A示出虚拟环境的一个实施例。被包括在计算装置3201中的硬件层可包括一个或多个物理盘3204、一个或多个物理装置3206、一个或多个物理处理器3208和物理存储器3216。在一些实施例中,固件3212可被存储在物理存储器3216的存储器元件中并且由一个或多个物理处理器3208执行。计算装置3210还可包括被存储在物理存储器3216的存储器元件中并且由一个或多个物理处理器3208执行的操作***3214。仍进一步,管理程序3202可被储在物理存储器3216的存储器元件中并且由一个或多个物理处理器3208执行。一个或多个虚拟机3232A-C(总称为3232)在一个或多个物理处理器3208上执行。每个虚拟机3232可以有虚拟盘3226A-C和虚拟处理器3228A-C。在一些实施例中,第一虚拟机3232A可在虚拟处理器3228A上执行包括工具堆栈234的控制程序3220。在其他实施例中,一个或多个虚拟机3232B-C可在虚拟处理器3228B-C上执行客户操作***3230A-B。
进一步参考图17A,在一个实施例的更多细节中,所描述的虚拟环境包括Type2管理程序3202,或执行在计算装置3201上的操作***3214中的管理程序。在一些实施例中,Type2管理程序在操作***3214环境中执行并且虚拟机在管理程序之上的层次执行。在许多实施例中,Type2管理程序在用户操作***的上下文中执行,这样Type2管理程序与用户操作***进行交互。
在一些实施例中,虚拟计算环境包括计算装置3201。计算装置3201可以是任何计算装置,在一些实施例中计算装置3201可以是此处描述的任何计算机、装置或计算机器。尽管图17A示出了单个计算装置3201,在一些实施例中由计算装置3201存储和执行的模块、程序、虚拟机和命令可以被不只一个计算装置3201执行。仍在其他实施例中,计算装置3201可以是服务器群。
在一个实施例中,计算装置3201可包括硬件层3210,该硬件层包括与计算装置3201通信的一个或多个硬件。在一些实施例中,硬件层3210可包括一个或多个物理盘3204、一个或多个物理装置3206、一个或多个物理处理器3208和存储器3216。
在一些实施例中,硬件层3210可包括一个或多个物理盘3204。物理盘3204可以是任何硬盘,而在一些实施例中物理盘3204可以是此处描述的任何硬盘。在一些实施例中,硬件层3210可包括一个物理盘3204。在其他实施例中,硬件层3210可包括不只一个物理盘3204。在一些实施例中,计算装置3201可与被包含在硬件层3210中作为物理盘3204的外部硬盘通信。
在其他实施例中,硬件层3210可包括处理器3208。在一些实施例中,处理器3208可以是任何处理器,而其他实施例中处理器3208可以是此处描述的任何处理器。处理器3208可包括一个或多个处理核。在其他实施例中计算装置3201可包括一个或多个处理器3208。在一些实施例中,计算装置3201可包括一个或多个不同处理器,例如处理单元、图形处理单元或物理引擎。
在一些实施例中,物理装置3206可以是被包含在计算装置3201中的任何装置。在一些实施例中,物理装置3206可以是在计算装置3201中所包含的装置的任何组合。在一些实施例中,计算装置3201可包括一个或多个物理装置3206。物理装置3206可以是下列装置中的任何一个:网络接口卡、视频卡、键盘、鼠标、输入装置、显示器、显示装置、扬声器、光驱、存储装置、通用串行总线连接、连接到计算装置3201的任何装置、与计算装置3201通信的任何装置、打印机、扫描仪或任何其他装置或此处所描述的任何装置。
硬件层3210还可包括可包含任何类型存储器的物理存储器3216。在一些实施例中物理存储器3216可包括此处描述的任何存储器类型。物理存储器3216可存储数据,以及在一些实施例中可存储一个或多个程序或可执行指令集。图17A所示固件3212被存储在计算装置3201的物理存储器3216中的。被存储在物理存储器3216中的程序或可执行指令可由计算装置3201上的一个或多个处理器3208所执行。
在一些实施例中,固件3212可以是可执行指令和硬件的任一组合,其控制与计算装置3201通信的硬件或被包含在计算装置3201内的硬件。在一些实施例中,固件3212可控制硬件层3210内的一个或多个硬件。在多个实施例中,固件3212可被计算装置3201内的一个或多个处理器3208所执行。在一些实施例中,固件3212可以是诸如基本输入/输出***(BIOS)的启动固件。在计算装置3201上执行的另外固件3212可以与BIOS相接口。
在一个实施例中,计算装置3201可包括由一个或多个物理处理器3208执行的操作***3214。在一些实施例中,操作***3214是能直接访问硬件层3210中硬件装置的用户操作***。操作***3214可以是任何操作***并且在一些实施例中,操作***3214可以是此处所述的任何操作***。图17A示出了一个实施例,其中管理程序3202在计算装置3201上执行的操作***3214的上下文中执行。在这个实施例中,操作***3214可被称为宿主操作***3214,而其他操作***可被称为客户操作***。客户操作***可包括执行在虚拟机3232上的客户操作***3230A-B,和/或控制程序3220。
在一些实施例中,计算装置3201可包括管理程序3202。在一些实施例中,管理程序3202可以是在计算装置3201上由处理器3208执行以便管理任一数量的虚拟机的程序。管理程序3202可以被称为虚拟机监控器,或平台虚拟化软件。在一些实施例中,管理程序3202可以是监控执行在计算装置上的虚拟机的可执行指令和硬件的任何组合。尽管图17A示出了包括Type2管理程序3202的虚拟环境,计算装置3201可执行任何其他类型的管理程序。例如,计算装置3201可以执行包括Type1管理程序3202的虚拟环境。在一些实施例中,计算装置3201可执行一个或多个管理程序3202。这些一个或多个管理程序3202可以是相同类型的管理程序,或在其他实施例中可以是不同类型的管理程序。
在一些实施例中,管理程序3202可以以模拟直接访问***资源的操作***3230或控制程序3220的任何方式向在虚拟机3232上执行的操作***3230或控制程序3220提供虚拟资源。***资源可包括:物理装置、物理盘、物理处理器、物理存储器3216和被包含在计算装置3201硬件层3210中的任何其他组件。在这些实施例中,管理程序3202可被用来仿真虚拟硬件、划分物理硬件、虚拟化物理硬件和执行访问计算环境的虚拟机。仍在其他实施例中,管理程序3202为在计算装置3201上执行的虚拟机3232控制处理器调度和存储器分区。管理程序3202可包括由位于California,Palo Alto的VMWare公司制造的管理程序;XEN管理程序,其开发由开源Xen.org社区监督的开源产品;由微软公司提供的HyperV、虚拟服务器和虚拟PC管理程序,或其他。在一些实施例中,计算装置3201执行管理程序3202,该管理程序创建客户操作***可在其上执行的虚拟机平台。在这些实施例中,计算装置3201可被称为宿主服务器。这样的计算装置的例子是由位于FL,FortLauderdale的Citrix Systems公司提供的XEN SERVER。
在一个实施例中,管理程序3202创建操作***3230在其中执行的虚拟机3232A-B(总的表示为3232)。例如,在这些实施例的一个中,管理程序3202加载虚拟机映像以创建虚拟机3232。在这些实施例的另一个中,管理程序3202在虚拟机3232中执行操作***3230。仍在这些实施例的另一个中,虚拟机3232执行操作***3230。
在一个实施例中,管理程序3202控制至少一个虚拟机3232的执行。在又一个实施例中,管理程序3202将由计算装置3201提供的至少一个硬件资源的抽象提供给至少一个虚拟机3232。这个抽象还可被称为计算装置3201上可利用的硬件、内存、处理器和其他***资源的虚拟化或虚拟视图。在一些实施例中,硬件或硬件资源可以是在硬件层3210中可利用的任何硬件资源。在其他实施例中,管理程序3202控制虚拟机3232访问计算装置3201中可利用的物理处理器3208的方式。控制对物理处理器3208的访问可包括确定虚拟机3232是否应该访问处理器3208以及物理处理器性能如何呈现给虚拟机3232。
在一些实施例中,计算装置3201可寄载或执行一个或多个虚拟机3232。虚拟机3232可被称为域、客户和/或DOMAIN U。虚拟机3232是一组可执行指令,当其被处理器3208执行时,模拟物理计算机的操作,从而虚拟机3232可类似物理计算装置执行程序或进程。尽管图17A计算装置3201寄载3个虚拟机3232的实施例,在其他实施例中,计算装置3201可寄载任何数量的虚拟机3232。在一些实施例中,管理程序3202为每个虚拟机3232提供物理硬件、内存、处理器和对该虚拟机可利用的其他***资源的唯一的虚拟视图。在一些实施例中,该唯一的虚拟视图可以基于下列的任何一个:虚拟机许可;向一个或多个虚拟机标识符应用的策略引擎;访问虚拟机的用户;在虚拟机上执行的应用;被虚拟机访问的网络;或任何其他类似标准。在其他实施例中,管理程序3202向每个虚拟机3232提供物理硬件、存储器、处理器和对该虚拟机可利用的其他***资源的基本上类似的虚拟视图。
每个虚拟机3232可包括虚拟盘3226A-C(总称为3226)和虚拟处理器3228A-C(总称为3228)。在一些实施例中,虚拟盘3226是计算装置3201的一个或多个物理盘3204的虚拟化视图,或计算装置3201的一个或多个物理盘3204的一部分的虚拟化视图。物理盘3204的虚拟化视图可由管理程序3202产生、提供和管理。在一些实施例中,管理程序3202可为每个虚拟机3232提供物理盘3204的唯一视图。因此,在这些实施例中,当与其他虚拟盘3226相比较时,被包含在每个虚拟机3232中的虚拟盘3226可以是唯一的。
虚拟处理器3228可以是计算装置3201的一个或多个物理处理器3208的虚拟化视图。在一些实施例中,物理处理器3208的虚拟化视图可由管理程序3202产生、提供和管理。在一些实施例中,虚拟处理器3228基本上具有至少一个物理处理器3208的所有相同特征。在其他实施例中,虚拟处理器3228提供物理处理器3208的经修改的视图,从而虚拟处理器3228的至少一些特征可以不同于相应的物理处理器3208。
控制程序3220可执行至少一个应用来管理和配置在虚拟机3232以及在一些实施例中计算装置上执行的客户操作***。在一些实施例中,控制程序3220可被称为控制操作***、控制域、域0或dom0。在一些实施例中,控制程序3220可以是XEN管理程序的DOMAIN0或DOM0。控制程序3220可以执行管理应用或程序以进一步显示管理员用来访问每个虚拟机3232的功能和/和管理虚拟机3232的用户接口。在一些实施例中,由管理程序产生的用户接口可被用于终止虚拟机3232的执行、为虚拟机3232分配资源、为虚拟机3232指派权限或者管理与虚拟机3232相关的安全证书。在一些实施例中,控制程序3220可启动新的虚拟机3232或终止正在执行的虚拟机3232。在其他实施例中,控制程序3220可直接访问硬件层3210内的硬件和/或资源。仍在又一个实施例中,控制程序3220可与在计算装置3210上且在虚拟机3232的上下文之外执行的程序和应用相接口。类似地,控制程序3220可与在虚拟机3232的上下文内执行的程序和应用相接口。
在一个实施例中,管理程序3202可执行虚拟机3232内的控制程序3220。管理程序3202可创建和启动虚拟机3232。在管理程序3202执行虚拟机3232内的控制程序3220的实施例中,该虚拟机3232也可被称为控制虚拟机3232。仍在又一个实施例中,控制程序3220执行在被授权直接访问计算装置3201上物理资源的虚拟机3232中。
在一些实施例中,在第一计算装置3201A(未示出)上的控制程序3220A(未示出)可与在第二计算装置3201B(未示出)上的控制程序3220B(未示出)交换数据。在这些实施例中,第一计算装置3201A可远离第二计算装置3201B。控制程序3220A-B可通过在第一计算装置3201A上执行的管理程序3202A(未示出)和在第二计算装置3201B上执行的管理程序3202B(未示出)之间的通信链路交换数据。通过这条通信链路,计算装置3201A-B可交换关于处理器和资源池中其他可利用的物理资源的数据。而且通过管理程序3202A-B之间的连接,管理程序3202A-B可管理分布在一个或多个计算装置3201A-B上的资源池,例如在第一计算装置3201A和第二计算装置3201B上的可利用资源。管理程序3202A-B还可虚拟化这些资源并使它们对于在计算装置3201A-B上执行的虚拟机3232成为可利用的。在本实施例的又一情况下,单个管理程序3202可管理和控制在计算装置3201A-B上执行的虚拟机3232。
在一些实施例中,控制程序3220与一个或多个客户操作***3230A-B(总称为3230)交互。控制程序3220可通过管理程序3202与客户操作***3230通信。通过管理程序3202,客户操作***3230可请求访问物理盘3204、物理处理器3208、存储器3216、物理装置3206和硬件层3210中的任何其他组件。仍在其他实施例中,客户操作***3230可通过由管理程序3202建立的通信信道与控制程序3220通信,诸如,例如通过由管理程序3202使可利用的多个共享内存页。
在一些实施例中,控制程序3220包括用于与计算装置3201所提供的网络硬件直接通信的网络后端驱动程序。在这些实施例的一个,网络后端驱动程序处理来自至少一个客户操作***3230的至少一个虚拟机请求。在其他实施例中,控制程序3220包括用于与计算装置3201上存储元件通信的块后端驱动程序。在这些实施例的一个,块后端驱动程序根据从客户操作***3230接收到的至少一个请求从存储元件中读数据和写数据。
在又一个实施例中,控制程序3220包括工具堆栈3224。在又一个实施例中,工具堆栈3224提供用于与管理程序3202交互、与其他控制程序3220(例如,在第二计算装置3201B上)通信或管理计算装置3201上的虚拟机3232的功能。在又一个实施例中,工具堆栈3224包括用于向虚拟机群的管理员提供改善的管理功能的经定制的应用。在一些实施例中,至少一个工具堆栈3224和控制程序3220包括用于提供远程配置和控制运行在计算装置3201上的虚拟机的接口的管理API。在其他实施例中,控制程序3220通过工具堆栈3224与管理程序3202通信。
在一个实施例中,管理程序3202在由管理程序3202创建的虚拟机3232内执行客户操作***3230。在又一个实施例中,客户操作***3230向计算装置3201的使用者提供对计算环境中的资源的访问。仍在又一个实施例中,资源包括程序、应用、文档、文件、多个应用、多个文件、可执行程序文件、桌面环境、计算环境和对计算装置3201可利用的其他资源。仍在又一个实施例中,资源可以通过多种访问方法传送到计算装置3201,这些访问方法包括但不限于以下方法:传统直接在计算装置上安装、通过应用流的方法传送到计算装置3201上、将第二计算装置3201’上资源的执行所产生的输出数据传送到计算装置3201且通过表示层协议与计算装置3201通信、将通过在第二计算装置3201’上执行的虚拟机执行资源所产生的输出数据传送到计算装置3201,或者从连接到计算装置3201上的诸如USB装置的可移动存储装置上执行或通过在装置3201上执行的虚拟机执行并且产生输出数据。在一些实施例中,计算装置3201传输由资源的执行所产生的输出数据到另一个计算装置3201’。
在一个实施例中,客户操作***3230与该客户操作***3230在其上执行的虚拟机结合在一起,形成意识不到其是虚拟机的完全虚拟化的虚拟机;这样的机器可被称为“Domain U HVM(硬件虚拟机)虚拟机”。在又一个实施例中,完全虚拟化机包括模拟基本输入/输出***(BIOS)的软件以便在完全虚拟化机中执行操作***。仍在又一个实施例中,完全虚拟化机可包括提供与管理程序3202通信的功能的驱动程序。在这样的实施例中,驱动程序典型地意识到自己执行在虚拟化的环境中。
在又一个实施例中,客户操作***3230与该客户操作***3230在其上所执行的虚拟机结合在一起,形成意识到其是虚拟机的超虚拟化(paravirtualized)的虚拟机;这样的机器可被称为“Domain U PV虚拟机”。在又一个实施例中,超虚拟化机包括完全虚拟化机中所不包含的另外的驱动程序。仍在又一个实施例中,超虚拟化机包括如上所述的被包含在控制程序3220中的网络后端驱动程序和块驱动程序。
图17B中所示的是说明Type1管理程序3202的虚拟环境的又一个实施例。在计算装置3201上执行的管理程序3202可以直接访问硬件层3210中的硬件和资源。由管理程序3202管理的虚拟机3232可以是不安全的虚拟机3232B和/或安全虚拟机3232C。尽管图17A所描述的虚拟环境中图示了宿主操作***3214,图17B中的虚拟环境的实施例不执行宿主操作***。
进一步参考图17B,更详细地,虚拟环境包括Type1管理程序3202。在一些实施例中Type1管理程序3202执行在“裸金属”上,从而管理程序3202可以直接访问计算装置3201上执行的所有应用和进程、计算装置3201上所有资源和计算装置3201上所有硬件或与计算装置3201通信的所有硬件。尽管Type2管理程序3202通过宿主操作***3214访问***资源,Type1管理程序3202可直接访问所有***资源。Type1管理程序3202可直接执行在计算装置3201的一个或多个物理处理器上,并且可包括存储在物理存储器3216中的程序数据。
在采用Type1管理程序3202配置的虚拟环境中,宿主操作***可被一个或多个虚拟机3232所执行。这样计算装置3201的使用者可以指派一个或多个虚拟机3232作为该使用者的个人机器。这个虚拟机可通过允许用户以与用户通过宿主操作***与计算装置3201交互的基本上相同方式来与计算装置交互来模拟宿主操作***。
虚拟机3232可以是不安全的虚拟机3232B和安全的虚拟机3232C。尽管图17B示出了安全的虚拟机和不安全的虚拟机,有时它们也被称为有特权的和无特权的虚拟机。在一些实施例中,可基于虚拟机与在相同虚拟环境中执行的其他虚拟机的比较来确定虚拟机的安全。例如,要是第一虚拟机访问资源池则第二虚拟机不访问相同的资源池;当第一虚拟机被认为是安全虚拟机3232A时第二虚拟机可被认为是不安全的虚拟机3232B。在一些实施例中,虚拟机323访问一个或多个***资源的能力可使用由控制程序3220或管理程序3202产生的配置接口来进行配置。在其他实施例中,虚拟机3232可承受的访问量可以是回顾下列标准集的任意集的结果:访问虚拟机的用户、在虚拟机上执行的一个或多个应用、虚拟机标识符、基于一个或多个因素指派给虚拟机的风险等级或任何其他类似标准。
在一些实施例中,不安全虚拟机3232B可被阻止访问安全虚拟机3232A可以访问的资源、硬件、存储器位置和应用。例如安全虚拟机3232C可访问一个或多个公司资源,而不安全虚拟机3232B不能访问任何公司资源。
E.多执行环境***
图18所示的是允许在客户机或第二计算机器102上执行的管理程序确定桌面/应用执行位置的***2008的一个实施例。该***包括执行管理程序2012的客户机102、可以本地或远程地执行的一个或多个虚拟机2014以及一个或多个应用2016。客户机102可以通过应用传送服务2010与服务器106通信。服务器106可以执行一个或多个虚拟机2022和一个或多个应用2024,该一个或多个虚拟机2022可以本地执行或者远程执行。
进一步参考图18,更具体地,在一个实施例中,该***2008可包含一个或多个客户机102和一个或多个服务器106。类似地,***2008可包括一个或多个设备,在该***2008中包含的任何计算机器可以使用该一个或多个设备来加速或促进计算机器之间的通信。在又一个实施例中,***2008可包括一个或多个网络104,例如此处所描述的任何网络。
客户机102可以是任何客户机并且可以是任何计算机器或装置。在一些实施例中,客户机102可以是第一计算机器、第二计算机器、本地计算机器或第三计算机器。在其他实施例中,客户机102可以是此处所描述的任何计算机器。特别地,客户机102可包括任何下列组件:CPU、存储器、通信总线等。类似地,客户机102可以执行操作***。
服务器106可以是任何服务器并且可以是任何计算机器或装置。在一个实施例中,服务器106可以是包括多个服务器的服务器群,或者服务器刀片(blade)。在其他实施例中,服务器106可以是第一计算机器、第二计算机器、远程计算机器或第三计算机器。服务器106可以是此处所描述的任何计算机器并可以执行操作***。在一个实施例中,远程客户机102可以执行管理程序2012,管理程序2012进而可以执行其自己的操作***。
在一些实施例中,管理程序2012可以是任何管理程序或任何虚拟机管理器或监控器。管理程序可执行操作***,该操作***可以作为管理程序图形用户接口(GUI)而被显示。在一些实施例中,管理程序GUI是工作站的主GUI。例如,在对工作站加电后,管理程序GUI向端用户显示登录屏幕,并且端用户可以从该登录屏幕登录到管理程序操作***。在一些实施例中,对用户进行认证可涉及管理程序认证代理。管理程序2012可允许本地执行或远程执行的桌面的显示,并且还可以开始/停止本地执行或远程执行的桌面以及与其交互。在一些实施例中,管理程序2012可以管理客户机102上的存储装置。该存储装置是对管理程序2012可访问的,因此可以通过客户机驱动器映射来使该存储装置对桌面或应用可见。管理程序2012可与客户机102上的任何其他元件通信并且可以与服务器106上或任何其他计算机器上的任何其他元件通信。
在一些实施例中,管理程序2012可包括执行管理器2018,该执行管理器2018可管理对在哪里执行应用或桌面的确定。在一些实施例中,执行管理器2018独立于管理程序2012执行,并与管理程序2012通信。在一些实施例中,管理程序2012可包括认证代理。
在一个实施例中,在由管理程序2012管理的虚拟机的上下文中执行的控制程序可以是在客户机102上显示的主接口。对管理程序2012的控制以及一定程度上对虚拟环境的控制是可以通过该控制程序来管理的。在一些实施例中,管理程序2012可以给在客户机102上执行的一个或多个虚拟机提供虚拟化的计算资源。在其他实施例中,管理程序2012可以给从服务器106流式传输到客户机102的虚拟机提供虚拟化的计算资源。
可以本地或远程访问虚拟机。当远程访问虚拟机时,由该虚拟机产生的应用输出通过虚通道被传输到客户机102,在客户机102可以本地显示该应用输出。在这些实施例中,对虚拟机的远程访问与对应用或桌面的远程访问是几乎完全相同的。
在一些实施例中,执行管理器2018可包括数据库、高速缓存、表格或其他存储库,其可以存储任何下列信息:本地桌面的位置;远程桌面的位置;本地应用的位置;远程应用的位置;在本地计算机器或远程计算机器上可用的计算资源;对特定用户可用的计算资源;可用的计算资源的类型;***2008中的客户机102或任何其他计算机器是否与***2008中所包含的网络104连接或者从网络104断开连接;与在***2008中操作的用户相关的信息;对在***2008中操作的用户的认证信息;以及可被用于确定执行位置的策略。
执行管理器2018可经由管理程序2012确定客户机102或服务器106是否连接到网络。相应地,执行管理器2018可使用该信息从而用与***关联的最新消息更新执行管理器数据库。在一些实施例中,可以将相同的执行管理器数据库存储在***2008内执行的远程计算机器上。当客户机102登录到网络或者以其他方式获取对网络104的访问时,执行管理器2018可将其执行管理数据库与在服务器106上存储的执行管理器数据库进行同步。
在一些实施例中,执行管理器2018可通过确定应用或桌面应该在哪里执行来管理应用或桌面。在一些实施例中,执行管理器2018可包括策略引擎,该策略引擎确定应用或桌面可以在哪里执行。可以基于桌面或应用的位置、在客户机102和服务器106上可用的计算资源、用户以及客户机102是否连接到网络来做出该确定。在一些实施例中,策略引擎可从执行管理器数据库获得信息或者可查询用户、***管理员、应用等。
在一些实施例中,客户机102可执行一个或多个虚拟机2014。类似地,在一些实施例中,服务器106可执行一个或多个虚拟机2022。虚拟机2014、2022可为任何虚拟机,并且可以是此处描述的任何虚拟机。在一些实施例中,可以由管理程序2012管理虚拟机。
在一些实施例中,客户机102可执行一个或多个应用2016。类似地,在一些实施例中,服务器106可执行一个或多个应用2024。应用2016、2024可为任何应用,并且可以是此处描述的任何应用。在一些实施例中,所述应用可以是桌面。在其他实施例中,客户机102和/或服务器106可以执行一个或多个桌面。
在一个实施例中,在客户机102或服务器106上运行的客户机代理可与应用传送服务器2010通信以传送应用或桌面内容和/或由与远程应用或桌面在客户机102和服务器106之间交互的用户所产生的命令。
在图18中所示的是用于确定在哪里执行应用或桌面的方法2104的实施例。执行管理器2018获得客户机或本地机器的特征(步骤2016)以及获得网络和/或服务器的特征(步骤2108)。使用该信息,执行管理器2018确定应用或桌面的执行位置(步骤2110)。
图18中所示的方法2104的一个示例包括通过管理程序2012登录***2008的用户。在登录到***2008时,管理程序2012可以被配置为在启动时加载所选择的应用或桌面。此外,管理程序2012可以被配置为在登录时所识别的位置执行应用或桌面。可以将该信息存储在策略引擎或执行管理器数据库中,以使得每次用户登录时,用户将登录到该应用或桌面。当用户第二次登录时,管理程序2012可从执行管理器2018请求关于在哪里执行的信息。当执行管理器2018指示本地运行桌面或应用时,管理程序2012执行相应的虚拟机2014或客户操作***并且连接到本地应用或桌面。当执行管理器2018指示远程运行桌面或应用时,管理程序2012请求远程计算机器或服务器106执行所关联的应用或桌面。接着,管理程序2012连接到远程应用或桌面。在一些实施例中,执行管理器2018基于其数据库的内容(例如,策略)和/或使用其策略引擎来决定在哪里运行端用户默认的桌面/应用。例如,在一些实施例中,策略引擎可指示当客户机102未连接到网络时,管理程序2012本地运行桌面/应用。
在又一个实施例中,端用户希望请求同时运行多个桌面。在一些实施例中,每个桌面可以执行不同或相同的操作***。在登录到***2008后,可以给用户呈现具有不同图标的GUI,其中,每个图标表示用户被授权启动的桌面。在一些实施例中,执行管理器2018可列举用户能访问的桌面。管理程序2012随后可基于策略引擎和执行管理器2018来确定在哪里执行桌面。
在又一个方面,本公开涉及选择在哪里运行应用以在客户机工作站提供最好的端用户体验的方法。这是通过分析***2008、客户机102、服务器106、网络104、桌面/应用的特征并确定执行应用或桌面的最佳位置来实现的。
在又一个方面,方法2104可包括确定是否将操作***的虚拟机文件从桌面或应用执行服务器106移动或复制到客户机102。一旦移动了文件,就可以在客户机102本地执行这些文件,由此改善了端用户体验和/或允许用户在其未连接到网络时访问这些文件。类似地,可以做出将文件从客户机102移动或复制到服务器106的决定。
在又一个方面,方法2104可包括确定将服务器106上的虚拟机实时迁移到客户机102,并且反之亦然。由于具有这些文件,该迁移可改善端用户体验和/或允许用户在其未连接到网络时访问虚拟机。
在一些实施例中,客户机102可以是具有有限计算资源的移动客户机。可以本地或远程执行默认的桌面或应用,这取决于哪个配置提供更好的端用户体验。在一些实施例中,端用户意识不到应用/桌面在哪里执行。
在一个实施例中,该方法可包括在客户机102、服务器106或其他计算机器的处理器上执行的执行管理器。执行管理器可获得本地计算机器的特征以及本地计算机器与远程计算机器之间的网络的特征。在一些实施例中,本地计算机器可以是客户机102而远程计算机器可以是服务器106。执行管理器可将策略应用到本地计算机器特征和网络特征以确定在哪里执行虚拟机。基于应用策略的结果,执行管理器可确定是本地执行还是远程执行虚拟机,根据该确定执行管理器可将执行指令发送到本地计算机器或远程计算机器。在收到执行指令时,本地或远程计算机器可执行该虚拟机。
在一些实例中,执行管理器可在管理程序内执行。在其他实例中,执行管理器可在控制域或控制程序内执行。仍在其他实例中,执行管理器可本地执行或远程执行,或者取决于客户机102是否连接到网络而在两者之中的一个环境中执行。在其他实施例中,执行管理器可在管理程序的上下文或在虚拟机的上下文中执行。
本地计算机器的特征可以是在本地计算机器上执行的操作***的类型、本地计算机器是否执行操作***或者执行特定应用或虚拟机所需的操作***的类型。在其他实施例中,本地计算机器的特征可以是中央处理单元的类型、在该中央处理单元中包含多少核、核是被如何分配的或中央处理单元的特征。在其他实施例中,本地计算机器的特征可包括虚拟环境的类型(例如,类型1或类型2管理程序)、可用的处理器资源的数量、GPU或特定GPU的可用性、可用存储器的数量、本地机器是否连接到网络、用户是否已经通过本地计算机的认证或者本地计算机是否是安全的。
网络的特征可以包括网络上可用的带宽量、本地机器是否连接到网络或者本地机器是否连接到特定网络(例如,公司网、专用网、安全网等)。在一些实施例中,网络的特征可包括表示将数据发送到远程计算机器所需的往返时间的值。在其他实施例中,网络的特征可包括关于用户是否被认证以访问专用网络的确定。
在一些实施例中,决定是本地执行还是远程执行虚拟机可取决于访问策略的数量。这些策略可以被本地存储或远程存储。一旦获得网络和本地计算机器的特征,就可以将一个或多个策略应用于这些特征以确定在哪里执行虚拟机。
当本地执行虚拟机时,虚拟机可以由管理程序来执行或者由控制程序来实例化。在一些实施例中,管理程序仅给虚拟机提供可用资源的虚拟化视图,而控制程序控制和管理虚拟机的执行。因此,可以将本地执行虚拟机的指令发送到该管理程序、该控制程序、控制域、控制虚拟机或其他类似应用。
当远程执行虚拟机时,虚拟机可以以与应用远程执行几乎完全相同的方式在远程计算机上执行。由此,客户机102的用户可以与远程地执行的虚拟机以该用户可与远程执行的应用交互几乎完全相同的方式来交互。
尽管上文的实施例描述了虚拟机,但在一些实施例中,该过程可以应用于确定在哪里执行应用或桌面。
此处所描述的方法和***可作为一件或多件制造产品上或在其中所实现的一个或多个计算机可读程序而被提供。所述制造产品可以是软盘、硬盘、光盘、数字通用光盘、闪存卡、PROM、RAM、ROM或磁带。通常,可以任何编程语言来实现计算机可读程序。可以使用的语言的一些示例包括C、C++、C#、或者JAVA。软件程序可以作为目标代码被存储在一件或多件制造产品上或其中。

Claims (18)

1.一种用于动态地确定在本地计算机器上执行虚拟机的方法,所述方法包括:
由执行管理器获得本地计算机器的特征;
由执行管理器获得在本地计算机器与远程计算机器之间的网络的特征;
由执行管理器将策略应用于本地计算机器特征和网络特征以确定是否在本地计算机器上执行虚拟机;
由执行管理器响应于确定在本地计算机器上执行虚拟机来将本地执行指令转发到在本地计算机器上执行的管理程序;以及
由管理程序在本地计算机器上执行虚拟机。
2.根据权利要求1所述的方法,其中获得本地计算机器的特征还包括识别在本地计算机器上执行的操作***。
3.根据权利要求1所述的方法,其中获得本地计算机器的特征还包括识别本地计算机器的中央处理器单元。
4.根据权利要求1所述的方法,其中获得本地计算机器的特征还包括识别在本地计算机器上执行的虚拟环境的类型。
5.根据权利要求1所述的方法,其中获得网络的特征还包括确定本地计算机器和远程计算机器是否通过网络连接。
6.根据权利要求1所述的方法,其中获得网络的特征还包括确定可用带宽量。
7.一种用于动态地确定在远程计算机器上执行虚拟机的方法,所述方法包括:
由执行管理器获得本地计算机器的特征;
由执行管理器获得在本地计算机器与远程计算机器之间的网络的特征;
由执行管理器将策略应用于本地计算机器特征和网络特征以确定是否在本地计算机器上执行虚拟机;以及
由执行管理器响应于确定在远程计算机器上执行虚拟机来将远程执行指令转发到在本地计算机器上执行的管理程序,该管理程序指示远程计算机执行虚拟机。
8.根据权利要求7所述的方法,其中获得本地计算机器的特征还包括识别在本地计算机器上执行的操作***。
9.根据权利要求7所述的方法,其中获得本地计算机器的特征还包括识别本地计算机器的中央处理器单元。
10.根据权利要求7所述的方法,其中获得本地计算机器的特征还包括识别在本地计算机器上执行的虚拟环境的类型。
11.根据权利要求7所述的方法,其中获得网络的特征还包括确定本地计算机器和远程计算机器是否通过网络连接。
12.根据权利要求7所述的方法,其中获得网络的特征还包括确定可用带宽量。
13.一种用于动态地确定在本地计算机器和远程计算机器的其中一个上执行虚拟机的***,所述***包括:
本地计算机器;
远程计算机器;和
在处理器上执行的执行管理器,用于:
获得本地计算机器的特征,
获得在本地计算机器与远程计算机器之间的网络的特征,
对本地计算机器特征和网络特征应用策略以确定是在本地计算机器还是在远程计算机器上执行虚拟机,和
响应于应用策略,将执行指令转发到在本地计算机器执行的管理程序和远程计算机器的其中一个,以执行虚拟机。
14.根据权利要求13所述的***,其中获得本地计算机器的特征还包括识别在本地计算机器上执行的操作***。
15.根据权利要求13所述的***,其中获得本地计算机器的特征还包括识别本地计算机器的中央处理器单元。
16.根据权利要求13所述的***,其中获得本地计算机器的特征还包括识别在本地计算机器上执行的虚拟环境的类型。
17.根据权利要求13所述的***,其中获得网络的特征还包括确定本地计算机器和远程计算机器是否通过网络连接。
18.根据权利要求13所述的***,其中获得网络的特征还包括确定可用带宽量。
CN201080038368.7A 2009-06-30 2010-06-30 用于选择桌面执行位置的方法和*** Expired - Fee Related CN102656562B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US22186009P 2009-06-30 2009-06-30
US61/221,860 2009-06-30
US61/221860 2009-06-30
PCT/US2010/040688 WO2011002946A1 (en) 2009-06-30 2010-06-30 Methods and systems for selecting a desktop execution location

Publications (2)

Publication Number Publication Date
CN102656562A true CN102656562A (zh) 2012-09-05
CN102656562B CN102656562B (zh) 2015-12-09

Family

ID=42752020

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201080038368.7A Expired - Fee Related CN102656562B (zh) 2009-06-30 2010-06-30 用于选择桌面执行位置的方法和***

Country Status (5)

Country Link
US (1) US20110004878A1 (zh)
EP (1) EP2449466A1 (zh)
CN (1) CN102656562B (zh)
HK (1) HK1175863A1 (zh)
WO (1) WO2011002946A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104504000A (zh) * 2014-12-08 2015-04-08 华为技术有限公司 一种远程镜像文件的传输方法,装置及***
WO2015165057A1 (zh) * 2014-04-30 2015-11-05 华为技术有限公司 一种硬盘执行应用代码的方法及装置
CN109190338A (zh) * 2018-08-22 2019-01-11 广东微云科技股份有限公司 一种虚拟化桌面屏幕水印生成方法及***

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
JP5190084B2 (ja) * 2010-03-30 2013-04-24 株式会社日立製作所 仮想マシンのマイグレーション方法およびシステム
US9130975B2 (en) * 2010-06-02 2015-09-08 Avaya Inc. Generation of macros
US9235585B1 (en) 2010-06-30 2016-01-12 Emc Corporation Dynamic prioritized recovery
US9697086B2 (en) * 2010-06-30 2017-07-04 EMC IP Holding Company LLC Data access during data recovery
US9367561B1 (en) 2010-06-30 2016-06-14 Emc Corporation Prioritized backup segmenting
US9525647B2 (en) 2010-07-06 2016-12-20 Nicira, Inc. Network control apparatus and method for creating and modifying logical switching elements
US10103939B2 (en) 2010-07-06 2018-10-16 Nicira, Inc. Network control apparatus and method for populating logical datapath sets
US8959215B2 (en) 2010-07-06 2015-02-17 Nicira, Inc. Network virtualization
US9323921B2 (en) 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
US8495108B2 (en) 2010-11-30 2013-07-23 International Business Machines Corporation Virtual node subpool management
US8903705B2 (en) * 2010-12-17 2014-12-02 Microsoft Corporation Application compatibility shims for minimal client computers
JP5664362B2 (ja) * 2011-03-10 2015-02-04 サンケン電気株式会社 電源装置およびプログラム
US9021473B2 (en) * 2011-03-14 2015-04-28 International Business Machines Corporation Hardware characterization in virtual environments
US20180074843A1 (en) * 2011-03-31 2018-03-15 P4tents1, LLC System, method, and computer program product for linking devices for coordinated operation
US8533714B2 (en) * 2011-05-03 2013-09-10 International Business Machines Corporation Dynamic virtual machine domain configuration and virtual machine relocation management
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US20120304283A1 (en) * 2011-05-27 2012-11-29 Microsoft Corporation Brokered item access for isolated applications
CN102857537B (zh) * 2011-07-01 2016-01-20 ***通信集团辽宁有限公司 一种远程调用方法、装置和***
US8943564B2 (en) * 2011-07-21 2015-01-27 International Business Machines Corporation Virtual computer and service
US10255111B2 (en) 2011-08-18 2019-04-09 Tata Consultancy Services Limited System and method of deriving appropriate target operating environment
CN102355501B (zh) * 2011-09-28 2017-06-13 华为技术有限公司 一种数据处理方法、接入审核设备及***
US20130093776A1 (en) * 2011-10-14 2013-04-18 Microsoft Corporation Delivering a Single End User Experience to a Client from Multiple Servers
US20130124867A1 (en) * 2011-11-16 2013-05-16 Nl Systems, Llc System and method for secure software license distribution
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US9389933B2 (en) 2011-12-12 2016-07-12 Microsoft Technology Licensing, Llc Facilitating system service request interactions for hardware-protected applications
US20140059071A1 (en) * 2012-01-11 2014-02-27 Saguna Networks Ltd. Methods, circuits, devices, systems and associated computer executable code for providing domain name resolution
KR101478134B1 (ko) * 2012-02-29 2015-01-26 주식회사 팬택 모바일 디바이스의 파일 관리 방법 및 이를 이용한 모바일 디바이스
US9405579B2 (en) * 2012-10-11 2016-08-02 International Business Machines Corporation Seamless extension of local computing power
US20140122160A1 (en) * 2012-10-26 2014-05-01 International Business Machines Corporation Optimized License Procurement
US9712621B1 (en) * 2013-02-11 2017-07-18 Amazon Technologies, Inc. Information sharing endpoint
US9124629B1 (en) 2013-02-11 2015-09-01 Amazon Technologies, Inc. Using secure connections to identify systems
US9826024B2 (en) 2013-04-01 2017-11-21 Autodesk, Inc. Server side video screen capture
CN104166588B (zh) * 2013-05-16 2018-10-09 腾讯科技(深圳)有限公司 阅读内容的信息处理方法及装置
US9690837B1 (en) * 2013-06-28 2017-06-27 EMC IP Holding Company LLC Techniques for preserving redundant copies of metadata in a data storage system employing de-duplication
WO2015070376A1 (zh) * 2013-11-12 2015-05-21 华为技术有限公司 一种实现虚拟化安全的方法和***
DE102014201954A1 (de) * 2014-02-04 2015-08-06 Volkswagen Aktiengesellschaft Verfahren zur Datenübertragung, Kommunikationsnetzwerk und Fahrzeug
US9961059B2 (en) * 2014-07-10 2018-05-01 Red Hat Israel, Ltd. Authenticator plugin interface
KR20160148864A (ko) * 2015-06-17 2016-12-27 한국전자통신연구원 가상 플랫폼 서비스를 이용한 다중 플랫폼 기반의 응용 프로그램 구동 지원 시스템 및 방법
CN105187394B (zh) * 2015-08-10 2018-01-12 济南大学 具有移动终端恶意软件行为检测能力的代理服务器及方法
US9667676B1 (en) * 2016-01-29 2017-05-30 Dropbox, Inc. Real time collaboration and document editing by multiple participants in a content management system
US10127030B1 (en) * 2016-03-04 2018-11-13 Quest Software Inc. Systems and methods for controlled container execution
US10140159B1 (en) 2016-03-04 2018-11-27 Quest Software Inc. Systems and methods for dynamic creation of container manifests
US10270841B1 (en) 2016-03-04 2019-04-23 Quest Software Inc. Systems and methods of real-time container deployment
US10289457B1 (en) 2016-03-30 2019-05-14 Quest Software Inc. Systems and methods for dynamic discovery of container-based microservices
US10362110B1 (en) * 2016-12-08 2019-07-23 Amazon Technologies, Inc. Deployment of client data compute kernels in cloud
US20180219974A1 (en) * 2017-01-31 2018-08-02 Wipro Limited Method and System for Dynamically Provisioning a Personalized Desktop to User in a Remote Site
US10721624B2 (en) 2017-02-17 2020-07-21 Global Tel*Link Corporation Security system for inmate wireless devices
US9892242B1 (en) 2017-04-28 2018-02-13 Global Tel*Link Corporation Unified enterprise management of wireless devices in a controlled environment
US10657239B2 (en) * 2017-05-25 2020-05-19 Oracle International Corporation Limiting access to application features in cloud applications
US11113087B2 (en) * 2017-07-12 2021-09-07 Amzetta Technologies, Llc Techniques of discovering VDI systems and synchronizing operation information of VDI systems by sending discovery messages and information messages
US10708268B2 (en) * 2017-07-31 2020-07-07 Airwatch, Llc Managing voice applications within a digital workspace
US11249780B2 (en) * 2018-01-19 2022-02-15 Citrix Systems, Inc. VM creation by installation media probe
US10402178B2 (en) 2018-01-26 2019-09-03 Accenture Global Solutions Limited Cross platform content management and distribution system
WO2020017767A1 (en) * 2018-07-16 2020-01-23 Samsung Electronics Co., Ltd. Method and device for controlling access of application
RU2739936C1 (ru) * 2019-11-20 2020-12-29 Публичное Акционерное Общество "Сбербанк России" (Пао Сбербанк) Способ внесения цифровых меток в цифровое изображение и устройство для осуществления способа
US11601461B2 (en) * 2020-01-13 2023-03-07 Vmware, Inc. Risk-based cloud profile management for VDI in the cloud
US11368544B2 (en) 2020-10-30 2022-06-21 Capital One Services, Llc Scalable server-based web scripting with user input
US20220188314A1 (en) * 2020-12-14 2022-06-16 International Business Machines Corporation Access path for database optimizer
US11720392B2 (en) * 2021-03-01 2023-08-08 International Business Machines Corporation Live virtual machine relocation to accommodate reversible relocations in a heterogeneous cluster of hypervisor versions

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070192329A1 (en) * 2006-01-24 2007-08-16 Citrix Systems, Inc. Methods and systems for executing, by a virtual machine, an application program requested by a client machine
CN101211272A (zh) * 2006-12-29 2008-07-02 英特尔公司 动态虚拟机生成
US20080263258A1 (en) * 2007-04-19 2008-10-23 Claus Allwell Method and System for Migrating Virtual Machines Between Hypervisors
US20090031307A1 (en) * 2007-07-24 2009-01-29 International Business Machines Corporation Managing a virtual machine
CN101449258A (zh) * 2006-05-18 2009-06-03 微软公司 基于工作负载表征将虚拟机部署到主机

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6985937B1 (en) * 2000-05-11 2006-01-10 Ensim Corporation Dynamically modifying the resources of a virtual server
US7299468B2 (en) * 2003-04-29 2007-11-20 International Business Machines Corporation Management of virtual machines to utilize shared resources
US20050149940A1 (en) * 2003-12-31 2005-07-07 Sychron Inc. System Providing Methodology for Policy-Based Resource Allocation
US20050160424A1 (en) * 2004-01-21 2005-07-21 International Business Machines Corporation Method and system for grid-enabled virtual machines with distributed management of applications
US7730486B2 (en) * 2005-02-28 2010-06-01 Hewlett-Packard Development Company, L.P. System and method for migrating virtual machines on cluster systems
WO2007036072A1 (en) * 2005-09-29 2007-04-05 Intel Corporation Apparatus and method for expedited virtual machine (vm) launch in vm cluster environment
US8171485B2 (en) * 2007-03-26 2012-05-01 Credit Suisse Securities (Europe) Limited Method and system for managing virtual and real machines
US8984504B2 (en) * 2007-06-22 2015-03-17 Red Hat, Inc. Method and system for determining a host machine by a virtual machine
EP2224339A3 (en) * 2007-09-12 2011-03-16 Citrix Systems, Inc. Methods and systems for generating desktop environments providing integrated access to remote and local resources
US8341626B1 (en) * 2007-11-30 2012-12-25 Hewlett-Packard Development Company, L. P. Migration of a virtual machine in response to regional environment effects
US9501305B2 (en) * 2008-04-23 2016-11-22 Inernational Business Machines Corporation System for virtualisation monitoring
US20100017801A1 (en) * 2008-07-18 2010-01-21 Vmware, Inc. Profile based creation of virtual machines in a virtualization environment
EP2228719A1 (en) * 2009-03-11 2010-09-15 Zimory GmbH Method of executing a virtual machine, computing system and computer program

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070192329A1 (en) * 2006-01-24 2007-08-16 Citrix Systems, Inc. Methods and systems for executing, by a virtual machine, an application program requested by a client machine
CN101449258A (zh) * 2006-05-18 2009-06-03 微软公司 基于工作负载表征将虚拟机部署到主机
CN101211272A (zh) * 2006-12-29 2008-07-02 英特尔公司 动态虚拟机生成
US20080263258A1 (en) * 2007-04-19 2008-10-23 Claus Allwell Method and System for Migrating Virtual Machines Between Hypervisors
US20090031307A1 (en) * 2007-07-24 2009-01-29 International Business Machines Corporation Managing a virtual machine

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015165057A1 (zh) * 2014-04-30 2015-11-05 华为技术有限公司 一种硬盘执行应用代码的方法及装置
US10310876B2 (en) 2014-04-30 2019-06-04 Huawei Technologies Co., Ltd. Executing application code based on manner of accessing a hard disk
CN104504000A (zh) * 2014-12-08 2015-04-08 华为技术有限公司 一种远程镜像文件的传输方法,装置及***
CN104504000B (zh) * 2014-12-08 2018-05-18 华为技术有限公司 一种远程镜像文件的传输方法,装置及***
CN109190338A (zh) * 2018-08-22 2019-01-11 广东微云科技股份有限公司 一种虚拟化桌面屏幕水印生成方法及***
CN109190338B (zh) * 2018-08-22 2021-12-07 广东微云科技股份有限公司 一种虚拟化桌面屏幕水印生成方法及***

Also Published As

Publication number Publication date
US20110004878A1 (en) 2011-01-06
HK1175863A1 (zh) 2013-07-12
EP2449466A1 (en) 2012-05-09
WO2011002946A1 (en) 2011-01-06
CN102656562B (zh) 2015-12-09

Similar Documents

Publication Publication Date Title
CN102656562B (zh) 用于选择桌面执行位置的方法和***
CN102460389B (zh) 用于将应用启动到现有的隔离环境中的***和方法
US9152401B2 (en) Methods and systems for generating and delivering an interactive application delivery store
CN102929659B (zh) 用于在应用程序的预定数量的执行方法之间选择的方法
US8955037B2 (en) Access management architecture
CN101326491A (zh) 用于在应用程序的预定数量的执行方法之间选择的方法
US8136146B2 (en) Secure audit log access for federation compliance
US20070083620A1 (en) Methods for selecting between a predetermined number of execution methods for an application program
CN101410803A (zh) 用于提供对计算环境的访问的方法和***
CN101473628A (zh) 用于加速计算环境到远程用户的传送的***和方法
US9071443B2 (en) Automated service platform prospecting
US20170195360A1 (en) Dynamic optimizing scanner for identity and access management (IAM) compliance verification
Grimshaw et al. GFFS—the XSEDE global federated file system
Shinder et al. The Best Damn Windows Server 2003 Book Period
Ramey Pro Oracle Identity and Access Management Suite
Mehta et al. Machine Data Using Splunk Forwarder and Clustering
Stanek Web Server Administration: The Personal Trainer for IIS 7.0 and IIS 7.5
US9736219B2 (en) Managing open shares in an enterprise computing environment
Bussman Lessons Learned Implementing DOORS in a Citrix Environment
Ramey et al. Oracle Identity and Access Management Suite Overview
Gerow Creating Client Extranets with Sharepoint 2003
Stoecker et al. Exam Ref 70-518 Designing and Developing Windows Applications Using Microsoft. NET Framework 4 (MCPD): Designing and Developing Windows Applications Using Microsoft. NET Framework 4
Monson et al. IBM WebSphere Portal V6 Self Help Guide
Oakes Microsoft operating systems development and strategy: an assessment of the Windows 2000 Server operating system
Oakes Calhoun

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1175863

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1175863

Country of ref document: HK

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20151209