用于在应用程序的预定数量的执行方法之间选择的方法

文档序号:6378194阅读:188来源:国知局
专利名称:用于在应用程序的预定数量的执行方法之间选择的方法
技术领域
本发明涉及用于执行应用程序的方法,具体而言,涉及用于在应用程序的预定数量的执行方法之间进行选择的方法。
背景技术
现代企业环境的管理员在提供对应用程序的访问时可能面对很多挑战。其中的一项挑战涉及向最终执行应用的环境提供并维护(即更新)应用的问题,因为大量的机器具有 不同的执行环境,所述的不同的执行环境又具有对多个公司网的不同类型的访问。第二项挑战涉及在目标机上提供某种环境,从而在不干扰其他可能存在抵触要求的应用程序的情况下实现应用程序的执行,或者使应用程序能够在并非被设计为运行所述应用程序的环境下得到执行(即,使单用户应用在多用户操作系统中隔离运行)。大量应用程序的提供和更新给信息技术(IT)部门带来了很多困扰。一种困扰包括怎样为不同的执行环境提供应用,所述执行环境包括个人计算机(执行很多种不同类型的操作系统)、服务器、刀片机或虚拟机。另一种困扰包括如何更新已经交付的应用。对于更新频繁的企业应用而言,在不同类型的目标机上安装应用的升级版本可能即昂贵又耗时。另一项挑战是针对访问请求进行集中开发和应用的企业策略。典型的企业环境中的另一项困扰是在采用了大量的具有不同要求的应用的环境中应用之间的兼容性。IT部门在向支持不同执行环境的目标机部署应用程序时,以及在每一应用程序具有不同的、可能存在抵触的安装要求的情况下执行可用应用程序的不同子集时可能面临很多挑战。确保与各种企业策略的顺应性又给典型企业环境的管理员带来了更多的困扰。针对各个应用,对目标机上的具体应用程序进行评估和授权可能是不切实际的。我们希望能够获得一种集中式系统,其能够在安装或执行具体的应用程序之前实现目标机的自动评估,以判断与(例如)安全策略或专利使用许可的顺应性。还希望获得这样一种方法,其能将应用一次性安装到代表性目标机上,并且够响应于具体目标机的应用访问请求将应用交付给各种目标环境。我们还希望使策略的集中应用能够提供对应用的水平不一的访问,包括响应于应用程序的要求或本地机的特征来选择执行应用的不同方法。

发明内容
本发明涉及一种用于在应用程序的预定数量执行方法之间进行选择的方法。在一个方面中,本发明涉及一种通过远程机进行选择的方法,一种执行应用程序的方法。接收与本地机关联的信任状(credential)。响应于所接收的信任状提供本地机可用的多个应用的枚举。接收请求以执行被枚举的应用。响应于策略选择执行被枚举的应用的预定数量的方法之一,所述预定数量的方法包括用于所述被枚举的应用的应用流传输的方法。在一个实施例中,所述方法包括选择将所述被枚举的应用流传输到所述本地机的方法。在另一个实施例中,所述方法包括选择用于将被枚举的应用流传输到远程机的方法,在远程机上执行被枚举的应用以及向本地机提供在远程机上执行被枚举的应用而产生的应用输出数据。在另一个方面中,用于在本地对文件元数据请求做出响应而无须从远程位置下载文件的方法包括从远程机接收表示所述远程机存储的应用程序的目录结构以及与包括所存储应用程序的每个文件相关联的元数据。存储所述目录和元数据。接收至少一个访问与目录结构中特定文件相关联的元数据的请求。使用所存储的元数据以对至少一个请求做出响应。在一个实施例中,接收枚举与本地应用程序相关联的目录结构的请求。用所存储的目录结构对枚举请求做出响应。在另一个实施例中,元数据包括文件的文件名和文件的别名(alternate name)之间的映射。在另一个实施例中,利用所接收的元数据满足标识目录结构中的根节点的请求。在又一个实施例中,接收确定本地是否有包括所存储的应用程序的文件拷贝的请求。访问所存储的元数据并给出伪装指示,表示本地没有文件拷贝。
在又一个方面中,用于在本地对文件元数据请求做出响应而无须从远程位置下载文件的系统包括目录结构、高速缓冲存储器元件和文件系统过滤器驱动程序。目录结构标识与至少一个应用程序相关联的多个文件并包括与所述多个文件中的至少一个相关联的文件元数据,所述多个文件中的至少一个驻留在远程机上。高速缓冲存储器元件存储目录结构。文件系统过滤器驱动程序拦截访问与至少一个远程存储的文件相关联的元数据的请求,访问高速缓冲存储器元件并利用所存储的目录结构对至少一个请求做出响应。在一个实施例中,所述目录结构包括与至少一个应用程序相关联的多个文件,所述多个文件驻留在远程机上。在另一个实施例中,文件元数据包括用于对标识目录结构中的根节点的请求做出响应的信息。在又一个方面中,用于访问与应用相关联的目录结构中的文件的方法包括拦截应用访问文件的请求的步骤。将该请求重定向到第一隔离环境。做出第一隔离环境中不存在所请求文件的判断。响应于在包括驻留在远程机上的多个应用文件的目录结构枚举中标识该文件的判断,将所述请求重定向到第二隔离环境。响应于所述第二隔离环境不含所述文件且在枚举中标识该文件的判断,从文件服务器检索所请求的文件。在一个实施例中,请求访问文件的应用是能够接收流传输的应用文件的应用。在另一个实施例中,请求访问文件的应用是本地机的用户所请求的应用。在又一个实施例中,在第一隔离环境中存储所请求的文件。在又一个实施例中,在第二隔离环境中存储所请求的文件。在一些实施例中,拦截应用访问可执行文件的请求。在其他实施例中,拦截应用访问文件的请求,在本地机上执行所述应用的一部分。在一个实施例中,拦截由第三隔离环境中执行的另一应用提出的请求。响应于在所述枚举中枚举该文件且所述第二隔离环境不含所述文件的判断,将所述请求重定向到所述第二隔离环境。第二隔离环境为应用提供对文件的访问。在另一个实施例中,该文件为可执行文件。在一些实施例中,多个应用文件包括第二应用。在其他实施例中,该应用是应用流传输客户端。在其他实施例中,应用流传输客户端请求并执行可执行文件以在本地机上执行第二应用的实例。
在一个方面中,一种用于访问与应用相关联的目录结构中的文件的系统包括第一隔离环境、第二隔离环境、过滤器驱动程序和收发器。在第一隔离环境中,应用执行并请求访问文件。第二隔离环境存储与安装在远程机上的多个应用文件相关联的目录结构的枚举。过滤器驱动程序响应于在目录结构枚举中标识该文件的判断,拦截访问文件的请求,将该请求重定向到第一隔离环境,判定所请求的文件不存在于第一隔离环境中并将该请求重定向到第二隔离环境。与所述过滤器驱动程序通信的收发器,所述收发器响应于所述过滤器驱动程序做出的所述第二隔离环境不含所述文件且在所述枚举中标识该文件的判断,向文件服务器发送所述重定向的请求并响应于所述请求接收包括所请求的文件的流。在一个方面中,一种用于由本地机访问包括应用程序的多个文件的方法包括本地机接收包括访问信息的文件的步骤,该访问信息用于访问多个应用文件并执行能够接收应用流的第一客户端。响应于所述文件检索所述多个应用文件的标识。响应于所述文件检索执行所述多个应用所需的至少一个特征。做出本地机是否包括至少一个特征的判断。响应于所述本地机缺少所述至少一个特征的判断执行第二客户端,所述第二客户端请求在远程机上执行所述多个应用文件。
在一个实施例中,响应于所检索的多个应用文件的标识检索至少一个特征。在另一个实施例中,响应于对本地机的评估做出本地机是否包括至少一个特征的判断。在又一个实施例中,本地机评估本地机。在又一个实施例中,响应于被评估的本地机缺少接收多个应用文件以在本地执行的授权这一判断,做出决定,执行第二客户端而非第一客户端。在另一个方面中,一种用于访问包括应用程序的多个文件的系统包括文件、第一客户端和第二客户端。该文件包括用于访问多个应用文件的访问信息。能够接收应用流的第一客户端接收所述文件、响应于所述文件检索多个应用文件的标识和执行所述多个应用文件所需的至少一个特征,并判断所述本地机是否包括所述至少一个特征。第二客户端响应于所述第一客户端做出的所述本地机缺少所述至少一个特征的判断从第一客户端接收该文件并请求在远程机上执行所述多个应用文件。在一个实施例中,第一客户端评估本地机以判断本地机是否包括至少一个特征。在另一个实施例中,第一客户端向本地机采用策略以做出判断。在又一个实施例中,第二客户端接收在远程机上执行多个应用文件所产生的应用输出数据。在又一个实施例中,第二客户端包括在本地机上显示从远程机接收的应用输出数据的功能。


通过下文的详细说明和附图,本发明的这些和其他方面将变得显而易见,其中,所述附图的作用在于对本发明进行举例说明,而不是限制本发明,其中
图IA是示出了适于实现本发明的示范性实施例的环境的方框 图IB和IC是示出了可以结合本发明使用的计算机的实施例的方框 图ID是示出了利用本发明的服务器农场(server farm)的实施例的方框 图IE是示出了用于通过在web服务目录中公布⑶I来提供可以为本地机所使用的多个应用程序的系统的一个实施例的方框 图2是示出了选择应用程序的执行方法所采用的步骤的一个实施例的流程 图3A是示出了本地机通过万维网(World Wide Web)启动执行程序邻域应用的一个实施例的方框 图3B是示出了本地机利用web服务目录访问枚举的应用程序所采取的步骤的一个实施例的流程 图4A是为本地机提供对应用程序的基于策略的访问的网络实施例的方框 图4B是示出了策略引擎更详细实施例的方框 图4C是示出了策略引擎基于所接收到的关于本地机的信息做出访问控制决定所采取的步骤的一个实施例的流程 图4D是示出了其中提供对多个应用会话的授权远程访问的计算机网络实施例的方框
图;
图4E是示出了会话服务器将本地机与其相关应用会话连接起来所采取的步骤的一个实施例的流程 图5是示出了会话服务器将客户端节点与其相关应用会话连接起来所采取的步骤的一个实施例的流程 图6是示出了包括管理服务、提供应用枚举的远程机的一个实施例的方框 图7是示出了访问包括应用程序的多个文件所采取的步骤的一个实施例的流程 图8A是示出了在操作系统控制下运行的计算机的一个实施例的方框图,该操作系统具有应用兼容性和应用交际性降低的问题;
图8B是示出了具有应用兼容性和应用交际性降低的问题的多用户计算机的方框图;图8C是示出了用于将过程与隔离范围相关联的方法中所采取的步骤的一个实施例的流程 图9是示出了在执行应用程序的方法中采取的步骤的一个实施例的流程 图10是示出了驻留在远程机上的多个应用文件的一个实施例的流程 图11是示出了对与远程存储的文件相关的文件元数据的请求在本地做出响应的方法中采取的步骤的一个实施例的流程 图12是示出了对与远程存储的文件相关的文件元数据的请求在本地做出响应的系统的一个实施例的方框 图13是示出了用于访问目录结构中与本地执行的应用程序相关的远程文件的方法中采取的步骤的一个实施例的流程 图14是示出了用于访问与应用相关的目录结构中的文件的系统的一个实施例的方框
图15是包括许可管理子系统的远程机的一个实施例的方框 图16是示出了远程机上的管理服务中的部件的一个实施例的方框 图17是示出了从远程机请求和维持许可所采取的步骤的一个实施例的流程 图18是示出了可能与管理服务监测的会话相关的状态的一个实施例的方框 图19是示出了包括两个目标的程序包(package)的方框图,每个目标包括多个包括应用的应用文件;
图20是示出了用于无须重新引导操作系统来安装应用程序的基于策略的方法中采取的步骤的一个实施例的流程 图21是示出了用于无须重新引导操作系统来安装应用程序的基于策略的方法中采取的步骤的一个实施例的流程 图22是示出了枚举脚本以在本地机上执行的一个实施例的屏幕快照;
图23是示出了包括打包机构(packaging mechanism)的系统实施例的方框图,该打包机构将安装程序执行到隔离环境中;
图24是示出了其中执行安装程序需要重新引导操作系统的环境中采取的步骤的一个实施例的流程 图25是示出了打包机构向其上安装应用程序的远程机的一个实施例的方框图;以及 图26是示出了在应用隔离环境中安装应用所采取的步骤的一个实施例的流程图。
具体实施例方式本发明的示范性实施例适用于分布式连网环境,其中,本地机的用户请求访问存储在远程机上的应用。在讨论本发明的细节之前,首先来讨论一下可以采用本发明的示范性实施例的一些网络环境。图IA是示出了适于实现本发明的示范性实施例的环境的方框图。本地机10或20的用户能够连接至远程机,例如远程机30、30’、30〃或30’’’(下文统称为远程机30)。尽管图IA所示的实施例中仅示出了两个本地机10和20,以及四个远程机30,但是应当理解,对于这些部件中的任何一种或每一种,所述系统都可以提供多个。例如,在一个实施例中,所述系统可以包括多个逻辑分组的远程机30,可以采用其中的一个或多个代表本地机10、20执行应用。在这些实施例中,可以将远程机的逻辑组称为“服务器农场(server farm)”,在图IA中将其表示为农场38。在一些实施例中,远程机30在地理上可以是分散的。可以将农场38作为一个整体进行管理。每一农场38中的远程机30可以是不同种类的。也就是说,远程机30中的一个或多个可以按照某种类型的操作系统平台(例如,由华盛顿雷德蒙的微软公司制造的WINDOWSNT)工作,而其他远程机30中的一个或多个可以根据另一种类型的操作系统平台(例如,Unix或Linux)工作。构成每一农场38的远程机30没有必要在其农场38内彼此实际相邻。因而,可以利用广域网(WAN)连接或中等区域网(MAN)连接使在逻辑上组合成农场38的由远程机30构成的组互连。例如,农场38可以包括实际上处于不同的州、城市、学校或房间的远程机30。如果利用局域网(LAN)连接或某种形式的直接连接来连接远程机30,那么可以提高农场38内的远程机30之间的数据传输速度。可以将远程机30称为服务器、文件服务器、应用服务器或远程机。在一些实施例中,远程机30可以具有起着应用服务器或主应用服务器的作用的能力。在一个实施例中,远程机30可以包括现用目录(Active Directory)。也可以将本地机10、20称为客户端节点或端点。在一些实施例中,本地机10、20所具有的能力既能够使其充当寻求对应用的访问的客户端节点,又能够使其充当为其他本地机提供对其持有的(hosted)应用的访问的应用服务器。在一个实施例中,本地机10与农场38中的远程机30之一直接通信。在另一实施例中,本地机10通过执行程序邻域(neighborhood)应用与农场38中的远程机30通信。在另一实施例中,远程机30提供主节点的功能性。在一些实施例中,本地机10通过通信链路与农场38中的远程机30通信。本地机10可以通过通信线路150 (例如)请求执行农场38中的远程机30、30’、30"和30"’所持有的各种应用,并接收所述应用的执行结果的输出,以供显示。通信链路150可以是同步或非同步的,并且其可以是LAN连接、MAN (中等区域网)连接或WAN连接。此外,通信链路150可以是无线链路,例如红外信道或卫星频带。在一些实施例中,只有主节点提供识别和提供与持有所请求的应用的远程机30’相关的地址信息所需的功能。在一些实施例中,本地机10与远程机30’ 〃通信。在这些实施例之一中,远程机30’ 〃提供web服务器的功能。在这些实施例的另一个当中,远程机30’ 〃接收来自本地机10的请求,将所述请求发送至远程机30,并采用来自远程机30的对所述请求的响应来回应所述的本地机10的请求。在这些实施例的另一个当中,远程机30获取本地机10可用的应用的枚举和与持有所述应用枚举所标识的应用的远程机30’相关的地址信息。在这些实施例的另一个当中,远程机30’ 〃利用web接口向本地机10提供对所述请求的响应。在一个实施例中,本地机10与远程机30’直接通信,以访问所标识的应用。在另一实施例中,本地机10接收来自远程机30’ 〃的应用输出数据,所述应用输出数据是通过执行远程机30’上的所标识的应用而得到的。在多个实施例中,将远程机30以及本地机10和20设为个人计算机或计算机服务器,其可以具有加利福尼亚库佩蒂诺的苹果计算机公司、纽约白原市的IBM公司、加利福尼亚帕洛阿尔托的惠普公司或者得克萨斯州Round Rock的戴尔公司制造的类型。在一些实施例中,远程机30可以是运行于诸如刀片服务器的服务器上的虚拟机。在这些实施例中,单个实际的服务器可以提供两个或更多的应用服务器。
图IB和IC示出了在这些实施例中可以被用作远程机30或本地机10、20的典型计算机100的方框图。如图IB和IC所示,每一计算机100包括中央处理单元102和主存储器104。每一计算机100还可以包括其他任选元件,例如,一个或多个输入/输出装置130a-130n (统一采用附图标记130表示)和与中央处理单元102通信的高速缓冲存储器140。中央处理单元102是对从主存储器104中取出的指令作出响应并处理所述指令的任何逻辑电路。在多个实施例中,通过微处理器单元提供所述中央处理单元,其中,所述微处理器单元可以是加利福尼亚芒廷维尤的Intel公司、伊利诺斯州绍姆堡的摩托罗拉公司、纽约白原市的IBM公司或者加利福尼亚桑尼维尔的AMD公司制造的。主存储器104可以是能够存储数据并且允许通过微处理器102直接访问任何存储位置的一个或多个存储芯片,例如,其可以是静态随机存取存储器(SRAM)、脉冲串(burst)SRAM或同步脉冲串SRAM (BSRAM)、动态随机存取存储器(DRAM)、快速页面式DRAM (FPMDRAM)、增强型DRAM(EDRAM)、扩展数据输出RAM(ED0 RAM)、扩展数据输出DRAM(ED0 DRAM)、脉冲串扩展数据输出 DRAM (BEDO DRAM)、扩展 DRAM (EDRAM)、同步 DRAM (SDRAM)、JEDECSRAM.PC100 SDRAM、双数据率 SDRAM (DDR SDRAM)、增强型 SDRAM (ESDRAM)、同步链接 DRAM(SLDRAM)、直接存储器总线 DRAM (DRDRAM)或铁电 RAM (FRAM)0在图IB所示的实施例中,处理器102通过系统总线120 (在下文中将对其给出更为详细的说明)与主存储器104通信。图IC示出了计算机系统100的实施例,其中,处理器通过存储器端口与主存储器104直接通信。例如,在图IC中,主存储器104可以是DRDRAM。图IB和图IC示出了主处理器102通过次级总线与高速缓冲存储器140直接通信,其中有时将次级总线称为“后侧”总线。在其他实施例中,主处理器102利用系统总线120与高速缓冲存储器140通信。高速缓冲存储器140通常具有比主存储器104更快的响应时间,并且通常通过SRAM、BSRAM或EDRAM实现。在图IB所示的实施例中,处理器102通过局部系统总线120与各种I/O装置130通信。可以采用各种总线将中央处理单元102连接至所述I/O装置130,所述总线包括VESAVL总线、ISA总线、EISA总线、微信道架构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于所述I/O装置为视频显示器的实施例而言,处理器102可以采用加速图形接口(AGP)与显示器通信。图IC示出了计算机系统100的实施例,其中,主处理器102通过 HyperTransport、Rap id I/O 或 Inf iniBand 与 I/O 装置 130b 直接通信。图 IC 还示出了混合了局域总线和直接通信的实施例处理器102在与I/O装置130b直接通信的同时利用局域互连总线与I/O装置130a通信。在计算机系统100中可以存在各种各样的I/O装置130。输入装置包括键盘、鼠标、跟踪板、跟踪球、传声器和图形输入板。输出装置包体视频显示器、扬声器、喷墨打印机、 激光打印机和染料升华打印机。所述I/o装置还可以为计算机系统100提供大容量存储器,例如硬盘驱动器、用于接收诸如3. 5寸盘、5. 25寸盘或ZIP盘的软盘的软盘驱动器、⑶-ROM驱动器、⑶-R/RW驱动器、DVD-ROM驱动器、各种格式的磁带驱动器和USB存储装置,例如,所述USB存储装置可以是加利福尼亚Los Alamitos的Twintech Industry公司制造的装置的USB Flash Drive线或加利福尼亚库佩蒂诺的苹果计算机公司制造的装置的iPod Shuffle线。在其他实施例中,I/O装置130可以是系统总线120和外部通信总线之间的桥梁,例如,所述外部通信总线可以是USB总线、Apple Desktop总线、RS-232串联、SCSI总线、FireWire总线、FireWire 800总线、以太网总线、AppleTalk总线、吉比特以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChanne I总线或者串行附加小型计算机系统接口总线。具有图IB和图IC所示的类型的通用台式计算机通常在操作系统的控制下工作,其中,操作系统控制着任务进程和对系统资源的访问。典型的操作系统包括华盛顿雷德蒙的微软公司制造的MICROSOFT WINDOWS、加利福尼亚库佩蒂诺的苹果计算机公司制造的MacOS、纽约Armonk的IBM公司制造的OS/2以及犹他州盐湖城的Caldera公司免费发布的操作系统Linux,等等。本地机10和20可以是任何个人计算机(例如Macintosh计算机或者基于处理器的计算机,例如,所述处理器可以是286、386、486、Pentium、Pentium II、Pentium III、Pentium IV、Pentium M、Celeron或Xeon处理器,所有的这些处理器都是由加利福尼亚芒廷维尤的Intel公司制造的)、基于Windows的终端、网络计算机、无线装置、信息设备、RISC.Power PC、X装置、工作站、小型计算机、主机计算机、个人数字助理或者其他具有基于Windows的桌面和足够的用于执行小的直观显示程序的持久存储器(persistent store)的计算装置。直观显示程序利用通过通信信道发送给它的命令和数据实现图形显示。本地机10和20所支持的面向Windows的平台可以包括但不限于ffindows 3. x、Windows 95、Windows 98、Windows NT 3. 51 > Windows NT 4. 0、Windows 2000、Windows 2003、WindowsCE、Windows XP、Windows vista、MAC/OS、Java、Linux 和 UNIX。本地机 10 和 20 可以包括视觉显示装置(例如,计算机监视器)、数据输入装置(例如,键盘)、用于存储下载的应用程序的持久或易失存储器(例如,计算机存储器)、处理器和鼠标。小的直观显示程序的执行允许本地机10和20参与分布式计算机系统模型(即,基于服务器的计算模型)。对于本地机10或20是移动装置的实施例而言,所述装置可以是能够实现JAVA的蜂窝电话,例如,由伊利诺斯州绍姆堡的摩托罗拉公司、日本京都的Kyocera、韩国汉城的三星电子公司制造的蜂窝电话。在本地机10或20可移动的其他实施例中,其可以是在PalmOS操作系统的控制下工作的个人数字助理(PDA),例如,其可以是由加利福尼亚米尔皮塔斯的palmOne公司制造的装置。在其他实施例中,本地机10或20可以是在PocketPC操作系统的控制下工作的个人数字助理(PDA),例如,由加利福尼亚帕洛阿尔托的惠普公司制造的iPAQ装置、加利福尼亚Walnut的ViewSonic制造的装置或者纽约的美国东芝公司制造的装置。在另一些实施例中,客户端节点是PDA/电话装置的组合,例如,由加利福尼亚米尔皮塔斯的palmOne公司制造的Treo装置。在另一些实施例中,本地机10或20是在PocketPC操作系统的控制下工作的蜂窝电话,例如,由摩托罗拉公司制造的蜂窝电话。
在一个实施例中,本地机10与农场38中的远程机30之一直接通信。在一些实施例中,本地机10通过通信链路150与农场38中的远程机30通信。本地机10可以通过通信线路150 (例如)请求执行农场38中的远程机30、30’、30〃和30〃’所持有的各种应用,并接收所述应用的执行结果的输出,以供显示。通信链路150可以是同步或非同步的,并且其可以是LAN连接、MAN (中等区域网)连接或WAN连接。此外,通信链路150可以是无线链路,例如红外信道或卫星频带。 在一些实施例中,本地机10与远程机30通信。在这些实施例的一个当中,远程机30为本地机10提供本地机10能够执行的应用的枚举。在这些实施例的另一个当中,远程机30为本地机10提供与持有所述应用枚举所标识的应用的远程机30’相关的地址信息。在这些实施例的另一个当中,本地机10与远程机30’通信,以访问所标识的应用。在一个实施例中,本地机10通过执行程序邻域应用与远程机30和30’通信。在一些实施例中,每一远程机30提供识别和提供与持有所请求的应用的远程机30’相关的地址信息所需的功倉泛。在一些实施例中,本地机10与远程机30’ 〃通信。在这些实施例中的一个当中,远程机30’ "提供web服务器或文件服务器的功能。在所述的实施例的另一个当中,远程机30’ 〃接收来自本地机10的请求,将所述请求发送至远程机30,并采用来自远程机30的对所述请求的响应来回应所述的本地机10的请求。在这些实施例的另一个当中,远程机30获取本地机10可用的应用的枚举和与提供对所述应用枚举所标识的应用程序的访问的远程机30’相关的地址信息。在这些实施例的另一个当中,远程机30’〃利用web接口向本地机10提供对所述请求的响应。在一个实施例中,本地机10与远程机30’直接通信,以访问所标识的应用。在另一实施例中,本地机10接收来自远程机30’ "的应用输出数据,所述应用输出数据是通过执行远程机30’上的所标识的应用而得到的。现在参考图1D,构成农场38的远程机30均包括网络端接口 202和农场端接口204。远程机30的网络端接口可以与一个或多个本地机10、20或与网络210通信。网络210可以是WAN、LAN或者诸如因特网或万维网的国际网。本地机10、20可以利用210与远程机30建立连接。
远程机30的农场端接口 204通过通信链路相互连接,从而使远程机30能够相互通信。在每一远程机30上,农场端接口 204与网络端接口 202通信。农场端接口 204还与持久存储器230,以及一些实施例中的动态存储器240通信(由箭头220表示)。将远程机30、持久存储器230和动态存储器240(在提供时)的组合统称为农场38。在一些实施例中,远程机30与持久存储器230通信,另一远程机30’与远程机30通信,以访问存储在所述持久存储器内的信息。实际上,可以将所述持久存储器230实现到磁盘、特大容量磁盘、廉价磁盘冗余阵列、可写光盘或者任何其他允许数据读写并且在存储装置断电后能够保持写入的数据的装置上。单个实际装置可以提供实现多个持久存储器的存储器,即,可以采用单个实际装置为一个以上的农场38提供持久存储器230。持久存储器230保持与农场38中的每一远程机30相关的静态数据和农场38内的所有远程机30采用的全局数据。在一个实施例中,持久存储器230可以按照低权(Lightweight)目录访问协议(LDAP)数据模型保持远程机数据。在其他实施例中,持久存储器230将远程机数据存储到顺应ODBC的数据库中。出于本说明书的目的,“静态数据”是指不发生频繁改变的额数据,即,仅在小时、天或周的基础上发生 变化的数据或者根本不发生变化的数据。每一远程机采用持久存储器子系统从持久存储器230读取数据或向其内写入数据。出于在物理或逻辑上的可靠性的目的,可以复制持久存储器230所存储的数据。例如,可以采用一组冗余的镜像盘提供物理冗余,其中,每一冗余镜像盘提供一个数据副本。在其他实施例中,可以采用标准数据库技术复制数据库自身,从而提供对所述数据库的多重复制。在其他实施例中,可以同时采用物理和逻辑复制。可以通过各种方式实现动态存储器240 (即,所有记录表格的集合)。在一个实施例中,动态存储器240是集中式的;也就是说,将所有的运行时间数据存储到农场38中的一个远程机30的存储器内。所述远程机起着主网络节点的作用,农场38中的所有其他远程机30在寻求对所述运行时间数据的访问时都要与所述主网络节点通信。在另一实施例中,农场38中的每一远程机30保持动态存储器240的整个副本。这里,每一远程机30与每一其他远程机30通信,从而使它的动态存储器240的副本保持更新。在另一实施例中,每一远程机30保持其自身的运行时间数据,并在试图获得来自每一其他远程机30的运行时间数据时与它们通信。因而,例如,试图找到本地机10所请求的应用程序的远程机30可以直接与农场38中的每一其他远程机30通信,从而找到持有所请求的应用的一个或多个远程机。对于具有大量远程机30的农场38而言,由这些实施例产生的网络流量可能变得非常沉重。其中的一个实施例通过将农场38中的远程机30的子集(通常具有两个或更多的远程机)指定为“收集点”来缓解沉重的网络流量。通常,收集点是指收集运行时间数据的远程机。每一收集点存储从农场38中的某一其他远程机30收集的运行时间数据。农场38中的每一远程机30均能够作为收集点工作,因而均能够被指定为收集点。在一个实施例中,每一收集点存储整个动态存储器240的副本。在另一实施例中,每一收集点存储动态存储器240的一部分,即,其保持具有特定数据类型的运行时间数据。可以根据一种或多种标准预先确定远程机30存储的数据类型。例如,远程机30可以基于其引导程序顺序存储不同类型的数据。或者,可以由管理员利用管理工具140设置远程机30存储的数据的类型。在这些实施例中,动态存储器240分布在农场38中的两个或更多远程机30当中。未被指定为收集点的远程机30知晓农场38中被指定为收集点的远程机30。未被指定为收集点的远程机180在发出和请求运行时间数据时可以与特定收集点通信。因而,收集点减轻了网络流量,因为农场38中的每一远程机30在寻求对运行时间数据的访问时都与单个收集点远程机30通信,而不是与每一其他远程机30通信。每一远程机30可以作为针对一种以上的数据类型的收集点工作。例如,远程机30"可以作为针对许可信息和针对加载信息的收集点工作。在这些实施例中,每一收集点可以收集不同类型的运行时间数据。例如,为了对这种情况举例说明,远程机30’ 〃可以收集许可信息,而远程机30"可以收集加载信息。在一些实施例中,每一收集点存储在农场38中的所有远程机30之间共享的数据。在这些实施例中,每一特定类型的数据的收集点与农场38中的针对该种类型的数据的每一其他收集点交换该收集点收集的数据。因而,在完成了所述数据的交换的同时,每一收集点30〃和30都拥有了相同的数据。而且,在这些实施例中,每一收集点30和30〃还能够使每一其他收集点始终跟上对所述运行时间数据的更新。浏览(browsing)能够使本地机10查看农场38、远程机30和农场38中的应用,并访问可用信息,例如整个农场38中的会话。每一远程机30包括ICA浏览子系统260,从而为本地机10提供浏览功能。在本地机10建立与远程机30中的任何一个的ICA浏览器子系统260的连接之后,所述浏览器子系统将支持各种本地机请求。所述本地机请求包括(I)枚举农场中的远程机的名称,(2)枚举农场中公布的应用的名称,(3)将远程机名称和/或应用名称解析成本地机10可用的远程机地址。ICA浏览器子系统260还支持由运行程序邻域应用的本地机10所发出的请求,其根据请求为所述本地机10提供对该用户得到了授权的农场38中的应用的查看。ICA浏览器子系统260将所有的上述本地机请求发送给远程机30中的适当的子系统。在一个实施例中,农场38中的每一具有程序邻域子系统的远程机30可以为本地机10的用户提供对农场38中的应用的查看。所述程序邻域子系统270可以限制对那些所述本地机10的用户得到了访问授权的应用的查看。典型地,这一程序邻域服务将应用作为列表或图符组提供给用户。程序邻域子系统270所提供的功能可以为两种类型的本地机所使用(I)能够直接从本地机桌面访问功能的能够启用程序邻域的本地机,(2)能够通过运行远程机上的能够启用程序邻域的桌面来访问所述功能的不能启用程序邻域的本地机(例如,遗留本地机(legacy local machine))。可以在建立于ICA虚拟信道的顶部的专用虚拟信道上进行能够启用程序邻域的本地机和程序邻域子系统270之间的通信。在其他实施例中,可以利用XML服务实施所述通信。在这些实施例的一个当中,能够启用程序邻域的本地机与XML子系统通信,例如,所述XML子系统可以是下文结合图6说明的XML服务516,其提供了远程机30上的程序邻域功能。在一个实施例中,能够启用程序邻域的本地机不具有与带有程序邻域子系统270的远程机的连接。对于这一实施例而言,本地机10向ICA浏览器子系统260发送请求,以建立与远程机30的ICA连接,从而识别出本地机10可用的应用。之后,本地机10运行获取用户的信任状的客户端侧对话。所述信任状被ICA浏览器子系统260接收,并被发送至程序邻域子系统270。在一个实施例中,程序邻域子系统270向用户管理子系统发送所述信任状,以实现对其的鉴定。用户管理子系统可以返回一组存在区分的名称,其表示所述用户所属的帐户的列表。在鉴定的同时,程序邻域子系统270建立程序邻域虚拟信道。这一信道一直保持打开状态,直到完成应用过滤为止。之后,程序邻域子系统270从与这些帐户相关的公共应用子系统524请求程序邻域信息。公共应用子系统524从持久存储器230获得程序邻域信息。在接收到所述程序邻域信息的同时,程序邻域子系统270为所述程序邻域信息设置格式并将其通过所述程序邻域虚拟信道返回给所述本地机。之后关闭部分ICA连接。对于能够启用程序邻域的本地机建立了与远程机的局部ICA连接的另一个例子 而言,考虑选择了农场38的本地机10的用户。对农场38的选择将来自本地机10的请求发送至ICA浏览器子系统260,从而建立起与所选的农场38的远程机30中的一个的ICA连接。ICA浏览器子系统260向程序邻域子系统270发送选择农场38中的远程机30的请求。通过ICA浏览器子系统260识别与远程机30相关的地址信息,并将其返回给本地机10。接下来,可以将本地机10连接至对应于所接收到的地址信息的远程机30。在另一实施例中,能够启用程序邻域的本地机10建立ICA连接,在所述ICA连接上建立程序邻域虚拟信道,只要所述ICA连接存在就使所述程序虚拟信道保持畅通。通过这一程序邻域虚拟信道,程序邻域子系统270将程序邻域信息更新发送给本地机10。为了获得更新,程序邻域子系统270预订来自公共应用子系统524的事件,从而允许程序邻域子系统270检测到所公布的应用的变化。参考图1E,其示出了用于通过在web服务目录中公布⑶I来提供可以为本地机所使用的多个应用程序的系统架构的另一个实施例的方框图。所述系统包括本地机10和多个远程机30。一个远程机30起着内容服务器的作用。远程机30’提供web服务器功能。远程机30"提供用于提供对应用文件的访问的功能,并且起着应用服务器或文件服务器的作用。本地机10能够通过网络155从内容服务器30、web服务器30’和应用服务器30〃上下载内容。在一个实施例中,本地机10能够通过客户端一应用服务器通信信道150从应用服务器30"下载内容(例如,应用)。在一个实施例中,本地机10上的web浏览器11采用加密套接字协议层(SSL)支持来实现与内容服务器30和/或web服务器30’的通信。SSL是由加利福尼亚芒廷维尤的Netscape通信公司开发的安全协议,现在已经成为了因特网工程任务组颁布的标准。或者,可以利用其他安全协议将网浏览程序11连接至内容服务器30和/或web服务器30’,例如,所述安全协议可以是但不限于由加利福尼亚州的洛斯阿尔托斯的Terisa Systems开发的加密超级文本传输协议(SHTTP)、HTTP over SSL (HTTPS)、由华盛顿雷德蒙的微软公司开发的专用通信技术(PCT)和IETF颁布的传送级安全(TLS)标准。在其他实施例中,web浏览器11利用不存在加密的通信协议,例如超级文本传输协议(HTTP)与服务器30通信。此外,本地机10包括用于通过客户端一应用服务器通信信道150与应用服务器30〃建立和交换通信的应用客户端13。在一个实施例中,应用客户端13为GUI应用。在一些实施例中,应用客户端13是由佛罗里达州Fort Lauderdale的Citrix Systems公司开发的独立计算架构(ICA)客户端,在下文中又将其称为ICA客户端13。应用客户端13的其他实施例包括由华盛顿雷德蒙的微软公司开发的远程显示协议(RDP)客户端、X-Windows客户端13、能够执行多媒体应用、email、Java或.NET代码的客户端侧播放器、解释器或模拟器。此外,在一个实施例中,可以通过ICA客户端13在本地机10上显示在应用服务器30〃上执行的应用的输出。在一些实施例中,应用客户端13是诸如应用流动客户端552的应用客户端,在下文中将参考图5更详细地说明应用流动客户端552。本地机10通过搜索web服务目录160来寻找web服务。在一个实施例中,所述搜索是人工搜索。或者,所述搜索是自动搜索。所述web服务目录160还可以提供基于服务的视图,例如,白页或黄页,从而在web服务目录中搜索web服务。在另一实施例中,web服务目录160支持基于GUI应用的结构化服务名和服务种类的分级浏览。在一个实施例中,web服务目录160在独立于内容服务器30的远程机上,例如,在目录服务器上运行。在其他实施例中,所述web服务目录160 在多个服务器上运行。在一些实施例中,内容服务器30能够通过在web服务目录160中提供信息或分析使本地机10能够基于所述的额外的分析或信息选择web服务。所述web服务目录160所能列举的服务信息的例子包括但不限于提供服务的商家的名称、服务类型、服务的文字描述、一个或多个访问点(SAP )、网络类型、使用路径(例如,TCP或HTTPS )和服务质量(QoS )信息。此外,所述服务信息可以是客户端装置类型或用户(例如职责)的详细说明。因而,服务选择可以以一个或多个上述属性为基础。在一个实施例中,服务类型表示本地机10必须用来访问所述web服务的编程接口。例如,所述服务类型可以表明通过接口描述语言对所述服务进行了编码,例如所述接口描述语言可以是web服务描述语言(WSDL)。所述服务访问点或SAP是应用的唯一地址。所述SAP能够使计算机系统在本地机10和每一远程机30上支持多个应用。例如,应用服务器30〃可以支持电子邮件(即,e-mai I)应用、文件传输应用和/或GUI应用。在一个实施例中,这些应用均具有SAP,其在应用服务器30〃内是唯一的。在一个实施例中,所述SAP是web或因特网地址(例如,域名系统(DNS)名、IP/端口或资源定位码(URL))。因而,在一个实施例中,SAP将web服务器30’的地址识别成存储在web服务器30’上的应用的地址的一部分。在一些实施例中,SAP将公布服务器插件程序165的地址识别成存储在web服务器30’上的应用的地址的一部分,如下文所述。在一个实施例中,所述SAP是来自UDDI注册的“接入点(accessPoint)”。为了准备用于在web服务目录160中公布的项目,内容服务器30包括web公布工具170。在一个实施例中,web公布工具170是一种软件模块。或者,web发布工具170是另一种服务器,其可以位于内容服务器30的外部或内部。在一个实施例中,网络服务器30’向本地机10提交web页。Web服务器30’可以是能够向本地机105提供web页的任何远程机30。在另一实施例中,web服务器30’是企业信息门户(例如,企业内联网或加密的企业对企业外联网)。企业门户是公司的网站,其汇集了各种应用、数据和内容,使其个性化并将其提供给用户,同时提供用于更为有效地组织和使用信息的管理工具。在一些公司内,其门户已经采用对虚拟工作位置的基于浏览器的访问替代了常规的桌面软件。Web服务器30’还包括用于实现图形用户界面(⑶I)应用的公布的公布服务器插件程序165。更准确地说,所述公布服务器插件程序165将新的web服务项URL转换为GUI应用服务,从而能够通过web服务目录160访问GUI。在一个实施例中,公布服务器插件程序165是公共网关接口(CGI)脚本,这是一种被设计为接受和返回符合CGI规约的数据的程序。可以通过任何程序设计语言,例如C、Perl、Java或Visual Basic编写所述程序。在另一实施例中,所述公布服务器插件程序165是Java服务器页(JSP)。利用公布服务器插件程序165促进远程⑶I应用的公布,本地机10能够由此通过整个⑶I接口,例如,Citrix的ICA或Microsoft的RDP而并非通过编程接口或web页访问web服务。应用服务器30〃持有一个或多个本地机10可用的应用。所述应用的例子包括由雷德蒙的微软公司制造的诸如MICROSOFT WORD的字处理程序和诸如MICROSOFT EXCEL的电子表格程序、财务报表程序、客户注册程序、提供技 术支持信息的程序、客户数据库程序或应用集管理程序。在一些实施例中,在不同的网络上建立一个或多个通信链路150。例如,客户端一内容服务器通信信道150’可以属于第一网络(例如,万维网),客户端一 web服务器通信信道150〃可以属于第二网络(例如,加密外联网或虚拟专用网(VPN))。在一个实施例中,web公布工具170存储与web公布工具170在持久大容量存储器225中的web服务目录160内公布的应用有关的信息。在一个实施例中,所述信息是动态公布服务器插件程序165的URL。持久大容量存储器225可以是磁盘或磁光驱动器。在一个实施例中,所述持久大容量存储器225为数据库服务器,其将与所公布的应用相关的数据存储到一个或多个局部服务数据库内。所述持久大容量存储器225可以是处于任何或所有远程机30之内或之外的部件。在其他实施例中,内容服务器30或web服务器30’与农场38中的远程机通信,以检索应用列表。在这些实施例之一中,内容服务器30或web服务器30’与农场38通信,而不是和持久大容量存储器225通信。现在参考图2,流程图示出了选择应用程序的执行方法所采取的步骤的一个实施例。简而言之,接收与本地机相关联或与本地机的用户相关联的信任状,请求枚举可以由本地机执行的应用(步骤202)。响应于所接收的信任状提供对本地机可用的多个应用程序的枚举(步骤204)。接收请求以执行被枚举的应用(步骤206)。响应于策略选择执行被枚举的应用的预定数量的方法之一,所述预定数量的方法包括用于被枚举的应用的应用流传输的方法(步骤208)。接收与本地机相关联或与本地机的用户相关联的信任状,请求枚举可以由本地机执行的应用(步骤202)。在一个实施例中,远程机利用信任状从本地机10接收枚举可用应用的请求。在另一个实施例中,远程机30上的XML服务接收请求和信任状并将请求和信任状传输到远程机30上的管理服务。在一些实施例中,起到web服务器功能的远程机30从本地机10接收通信并将通信转发到远程机30’。在这些实施例之一中,Web服务器将通信转发到远程机30’上的XML服务。在这些实施例的另一个中,Web服务器位于本地机上。在由web服务器将来自本地机10的通信路由到远程机30’的其他实施例中,可以响应于本地机10的网际协议(IP)地址选择远程机30。在一些实施例中,本地机10请求访问远程机30上驻留的应用。在这些实施例之一中,本地机10请求由远程机30执行驻留在远程机30上的应用。在这些实施例的另一个中,本地机10请求检索包括应用的多个应用文件。在一些实施例中,用户经由远程机30提供给本地机10的图形用户界面向远程机30提供信任状。在其他实施例中,具有web服务器功能的远程机30’ ’ ’向本地机10提供图形用户界面。在其他实施例中,由远程机30发送给本地机10的收集代理收集来自本地机10的信任状。在一个实施例中,信任状是指用户名和口令。在另一个实施例中,信任状不限于用户名和口令,而是包括,但不限于本地机10的机器ID、操作系统类型、操作系统补丁的存在、已安装网卡的MAC地址、客户端装置上的数字水印、活动目录中的成员身份、病毒扫描器的存在、个人防火墙的存在、HTTP报头、浏览器类型、装置类型、诸如网际协议地址或地址范围的网络连接信息、远程机30的机器ID、包括改变时区的调节的访问请求的日期或时间以及授权信任状。在一些实施例中,与本地机相关联的信任状是与本地机的用户相关联的。在这些实施例之一中,信任状是用户所有的信息。在这些实施例的另一个中,信任状是用户身份验证信息。在其他实施例中,与本地机相关联的信任状是与网络相关联的。在这些实施例之 一中,信任状是与本地机可以连接到的网络相关联的信息。在这些实施例的另一个中,信任状是与收集本地机信息的网络相关的信息。在其他实施例中,与本地机相关联的信任状是本地机的特征。响应于所接收的信任状提供对本地机可用的多个应用程序的枚举(步骤204)。在一个实施例中,本地机10的用户可能知道网络40中的远程机30所持有的应用程序的可用性,但不知道在哪里找到这种应用,并没有链接到这种应用所需的技术信息。这些可用的应用程序构成用户的“程序邻域”。用于为本地机判断程序邻域的系统包括应用程序(下文称为“程序邻域”应用)、用于存储应用程序部件的存储器以及用于执行应用程序的处理器。如下所述,可以在本地机10和/或远程机30的存储器中安装程序邻域(PN)应用。根据程序邻域应用而运行的远程机30从农场38中的每台远程机30收集与应用相关的信息。用于每个所持有的应用的与应用相关的信息可以是各种信息,例如包括持有应用的远程机地址、应用名称、被授权使用应用的用户或用户组以及在建立连接之前为了运行应用本地机10所需的最低能力。例如,应用可能对视频数据进行流传输,因此所需的最低能力可以是本地机支持视频数据。其他实例为本地机支持音频数据或具有处理加密数据的能力。与应用相关的信息可以存储在数据库中。当本地机10连接到网络40时,本地机10的用户提供用户信任状。用户信任状可以包括本地机10的用户的用户名、用户的口令以及用户被授权的域名。或者,可以从智能卡、时基令牌、社会保障号码、用户口令、个人身份(PIN)号码、基于对称密钥或椭圆曲线密码术的数字证书、用户的计量生物学特征或任何通过其能够获得本地机10的用户身份并提交进行验证的其他方式获得用户信任状。对本地机10响应的远程机30可以基于用户信任状对用户进行认证。可以在执行程序邻域应用的任何地方存储用户信任状。对于本地机10执行程序邻域应用的实施例而言,可以在本地机10上存储用户信任状。对于远程机30执行程序邻域的实施例而言,可以在该远程机30上存储用户信任状。远程机30从用户信任状和与应用相关的信息还可以判断出远程机30所持有的哪些应用程序是可以由本地机10的用户使用的。远程机30向本地机10发送表明可用应用程序的信息。该过程消除了本地机10的用户建立应用连接的必要。此外,远程机30的管理员可以在本地机10的多个用户之间控制对应用的访问。在一些实施例中,远程机30执行的用户认证可以足以授权使用提供给本地机10的每个所持有应用程序,尽管这样的应用可能驻留在另一远程机30上。因此,当本地机10启动(即开始执行)所持有应用之一时,可以不必认证本地机10再次输入的用户信任状来认证应用的使用。于是,单独一项用户信任状可以用于判断可用应用并授权启动这种应用,而无须用户进行额外的人工登录认证过程。本地机10或远程机30的任一个都可以启动程序邻域应用。在本地机10、20的显示屏12、22上显示结果。在基于图形窗口的实现中,可以在程序邻域图形窗口中显示结果,并可以在该窗口中用图形符号表示每个授权的应用程序。在一个实施例中,程序邻域应用滤除掉未授权本地机10执行的应用程序,仅显示授权的(即可用的)程序。在其他实施例中,程序邻域应用可以显示授权和未授权的应用。在不滤除未授权应用而加以显示的时候,可以提供通知,表明这种应用是不可用的。或者, 程序邻域应用可以向本地机10、20的用户报告远程机30所持有的所有应用,而不标明授权或未授权本地机10、20执行哪些应用。随后可以在本地机10、20试图运行这些应用之一时决定授权情况。本地机10可以请求从远程机30进行应用枚举。应用枚举使本地机10的用户能够看到每个发布的应用的名称。在一个实施例中,无论用户是否有执行应用的授权,本地机10的用户都可以看到应用名称。在另一个实施例中,用户仅看到授权用户执行的那些应用的名称。根据本地机10运行的具体过程,应用枚举请求传送到ICA浏览器子系统260、到程序邻域子系统270或到公共应用子系统524。例如,当本地机10在运行程序邻域应用时,将应用枚举请求发送到远程机30上的程序邻域子系统270。当本地机10通过网页提出枚举请求时,该请求传送到公共访问点子系统524。对这些实施例而言,在本地机10希望枚举应用时,公共应用子系统524充当着程序邻域子系统270、ICA浏览器子系统260和公共应用子系统的初始访问点。在一些实施例中,当本地机10通过网页提出枚举请求时,托管web服务器的中间远程机30接收该请求并将请求转发到远程机30’。在接收到枚举请求时,公共应用子系统524向持久存储器230查询所有应用的列表。对于从程序邻域子系统270和公共访问点645子系统接收的请求,根据本地机10的用户的信任状对这一应用列表进行过滤(即用户仅看到用户被授权的那些应用)。本地机10还可以请求远程机枚举。远程机枚举使本地机10的用户能够看到农场38中的远程机列表。在一个实施例中,可以根据远程机类型对远程机列表进行过滤,这是由该远程机上的专用远程机子系统决定的。根据本地机120运行的具体过程,将远程机枚举请求传送到ICA浏览器子系统260或公共访问点子系统645。例如,当本地机120通过网页提出远程机枚举请求时,该请求传送到公共访问点子系统645。对这些实施例而言,公共远程机子系统300充当着ICA浏览器子系统260和公共访问点645子系统的初始访问点。在接收到远程机枚举请求时,公共远程机子系统从持久存储器230查询所有远程机列表。任选地,根据远程机类型过滤该远程机列表。图3A是示出了本地机10启动执行程序邻域应用的过程的另一实施例的方框图,在该实例中是通过万维网启动的。本地机10执行网络浏览器应用80,例如由加利福尼亚Mountain View 的 NETSCAPE Communications, Inc.制造的 NETSCAPE NAVIGATOR,或者由华盛顿 Redmond 的 Microsoft Corporation 制造的 MICROSOFT INTERNET EXPLORER,或者由加利福尼亚Mountain View的Mozilla Foundation制造的FIREFOX,或者由挪威奥斯陆的 OPERA Software ASA 制造的 OPERA,或者由加利福尼亚 Cupertino 的 Apple Computer,Inc.制造的 SAFARI。本地机10通过网络浏览器80发出请求82,希望访问对应于远程机30上驻留的HTML页面的统一资源定位符(URL)地址。在一些实施例中,由远程机30向本地机10返回的第一个HTML页面84是视图识别本地机10的认证页面。仍然参考图3A,一旦本地机10获得远程机30的认证,远程机30准备并向本地机10发送HTML页面88,该页面包括程序邻域窗口 58,该窗口中给出了表明本地机10已经访问过的应用程序的图形符号57、57’。本地机10的用户通过点击该图符57来启用图符57表示的应用的执行。在一些实施例中,远程机30代表本地机10的用户执行程序邻域应用。在这些实施例之一中,远程机30是位于本地机10和远程机30’之间的中间远程机。参考图3B,流程图示出了通过在web服务目录中的⑶I发布提供本地机可用的多个应用程序所采取的步骤的一个实施例。Web发布工具170接收要发布的应用(例如GUI应用)的web服务描述和访问信息(步骤300)。在一个实施例中,Web服务描述包括上述服务·信息(例如,提供web服务的单位名称、服务类型、服务的文本描述和SAP)。访问信息例如可以包括发布的应用名称、传输控制协议(TCP)浏览服务器农场地址和MetaFrame服务器IP地址。在一些实施例中,访问信息指定穿过网络或安全网关或网桥装置所用的地址和权证。然后web发布工具170构建服务发布请求以请求发布web服务(例如⑶I应用)(步骤305)。在一个实施例中,服务发布请求包括SAP。在一些实施例中,SAP是一种包括web服务器30’的web地址和发布服务器插件165的URL。此外,web地址可以是通用资源标识符(URI),这是引用web上目标的名称和地址类型的通用术语。URL是一种URI。URI的实例为web服务器30’的名称(例如“web-server”)和用于发布服务器插件165的CGI脚本名称(例如 “dynamic-component”)。Web发布工具170在持久大容量存储器225中存储与SAP相关联的SAP项(步骤310)。在一些实施例中,Web发布工具170还将所发布的应用信息(例如ICA-published-app-infο)与⑶I应用关联起来。在其他实施例中,web发布工具170还包括服务发布请求中的密钥,以标识内容服务器30在持久大容量存储器225中存储的SAP项。例如,该密钥可以具有值“ 123456677 ”。标识web服务器30’的SAP、发布服务器插件165的CGI脚本名称和上述密钥的实例为“http: //web-server/dynamic-component/ app=l23456677.,,。与上述SAP相关联的SAP项的实例为“密钥=123456677,值=ICA-published-app-info”。该密钥可以是任意长度(例如56比特密钥,128比特密钥)。在一个实施例中,该密钥为密码随机数。该密钥还可以提供对密钥持有者的访问权。虽然用密钥进行示例,但可以使用任何手段来为持久大容量存储器225中存储的SAP项提供一种形式的安全措施。
Web发布工具170向内容服务器30提供服务发布请求,希望在web服务目录160中进行发布(步骤315)。此外,在一个实施例中,内容服务器30向本地机10发送SAP的密钥,请求特定web服务,以便在随后定位SAP项时使用。在一个实施例中,发布服务发布请求使本地机10的用户能够访问该服务。在一个实施例中,利用弗罗里达Fort Lauderdale的Citrix Systems, Inc.开发的NFUSE在web服务目录160上发布⑶I应用。在一些实施例中,⑶I应用的发布者利用Application Launching And Embedding (ALE)定制在web服务目录160上对⑶I应用的发布,ALE也是由Citrix Systems, Inc.开发的。ALE使得能够从HTML页面启动GUI应用,或者能够将应用嵌入到HTML页面中。本地机10然后从web服务目录160查询服务名称(步骤320)。内容服务器30从本地机10接收查询(步骤325)并在web服务目录160中找到所请求的服务名称。在另一个实施例中,本地机10的用户在web服务目录160中浏览,直到定位出本地机10的用户正在寻找的特定服务名称为止。虽然以本地机10进行了示例,其实任何web服务目录客户端(例如UDDI客户端或LDAP浏览器)都可以查询或浏览web服务目录160以发现所发布的web服务。
在定位出与所接收的查询相关联的SAP时,内容服务器30向本地机10发送SAP(步骤330)。本地机10接收SAP (步骤335)并从该SAP判定发布服务器插件165的地址。本地机10随后向web服务器30’发送对⑶I应用的请求(步骤340)。在一些实施例中,来自本地机10的请求是从网络浏览器11传输到web服务器30’的HTTP请求。在其他实施例中,在本地机10上执行的应用(例如通常的目录浏览器或HTML Ul)从内容服务器30接收SAP并将SAP作为要旨提供给网络浏览器11。网络浏览器I然后可以自动地向web服务器30’发送(对⑶I应用的)HTTP请求。根据前述实例,发给web服务器30’的应用请求的具体实例为 “http: //web-server/dynamic-component/ app=123456677. ”。Web服务器30’,尤其是发布服务器插件165接收与SAP相关的应用请求(步骤345)并确定与该请求相关的SAP项(步骤350)。在一个实施例中,发布服务器插件165从本地机10接收请求并检索与已经(作为SAP项的一部分)存储在持久大容量存储器225中的请求相关联的所发布的应用信息。在一些实施例中,发布服务器插件165使用本地机10从内容服务器30接收的SAP (或SAP的一部分)作为密钥来访问存储在持久大容量存储器225中的适当服务项(例如已发布的应用信息)。发布服务器插件165然后构建具有已发布的应用信息(例如应用服务器30"的HTTP地址)的文件或文档(步骤352)并将该文档发送到本地机10 (步骤355)。发布服务器插件165构建该文件,使得该文件具有与应用客户端13兼容的格式。在一个实施例中,该文档为多用网络邮件扩展(MME)或安全MME (S/MME)文档。在另一个实施例中,该文档为含有ICA web客户端嵌入对象HTML标记的HTML文档。在又一个实施例中,该文档为含有应用流传输客户端嵌入对象HTML标记的HTML文档。网络浏览器11随后接收该文档并视图打开该文档。在一个实施例中,如果应用客户端13未安装在本地机10上,则本地机10与应用服务器30〃通信以下载并安装该应用客户端13。在安装应用客户端13时,或者,如果应用客户端13已经安装在本地机10上了,本地机10启动应用客户端13以查看从web服务器30’接收的文档(步骤360)。一旦在本地机10上安装并执行应用客户端13,应用服务器30〃则执行该应用并在应用客户端13上显示该应用(步骤365)。在替换实施例中,应用服务器30"向应用客户端13发送包括该应用的多个应用文件以在本地机10上执行,如下文参考图7要进一步详述的。在另一个实施例中,本地机10查看该文档(即使在启动应用客户端13之前)并使用文档中的信息来从应用服务器30"获得GUI应用。在本实施例中,GUI应用的显示包括应用客户端30〃的安装和执行情况。此外,文档的查看可以是对本地机10的用户透明的。例如,本地机10可以从web服务器30’接收文档并在自动从应用服务器30〃请求⑶I应用之前解释该文档。于是,应用客户端13向已发布的应用、桌面、桌面文档和应用客户端13支持的任何其他应用提供基于服务的访问。应用客户端13能够向其提供访问的应用实例包括但不限于WINDOWS桌面、均由华盛顿Redmond的Microsoft Corporation开发的诸如MICROSOFT EXCEL、WORD 和 POWERPOINT 的 WINDOWS 文档、诸如由加利福尼亚 Palo Alto 的SUN Microsystems开发的SUN SOLARIS的Unix桌面以及由北卡罗来纳Durham的Red Hat,Inc.销售的 GNU/Linux 等。
在一些实施例中,响应于策略引擎对本地机是否可以以及如何访问应用的判断,提供本地机10可用的多个应用程序的枚举(步骤204)。策略引擎可以在做出决定之前收集有关本地机的信息。现在参考图4A,示出了根据本发明构建的计算机网络的一个实施例,其包括本地机10、收集代理404、策略引擎406、策略数据库408、农场38和应用服务器30’。在一个实施例中,策略引擎406为远程机30。在另一个实施例中,应用服务器30’为远程机30’。尽管在图4A所示的实施例中仅示出了一个本地机10、收集代理404、策略引擎406、农场38和应用服务器30’,但应当理解,该系统可以对这些部件中任一种或每种提供多个。简而言之,当本地机10向策略引擎406发送访问应用的请求410时,收集代理404与本地机10通信,检索关于本地机10的信息,并将本地机信息412发送到策略引擎406。策略引擎406通过将来自策略数据库408的策略施加到所接收的信息412上来做出访问控制决定。更详细地讲,本地机10向策略引擎406发送对资源的请求410。在一个实施例中,策略引擎406驻留在应用服务器30’上。在另一个实施例中,策略引擎406为远程机30。在又一个实施例中,应用服务器30’从本地机10接收请求410并将请求410发送到策略引擎406。在又一个实施例中,本地机向远程机30’’’发送对资源的请求410,远程机30’’’将请求410发送到策略引擎406。在一些实施例中,本地机10通过网络连接发送请求410。该网络可以是局域网(LAN)、城域网(MAN)或诸如因特网的广域网(WAN)。本地机10和策略引擎406可以通过各种连接连接到网络,各种连接包括标准电话线、LAN或WAN链接(例如TI、T3、56kb、X. 25 )、宽带连接(ISDN、帧中继、ATM)和无线连接。本地机10和策略引擎10之间的连接可以使用各种数据链路层通信协议(例如TCP/IP、IPX、SPX、NetBIOS、NetBEUI、SMB、以太网、ARCNET、光纤分布式数据接口(FDDI)、RS232、IEEE 802. 11、IEEE 802. 11a、IEE 802. lib、IEEE 802. Ilg和直接异步连接)。该连接也可以是上述通信链路150。在接收到请求时,策略引擎406启动由收集代理404进行的信息收集。收集代理404收集有关本地机10的信息并将信息412发送到策略引擎406。在一些实施例中,收集代理404通过网络连接收集并发送信息412。在一些实施例中,收集代理404包括字节码,例如以字节码程序设计语言JAVA编写的应用。在一些实施例中,收集代理404包括至少一个脚本。在这些实施例中,收集代理404通过在本地机10上运行至少一个脚本来收集信息。在一些实施例中,收集代理包括本地机10上的活动X控件。活动X控件是一种实现一组界面的专用部件对象模型(COM)的对象,所述界面使其看起来和运行起来像控件。在一个实施例中,策略引擎406向本地机10发送收集代理404。在一个实施例中,策略引擎406在收集代理404已经向策略引擎406发送过信息412之后要求第二次执行收集代理404。在本实施例中,策略引擎406可能没有充分的信息412来判断本地机10是否满足特定的条件。在其他实施例中,策略引擎406响应于所接收的信息412要求多次执行收集代理404。在一些实施例中,策略引擎406向收集代理404发送指令,确定收集代理404收集的信息类型。在这些实施例中,系统管理员可以配置从策略引擎406发送到收集代理404的指令。这对所收集的信息类型提供了更大控制。由于对所收集的信息类型更大的控制, 这也扩展了策略引擎406能够做出的访问控制决定的类型。收集代理404所收集的信息412包括但不限于本地机10的机器ID、操作系统类型、操作系统补丁的存在、已安装网卡的MAC地址、客户端装置上的数字水印、活动目录中的成员身份、病毒扫描器的存在、个人防火墙的存在、HTTP报头、浏览器类型、装置类型、诸如网际协议地址或地址范围的网络连接信息、远程机30的机器ID、包括改变时区的调节的访问请求的日期或时间以及授权信任状。在一些实施例中,装置类型为个人数字助理。在其他实施例中,装置类型为蜂窝电话。在其他实施例中,装置类型为膝上电脑。在其他实施例中,装置类型为台式计算机。在其他实施例中,装置类型为因特网信息站。在一些实施例中,数字水印包括数据嵌入。在一些实施例中,水印包括插入到文件中的图案以提供有关文件的源信息。在其他实施例中,水印包括数据散列文件以提供窜改检测。在其他实施例中,水印提供有关文件的版权信息。在一些实施例中,网络连接信息涉及到带宽能力。在其他实施例中,网络连接信息涉及到网际协议地址。在其他实施例中,网络连接信息由网际协议地址构成。在一个实施例中,网络连接信息包括标识本地机向其提供认证信任状的登录代理的网络分区。在一些实施例中,授权信任状包括多个类型的认证信息,包括但不限于用户名、客户端名称、客户端地址、口令、PIN、语音示例、一次性通过代码、计量生物学数据、数字证书、权证等以及其组合。在接收到所收集的信息412之后,策略引擎406基于所接收的信息412做出访问控制决定。现在参考图4B,方框图示出了策略引擎406的一个实施例,包括第一部件420,第一部件包括条件数据库422和登录代理424,还包括第二部件430,第二部件包括策略数据库432。第一部件420将来自条件数据库422的条件施加到所接收的关于本地机10的信息并判断所接收的信息是否满足该条件。在一些实施例中,条件可以要求本地机10执行特定的操作系统以满足该条件。在一些实施例中,条件可以要求本地机10执行特定的操作系统补丁以满足该条件。在其他实施例中,条件可以要求本地机10为每个安装的网卡提供MAC地址以满足该条件。在一些实施例中,条件可以要求本地机10表明在特定活动目录中的成员身份以满足该条件。在另一个实施例中,条件可以要求本地机10执行病毒扫描器以满足该条件。在其他实施例中,条件可以要求本地机10执行个人防火墙以满足该条件。在一些实施例中,条件可以要求本地机10包括特定的装置类型以满足该条件。在其他实施例中,条件可以要求本地机10建立特定类型的网络连接以满足该条件。如果所接收的信息满足条件,第一部件420在数据集426中存储该条件的标识符。在一个实施例中,如果该信息使条件为真,则所接收的信息满足条件。例如,条件可以要求安装特定的操作系统。如果本地机10具有该操作系统,则条件为真且得到满足。在另一个实施例中,如果该信息使条件为假,则所接收的信息满足条件。例如,条件可以查询本地机10上是否存在间谍软件。如果本地机10不含有间谍软件,该条件为假且得到满足。在一些实施例中,登录代理424驻留在策略引擎406之外。在其他实施例中,登录代理424驻留在策略引擎406上。在一个实施例中,第一部件420包括登录代理424,登录 代理424启动对有关本地机10的信息收集。在一些实施例中,登录代理424还包括数据存储器。在这些实施例中,数据存储器包括收集代理可以搜集信息的条件。该数据存储器与条件数据库422不同。在一些实施例中,登录代理424通过执行收集代理404启动信息搜集。在其他实施例中,登录代理424通过将收集代理404发送到本地机10以在本地机10上执行来启动信息搜集。在其他实施例中,登录代理424在接收到信息412之后启动额外的信息收集。在一个实施例中,登录代理424还接收信息412。在本实施例中,登录代理424基于所接收的信息412生成数据集426。在一些实施例中,登录代理424通过将来自数据库422的条件施加到从收集代理404接收的信息来生成数据集426。在另一个实施例中,第一部件420包括多个登录代理424。在本实施例中,多个登录代理424中的至少一个位于本地机10可以从其发送资源请求的每个网域上。在本实施例中,本地机10向特定的登录代理424发送资源请求。在一些实施例中,登录代理424向策略引擎406发送本地机10从其访问登录代理424的网域。在一个实施例中,本地机10从其访问登录代理424的网域被称为本地机10的网络分区。条件数据库422存储第一部件420施加到所接收的信息上的条件。策略数据库432存储第二部件430施加到所接收的数据集426上的策略。在一些实施例中,条件数据库422和策略数据库432在与ODBC兼容的数据库中存储数据。例如,条件数据库422和策略数据库432可以被提供为由加利福尼亚Redwood Shores的ORACLE Corporation制造的ORACLE数据库。在其他实施例中,条件数据库422和策略数据库432可以是华盛顿Redmond的 Microsoft Corporation 制造的 Microsoft ACCESS 数据库或 Microsoft SQL server 数据库。在第一部件420向条件数据库422中的每个条件施加所接收的信息之后,第一部件向第二部件430发送数据集426。在一个实施例中,第一部件420向第二部件430仅发送数据集426。因此,在本实施例中,第二部件430不接收信息412,仅接收所满足的条件的标识符。第二部件430接收数据集426并通过基于数据集426内标识的条件施加来自策略数据库432的策略来做出访问控制决定。在一个实施例中,策略数据库432存储被施加到所接收的信息412的策略。在一个实施例中,由系统管理员至少部分地指定策略数据库432中存储的策略。在另一个实施例中,用户执行策略数据库432中存储的策略中的至少一些。将用户指定的策略存储为优选项。策略数据库432可以存储在易失性或非易失性存储器中,或者,例如通过多个服务器分布。在一个实施例中,仅当满足一个或多个条件时策略才允许访问资源。在另一个实施例中,策略允许访问资源但禁止将资源传输到本地机10。另一种策略可以根据请求访问的本地机10位于安全网络之内而建立连接。在一些实施例中,该资源为应用程序,且本地机10已请求执行应用程序。在这些实施例之一中,策略可以允许在本地机10上执行应用程序。在这些实施例的另一个中,策略可以使本地机10能够接收包括应用程序的文件流。在本实施例中,可以在隔离环境中存储并执行文件流。在这些实施例中的又一个中,策略可以仅允许在诸如应用服务器的远程机上执行应用程序,并要求远程机向本地机10发送应用输出数据。现在参考图4C,流程图示出了策略引擎406基于所接收的有关本地机10的信息做出访问控制决定所采取的步骤的一个实施例。在接收所收集的有关本地机10的信息时 (步骤450),策略引擎406基于信息生成数据集(步骤452)。数据集426包含所接收的信息412所满足的每个条件的标识符。策略引擎406将策略施加到数据集426中的每个标识的条件上。该应用产生出本地机10可以访问的资源枚举(步骤454)。策略引擎406然后向本地机10提供枚举。在一些实施例中,策略引擎406生成用于向本地机提供枚举的超级文本标志语言(HTML)文档。参考图4D,示出了根据本发明构建的网络的一个实施例,其包括本地机10、收集代理404、策略引擎406、策略数据库408、条件数据库410、本地机20、会话服务器420、所存储应用数据库422、远程机30’、第一数据库428、远程机30〃和第二数据库432。简而言之,当本地机10向访问控制服务器406发送访问应用程序的请求412时,收集代理404与本地机10通信,检索关于本地机10的信息,并将本地机信息414发送到策略引擎406。如以上在图4A和4B中所述,策略引擎406做出访问控制决定。本地机10接收对与本地机10相关联的可用应用的枚举。在一些实施例中,会话服务器420在本地机10和与本地机10相关联的多个应用会话之间建立连接。在其他实施例中,策略引擎406判定本地机10具有检索包括应用的多个应用文件并在本地执行应用程序的授权。在这些实施例之一中,远程机30’存储应用会话数据和包括应用程序的多个应用文件。在这些实施例的另一个中,本地机10与存储应用会话数据和包括应用程序的多个应用文件的远程机30’建立应用流传输会话。现在参考图4E,流程图示出了会话服务器420为本地机10提供对其相关联应用会话的访问所采取的步骤的一个实施例。会话服务器420从含有策略引擎406所做出的访问控制决定的策略引擎406接收有关本地机10的信息(步骤480)。会话服务器420生成相关应用枚举(步骤482)。会话服务器420可以将本地机10连接到相关应用(步骤484)。在一个实施例中,该信息还包括本地机信息414。在另一个实施例中,该信息包括对在本地执行应用程序的授权。会话服务器420生成相关应用枚举(步骤482)。在一些实施例中,策略引擎406标识已经与本地机10相关联的多个应用会话。在其他实施例中,会话服务器420标识与本地机10相关联的已存储应用会话。在这些实施例中的一些中,会话服务器420在从策略引擎406接收信息时自动标识所存储的应用会话。在一个实施例中,所存储应用数据库422驻留在会话服务器420上。在另一个实施例中,所存储应用数据库422驻留在策略引擎406上。所存储应用数据库422含有与农场38中执行应用会话或提供对应用会话数据和包括应用程序的应用文件的访问的多个远程机相关的数据。在一些实施例中,识别与本地机10相关联的应用会话需要查询与一个或多个远程机相关联的所存储数据。在这些实施例中的一些中,会话存储器420查询与一个或多个远程机相关联的所存储数据。在这些实施例中的其他实施例中,策略引擎406查询与一个或多个远程机相关联的所存储数据。在一些实施例中,第一应用会话在远程机30’上运行,第二应用会话在远程机30〃上运行。在其他实施例中,所有的应用会话都在农场38之内的单个远程机30上运行。会话服务器420包括与用户发起的应用会话相关的信息。会话服务器可以存储在易失性或非易失性存储器中,或者,例如通过多个服务器分布。表I示出了在示例性会话服务器420的一部分中包括的数据:___
应用会话应用会话I 应用会话2 应用会话3¥户IDI用户2用户I
客户端]D 第一客户端__第一客户端
客户端地『172.16.0.50172. 16. O. 50 '
状态_活云力_断开连接活动_
胃^¥μ!Γ~数据库电子表格
过程数 I_3_2_
丽务器丽Ml A 服务器A 服务器B 服务器地址 | 72·16·2·55 |l72. 16. 2. 55 |l72. 16. 2. 55 '
表I
表I中的示例性会话服务器420包括将每个应用会话与发起该应用会话的用户相关联的数据、当前用户从其连接到远程机30’的客户端计算机10或20的身份(如果有的话)、以及客户端计算机10或20的IP地址。示例性会话服务器420还包括每个应用会话的状态。例如,应用会话状态可以是“活动”(表示用户连接到应用会话)或“断开连接”(表示用户未连接到应用会话)。在替换实施例中,也可以将应用会话状态设置成“执行中-断开连接”(表示用户已经从应用会话断开连接,但应用会话中的应用仍在执行)或“停机-断开连接”(表示用户断开连接且应用会话中的应用不在执行中,但它们的运行状态恰在存储断开连接之前)。会话服务器420还存储表示在每个应用会话中执行的应用116的信息以及表示服务器上每个应用的过程的数据。在远程机30’为农场38的部分的实施例中,会话服务器420是动态存储器的至少一部分,并且还包括表I中最后两行中的数据,该数据表明每个应用正在/曾经在农场38中哪个远程机30执行以及远程机30的IP地址。在替换实施例中,会话服务器420包括用于每个应用会话中的每个应用的状态指示符。例如,在表I的实例中,存在三个应用会话,即应用会话I、应用会话2和应用会话3。应用会话I与当前正使用终端I的用户I相关。终端I的IP地址为152. 16. 2. 50。应用会话I的状态为活动,在应用会话I中正在执行文字处理程序。在服务器A上正在执行作为过程I的文字处理程序。服务器A的IP地址为152. 16. 2. 55。表I中的应用会话2是断开连接的应用会话118的实例。应用会话2与用户2相关,但应用会话2未连接到本地机10或20。应用会话2包括在IP地址152. 16. 2. 55处在服务器A上作为过程3执行的数据库程序。应用会话3是用户如何能够与运行在不同远程机30上的应用会话交互的实例。如应用会话I那样,应用会话3与用户I相关。应用会话3包括在IP地址152. 16. 2. 56处在服务器B上作为过程2执行的电子表格程序,而应用会话I中包括的应用会话是在服务器A上执行的。在另一个实例中,用户可以通过在诸如服务器A的远程机30’上执行的应用会话访问第一应用程序,同时跨过应用流传输会话与诸如服务器B的第二远程机30"通信,以从第二远程机30"检索第二应用程序以在本地执行。本地机10的用户在无法满足第一应用程序的执行条件的同时,可能已经获取了执行第二应用程序的授权。在一个实施例中,将会话服务器420配置成接收断开请求,以断开与本地机10相关联的应用会话并响应于该请求断开该应用会话。在从应用会话断开本地机10之后,会话服务器420继续执行应用会话。在本实施例中,会话服务器420访问所存储应用数据库422并更新与每个断开连接的应用会话相关联的数据记录,使得该记录表明与本地机10相关联的应用会话已断开。在接收到与连接到网络的本地机相关联的认证信息之后,会话服务器420查询所 存储应用数据库422以查明是否有任何如下的活动应用会话,该活动应用会话与本地机的用户相关联,但是如果该认证信息例如与本地机20相关联,该活动应用会话与不同的本地机,例如本地机10相连接。在一个实施例中,如果会话服务器420发现了任何这种活动应用会话,会话服务器420自动从本地机10断开该应用会话并将应用会话连接到当前本地机20。在一些实施例中,所接收的认证信息将会限制本地机10可以重新连接到的应用会话。在其他实施例中,在可能以将对本地机10否决授权的情况下,所接收的认证信息授权在本地机20上执行应用程序。在这些实施例之一中,会话服务器420可以提供本地机访问信息以检索应用程序从而在本地执行。接收请求以执行被枚举的应用(步骤206)。在一个实施例中,本地机10的用户从所接收的可用应用枚举中选择要执行的应用。在另一个实施例中,用户独立于所接收的枚举选择要执行的应用。在一些实施例中,用户通过选择客户端代理在本地机10上提供的应用图形表示来选择要执行的应用。在其他实施例中,用户通过选择web服务器或其他远程机30’ ’ ’上提供给用户的应用图解表示来选择要执行的应用。在其他实施例中,用户请求访问文件。在这些实施例之一中,需要执行应用以为用户提供对文件的访问。在这些实施例的另一个中,在选择要访问的文件时自动选择要执行的应用。在这些实施例中的又一个中,在请求访问文件之前,将应用与一种文件类型相关联,从而能够在识别与所请求文件相关联的文件类型时自动选择应用。在一个实施例中,被枚举的应用包括多个应用文件。在一些实施例中,多个应用文件驻留在远程机30’上。在其他实施例中,多个应用文件驻留在独立的文件服务器或远程机30〃上。在其他实施例中,可以将多个应用文件传输到本地机10。在其他实施例中,可以在向本地机10传输多个应用文件中的第二文件之前执行多个应用文件中的文件。在一些实施例中,远程机30从远程机30’检索与被枚举的应用相关的信息。在这些实施例之一中,远程机30接收持有多个应用文件的远程机30〃的标识。在这些实施例的另一个中,远程机30接收多个应用文件的位置的标识,该标识符合通用命名标准(UNC)。在这些实施例中的又一个中,该标识包括网络位置和应用流传输协议的套接字。
在一个实施例中,远程机30检索含有有关被枚举的应用的信息的文件。该文件可以包括持有被枚举的应用的服务器位置的标识。该文件可以包括持有被枚举的应用的多个版本的标识。该文件可以包括多个应用文件的枚举,该枚举包括被枚举的应用。该文件可以包括压缩文件的标识,该压缩文件包括多个应用文件,该多个应用文件包括被枚举的应用。该文件可以包括执行被枚举的应用的机器要满足的前提条件的标识。该文件可以包括与被枚举的应用相关联的数据文件的枚举。该文件可以包括要在执行被枚举的应用的机器上执行的脚本的枚举。该文件可以包括与被枚举的应用相关联的注册数据的枚举。该文件可以包括在隔离环境之中执行被枚举的应用的实施例中使用的规则的枚举。在一个实施例中,该文件可以被称为“清单”文件。结合以下图21更详细地描述该文件可以含有的信息。在一些实施例中,远程机30向本地机10的被标识特征应用策略。在这些实施例之一中,远程机30响应于被标识的特征标识要执行的被枚举的应用版本。在这些实施例的另一个中,远程机30做出决定,执行与本地机10的特征兼容的被枚举的应用版本。在这些实施例中的又一个中,远程机30做出决定,执行与本地机10上执行的操作系统兼容的被枚举的应用版本。在又一个实施例中,远程机30做出决定,执行与本地机10上的操作系统的 修订级(revision level)兼容的被枚举的应用版本。在这些实施例之一中,远程机30做出决定,执行与本地机10上的操作系统指定的语言兼容的被枚举的应用版本。响应于策略选择执行被枚举的应用的预定数量的方法之一,所述预定数量的方法包括用于被枚举的应用的应用流传输的方法(步骤208)。在一个实施例中,响应于向所接收的与本地机10相关的信任状应用策略来做出选择。在一些实施例中,通过如以上在图4A、图4B和图4C所述的策略引擎406的策略引擎做出选择。在其他实施例中,接收信任状和执行被枚举的应用的请求的远程机30还包括这样的策略引擎406。在一个实施例中,预定数量的方法包括在远程机30’上执行被枚举的应用的方法。在另一个实施例中,预定数量的方法包括在本地机10上执行被枚举的应用的方法。在又一个实施例中,预定数量的方法包括在第二远程机30’上执行被枚举的应用的方法。在一些实施例中,预定数量的方法包括跨越应用流传输会话向本地机10提供被枚举的应用的方法。在这些实施例之一中,本地机10包括流传输服务代理,该流传输服务代理能够发起与远程机30’的连接并从远程机30’接收所发送的数据包流。数据包流可以包括包括被枚举的应用的应用文件。在一些实施例中,应用文件包括与应用程序相关联的数据文件。在其他实施例中,应用文件包括执行应用程序所需的可执行文件。在其他实施例中,应用文件包括元数据,元数据包括与文件相关的信息,例如位置、兼容性要求、配置数据、注册数据、在隔离环境中使用的执行脚本规则标识或授权要求。在一些实施例中,经流传输的应用在传输包括流传输应用的多个应用文件中的每个应用文件之前执行。在这些实施例之一中,在本地机10接收到多个应用中的一个应用文件时开始执行经流传输的应用。在这些实施例的另一个中,在本地机10接收到多个应用文件中的可执行应用文件时开始执行经流传输的应用。在这些实施例中的又一个中,本地机10执行多个应用文件中第一个接收的应用文件,该第一个接收的应用文件请求访问多个应用文件中的第二应用文件。在一个实施例中,流传输的应用在本地机10上执行,而不永久驻留在本地机10上。在本实施例中,流传输的应用可以在本地机10上执行并在流传输的应用终止时从本地机10被删除。在另一个实施例中,在将每个应用文件的预展开拷贝存储在本地机10上之后在本地机10上执行流传输的应用。在又一实施例中,在将每个应用文件的拷贝存储在本地机上的隔离环境中之后,在本地机10上执行流传输的应用。在又一个实施例中,在将每个应用文件的拷贝存储在本地机10上的高速缓存中之后在本地机10上执行流传输的应用。在一个实施例中,响应于本地机10可能接收到流传输的应用文件的判决,从预定数量的方法中选择将应用流传输到本地机10的方法。在另一个实施例中,响应于本地机10已经具有在本地执行流传输的应用文件授权的判决,从预定数量的方法中选择将应用流传输到本地机10的方法。在其他实施例中,预定数量的方法包括向本地机10提供应用输出数据的方法,所述应用输出数据是在远程机30上执行被枚举的应用而生成的。在这些实施例之一中,远程机30是接收执行被枚举的应用的请求的远程机30。在这些实施例中的另一个中,远程机30为诸如文件服务器或应用服务器的第二远程机30’。在一些实施例中,被枚举的应用驻留在执行被枚举的应用的远程机30’上。在其他实施例中,执行被枚举的应用的远程机30’ 首先跨越应用流传输会话从第二远程机30’接收被枚举的应用。在这些实施例之一中,远程机30’包括流传输服务代理,该流传输服务代理能够发起与第二远程机30’的连接并从第二远程机30’接收所发送的数据流。在这些实施例的另一个中,可以利用负载均衡技术标识第二远程机30’。在这些实施例的又一个中,可以基于与远程机30’的接近情况标识第二远程机30’。将结合以下的图9更详细地描述这些实施例。在一些实施例中,远程机30从执行被枚举的应用的预定数量的方法中选择用于将被枚举的应用流传输到远程机30、在远程机30上执行被枚举的应用并向本地机10提供执行被枚举的应用而产生的应用输出数据的方法。在这些实施例之一中,远程机30响应于本地机10的评估而选择方法。在这些实施例的另一个中,响应于将策略应用于评估本地机10来做出判决。在这些实施例的又一个中,响应于对所接收的信任状的评估做出判决。在一个实施例中,远程机30接收包括被枚举的应用的多个应用文件。在另一个实施例中,远程机30通过诸如ICA表示层协议或远程桌面窗口表示层协议或X-窗口表示层协议的表示层协议提供应用输出数据。在一些实施例中,远程机30还提供与被枚举的应用相关联的访问信息,该访问信息是响应于选定的方法而产生的。在这些实施例之一中,访问信息向本地机10提供所选定的执行被枚举的应用程序的方法的表示。在这些实施例的另一个中,访问信息包括被枚举的应用的位置标识,该标识符合通用命名标准(UNC)。在这些实施例的又一个中,访问信息包括会话管理服务器的标识。在一些实施例中,访问信息包括启动权证(launch ticket),启动权证包括认证信息。在这些实施例之一中,本地机10可以使用该启动权证来认证从远程机30接收的访问信息。在这些实施例的另一个中,本地机10可以使用启动权证来向持有被枚举的应用的第二远程机30认证它自身。在这些实施例的又一个中,远程机30响应于本地机10对启动权证的请求在访问信息中包括启动权证。现在参考图5,方框图示出了本发明的一个实施例,其中,本地机10请求执行应用程序,而远程机30选择执行应用程序的方法。在一个实施例中,远程机30从本地机10接收信任状。在另一个实施例中,远程机30从本地机10接收对可用应用枚举的请求。
在一些实施例中,提供了多个冗余的远程机30、30’、30〃、30’ ’ ’和30’ ’ ’ ’。在这些实施例之一中,例如,可以有多个文件服务器、多个会话管理服务器、多个分级机、多个web接口或多个访问套件控制台。在这些实施例的另一个中,如果远程机出现故障,则选择冗余的远程机30来提供出故障机器的功能。在其他实施例中,尽管将远程机30、30’、30〃、30’ ’ ’和30’ ’ ’ ’以及web接口 558和访问套件控制台520描述为具有管理服务器、会话管理服务器、分级机、文件服务器、web服务器和访问套件控制台的独立功能,但可以提供具有所有这些机器的功能的单个远程机30。在其他实施例中,远程机30可以提供其他远程机之一或多个的功能和服务。现在更详细地参考图5,方框图示出了提供对应用程序的访问的远程机30的一个实施例。除了上文参考图ID所述的接口和子系统之外,远程机30还可以包括管理通信服务514、XML服务516和管理服务504。管理服务504可以包括应用管理子系统506、服务器管理子系统508、会话管理子系统510和许可管理子系统512。远程机30可以与访问套件控制台520通信。
在一个实施例中,管理服务504还包括专用远程过程调用子系统、MetaFrame远程过程调用(MFRPC)子系统522。在一些实施例中,MFRPC子系统522在远程机30上诸如XML服务516和管理服务504的子系统之间对通信进行路由。在其他实施例中,MFRPC子系统522提供用于调用管理功能的远程过程调用(RPC)接口,提供对管理服务504的RPC调用并向发起调用的子系统返回结果。在一些实施例中,远程机30与诸如以上图4B所述的协议机406的协议机通信。在这些实施例之一中,远程机30与驻留在远程机30’上的协议机406通信。在其他实施例中,远程机30还包括协议机406。远程机30可以与访问套件控制台520通信。访问套件控制台520可以持有管理工具,供远程机30或农场38的管理员使用。在一些实施例中,远程机30利用XML与访问套件控制台520通信。在其他实施例中,远程机30利用简单对象访问协议(SOAP)与访问套件控制台520通信。对于诸如图ID和图5中所述的那些远程机30包括子系统子集的实施例,管理服务可以包括多个子系统。在一个实施例中,每个子系统或者是单线程的或者是多线程的子系统。线程是多任务环境中运行的独立执行流。单线程子系统能够一次仅执行一个线程。多线程子系统能够支持多个并行执行的线程,即,多线程子系统可以同时执行多个任务。应用管理子系统506关于与能够被流传输的多个应用相关的信息。在一个实施例中,应用管理子系统506处理来自其他部件的请求,例如存储、删除、更新、枚举或解析应用的请求。在另一个实施例中,应用管理子系统506处理由与能够被流传输的应用相关的部件发送的请求。可以将这些事件分成三种事件应用发布、应用枚举和应用启动,以下将详细描述每种。在其他实施例中,应用管理子系统506还包括对应用解析、应用公开和应用发布的支持。在其他实施例中,应用管理子系统506使用数据暂存器存储应用性质和策略。服务器管理子系统508处理对于在服务器农场配置中的应用流传输特定的配置。在一些实施例中,服务器管理子系统508还处理需要检索与农场38的配置相关的信息的事件。在其他实施例中,服务器管理子系统508处理由与跨应用流传输提供对应用的访问的远程机相关的其他部件发出的事件和这些远程机的性质。在一个实施例中,服务器管理子系统508存储远程机性质和农场性质。在一些实施例中,远程机30还包括为一个或多个专用应用子系统提供服务的一个或多个公共应用子系统524。这些远程机30也可以具有一个或多个为一个或多个专用远程机子系统提供服务的公共远程机子系统。在其他实施例中,不提供公共应用子系统524,每个专用应用和远程机子系统都实施所有所需的功能。在远程机30包括公共应用子系统524的一个实施例中,公共应用子系统524管理所发布应用的公共性质。在一些实施例中,公共应用子系统524处理需要检索与所发布应用或公共性质相关的信息的事件。在其他实施例中,公共应用子系统524处理由与公共应用或它们的性质相关的其他部件发送的所有事件。公共应用子系统524可以向农场38 “发布”应用,这使得本地机10可以枚举和启动每个应用。通常,在希望能使用该应用的每个远程机30上安装该应用。在一个实施例中,为了发布应用,管理员运行管理工具,执行信息,例如持有该应用的远程机30、每个远程机上的可执行文件名称、要执行应用的本地机所需的能力(例如音频、视频、加密等)以及能 使用该应用的用户列表。将这种执行的信息分成应用特定信息和公用信息。应用特定信息的实例为访问该应用的路径名以及用于运行应用的可执行文件的名称。公用信息(即公共应用数据)例如包括应用的用户友好的名称(例如“Microsoft WORD 2000”)、应用的唯一标识和应用的用户。可以将应用特定信息和公用信息发送到控制持有应用的每个远程机30上的应用的专用应用子系统。专用应用子系统可以将应用特定信息和公用信息写入持久存储器240中。在提供公共应用子系统524时,公共应用子系统524也提供了用于管理农场38中所发布应用的设施。通过公共应用子系统524,管理员能够利用诸如访问套件控制台520的管理工具来管理农场38的应用,以配置应用组并产生这些应用组的应用树形体系。每个应用组可以表示成应用树形体系中的文件夹。应用树形体系中的每个应用文件夹可以包括一个或多个其他应用文件夹和远程机的特定实例。公共应用子系统524提供了生成、移动、重命名、删除和枚举应用文件夹的功能。在一个实施例中,公共应用子系统524在处理应用枚举和应用解析请求时支持应用管理子系统506。在一些实施例中,公共应用子系统524提供了响应于数据文件类型和处理该数据文件类型的应用之间的映射而识别要执行的应用的功能。在其他实施例中,第二应用子系统提供了文件类型关联的功能。在一些实施例中,远程机30还可以包括策略子系统。策略子系统包括用于判断是否可以依据本地机10要执行应用的请求而将应用流传输到本地机10的策略规则。在一些实施例中,策略子系统标识出与访问套件控制台520中发布的流传输的应用相关联的服务器访问选项。在这些实施例之一中,策略子系统将服务器访问选项用作代替策略规则的策略。会话监测子系统510维持和更新与本地机10相关联的应用流传输会话的会话状态并执行应用流传输会话的许可要求。在一个实施例中,会话管理子系统510监测会话并记录事件日志,所述事件例如是应用的启动或应用流传输会话的终止。在另一个实施例中,会话监测子系统510接收从本地机10向远程机30发送的通信,例如心跳消息。在又一个实施例中,会话管理子系统510对来自管理工具,例如访问套件控制台520中的工具的有关会话的查询做出响应。在一些实施例中,管理服务504还包括与会话管理子系统通信的许可管理子系统,以提供并维持对本地机执行应用的许可。在一个实施例中,管理服务504提供用于应用枚举和应用解析的功能。在一些实施例中,管理服务504还提供用于应用启动、会话监测和跟踪、应用发布和许可执行的功倉泛。现在参考图6,方框图示出了包括提供应用枚举的管理服务的远程机30的一个实施例。管理服务504可以利用与XML服务516交互的web接口提供应用枚举。在一个实施例中,XML服务516为本地机10的用户枚举应用。在另一个实施例中,XML服务516实施上述ICA浏览器子系统和程序邻域子系统的功能。XML服务516可以与管理通信服务514交互。在一个实施例中,XML服务516利用管理通信服务514生成应用枚举请求。应用枚举请求可以包括表明在执行被枚举的应用时使用的执行方法的客户端类型。应用枚举请求被发送到公共应用子系统524。在一个实施例中,公共应用子系统524返回与应用枚举请求的客户端类型相关联的应用的枚举。在另一个实施例中,公共应用子系统524返回本地机10 的用户可用的应用枚举,该枚举是响应于向与本地机10相关的信任状应用策略选择的。在本实施例中,策略引擎406可以向收集代理404收集的信任状应用策略,如以上参考图4所述。在又一个实施例中,返回应用枚举并推迟向本地机10应用策略,直到请求执行被枚举的应用为止。管理服务504可以提供应用解析服务,用于识别持有应用的第二远程机30’。在一个实施例中,第二远程机30’是文件服务器或应用服务器。在一些实施例中,管理服务504从包括标识符的文件查询持有应用的多个远程机30。在一个实施例中,管理服务504响应于本地机10执行应用的请求提供应用解析服务。在另一个实施例中,管理服务504识别出能够实施与第一远程机30不同的执行应用的方法的第二远程机30’。在一些实施例中,管理服务504识别出能够将应用程序流传输到本地机10的第一远程机30’以及能够执行应用程序并向本地机10提供执行应用程序所产生的应用输出数据的第二远程机30’。在一个实施例中,Web接口向XML服务516发送应用解析请求。在另一个实施例中,XML服务516接收应用解析请求并将请求发送到MFRPC子系统522。在一个实施例中,MFRPC子系统522识别出所接收的应用解析请求中包括的客户端类型。在另一个实施例中,MFRPC子系统向客户端类型应用策略并决定向本地机10 “流传输”该应用。在本实施例中,MFRPC子系统522可以向应用管理子系统506转发应用解析请求。在一个实施例中,在从MFRPC子系统522接收到应用解析请求时,应用管理子系统506可以识别出作为本地机10的会话管理服务器562工作的远程机30’ ’ ’ ’。在一些实施例中,本地机向会话管理服务器562发送心跳消息。在另一个实施例中,应用管理子系统506可以识别出持有包括要流传输到本地机10的应用的多个应用文件的远程机30’。在一些实施例中,应用管理子系统506使用枚举了多个持有多个应用文件的远程机的文件来识别远程机30’。在其他实施例中,应用管理子系统506识别出IP地址与本地机10的IP地址类似的远程机30’。在其他实施例中,应用管理子系统506识别出IP地址在本地机10可访问的IP地址范围内的远程机30’。在又一个实施例中,MFRPC子系统522向客户端类型应用策略并判定可以在远程机30’上执行该应用,该远程机30’向本地机10发送执行应用产生的应用输出数据。在本实施例中,MFRPC子系统522可以向公共应用子系统524转发应用解析请求以检索远程机30’的宿主机地址的标识符。在一个实施例中,被识别的远程机30’可以利用诸如ICA或RDP或X窗口的表示层协议向本地机发送应用输出数据。在一些实施例中,远程机30’跨越应用流传输会话从第二远程机30’接收应用。在一个实施例中,在完成应用枚举和应用解析时,将访问信息发送到本地机10,该访问信息包括用于执行被枚举的应用的方法的标识和持有被枚举的应用的远程机30’的标识符。在管理服务504确定将要在本地机10上执行被枚举的应用的一个实施例中,web接口创建含有有关被枚举的应用的解析域名信息的文件并将其发送到本地机10。在一些实施例中,可以利用“.rad”扩展名标识该文件。本地机10可以响应于所接收文件的内容执行被枚举的应用。表2示出了该文件中所含信息的一个实施例
权利要求
1.一种用于访问与应用相关联的目录结构中的文件的方法,所述方法包括Ca)拦截应用访问文件的请求;(b)将所述请求重定向到第一隔离环境;(c)确定所述所请求的文件不存在于所述第一隔离环境中;Cd)响应于在包括驻留在远程机上的多个应用文件的目录结构枚举中标识该文件的确定,将所述请求重定向到第二隔离环境;以及(e)响应于所述第二隔离环境不包含所述文件且在枚举中标识该文件的确定,从所述远程机检索所请求的文件。
2.根据权利要求I所述的方法,其中步骤(a)包括拦截应用访问可执行文件的请求。
3.根据权利要求I所述的方法,其中步骤(a)包括拦截应用访问文件的请求,在本地机上执行所述应用的一部分。
4.根据权利要求I所述的方法,其中步骤(a)还包括拦截能够接收应用流的应用访问文件的请求。
5.根据权利要求I所述的方法,其中步骤(b)还包括拦截所述应用访问所述文件的请求,所述应用的至少一部分驻留在所述本地机上的第一隔离环境中。
6.根据权利要求I所述的方法,其中步骤(e)还包括从第二远程机检索所述所请求的文件。
7.根据权利要求I所述的方法,其中步骤(e)还包括通过所述远程机将所请求的文件流传输到所述本地机。
8.根据权利要求I所述的方法,其中步骤(e)还包括在所述第二隔离环境中存储所检索的文件。
9.根据权利要求I所述的方法,其中步骤(e)还包括对所检索的文件加密。
10.根据权利要求I所述的方法,其中步骤(e)还包括以加密形式存储所检索的文件。
11.根据权利要求I所述的方法,还包括如下步骤响应于在所述枚举中未标识所述文件的确定,将对所述文件的请求重定向到所述第一隔离环境之外和所述第二隔离环境之外的环境。
12.根据权利要求I所述的方法,还包括如下步骤Ca)拦截在第三隔离环境中执行的另一应用提出的访问文件的请求;(b)响应于在所述枚举中枚举该文件且所述第二隔离环境不包含所述文件的确定,将所述请求重定向到所述第二隔离环境;以及(h)通过所述第二隔离环境向所述另一应用提供对所述文件的访问。
13.根据权利要求12所述的方法,其中步骤(h)还包括在所述第三隔离环境中存储所述文件。
14.一种用于访问与应用相关联的目录结构中的文件的系统,包括第一隔离环境,应用从所述第一隔离环境执行并请求访问文件;第二隔离环境,其存储与安装在远程机上的多个应用文件相关联的目录结构的枚举; 过滤器驱动程序拦截访问所述文件的请求;将所述请求重定向到所述第一隔离环境;确定所述所请求的文件不存在于所述第一隔离环境中;响应于在所述目录结构枚举中标识该文件的确定将该请求重定向到所述第二隔离环境;以及与所述过滤器驱动程序通信的收发器,所述收发器响应于所述过滤器驱动程序做出的所述第二隔离环境不包含所述文件且在所述枚举中标识该文件的确定,向远程机发送所述重定向的请求并响应于所述请求接收包括所请求的文件的流。
15.根据权利要求14所述的系统,其中所述收发器还包括在所述第二隔离环境中存储流传输的文件。
16.根据权利要求15所述的系统,还包括所述过滤器驱动程序拦截另一应用访问所述文件的请求,所述过滤器驱动程序将所述请求重定向到所述第二隔离环境。
17.根据权利要求14所述的系统,还包括响应于所述收发器在所述第二隔离环境中存储流传输的文件的确定,所述过滤器驱动程序拦截另一应用访问所述文件的请求,所述过滤器驱动程序将所述请求重定向到所述第二隔离环境。
18.根据权利要求14所述的系统,其中所述第二隔离环境还包括高速缓冲存储器元件。
19.根据权利要求14所述的系统,其中所述第二隔离环境还包括在高速缓冲存储器元件中存储所述目录结构的枚举。
20.根据权利要求14所述的系统,其中所述收发器从所述远程机接收包括所请求的文件的流。
21.根据权利要求14所述的系统,其中所述收发器从第二远程机接收包括所请求的文件的流。
全文摘要
用于在应用程序的预定数量的执行方法之间选择的方法,所述方法包括响应于所接收的与本地机相关的信任状提供本地机可用的多个应用的枚举。响应于策略选择执行被枚举的应用的预定数量的方法之一,所述预定数量的方法包括用于所述被枚举的应用的应用流传输的方法。无须从远程位置下载文件即可满足对文件元数据的请求。可以访问与应用程序相关联的目录结构中的文件。本地机可以访问包括应用程序的多个文件。
文档编号G06F9/445GK102929658SQ201210375059
公开日2013年2月13日 申请日期2006年9月28日 优先权日2005年10月7日
发明者J.H.诺尔德, D.R.霍伊, B.J.彼得森, T.N.特雷德, A.S.古亚拉蒂 申请人:茨特里克斯系统公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1