CN101473628A - 用于加速计算环境到远程用户的传送的系统和方法 - Google Patents

用于加速计算环境到远程用户的传送的系统和方法 Download PDF

Info

Publication number
CN101473628A
CN101473628A CNA2007800219712A CN200780021971A CN101473628A CN 101473628 A CN101473628 A CN 101473628A CN A2007800219712 A CNA2007800219712 A CN A2007800219712A CN 200780021971 A CN200780021971 A CN 200780021971A CN 101473628 A CN101473628 A CN 101473628A
Authority
CN
China
Prior art keywords
application
client
server
data file
local machine
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.)
Pending
Application number
CNA2007800219712A
Other languages
English (en)
Inventor
B·J·佩德森
P·桑达拉贾
R·辛哈
T·特里德
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
Priority to CN201510221918.3A priority Critical patent/CN104767834B/zh
Publication of CN101473628A publication Critical patent/CN101473628A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/06Protocols specially adapted for file transfer, e.g. file transfer protocol [FTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0272Virtual private networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/105Multiple levels of security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/16Implementing security features at a particular protocol layer
    • H04L63/166Implementing security features at a particular protocol layer at the transport layer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/10Streamlined, light-weight or high-speed protocols, e.g. express transfer protocol [XTP] or byte stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/165Combined use of TCP and UDP protocols; selection criteria therefor
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/54Store-and-forward switching systems 
    • H04L12/56Packet switching systems
    • H04L12/5601Transfer mode dependent, e.g. ATM
    • H04L2012/5603Access techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]

Abstract

本发明相关于计算环境到远程用户的传送的加速,该远程用户位于远程位置客户端。该计算环境可包括应用和被该应用使用或处理的数据文件。该应用和数据文件可被存储或通过远程服务器提供给客户端。用户可从服务器请求计算环境,由用户通过远程计算机该服务器提供应用的执行。例如,服务器可流发送应用到远程客户端。客户端和服务器可通过应用通信,该应用可加速客户端和服务器间的通信。例如,该应用可加速应用到远程用户的流发送。在一些情况中,该应用或远程用户也可以从服务器请求数据文件,并且该应用加速数据文件到远程用户的传送。同样的,在远程位置的用户通过任何将设备连接到应用和数据文件的网络获得加速的访问,该应用和数据文件对于用户位于远程位置。

Description

用于加速计算环境到远程用户的传送的系统和方法
相关申请
【0001】本申请要求美国临时专利申请NO.60/744,720的利益和优先权,该美国临时专利申请标题为“用于加速计算环境到远程用户传送的系统和方法”,并且在2006年4月12日提出申请,该申请通过引用在此加以结合。
发明领域
【0002】本发明相关于向客户端的远程用户加速包括应用和数据文件的计算环境的传送的系统和方法,该客户端相对于服务器位于远程。
背景技术
【0003】管理和控制企业环境花费时间、金钱、和资源。在许多情况中,这是因为应用和数据管理过程是分散的和劳动力密集型的。例如,管理人员的大部分时间花在提供更多的存储空间或为公司数据执行备份,或更新服务器以处理企业数据的增长上。同样的,管理人员需要生成和提供新的服务器以处理数据的增长。另外,管理人员花费时间更新或配备服务器以提供特定用户应用。另外,公司数据的相当大部分可以驻留在公司的数据中心的外部。例如,公司公文、文件和数据可存在或分散到各种相对于数据中心为远端的各种计算机中。
【0004】在努力减少管理和控制企业的数据和应用所需要的时间、金钱和资源,许多公司有统一和集中化的服务器、企业数据和应用。虽然统一和集中化已经减少了一些花费并已经产生了一些利益,集中化数据和应用在提供对数据和应用访问中提出了额外的挑战。一个这样的挑战包括远程用户试图通过广域网(WAN)连接访问文件。例如,在分支机构的远程用户试图通过WAN打开存储在企业数据中心中的微软办公(Microsoft Office)文件,该分支机构通常有到企业数据中心的网络连接,其操作速度慢于局域网连接许多。由于WAN的等待,可靠性和带宽,该远程用户通过网络对于文件的访问可能延迟。对于较大的文件延迟可能更大。此外,随着在远程用户和企业数据中心间距离的增加,访问文件中网络延迟的频率和长度也会增加。在WAN上增加虚拟专有网络,安全和其他网络层,可进一步减少到远程用户的可用的带宽并增加在访问文件中的延迟。远程办公室的更低的速度和带宽可在访问远程文件中引起无法接受的延迟。为了避免在远程文件访问中的延迟,远程用户可以拷贝并在本地使用文件,消除集中化操作的目的。另外,WAN连接可能没有LAN连接可靠,造成包丢失和网络连接断开。在文件操作期间,例如保存或打开文件期间,可发生WAN中断,进一步使得远程用户经历延迟。
【0005】因此,需要改进远程用户到集中化应用和数据文件的访问的系统和方法,包括加速应用和数据文件到远程用户的传送。
发明内容
【0006】本发明涉及用于加速应用和数据文件的计算环境到远程用户的传送的系统和方法。该应用和数据文件可通过相对于客户端为远端的服务器存储或提供。例如用户,诸如远程雇员,可在分支机构里使用没有本地可用的应用和/或数据文件的计算机。该用户可能想要使用该远程客户端不可用的字处理应用编辑一个企业文件。该用户可从服务器请求计算环境,由用户通过远程客户端该服务器提供需要的应用的执行。例如,该服务器可流式发送该应用到远程客户端。远程客户端和服务器可通过一个设备通信,该设备可加速远程客户端和服务器间的通信。例如,该设备可加速应用到远程用户的流式发送。在一些情况中,应用或远程用户也可以从服务器请求数据文件,并且该设备加速数据文件到远程用户的传送。就这点而论,本发明通过任一网络连接的设备为在远程位置的用户提供对应用和数据文件的加速的访问,该应用和数据文件对于用户位于远程位置。
【0007】一方面,本发明涉及用于加速应用和数据文件的计算环境到位于远端位置的客户端的用户的传送的方法。该方法包括通过服务器接收来自远程客户端执行应用的请求。远程客户端和服务器通过一个设备通信。该方法还包括通过服务器流式发送用于执行的应用到远程客户端。该客户端向服务器传输对该应用可使用的数据文件的请求,该设备加速该数据文件到远程客户端的传输。
【0008】在本发明的一个实施例中,该方法包括通过该设备加速应用到远程客户端的流式发送。在另一个实施例中,通过执行下述加速技术之一,该设备加速数据文件的传输或应用的流式发送:1)压缩;2)解压缩;3)传输控制协议池;4)传输控制协议多路复用技术;5)传输控制协议缓冲;以及6)高速缓冲存储。在另一个实施例中,该方法包括通过在远程客户端上的加速程序加速在远程客户端和服务器间的通信。在该方法的一些实施例中,该设备建立与远程客户端的虚拟专有网络连接或加密套接字协议层(SSL)连接。在其他实施例中,该方法包括通过该设备加速网络包有效负载,该网络包通过在远程客户端和服务器之间的传输层连接进行传送。
【0009】在本发明的一个实施例中,该方法包括在收到来自远程客户端的与服务器建立连接或会话的请求时通过该设备传输加速程序到远程客户端。在一些实施例中,在收到该设备的请求时该远程客户端自动安装并执行加速程序。在一些实施例中,该方法包括通过在远程客户端上的加速程序执行下述加速技术之一:1)压缩;2)解压缩;3)传输控制协议池;4)传输控制协议多路复用技术;5)传输控制协议缓冲;以及6)高速缓冲存储。在一些实施例中,该远程客户端对于应用或服务器透明地执行加速程序。
【0010】在本发明的一些实施例中,该方法包括由该设备确定该应用能够被加速,以及响应该确定而向远程客户端传输加速程序。在另外的实施例中,该设备高速缓冲数据文件。在一个实施例中,该设备拦截对于数据文件的请求,并响应该请求传输高速缓存的数据文件到远程客户端。
【0011】在另一个方面,本发明涉及用于加速应用和数据文件的计算环境到位于远端位置的客户端的远程用户的传送的系统。该系统包括用于加速一个或多个远程客户端和一个或多个服务器间通讯的设备。该系统也包括用于接收来自远程客户端执行应用的请求的服务器。该远程客户端和服务器通过该设备通信。该服务器流式发送用于执行的应用到远程客户端。该客户端向服务器传输对于该应用可使用的数据文件的请求,并且该应用加速该数据文件到远程客户端的传输。
【0012】在本发明的一些实施例中,该设备加速应用到远程客户端的流式发送。在一个实施例中,通过执行下述加速技术之一,该设备加速数据文件的传输或应用的流式发送:1)压缩;2)解压缩;3)传输控制协议池;4)传输控制协议多路复用技术;5)传输控制协议缓冲;以及6)高速缓冲存储。在另一个实施例中,该系统包括在远程客户端上的加速程序,该加速程序加速在远程客户端和服务器间的通信。在一个实施例中,该设备建立与远程客户端的虚拟专有网络连接或加密套接字协议层(SSL)连接。
【0013】在本发明的一些实施例中,该设备加速网络包有效负载,该网络包通过在远程客户端和服务器之间的传输层连接进行传送。在一个实施例中,该设备在收到来自客户端的请求时传输加速程序到远程客户端,以与服务器建立连接或会话。在一些实施例中,在收到来自设备的请求时该远程客户端自动安装并执行加速程序。在远程客户端上的加速程序执行下述加速技术之一:1)压缩;2)解压缩;3)传输控制协议池;4)传输控制协议多路复用技术;5)传输控制协议缓冲;以及6)高速缓冲存储。在一个实施例中,该远程客户端对于应用或服务器透明地执行加速程序。
【0014】在本发明系统的另一个实施例中,该设备确定应用能够被加速,以及响应该确定向远程客户端传输加速程序。在一个实施例中,该设备包括用于高速缓冲数据文件的高速缓存。在一些实施例中,该设备拦截对于数据文件的请求,并响应该请求传输高速缓存的数据文件到远程客户端。
附图说明
【0015】该发明的这些和其他方面从下述细节描述和附图将会十分明显,下述细节描述和附图用于示出而非限制本发明,并且其中:
图1A是描述网络环境的框图;
图1B是描述在网络环境中远端的计算环境的一个实施例的框图;
图1C和1D是与描述的实施例相关的计算机的具体实施例的框图;
图1E是描述适合传送计算环境到客户端的环境的框图;
图1F是描述系统的一个实施例的框图,该系统用于提供多个应用程序,这些应用程序通过在网络(web)服务目录中的GUI的公布为本地机器可用;
图2是描述步骤的一个实施例的流程图,该步骤用于选择应用程序的执行方法;
图3A是描述本地机器的一个实施例的框图,该本地机器通过环球网(WorldWide Web)启动程序邻居(Program Neighborhood)应用的执行;
图3B是描述步骤的一个实施例的流程图,本地机器使用这些步骤访问使用web服务目录所列举的应用程序;
图4A是网络环境的实施例的框图,该网络环境为本地机器提供对应用程序的基于策略的访问;
图4B是描述策略引擎的更详细的实施例的框图;
图4C是步骤的一个实施例的流程图,策略引擎使用这些步骤基于接收到的关于本地机器的信息作出访问控制决定;
图4D是描述计算机网络的实施例的框图,在该计算机网络中提供对多个应用会话的授权的远程访问;
图4E是描述步骤的一个实施例的流程图,会话服务器使用这些步骤将本地机器和它的相关联的应用会话连接;
图5是描述了步骤的一个实施例的流程图,会话服务器使用这些步骤将客户端节点和它的相关联的应用会话连接;
图6是描述了远程机器的一个实施例的框图,该远程机器包括提供应用列举的管理服务;
图7是描述步骤的一个实施例的流程图,使用这些步骤访问包括应用程序的多个文件;
图8A是描述计算机的一个实施例的框图,该计算机在操作系统的控制下运行,该操作系统减少了应用的兼容性和应用群集度(sociability)的问题;
图8B是描述多用户计算机的一个实施例的框图,该多用户计算机拥有减少了的应用的兼容性和应用群集度的问题;
图8C是描述步骤的一个实施例的流程图,这些步骤在方法中用于连接过程与一个孤立的范围;
图9是描述步骤的一个实施例的流程图,这些步骤在用于执行应用程序的方法中采用;
图10是描述驻留在远程机器中的多个应用文件的一个实施例的流程图;
图11是步骤的一个实施例的流程图,这些步骤在用于本地响应对与远程存储的文件相关的文件元数据的请求的方法中采用;
图12是描述系统的一个实施例的框图,该系统用于本地响应对与远程存储的文件相关的文件元数据的请求;
图13是描述步骤的一个实施例的流程图,这些步骤在用于访问在目录结构中的远程文件的方法中采用,该目录结构与本地执行的应用程序相关联;
图14是描述系统的一个实施例的框图,该系统用于访问与应用相关联的目录结构中的文件;
图15是远程机器的一个实施例的框图,该远程机器包括许可管理子系统;
图16是描述在远程机器上管理服务中的部件的一个实施例的框图;
图17是描述步骤的一个实施例的流程图,这些步骤用于从远程机器请求和保持许可;
图18是描述状态的一个实施例的框图,该状态可与由管理服务监控的会话相关联;
图19是描述包的实施例的框图,该包包括两个对象,每个对象包括包含应用的多个应用文件;
图20是描述步骤的一个实施例的流程图,这些步骤在不重新启动操作系统而安装应用程序的基于策略的方法中采用;
图21是描述步骤的一个实施例的流程图,这些步骤在不重新启动操作系统而安装应用程序的基于策略的方法中采用;
图22是描述将在本地机器上执行的脚本的列举的一个实施例的屏幕照片;
图23是描述系统的一个实施例的框图,该系统包括向独立环境中执行安装程序的打包机制;
图24是描述在环境中使用的步骤的一个实施例的流程图,在该环境中安装程序的执行需要重新启动操作系统;
图25是描述远程机器的一个实施例的框图,打包机制向该远程机器中安装应用程序;
图26是描述步骤的一个实施例的流程图,使用这些步骤将应用安装到应用独立环境中;
图27示出了执行集成高速缓冲存储的设备的机构的一个具体实施例的框图;
图28A是在方法的具体实施例中使用的步骤的流程图,该方法用于包处理和包处理计时器与设备操作的集成;
图28B是在方法的具体实施例中使用的步骤的流程图,该方法用于实现图3A中的无效粒度(invalidation granularity)技术;
图29A是步骤的流程图,这些步骤在使用无效命令以无效失时效对象(stale object)的方法的实施例中使用;
图29B是步骤的流程图,这些步骤在合并对象组的无效的方法的具体实施例中使用;
图29C是步骤的流程图,这些步骤在方法的具体实施例中使用,该方法中为对象确定因子(object determinant)分析客户端请求;
图29D是步骤的流程图,这些步骤在方法的具体实施例中使用,该方法使用对象确定因子合并对象的组的无效;
图30是在连接池的方法的一个实施例中使用的步骤的流程图;
图31是在变换客户端和服务器请求的方法的一个具体实施例中使用的步骤的流程图;
图32示出了内容长度参数的一个具体实施例;
图33示出了大块尺寸域的一个具体实施例;
图34是描述连接池的一个具体实施例的消息流程图;
图35示出了步骤的一个实施例的细节流程图,这些步骤使用内容长度参数以增加在客户端和服务器之间的连接池的效率;
图36是描述步骤的一个实施例的流程图,这些步骤使用内容长度参数以增加在客户端和服务器之间的连接池的效率;
图37示出了步骤的一个实施的细节流程图,这些步骤使用大块尺寸域以增加在客户端和服务器之间的连接池的效率;
图38是描述步骤的一个实施例的流程图,这些步骤使用大块尺寸域以增加在客户端和服务器之间的连接池的效率;
图39是步骤的一个实施例的流程图,这些步骤提供集成的高速缓存功能;
图40A是客户端侧加速程序的具体实施例的框图;
图40B是设备的实施例的框图,该设备用于提供客户侧加速程序;
图41A是方法的具体实施例的步骤图,该方法用于动态提供并自动安装和执行客户端侧的加速程序;
图41B是方法的具体实施例的步骤图,该方法用于确定可被加速的应用;
图41C是方法的另一个具体实施例的步骤图,该方法通过加速程序执行多个加速技术,以在传输层拦截并使用核心层数据结构;
图42A是方法的另一个具体实施例的步骤图,该方法以通过第一程序在客户端自动安装和执行加速程序;
图42B是方法的具体实施例的步骤图,该方法用于第一程序和加速程序,以提供虚拟专有网络连接并执行一个或多个加速技术;
图43是方法的具体实施例的步骤图,该方法用于重定向到服务器的客户端通信,以旁路已被确定不可用于向服务器传输该通信的中介;
图44是方法的具体实施例的步骤图,该方法用于执行传输控制协议缓冲器的客户端侧加速技术;
图45A是方法的具体实施例的步骤图,该方法用于执行传输控制协议连接池的客户端侧加速技术;
图45B是一组HTTP事务的简图,该事务通过在一个具体实施例中的一个或多个传输层连接的池由多个应用执行;
图46是方法的具体实施例的步骤图,该方法用于执行传输控制协议多路复用技术的客户端侧的加速技术;
图47是传输层包的内容长度标识符的具体实施例的简图;
图48是通过多个大块传输的消息的内容长度标识符的另一个具体实施例的简图;
图49A是描述联网的计算机系统的举例性具体实施例的框图,该联网的计算机系统用于加速计算环境到远程客户端的传送;并且
图49B是描述方法的步骤的一个具体实施例的流程图,该方法用于加速计算环境到远程客户端的传送。
[16]具体实施方式
[17]为了阅读下述各种具体实施例的描述,下述对于说明书的部分以及它
们各自内容的描述是有用的:
-A部分描述了网络环境和计算环境,这对于实施此处描述的具体实施例是有用的;
-B部分描述了用于传送计算环境到远程用户的系统和方法的具体实施例;
-C部分描述了用于在客户端和服务器间加速通信的系统和方法的具体实施例;并且
-D部分描述了说明性的举例性的具体实施例,该实施例使用B部分和C部分描述的系统和方法加速计算环境到远程用户的传送。
[18]A.网络和计算环境
[19]在讨论本系统和方法的具体实施例的细节之前,讨论具体实施例在其中配置的网络和计算环境可能是有帮助的。现在引用图1A,描述了网络环境5。概括来讲,网络环境5包括通过一个或多个网络40,40”、一个或多个客户端10-10”(同样一般指客户端10,或本地机器10)与一个或多个服务器30-30通信(同样一般指服务器30,或远程机器30”)。在一些实施例中,客户端10通过设备1250与服务器30通信。
[20]虽然图1A示出了在客户端10-10-10”和服务器30-30”间的网络40和网络40”,客户端10-10”和服务器30-30”可以在同一个网络40之上。网络40和40”可以是相同类型的网络或不同类型的网络。网络40和/或40”可为局域网(LAN),例如公司内的企业内部互联网、城域网(MAN)、或者广域网(WAN),例如因特网或万维网。在一个实施例中,网络40”可为专有网络并且网络40可为公网。在一些实施例中,网络40可为专有网络并且网络40”可为公网。在另一个实施例中,网络40和40”可都为专有网络。在一些实施例中,客户端10-10”可位于公司分支机构中,在网络40之上通过WAN连接与位于公司数据中心的服务器30-30”通信。
[21]网络40和/或40”可为网络的任何类型和/或形式,可包括任何的下述内容:点对点网络,广播网络,广域网,局域网,电信网络,数据通信网络,计算机网络,ATM(异步传输模式)网络,SONET(同步光网络)网络,SDH(同步数字体系)网络,无线网络和有线网络。网络40和/或40”的拓扑可为总线型,星形,或环形网络拓扑。网络40和/或40”以及网络拓扑可以是任何对于本领域普通技术人员所熟知的、可以支持此处描述的操作的任何这样的网络或网络拓扑。
[22]如图1A所示,示出设备1250(此处也指为接口单元1250)在网络40和40”之间。在一些实施例中,设备1250可位于网络40上。例如,公司的分支机构可在分支机构中部署设备1250。在其他实施例中,设备1250可位于网络40”上。例如,设备1250可位于公司的数据中心。在另一个实施例中,多个设备1250可在网络40上部署。在一些实施例中,多个设备1250可在网络40”上部署。在一个实施例中,第一设备1250与第二设备1250’通信。在另一个实施例中,设备1250可为位于相同或不同的网络40,40’上的任一客户端10-10’或服务器30-30”的一部分,作为客户端10-10”。一个或多个设备1250可位于客户端10-10”和服务器30-30”之间的网络或网络通信路径中的任何点上。
[23]在一个实施例中,系统可包括多个逻辑分组远程机器30,一个或多个远程机器30可用于以本地机器10名义执行应用。在一些实施例中,远程机器的逻辑分组可指服务器群组(farm)38或群组38。在这些实施例中的一些,远程机器30可为地理上分散的。可将群组38作为单独的实体进行管理。
[24]在每个群组38中的远程机器30可为不同种类的。即,一个或多个远程机器30可根据一种类型的操作系统平台(例如位于Redmond,Washington的微软公司制造的WINDOWS NT)操作,而其他远程机器30的一个或多个可根据另一类型的操作系统平台(例如,Unix或Linux)操作。包括在每个群组38内的远程机器30不需要与其群组38内的每个其他远程机器30物理上接近。因此,逻辑分组的作为群组38的远程机器30的组可使用广域网(WAN)连接或城域网(MAN)连接互联。例如,群组38可包括物理上位于不同陆地或陆地的不同区域、国家、州、城市、校园或房间。如果远程机器30使用本地网(LAN)连接或一些形式的直接连接进行连接,在群组38中的远程机器30间的数据传输速度将增加。
[25]远程机器30可指服务器、文件服务器、应用服务器、或远程机器。在一些实施例中,远程机器30可有能力或者如应用服务器或者如管理应用服务器那样运行。在一个实施例中,远程机器30可包括活动目录。本地机器10也可称为客户端节点或端点。在一些实施例中,本地机器10有能力如客户端节点以及如应用服务器那样运行,其中作为客户端节点搜索对于应用的访问,作为应用服务器提供对用于其他本地机器10的主机应用的访问。
[26]在一个实施例中,本地机器10可直接与群组38中的远程机器30之一直接通信。在另一个实施例中,本地机器10执行程序邻近应用以与群组38内的远程机器30通信。还是在另一个实施例中,远程机器30提供主节点的功能。在一些实施例中,本地机器10通过网络40与群组38中的远程机器30通信。通过网络40,本地机器10可以,例如,请求执行寄存在群组38中的远程机器30、30’、30”和30”’中的各种应用,并接收应用执行结果的输出用于显示。网络40可包括同步或异步连接并可为LAN、MAN(中等区域网络,Medium-Area Network),或广域网。另外,网络40可包括无线连接,例如红外信道或卫星频带。在一些实施例中,只有主节点提供要求确认和提供地址信息的功能,其中的地址信息与寄存所请求的应用的远程机器30’相关。
[27]在一些实施例中,本地主机10与远程机器30”’通信。在这些实施例之一中,远程机器30”’提供网络(Web)服务器的功能。在这些实施例的另一个中,远程主机30”’接收来自本地主机10的请求,将该请求转发到远程机器30并以来自远程机器30对该请求的响应通过本地机器10响应该请求。仍然在这些实施例中的另一个中,远程机器30获得本地机器10可用的应用的列举以及地址信息,该地址信息与远程机器30’相关,该远程机器30’寄存由该应用的列举确定的应用。也在这些实施例的另一个中,远程机器30”’使用网络接口呈现对本地机器10的请求的响应。在一个实施例中,本地机器10直接与远程机器30’通信以访问所确认的应用。在另一个实施例中,本地机器10从远程机器30”’接收应用输出数据,该应用输出数据通过在远程机器30’上的所确认的应用的执行而产生。
[28]现在看图1B,示出了在客户端10上用于传送和/或操作计算环境的网络环境。概括来看,服务器30包括用于向一个或多个客户端传送计算环境或应用和数据文件的应用传送系统500。客户端10可包括用于执行应用的计算环境15,该应用使用或处理数据文件。客户端10通过网络40、40’和设备1250与服务器30通信,该客户端可从服务器30请求应用和数据文件,或者设备1250可转发来自客户端10的请求到服务器30。例如,客户端10可能本地没有本地存储或本地可访问的应用和数据文件。响应请求,服务器30可传送应用和数据文件到客户端10。例如,在一个实施例中,服务器30可以应用流传递应用,以操作在客户端10上的计算环境15。
[29]图1C和1D是描述通用计算机135的体系结构的具体实施例的框图,该通用计算机135用于客户端计算设备10和服务器计算设备30。如图1C和1D所示,每个计算机135包括中央处理单元102,以及主存储单元122。每个计算机135也包括其他可选择的部件,例如一个或多个输入/输出设备130a-130-b(总的使用参考数字130表示),以及与中央处理单元102通信的高速缓存140。
[30]中央处理单元102是任何逻辑电路,响应并处理从主存储单元122取得的指令。在许多实施例中,中央处理单元由微处理器单元提供,例如由California,Mountain View的Intel公司制造的;由IIIinois,Schaumburg的Motorola公司制造的;由Califirnia的Santa Clara的Transmeta公司制造的处理器Crusoe和Efficeon线;由New York,White Plains的International Business Machines公司制造的处理器线;或者由California,Sunnyvale的Advanced Micro Devices公司制造的处理器线。
[31]主存储单元122可为一个或多个存储芯片,这些存储芯片可以存储数据并允许微处理器102直接访问任何存储位置,微处理器可为,例如静态随机存储器(SRAM)、猝发(Burst)SRAM或同步猝发(SynchBurst)SRAM(BSRAM),动态随机存储器(DRAM)、快页模式(Fast Page Mode)DRAM(FPM DRAM)、增强(Enhanced)DRAM(EDRAM)、扩展数据输出(Extended Data Output)RAM(EDO RAM)、猝发扩展数据输出DRAM(BEDO DRAM)、增强DRAM(EDAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100 SDRAM、双数率SDRAM(DDR SDRAM)、增强SDRAM(ESDRAM)、同步连接DRAM(SLDRAM)、直接存储总线(DirectRambus)DRAM(DRDRAM)或者铁电RAM(FRAM)。在图1C所示的实施例中,处理器102通过系统总线120(下面将更详细的介绍)与主存储器122通信。图1B描述了计算机系统135的具体实施例,其中处理器通过存储端口直接与主存储器122通信。例如,在图1B中的主存储器122可为DRDRAM。
[32]图1C和1D描述的具体实施例中,主处理器102通过次级总线,有时称为“背端”总线,直接与高速缓存存储器140通信。在其他实施例中,主处理器102使用系统总线120与高速缓冲存储器140通信。高速缓冲存储器140通常比主存储器122有更快的响应时间,并通常通过SRAM,BSRAM,或EDRAM提供。
[33]在图1C所示的具体实施例中,处理器102通过本地系统总线120与各种I/O设备130通信。各种总线用于连接中央处理单元102和I/O设备130,包括VESA VL总线、ISA总线、EISA总线、微通道结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线、或者NuBus。对于这样的实施例,其中I/O设备是视频显示器,处理器102可使用高级图形端口(AGP)与显示器通信。图1D描述了计算机系统135的具体实施例,其中主处理器102通过HyperTransport,RapidI/O或者InfiniBand与I/O设备130B直接通信。图1D也描述了一个具体实施例,其中本地总线和直接通信是混合的:处理器102使用本地互联总线与I/O设备130a通信,同时与I/O设备130b直接通信。
[34]在计算机系统135中将提供I/O设备130的多个种类。输入设备包括键盘、鼠标、轨道垫、轨道球、麦克风、以及绘画板。输出设备包括视频显示器、扬声器、喷墨打印机、激光打印机、及染料升华(dye-sublimation)打印机。I/O设备也可为计算机系统135提供大容量存储器,例如硬盘驱动器,用于接受软盘例如3.5-英寸、5.25-英寸磁盘或ZIP磁盘的软盘驱动器,CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、各种格式的磁带驱动器,以及USB存储设备,例如由California,Los Alamitos的Twintech Industry有限责任公司制造的USB闪存驱动器。
[35]在进一步的实施例中,I/O设备130可为在系统总线120和外部通信总线间的桥梁,该外部通信总线可为,例如USB总线、Apple Desktop总线、RS-132串行连接、SCSI总线、FireWire总线、FireWire800总线、Ethernet总线、AppleTalk总线、Gigabit Ethernet总线、异步传输模式总线、HIPPI总线、Super HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel总线、或者串行连接(Serial Attached)小计算机系统接口总线。
[36]图1C和图1D中描述的通用计算机通常在操作系统的控制下操作,该操作系统控制任务和对系统资源的访问的调度。典型的操作系统包括:由Washington,Redmond的Microsoft公司制造的MICROSOFT WINDOWS;由California,Cupertino的Apple计算机公司制造的MacOS;由New York,Armonk的International Business Machines制造的OS/2;以及由Utah,Salt LakeCity的Caldera公司的可自由获得的操作系统Linux,以及其他操作系统。
[37]对于实施例,其中客户端机器10或服务器30包括移动设备,该设备可为JAVA操作的移动电话,例如i55sr、i58sr、i85s或者i88s,这些都是由Illinois,Schaumburg的Motorola公司制造的;由Japan,Kyoto的Kyocera制造的6035或7135;或者由Korea,Seoul的Samsung Electronics有限公司制造的i300或者i330。在包括移动设备的其他实施例中,移动设备可为在PalmOS操作系统控制下的个人数字助理(PDA),正如Tungsten W,VII,VIIx,所有这些都由California,Milpitas的palmOne公司制造。在其他实施例中,客户端113可以是在PocketPC操作系统控制下的个人数字助理(PDA),诸如iPAQ4155、iPAQ5555、iPAQ1945、iPAQ2215以及iPAQ4255,所有这些都是由California,Palo Alto的Hewlett-Packard公司制造的;由California,Walnut的ViewSonic制造的ViewSonic V36;或者由New York,New York的Toshiba American有限公司制造的Toshiba PocketPC e405。仍然在其他实施例中,移动设备是组合PDA/电话设备,例如Treo180、Treo270、Treo600、Treo650或者Treo700w,所有这些都是由California,Milpitas的palmOne有限公司制造的。仍然在进一步的实施例中,移动设备是在PocketPC操作系统控制下操作的移动电话,该PocketPC操作系统可为,例如由Motorola公司制造的MPx200。一个典型的移动设备可包括如以上在图1C和1D中描述的许多元件,包括处理器102和主存储器104。
[38]B.用于传送计算环境的系统和方法
[39]一个实施例涉及用于从服务器30传送计算环境到位于远程位置的客户端10的远程用户的系统和方法。尽管在该部分中该方法和系统总的称为服务器30,下述方法和系统可使用或者服务器30、网络设备1250、或它们的任意组合。
[40]现在看图1E,系统的一个实施例中远程机器30包括图1A中所示所描述的群组38。每个远程机器30包括网络侧接口202和群组侧接口204。远程机器30的网络侧接口202可与一个或多个本地机器10或网络210通信。网络210可为WAN、LAN或者例如因特网或环球网的国际网络。本地机器10可使用网络210建立与远程机器30的连接。
[41]远程机器30的群组侧接口204通过通信链路200彼此互联,以便远程机器30可彼此通信。在每个远程机器30上,群组侧接口204与网络侧接口202通信。群组侧接口204也与持久存储器230通信(通过箭头220指出)并且,在一些实施例中,也可与动态存储器240通信。,远程机器30、持久存储器230、以及动态存储器240(当提供时)的结合共同称为群组38。在一些实施中,远程机器30与持久存储器230通信,以及其他远程机器30’与远程机器30通信通信,以访问存储在持久存储器中的信息。
[42]持久存储器230可在磁盘、磁盘组、独立磁盘冗余阵列(RAID)、可写紧密磁盘或其他容许数据读出和写入并且如果存储设备没电则保存写入的数据的任何其他设备上物理实现。单个物理设备可提供用于多个持久存储设备的存储,例如,单个物理设备可用于提供用于多于一个群组38的持久存储器230。持久存储器保存与在群组38中的每个远程机器30相关联的静态数据,以及在群组38中的所有远程机器30使用的全局数据。在一个实施例中,持久存储器230可在轻量级目录访问协议(LDAP)数据模型中保存远程机器数据。在另一个实施例中,持久存储器230在ODBC-相容数据库中存储远程机器数据。为了该说明书的目的,术语“静态数据”指不经常改变的数据,例如,数据仅基于每小时、每天、或者每星期改变,或者从不改变的数据。每个远程机器使用持久存储子系统从持久存储器30中读数据和写入数据。
[43]持久存储器230存储的数据出于可靠的目的可物理上或逻辑上复制。例如,使用一组冗余的镜像磁盘可提供物理冗余,每个冗余的镜像磁盘提供数据的副本。在另一个实施例中,使用标准数据技术本身复制数据库,以提供多个数据库的副本。在进一步的实施例中,物理和逻辑复制可并发的使用。
[44]动态存储器240(例如,所有记录表的集合)可以各种方式实现。在一个实施例中,动态存储器240被集中化;即,所有的运行时数据存储在群组38中的一个远程机器30的存储器中。该远程机器作为主网络节点操作,当寻找对该运行时数据的访问时,在群组38中的所有其他远程机器30与该远程机器通信。在另一个实施例中,在群组38中的每个远程机器30保存动态存储器240的一个完全备份。此处,每个远程计算机30与每个其他远程机器30通信,以保持其动态存储器240副本的更新。
[45]在另一个实施例中,每个远程机器30保持它自己的运行时数据,当寻找以便获得每个其他远程机器30的运行时数据时,与每个其他远程机器30通信。因此,例如,远程机器30试图寻找被本地主机10请求的应用程序,该远程机器30可直接与在群组38中的每个其他远程机器30直接通信,以发现一个或多个保存被请求的应用的远程机器。
[46]对于群组38有大量的远程机器30,这些实施例产生的网络通信量变得十分繁重。一个实施例通过在群组中指定远程机器30的子集,代表性的为两个或更多个,作为“收集点”,来减轻繁重的网络通信量。通常,收集点是收集运行时数据的远程机器。每个收集点存储从群组38中的某些其他远程机器30收集的运行时数据。群组38中的每个远程机器30可以作为收集点操作,并因此可以被指定为收集点。在一个实施例中,每个收集点存储全部动态存储器240的副本。在另一个实施例中,每个收集点存储动态存储器240的一部分,例如,保持特定数据类型的运行时数据。由远程机器30存储的数据的类型根据一个或多个标准可被预先确定。例如,远程机器30可保存基于启动顺序的数据的不同类型。可选的,远程机器30存储的数据类型可由管理员使用管理工具140配置。在这些实施例中,动态存储器240分布于群组38中的两个或多个远程机器30中。在另一个实施例中,设备1250通过加速在远程机器30、动态存储器16240和持久存储器230间数据的传送减轻繁重的网络通信量。通过在C部分进一步讨论的任何技术可提供这样的加速。例如,设备1250可用于减轻繁重的网络通信量。
[47]没有指定作为收集点的远程机器30知道在群组38中指定作为收集点的远程机器30。没有指定作为收集点的远程机器180当传送和请求运行时数据时可与特定收集点通信。因此,当寻求以访问运行时数据时,由于在群组38中的每个远程机器30与单一的收集点远程机器30通信,而不是与每个其它的远程机器30通信,收集点减轻了网络通信量。
[48]每个远程机器30可作为收集点操作用于多于一种类型的数据。例如,对于许可信息和负载信息,远程机器30”可作为收集点操作。在这些实施例中,每个收集点可收集不同类型的运行时数据。例如,为了说明这种情形,远程机器30”’可收集许可信息,而远程机器30”收集负载信息时。
[49]在一些实施例中,每个收集点存储在群组38内的所有远程机器30间共享的数据。在这些实施例中,特定数据的类型的每个收集点与群组38中的每个用于该数据类型的其他收集点交换由该收集点收集的数据。因此,一旦完成了这样的数据的交换,每个收集点30”和30处理相同的数据。也在这些实施例中,每个收集点30和30”也保存每个其他收集点最新的对于运行时数据的任何更新。
[50]浏览使得本地机器能够查看群组38、远程机器30以及群组中的应用,并访问可用的信息,诸如整个群组38的会话。每个远程机器30包括ICA浏览子系统260,为本地机器10提供浏览的能力。在本地机器10建立任何远程机器30的ICA浏览器子系统260的连接之后,该浏览子系统支持多种本地机器请求。这样的本地机器请求包括:(1)列举在群组中的远程机器的名字,(2)列举群组中公开的应用的名字,(3)将远程机器名字和/或应用名字解析为远程机器地址,这对于本地机器10是有用的。ICA浏览器子系统260也支持由本地机器10运行程序邻近应用所作出的请求,根据请求,该程序邻近应用为本地机器10提供群组38中的对于用户授权的那些应用的视图。ICA浏览器子系统260转发所有上述提及的本地机器请求到远程机器30中的适当的子系统。
[51]在一个实施例中,在群组38中有程序邻近子系统270的每个远程机器30,可为本地机器10的用户提供在群组38中的应用的视图。程序邻近子系统270可以限制对于这些本地机器10的用户有权访问的应用的视图。通常,该程序邻近服务器以列表或图标组为用户呈现这些应用。
[52]本地机器的两种类型可用到由程序邻近子系统270提供的功能,(1)程序邻近起动的本地机器,其可直接从本地机器桌面访问该功能,以及(2)非程序邻近起动的本地机器(例如,传统本地机器),通过运行在远程机器上的程序邻近起动的桌面访问该功能。
[53]在程序邻近起动的本地机器和程序邻近子系统270间的通信可通过专用虚拟通道发生,该专用虚拟通道在ICA虚拟通道的上部建立。在另一个实施例中,该通信使用XML服务发生。在这些实施例的一个中,程序邻近起动的本地机器和XML子系统通信,该XML子系统,例如下述参考图6描述的XML服务器516,提供远程机器30上的程序邻近功能。
[54]在一个实施例中,程序邻近起动的本地机器没有与带有程序邻近子系统270的远程机器的连接。对于该实施例,本地机器10向ICA浏览器子系统260发送请求,以建立到远程机器30的ICA连接,以确定本地机器10可用的应用。本地机器10接着运行需要用户证书的客户端侧对话。该证书通过ICA浏览器子系统260接收,并发送到程序邻近子系统270。在一个实施例中,程序邻近子系统270向用户管理子系统发送证书用于认证。该用户管理子系统可返回一组区别性的名字,这些区别性的名字描述用户所属的列表。一旦认证,程序邻近子系统270建立程序邻近虚拟通道。该通道直到应用过滤结束一直保持开放。在一些实施例中,在C部分描述的加速程序6120响应本地机器10的请求也可被传送到本地机器10。
[55]程序邻近子系统270接着从普通应用子系统524请求程序邻近信息,该子系统524与这些说明相联系。普通应用子系统524从持久存储器230获得程序邻近信息。一旦接收到程序邻近信息,程序邻近子系统270格式化程序邻近信息,并且通过程序邻近虚拟通道向本地机器返回程序邻近信息。接着部分ICA连接被关闭。
[56]对于另一个实施例,考虑本地机器10的选择群组38的用户,其中程序邻近起动的本地机器与远程机器建立部分ICA连接。群组38的选择从本地机器10发送请求到ICA浏览器子系统260,以便与被选择的群组38中的远程机器30之一建立ICA连接。该ICA浏览器子系统260发送请求到程序邻近子系统270,该子系统选择在群组38中的远程机器30。与远程机器30相关联的地址信息经由ICA浏览器子系统260被确认并返回到本地机器10。本地机器10随后可连接到相应于接收到的地址信息的远程机器30。
[57]在另一个实施例中,程序邻近起动的本地机器10程序建立一个ICA连接,邻近虚拟通道在该ICA连接上被建立并在ICA连接持续的时候保持打开。通过该程序邻近虚拟通道,程序邻近子系统270将程序邻近信息更新推到本地机器10上。这种将更新推入本地机器10可根据此处讨论的任何加速技术被加速。为了获得更新,程序邻近子系统270从普通应用子系统524预定事件,以使得程序邻近子系统270探测所公布的应用的改变。
[58]看图1F,描述了系统结构的另一个实施例的框图,该实施例用于通过在web服务目录中的GUI的公布提供对本地机器可用的多个应用程序。该系统包括本地机器10,以及多个远程机器30。一个远程机器30作为内容服务器那样运行。远程机器30’提供web服务器功能。远程机器30”提供用于提供对应用文件访问的功能,并且作为应用服务器或文件服务器工作。本地机器10可从内容服务器30、web服务器30’、应用服务器30”通过网络155下载内容。在一个实施例中,本地机器10可从应用服务器30”通过客户端-应用服务器通信通道1150下载内容(例如应用)。
[59]在一个实施例中,本地机器10上的web浏览器11使用加密套接字协议层(SSL)支持到内容服务器30和/或web服务器30’的通信。SSL是由California,Mountain View的Netscape Communication公司开发的安全协议,并且现在是由Internet工程任务组(IEFT)发布的标准。该web浏览器11可选的可使用其他安全协议连接到内容服务器30和/或web服务器30’,例如,但不限于,CA,Los Altos的Terisa Systems开发的安全超文本传输协议(SHTTP),HTTP over SSL(HTTPS),Washington,Redmond的Microsoft公司开发的私人通信技术(PCT),以及IEFT发布的传输层安全(TLS)标准。在其他实施例中,web浏览器11使用没有加密的通信协议,例如超文本传输协议(HTTP)与服务器30通信。
[60]另外,本地机器10包括应用客户端13,该应用客户端13用于通过客户端-应用服务器通信通道1150与应用服务器30”建立并交换通信。在一个实施例中,应用客户端13是GUI应用。在一些实施例中,应用客户端13是独立计算结构(ICA)客户端,由Florida,Fort Lauderdale的Citrix Systems有限公司开发,并且也指下述的ICA客户端13。其他应用客户端13的实施例包括远程显示协议(RDP)客户端(由Washington,Redmond的Microsoft公司开发),X-Windows客户端13、客户端侧显示器、可执行多媒体应用、email、Java、或者.NET代码的解释器或仿真器。更多的,在一个实施例中在应用服务器30”上执行的应用的数据可通过ICA客户端13在本地机器10上显示。在一些实施例中,应用客户端13是例如结合图5详细描述的应用流客户端552的应用客户端。在一些实施例中,依照此处描述的6120的任何实施例,应用客户端13包括加速程序用于在客户端10和服务器30之间加速通信。
[61]本地机器10查找web服务目录160以获得网络服务。在一个实施例中,此查找是手动查找。可选的,此查找可为自动查找。web服务目录(webservice directory)160也可提供基于服务的视图,例如,白色和黄色的页面,以在web服务目录中查找网络服务(web service)。在另一个实施例中,基于机构化服务名字和用于GUI应用的服务查找,web服务目录160支持层次化的浏览。在一个实施例中,web服务目录160在一个远程机器上独立于内容服务器30(例如目录服务器)执行。在其他实施例中,web服务目录160在多个服务器上执行。
[62]在一些实施例中,基于额外的分析或信息,通过在web服务目录160中提供该信息或分析,内容服务器30使得远程机器10选择网络服务。web服务目录160可列出的服务信息实例包括,但不限于,提供服务的商务的名字、服务类型、服务的文本描述、一个或多个服务接入点(SAP)、网络类型、使用的路径(例如TCP或HTTPS)、以及服务质量(QoS)信息。进一步的,服务信息可是具体的客户端设备类型或用户(例如角色)。因此,服务选择可基于一个或多个上述属性。
[63]在一个实施例中,服务类型指本地机器10必须使用以访问网络服务的程序接口。例如,服务类型可规定通过接口描述语言(例如网络服务描述语言(WSDL))所编码的服务。
[64]服务接入点,或SAP是用于应用的唯一的地址。SAP使得计算机系统支持在本地机器10和每个远程机器30的多个应用。例如,应用服务器30”可支持电子邮件(例如,e-mail)应用、文件传输应用、和/或GUI应用。在一个实施例中,这些应用每个有SAP,该SAP在应用服务器30”中是唯一的。在一个实施例中,SAP是web或Internet地址(例如,域名系统(DNS)名字、IP/端口、或者统一资源定位器(URL))。因此,在一个实施例中,SAP识别web服务器30’的地址作为用于存储在web服务器30’上的应用的地址的一部分。在一些实施例中,如下面描述的,SAP识别公布服务器插件165的地址,作为用于存储在web服务器30’上的应用的地址的一部分。在一个实施例中,SAP是来自于UDDI登记的“接入点”。
[65]为了准备在web服务目录160中发表的项目,内容服务器30包括web发表工具170。在一个实施例中,web发表工具170是软件模块。可选的,web发表工具170是另一个服务器,该服务器位于内容服务器30的外部或内部。
[66]在一个实施例中,web服务器30’向本地机器10分发web页。该web服务器30’可为任何能够向本地机器10提供web页的远程机器30。在另一个实施例中,web服务器30’为企业信息门户(例如,公司企业内部网或安全的商户到商户企业外部网)。公司门户为公司网站,用于为用户聚集、个人化并服务应用、数据和内容,同时提供管理工具用于更有效的组织和使用信息。在一些公司中,门户以基于浏览器的对虚拟工作场所的访问代替传统桌面软件。在一些实施例中,设备1250加速网页的提供的传送是使用此处讨论的任何加速技术来加速的。在其他实施例中加速程序6120加速网页的传送。
[67]web服务器30’也包括发表服务器插件165,使得进行图象用户接口(GUI)应用的发表。更特别的,发表服务器插件165翻译新的web服务入口URL到GUI应用服务,以使得GUI可通过web服务目录160被访问。在一个实施例中,发表服务器插件165是通用网关接口(CGI)脚本,其是设计为接收和返回符合CGI规范的数据的程序。该程序可以任何程序语言,例如C、Perl、Java或者Visual Basic编写。在另一个实施例中,发表服务器插件165是Java服务器页(JSP)。使用发表服务器插件165以方便远程GUI应用的发表,远程机器10因此可以访问网络服务,而不通过程序接口或网页,但通过完全的GUI接口,例如带有Citrix的ICA或者Microsoft的RDP。在一些实施例中,设备1250或者加速程序6120加速上述GUI到客户端的传送是使用此处在C部分讨论的任一加速技术来加速的。
[68]应用服务器30”寄载一个或多个本地机器10可用的应用。这样的应用的例子包括字处理程序,例如MICROSOFT WORD以及电子表格程序,例如MICROSOFT EXCEL,两个都是由Washington,Redmond的Microsoft公司制造的,财务报告程序、客户注册程序、程序提供技术支持信息、客户数据库应用、或者应用集合管理器。
[69]在一个实施例中,web发表工具170存储关于应用的信息,该web发表工具170在持久大容量存储器225中的web服务目录160中发表该应用。在一个实施例中该信息是用于动态发表服务器插件165的URL。持久大容量存储器225可为磁盘或磁性-光学驱动器。在一个实施例中,持久大容量存储器225是数据库服务器,其存储在一个或多个服务数据库中的与发表的应用相关的数据。该持久大容量存储器225可为一个位于任一或所有远程机器30内部或外部的部件。
[70]在其他实施例中,内容服务器30或者web服务器30’与群组38中的远程机器30通信,以获得应用列举。在这些实施例的一个中,内容服务器30或者web服务器30’与群组38而非与持久大容量存储器225通信。
[71]现在看图2,描述了用于选择执行一个应用程序的方法的步骤的一个实施例的流程图。总的来说,以具有可用于本地机器执行的应用的列举的请求(步骤202),接收与本地机器相关联或与本地机器的用户相关联的证书。相应于接收到的证书,提供本地机器可用的多个应用的列举(步骤204)。接收请求以执行所列举的应用(步骤206)。响应于一个策略,选择执行所列举的应用的预定数量的方法之一,预定数量的方法包括用于所列举的应用的应用流的方法(步骤208)。
[72]以具有可用于本地机器执行的应用的列举的请求(步骤202),接收与本地机器相关联或与本地机器的用户相关联的证书。在一个实施例中,远程机器从本地机器10接收带有证书的可用应用的列举的请求。在另一个实施例中,在远程机器30上的XML服务接收请求和证书,并传送该请求和证书到远程机器30上的管理服务。
[73]在一些实施例中,作为web服务器运行的远程机器30从本地机器10接收通信并将该通信转发到远程机器30’。在这些实施例之一中,web服务器转发该通信到远程机器30’上的XML服务。在这些实施例的另一个中,web服务器驻留在本地机器上。在其他的由web服务器将来自于本地机器10的通信传送到远程机器30’的实施例中,响应本地机器10的因特网协议(IP)地址选择该远程机器30。
[74]在一些实施例中,本地机器10请求对驻留在远程机器30上的应用的访问。在这些实施例之一中,本地机器10请求由远程机器30对驻留在远程机器30上的应用的执行。在这些实施例的另一个中,本地机器10请求对包括该应用的多个应用文件的获取。
[75]在一些实施例中,用户通过由远程机器提供给本地机器10上的图形用户接口向远程机器30提供证书。在其他实施例中,有web服务器功能的远程机器30”’为本地机器10提供图形用户接口。仍然在其他实施例中,由远程机器30传输到本地机器10的收集代理从本地机器10收集证书。在一个实施例中,证书指用户名和密码。在另一个实施例中,证书不限于用户名和密码,但包括而不限于本地机器10的机器ID、操作系统类型、操作系统补丁的存在、安装的网卡的MAC地址、在客户端设备上的数字水印、在活动目录中的成员、病毒扫描器的存在、个人防火墙的存在、HTTP头、浏览器类型、设备类型、网络连接信息,例如因特网协议地址或者地址的范围、远程机器30的机器ID、包括调整用于改变时区的访问请求的日期或时间,以及授权证书。
[76]在一些实施例中,与本地机器相关联的证书与本地机器的用户相关联。在这些实施例的一个中,证书是由用户支配的信息。在这些实施例的另一个中,证书是用户鉴别信息。在其他实施例中,与本地机器相关联的证书与网络相关联。在这些实施例的一个中,证书是与本地机器连接到的网络相关联的信息。在这些实施例的另一个中,证书是与收集关于本地机器的信息的网络相关联的信息。仍在其他实施例中,与本地机器相关联的证书是本地机器的特征。
[77]响应于接收到的证书,提供本地机器可用的多个应用程序的列举(步骤204)。在一个实施例中,本地机器10的用户可以在不知道何处去寻找这样的应用和没有连接到这样的应用的所需要的技术信息的情况下,了解由网络40中的远程机器30所寄载的应用程序的可用性。这些可用的应用程序包括用户的“程序邻近”。用于确定用于本地机器的程序邻近的系统包括应用程序(以下称为“程序邻近”应用)、用于存储应用程序部件的存储器、以及用于执行应用程序的处理器。该程序邻近(PN)应用如下所述可安装在本地机器10的存储器中和/或远程机器30上。
[78]根据程序邻近应用操作的远程机器30从在群组38中的每个远程机器30中收集应用相关信息。用于每个所寄载的应用的应用相关信息可为多种信息,包括,例如,寄载该应用的远程机器的地址、应用名字、授权使用该应用的用户或用户组、以及在建立连接以运行该应用之前本地机器10需要的最小能力。例如,该应用可流传送视频数据,因此需要的最小能力为本地机器可支持视频数据。其他例子的要求可以是本地机器支持音频数据或有能力处理加密的数据。应用相关信息可存储在数据库中。
[79]当本地机器10与网络40连接时,本地机器10的用户提供用户证书。用户证书可包括本地机器10的用户的用户名、用户密码、以及用户被授权的域名。可选的,用户证书可为智能卡、基于时间的令牌、社会保险号、用户密码、个人身份证(PIN)号码、基于对称键值或椭圆曲线密码术的数字证书、用户的生物学特征、可用于获得本地机器10的用户身份并提交用于验证的任何其他方式。响应于本地机器10的远程机器30可基于用户证书验证用户。用户证书可存储于程序邻近应用执行的任何地方。对于本地机器10执行程序邻近应用的实施例,用户证书可存储于本地机器10。对于远程机器30执行程序邻近应用的实施例,用户证书可存储于远程机器30。
[80]从用户证书和应用相关信息,远程机器30也可确定远程机器30寄载的哪些应用程序可被本地机器10的用户使用。远程机器30传输代表可用应用程序的信息到本地机器10。该过程消除了本地机器10的用户建立应用连接的需要。另外,远程机器30的管理员可在本地机器10的多个用户中控制应用的访问。
[81]在一些实施例中,由远程机器30执行的用户验证足可以授权提供给本地机器10的每个所寄载的应用程序的使用,尽管这样的应用程序可驻留在另一远程机器30’上。因此,当本地机器10启动(例如初始化执行)所寄载的应用之一时,由本地机器10进行用户证书的另外输入对于验证该应用程序的使用是必要的。因此,用户证书的一次输入可服务于确定可用的应用,以及在没有用户其他的手动登录验证处理的情况下授权这样的应用程序的启动。
[82]本地机器10或者远程机器30可启动程序邻近应用。结果显示在本地机器10、20的显示屏12、22上。在基于图形窗口的实现中,结果可显示在程序邻近图形窗口中,每个授权的应用程序由该窗口中的图标表示。
[83]在一个实施例中,程序邻近应用过滤出本地机器10没有被授权执行的应用程序,并只显示授权的(即可用的)应用程序。在其他实施例中,程序邻近应用可显示授权的和未授权的应用程序。当未授权的应用没有从显示中过滤时,可提供这样的通知,指示这种应用程序是不可用的。可选的,在没有标识哪些应用被授权或未被授权给本地机器10执行的情况下,程序邻近应用可以向本地机器10的用户报告由远程机器30所寄载的所有应用。当本地机器10试图运行这些应用程序之一时,授权可被随后确认。
[84]本地机器10从远程机器30请求应用列举。应用列举可使本地机器10的用户观看每个发表的应用的名字。在一个实施例中,无论用户是否有权执行该应用,本地机器10的用户可查看该应用的名字。在另一个实施例中,用户只查看用户被授权执行的那些应用的名字。
[85]取决于由本地机器10运行的特定过程,对于应用列举的请求传送到ICA浏览器子系统260、程序邻近子系统270、或者到普通应用子系统524。例如,当本地机器10正运行程序邻近应用时,对于应用列举的请求被发送到在远程机器30上的程序邻近子系统270。当本地机器10通过网页提交请求列举时,该请求传到过普通访问点子系统524。对于这些实施例,当本地机器10需要列举应用时,普通应用子系统524作为用于程序邻近子系统270、ICA浏览器子系统260、以及普通应用子系统的初始化访问点服务。在一些实施例中,当本地机器10通过网页提交列举请求时,寄载web服务器的中间远程机器30接收该请求并向远程机器30’转发该请求。
[86]一旦接收到列举请求,普通应用子系统524在持久存储器230中查找所有应用的列举。对于从程序邻近子系统270和普通访问点645子系统接收到的请求,根据本地机器10的用户的证书过滤该程序列表(即,用户只能查看那些用户被授权的应用)。
[87]本地机器10也可请求远程机器列举。远程机器列举可使本地机器10的用户查看在群组38中的远程机器的列表。在一个实施例中,远程机器的列表可根据远程机器的类型过滤,如由在该远程机器上的专门的远程机器子系统确定。
[88]依赖于本地机器120正在运行的特定过程,对于远程机器列举的请求传给ICA浏览器子系统260或者普通访问点子系统645。例如,当本地机器120通过网页提交远程机器列举请求时,该请求传给普通访问点子系统645。对于这些实施例,普通远程机器子系统300作为用于ICA浏览器子系统260和普通访问点645子系统服务的初始访问点。一旦接收到远程机器列举请求,普通远程机器子系统在持久存储器230中查找所有远程机器列表。可选的,根据远程机器类型过滤远程机器列表。
[89]图3A是描述处理的另一个实施例的框图,通过该处理本地机器10初始化程序邻近应用的执行,在此实例中是通过万维网。本地机器10执行web浏览器应用80,例如由California,Mountain View的NetscapeCommunication有限公司制造的NETSCAPE NAVIGATOR,或者由Washington,Redmond的Microsoft公司制造的MICROSOFT INTERNETEXPLORER或者由California,Mountain View的Mozilla基金公司制造的FIREFOX,或者由Norway,Oslo的Opera Software ASA制造的OPERA,或者California,Cupertino的Apple Computer有限公司制造的SAFARI。
[90]本地机器10通过web浏览器80发送请求82以访问相应于驻留在远程机器30上的HTML页的统一资源定位器(URL)。在一些实施例中,通过远程机器30返回84到本地机器10的第一HTML页为寻求识别本地机器10的验证页。
[91]仍然看图3A,一旦本地机器10被远程机器30验证,该远程机器准备并向本地机器10传送HTML页88,该页包括程序邻近窗口58,其中显示表示本地机器访问的应用程序的图标57,57’。本地机器10的用户通过点击图标57调用图标57代表的应用的执行。
[92]在一些实施例中,远程机器30代表本地机器10的用户执行程序邻近应用。在这些实施例之一中远程机器30是位于本地机器10和远程机器30’之间的中间远程机器。
[93]参看图3B,其描述通过在web服务目录中GUI的发表提供本地机器可用的多个应用程序的步骤的流程图。为了发表一个应用(步骤300),web发表工具170接收用于应用(例如GUI应用)的web服务说明和访问信息。在一个实施例中,web服务说明包括以上描述的服务信息(例如,提供web服务的商家的名称、服务类型、服务的文字说明、以及SAP)。访问信息可包括,例如,发表的应用名字、传输控制协议(TCP)浏览服务器群组地址、以及MetaFrame服务器IP地址。在一些实施例中,访问信息指示使用的地址和用于穿越网络或安全网关或桥设备的标签。
[94]web发表工具170接着构造服务发表请求以请求web服务的发表(例如GUI应用)(步骤305)。在一个实施例中,服务发表请求包括SAP。在一些实施例中,SAP是包括web服务器30’的网络地址和发表服务器插件165的URL。进一步的,网络地址可为统一资源标识符(URI),其是用于指向web上的对象的名字和地址的类型的通用术语。URL是一种URI。URI的一个实例是web服务器30’的名字(例如,“web服务器”)以及用于发表服务器插件165的CGI脚本名字(例如“dynamic-component”(“动态部件”))。
[95]web发表工具170在持久大容量存储器225中存储与SAP相关联的SAP条目(步骤310)。在一些实施例中,web发表工具170也将所发表的应用信息(例如,ICA-published-app-info)与GUI应用相关联。在进一步的实施例中,web发表工具170还在服务发表请求中包括键值,以标识内容服务器30在持久大容量存储器225中存储的SAP条目。例如,键值可以有“123456677”的值。作为SAP标识web服务器30’、发表服务器插件165的CGI脚本名字,以及以上描述的键值的SAP的一个例子是“http://web-server/dynamic-component/?app=123456677”。
[96]与以上描述的SAP相关联的SAP条目的实例是“key=123456677,value=ICA-published-app-info”。该键值可以任意长(例如,56位键值,128位键值)。在一个实施例中,键值是用加密的随机数字。键值也为键值持有者提供访问权限。尽管以键值的方式进行了示意,可使用任何方式为存储在持久大容量存储器225中的SAP条目提供安全形式。
[97]web发表工具170为内容服务器30提供用于在web服务目录160中发表的服务发表请求(步骤315)。更进一步的,在一个实施例中,内容服务器30向本地机器10传输SAP的键值,以请求特定的网络服务,用于随后用于定位SAP条目。在一个实施例中,服务发表请求的发表使得本地机器10的用户访问该服务。在一个实施例中,可使用Florida,Fort Lauderdale的CitrixSystem有限公司开发的NFUSE将GUI应用发表在web服务目录160上。在一些实施例中,GUI应用的发表者使用应用启动和嵌入(ALE)定制web服务目录160上的GUI应用的发表,ALE也是由Citrix System有限公司开发的。ALE使得GUI应用从HTML页启动或者将应用嵌入HTML页中。
[98]本地机器10接着从web服务目录160查找服务名字(步骤320)。内容服务器30从本地机器10接收该查找(325)并在web服务目录160中寻找所请求的服务的名字。在另一个实施例中,本地机器10的用户导航web服务目录160,直到定位到一个具体服务的名字,该名字是本地机器10的用户试图去寻找的。虽然以本地机器10示意,但是任何web服务目录客户端(例如,UDDI客户端或者LDAP浏览器)可查询或导航该web服务目录160以发现发表的web服务。
[99]一旦定位与接收的查找相关联的SAP,内容服务器30向本地机器10传输该SAP(步骤330)。本地机器10接收该SAP(步骤335)并确定来自于SAP的发表服务器插件165的地址。本地机器10接着向web服务器30’传输用于GUI应用的请求(步骤340)。在一些实施例中,来自于本地机器10的请求是HTTP请求,从web浏览器11传输到web服务器30’。在其他实施例中,在本地机器10上执行的应用(例如,通用目录浏览器或HTML UI)从内容服务器30接收SAP并作为变元向web浏览器11提供SAP。web浏览器11接着可以向web服务器30’自动传输HTTP请求(对于GUI应用)。沿着前述实例的思路,对web服务器30’的应用请求的具体实例是http://web-server/dynamic-component/?app=123456677)。
[100]web服务器30’,和更具体的,发表服务器插件165,接收与应用请求相关联的SAP(步骤345),并确定与该请求相关联的SAP项目(步骤350)。在一个实施例中,发表服务器插件165从本地机器10接收请求,并获得与已被存储在持久大容量存储器225中的该请求(作为SAP入口的一部分)相关联的已发表的应用信息。在一些实施例中,发表服务器插件165使用SAP(或SAP的一部分)作为访问存储在持久大容量存储器225中的适当服务项目(例如,已发表的应用信息)的键值,该SAP(或SAP的一部分)是本地机器10从内容服务器30接收的。
[101]发表服务器插件165接着构造有已发表的应用信息(例如,应用服务器30”的HTTP地址)的文件或文档,并将该文档传输到本地机器10(步骤355)。该发表服务器插件165构造文件以便该文件的格式与应用客户端13兼容。在一个实施例中,该文件是多用途的因特网邮件扩充协议(MIME)或安全MIME(S/MIME)文件。在另一个实施例中,该文件是包含ICAweb客户端被嵌入对象HTML标签的HTML文档。仍然在另一个实施例中,该文件是包含应用流客户端被嵌入对象HTML标签的HTML文档。
[102]web浏览器11随后接收文件并试着打开该文件。在一个实施例中,如果应用客户端13没有在本地机器10上安装,本地机器10与应用服务器30”通信以下载并安装该应用客户端13。一旦安装了该应用客户端13或者,可选的,如果应用客户端13已经在本地机器10上安装,本地机器10启动该应用客户端13以查看从web服务器30’接收的文档(步骤360)。
[103]一旦应用客户端13在本地机器10上安装并被执行,应用服务器30”接着执行该应用并在应用客户端13上显示该应用(步骤365)。如以下结合图7进一步详细描述的,在一个可选的实施例中,该应用服务器30”传输包括该应用的多个应用文件到应用客户端13,以在本地机器10上执行。在另一个实施例中,本地机器10查看该文档(即使在启动该应用客户端13之前)并使用在文档中的信息以便从应用服务器30”获得GUI应用。在此实施例中,GUI应用的显示包括应用客户端30”的安装和执行。更多的,该文档的查看对于本地机器10的用户可以是透明的。例如,本地机器10可从web客户端30’接收文档,并在从应用服务器30”自动请求GUI应用之前解释该文档。
[104]因此,该应用客户端13为所发表的应用、桌面、桌面文档、以及应用客户端13支持的任何其他应用提供基于服务的访问。应用客户端13可提供访问的应用的实例包括,但不限于,WINDOWS桌面、WINDOW文件,例如MICROSOFT EXCEL、WORD以及POWERPOINT(其所有都是由Washington,Redmond的Microsoft Corporation开发的),Unix桌面,例如SUNSOLARIS(其由California,Palo Alto的Sun Microsystems开发),以及由NorthCarolina,Durham的Red Hat有限公司发布的GNU/Linux,以及其他应用。
[105]在一些实施例中,响应于策略引擎关于是否以及怎样本地机器可访问一个应用的决定,提供本地机器10可用的多个应用程序的列举(步骤204)。该策略引擎在作出决定之前可收集关于本地机器的信息。现在看图4A,描述了计算机网络的一个实施例,其包括本地机器10、收集代理404、策略引擎406、策略数据库408、群组38、以及应用服务器30’。在一个实施例中,策略引擎406为远程机器30。在另一实施例中,应用服务器30’是远程机器30’。虽然在图4A所示的实施例中描述只有一个本地机器10、收集代理404、策略引擎406、群组38、以及应用服务器30’,可以理解的是,系统可提供这些部件的每个或任意的多个。
[106]总的来看,当本地机器10向策略引擎406传输请求410用于访问应用时,收集代理404与本地机器10通信,检索关于本地机器10的信息,并向策略引擎406传输本地机器信息412。该策略引擎406通过向接收到的信息412应用来自于策略数据库408的策略作出访问控制决定。
[107]更详细的,本地机器10向策略引擎406传输对于资源的请求410。在一个实施例中,策略引擎406驻留在应用服务器30’上。在另一个实施例中,该策略引擎406是远程机器30。仍然在另一个实施例中,应用服务器30’从本地机器10接收请求410,并向策略引擎406传输该请求410。还是在另一个实施例中,本地机器向远程机器30”’传输对于资源的请求410,该远程机器30’向策略引擎406传送该请求410。
[108]一旦接收到该请求,策略引擎406通过收集代理404启动信息收集。收集代理404收集关于本地机器10的信息,并向策略引擎406传输信息412。
[109]在一些实施例中,收集代理404通过网络连接收集和传送信息412。在一些实施例中,收集代理404包括字节码,例如以字节码编程语言JAVA写的应用。在一些实施例中,收集代理404包括至少一个脚本。在那些实施例中,收集代理404通过在本地机器10上运行至少一个脚本收集信息。在一些实施例中,收集代理包括本地机器10上的Active X控件。Active X控件是专门的组件对象模型(COM)对象,该对象实现为一组接口使得其看起来像控件并且类似控件工作。
[110]在一个实施例中,策略引擎406向本地机器10传输收集代理404。在另一个实施例中,设备1250可存储或高速缓存收集代理。然后设备1250可向本地机器10传输收集代理。在其他实施例中,设备1250可拦截收集代理404的传输。仍然在另一个实施例中,设备1250可加速收集代理的传送。在一个实施例中,策略引擎406在收集代理404向策略引擎406传输信息412后要求收集代理404的第二次执行。在该实施例中,策略引擎406可能没有足够的信息412以确定本地机器10是否满足特定条件。在其他实施例中,策略引擎406响应于接收到的信息412要求收集代理404的多次执行。
[111]在一些实施例中,策略引擎406向收集代理404传输指令以确定收集代理404收集的信息的类型。在那些实施例中,系统管理员可以配置从策略引擎406传输到收集代理404的指令。这提供了对收集的信息的类型的更大的控制。由于对所收集的信息的类型的更大的控制,也扩大了策略引擎406可做出的访问控制决定的类型。收集代理404收集信息412,所述信息412包括但不限于,本地机器10的机器ID、操作系统类型、操作系统补丁的存在、安装的网卡的MAC地址、客户端设备上的数字水印、在活动目录中的成员、病毒扫描器的存在、个人防火墙的存在、HTTP头、浏览器类型、设备类型、例如因特网协议地址或者地址的范围的网络连接信息、远程机器30的机器ID,包括用于改变时区的调整的访问请求的日期或时间、以及授权证书。在一些实施例中,收集代理收集信息以确定使用加速程序6120是否可加速在客户端上的应用。
[112]在一些实施例中,设备类型是个人数字助理。在其他实施例中,设备类型是蜂窝电话。在其他实施例中,设备类型是膝上型电脑。在其他实施例中,设备类型是桌上型电脑。在其他实施例中,设备类型是网络亭子(InternetKiosk)。
[113]在一些实施例中数字水印包括数据嵌入。在一些实施例中,水印包括插入到文件中提供关于文件的源信息的数据的模式。在其他实施例中,水印包括数字散列文件以提供篡改检测。在其他实施例中,水印提供关于文件的版权信息。
[114]在一些实施例中,网络连接信息涉及带宽能力。在其他实施例中,网络连接信息涉及因特网协议地址。仍然在其他实施例中,网络连接信息包括因特网协议地址。在一个实施例中,网络连接信息包括标识登录代理的网络时区,本地机器向该登录代理提供验证证书。
[115]在一些实施例中,授权证书包括多种类型的验证信息,包括但不限于,用户名、客户端名、客户端地址、密码、PIN、语言样本、一次性验证码、生物学数据、数字证书、标签等、及其组合。在接收到收集的信息412后,策略引擎406基于接收到的信息412做出访问控制决定。
[116]现在看图4B,其描述策略引擎406的一个实施例的框图,包括第一部件420,该部件包括条件数据库422以及登录代理424;还包括第二部件430,该部件包括策略数据库432。第一部件420将来自于条件数据库422的条件应用到接收到的关于本地机器10的信息,并且确定接收到的信息是否满足该条件。
[117]在一些实施例中,条件可能要求本地机器10执行特定的操作系统以满足该条件。在一些实施例中,条件可以要求本地机器10执行特定的操作系统补丁以满足该条件。仍然在另一个实施例中,条件可以要求本地机器10为每个安装的网卡提供MAC地址以满足该条件。在一些实施例中,条件可以要求本地机器10指出在特定激活目录中的成员以满足该条件。在另一个实施例中,条件可以要求本地机器10执行病毒扫描器以满足该条件。在其他实施例中,条件可以要求本地机器10执行个人防火墙以满足该条件。在一些实施例中,条件可以要求本地机器10包括特定的设备类型以满足该条件。在其他实施例中,条件可以要求本地机器10建立特定类型的网络连接以满足该条件。
[118]如果接收到的信息满足条件,第一部件420为该条件在数据集426中存储一个标识符。在一个实施例中,如果接收到的信息使条件为真,则该信息满足该条件。例如,条件可以要求安装特定的操作系统。如果本地机器10有该操作系统,则该条件为真并且被满足。在另一个实施例中,如果接收到的信息使一个条件为假,则该信息满足该条件。例如,条件可以针对恶意软件(spyware)是否存在于本地机器10上。如果本地机器10不包括恶意软件(spyware),则条件为假并且被满足。
[119]在一些实施例中,登录代理424驻留在策略引擎406之外。在另一实施例中,登录代理424驻留在策略引擎406中。在一个实施例中,第一部件420包括登录代理424,该代理发起关于本地机器10的信息的收集。在一些实施例中,登录代理424进一步包括数据存储。在这些实施例中,数据存储包括收集代理收集信息的条件。该数据存储与条件数据库422明显不同。
[120]在一些实施例中,登录代理424通过执行收集代理404发起信息收集。在其他实施例中,登录代理424通过向本地机器10传输收集代理404发起信息收集,用于本地机器10上的执行。仍然在其他实施例中,登录代理424在接收信息412后发起其他条件信息收集。在一个实施例中,登录代理424也接收信息412。在该实施例中,登录代理424基于接收到的信息412产生数据集426。在一些实施例中,登录代理424通过将来自数据库422的条件应用到从收集代理404接收的信息而产生数据集426。
[121]在另一实施例中,第一部件420包括多个登录代理424。在该实施例中,多个登录代理424中的至少一个驻留在每个网络域,从这些网络域,本地机器10可传输资源请求。在该实施例中,本地机器10向特定的登录代理424传输资源请求。在一些实施例中,登录代理424通过网络域传输到策略引擎406,本地机器10从该网络域访问登录代理424。在一个实施例中,网络域被称为本地机器10的网络区域,本地机器10从该网络域访问登录代理424。
[122]条件数据库422存储第一部件420将应用于接收到的信息的条件。策略数据库432存储第二部件430将应用到接收到的数据集426的条件。在一些实施例中,条件数据库422和策略数据库432在ODBC-相容数据库中存储数据。例如,条件数据库422和策略数据库432作为ORACLE数据库被提供,该数据库由Calif,Redwood Shores的Oracle公司制造。在其他实施例中,条件数据库422和策略数据库432可为Microsoft ACCESS数据库或Microsoft SQL server数据库,上述产品由Wash,Redmond的Microsoft公司制造。
[123]在第一部件420将接收到信息应用到条件数据库422中的每个条件之后,第一部件向第二部件430传输数据集426。在一个实施例中,第一部件420仅仅向第二部件430传输数据集426。因此,在该实施例中,第二部件430不接收信息412,仅仅接收所满足的条件的标识符。第二部件430接收数据集426,并基于在数据集426中识别的条件,通过应用来自策略数据库432的策略做出访问控制决定。
[124]在一个实施例中,策略数据库432存储应用到接收到的信息412的策略。在一个实施例中,通过系统管理员至少部分的指定存储在策略数据库中的策略。在另一实施例中,用户指定存储在策略数据库432中的至少一些策略。用户-指定的一个策略或多个策略作为优先选择被存储。策略数据库432可存储于易失性或非易性存储器中,或者例如分布在多个服务器上。
[125]在一个实施例中,只有在一个或多个条件被满足时,策略才允许对资源的访问。在另一实施例中,策略允许对资源的访问但严禁向本地机器10传输资源。另一个策略可能在本地机器10上做出临时连接,其要求在安全网络内访问。在一些实施例中,资源为应用程序并且本地机器10已请求执行应用程序。在这些实施例的一个中,策略允许本地机器10上的应用程序的执行。在这些实施例的另一个中,策略可使得本地机器10接受包括该应用程序的文件流。在这个实施例中,文件流可在独立的环境中被存储和执行。仍然在这些实施例的另一个中,策略可以仅仅允许在远程机器上执行该应用程序,例如应用服务器,以及要求该远程机器向本地机器10传输应用输出数据。
[126]现在看图4C,其描述了步骤的一个实施例的流程图,由策略引擎406基于接收到的关于本地机器10的信息使用该步骤做出访问控制决定。一旦接收到所收集的关于本地机器10的信息(步骤450),策略引擎406基于该信息产生数据集(步骤452)。该数据集包含用于每个被接收到的信息412满足的条件的标识符。该策略引擎406应用策略到数据集426内的每个所识别的条件。该应用产生资源列举,本地机器10可访问该资源列举(步骤454)。策略引擎406接着将该列举提供给本地机器。在一些实施例中,策略引擎406创建超文本标记语言(HTML)文件,用于将所述列举提供给本地机器。
[127]现在看图4D,描述了网络的一个实施例,其包括本地机器10、收集代理404、策略引擎406、策略数据库408、条件数据库410、本地机器20、会话服务器420、所存储的应用数据库422、远程机器30’、第一数据库428、远程机器30”、以及第二数据库432。概括地说,当本地机器10向访问控制服务器406传输用于访问应用程序的请求412时,收集代理404与本地机器10通信,查找关于本地机器10的信息,并向策略引擎406传输本地机器信息414。如上述在图4A和4B中讨论的,策略引擎406做出访问控制决定。本地机器10接收与本地机器10相关联的可用的应用的列举。
[128]在一些实施例中,会话服务器420在本地机器10和多个应用会话间建立连接,该多个应用会话与本地机器10相关联。在另一个实施例中,策略引擎406决定本地机器10有权检索包含该应用的多个应用文件,以及有权在本地执行该应用程序。在一些实施例中,策略引擎406决定是否通过向本地机器10传输加速程序6120以加速应用文件的传送。在这些实施例的一个中,远程机器30’存储应用会话数据以及包括该应用程序的多个应用文件。在这些实施例的另一个中,本地机器10与远程机器30’建立应用流会话,该远程机器30’存储应用会话数据和包含该应用程序的多个应用文件。在一些实施例中策略引擎406决定是否通过向本地机器10传输加速程序6120以加速会话流的传送。在一些实施例中,策略引擎406决定是否通过向本地机器10传输加速程序6120以加速数据文件的传送。
[129]现在看图4E,描述了步骤的流程图,会话服务器420使用该步骤为本地机器10提供对其相关的应用会话的访问。该会话服务器420从策略引擎406接收关于本地机器10的包括策略引擎406做出的访问控制决定的信息(步骤480)。会话服务器420产生与应用相关联的列举(步骤482)。会话服务器420可将本地机器10连接到相关应用(步骤484)。在一个实施例中,该信息也可包括本地机器信息414。在另一个实施例中,该信息包括在本地执行应用程序的授权。
[130]会话服务器420产生相关应用列举(步骤482)。在一些实施例中,策略引擎406识别已经和本地机器10相关联的多个应用会话。在另一实施例中,会话服务器420识别与本地机器10相关联的所存储的应用会话。在这些实施例的一些中,一旦从策略引擎406接收到该信息,会话服务器420自动识别所存储的应用会话。在一个实施例中,存储的应用数据库422驻留在会话服务器420中。在另一实施例中,存储的应用数据库422驻留在策略引擎406中。
[131]存储的应用数据库422包含数据,该数据与群组38中的多个远程机器相关联,该远程机器执行应用会话或提供对应用会话数据和应用文件的访问,该应用文件包括应用程序。在一些实施例中,识别与本地机器10相关联的应用会话要求参考与一个或多个远程机器相关联的所存储的数据。在这些实施例的一些中,会话存储器420参考与一个或多个远程机器相关联的所存储的数据。在这些实施例的其他一些实施例中,策略引擎406参考与一个或多个远程机器相关联的所存储的数据。在一些实施例中,第一应用会话在远程机器30’上运行,并且第二应用会话在远程机器30”上运行。在其他实施例中,所有的应用会话在群组38中的单个远程机器30上运行。
[132]会话服务器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
[133]表1中示出的会话服务器420包括将每个应用会话与启动该应用会话的用户相关联的数据,包括客户端计算机10或20的标识,以及客户端计算机10或20的IP地址,若存在客户端计算机10或20的标识的话,从该客户端计算机10或20的标识,用户一般可连接到远程机器30’。该示出的会话服务器420也包括每个应用会话的状态。应用会话状态可为,例如,“激活”(意味着用户连接到应用会话),或者“断开”(意味着用户没有连接到该应用会话)。在可选的实施例中,应用会话的状态也可被设置为“执行-断开”(意味着用户已经从应用会话断开,但是在应用会话中的应用仍然在执行),或者“停止-断开”(意味着用户断开,并且在应用会话中的应用没有正在执行,但是它们在断开之前的即时操作状态已被存储)。会话服务器420进一步存储信息和数据,该信息指示应用116正在每个应用会话内执行,并且该数据指示服务器上每个应用的过程。在远程机器30’是群组38一部分的实施例中,会话服务器420至少是动态存储的一部分,并且该会话服务器也包括在表1的最后两行中的数据,该数据指示在群组38中的远程机器30上的每个应用现在正在/过去正在执行,以及远程机器30的IP地址。在可选的实施例中,会话服务器420包括用于在每个应用会话中的每个应用的状态指示。
[134]例如,在表1的例子中,存在三个应用会话,应用会话1、应用会话2以及应用会话3。应用会话1与用户1相关联,用户1正在使用终端1。终端1(terminal one)的IP地址是152.16.2.50。应用会话1的状态是激活,并且在应用会话1中正执行字处理程序。字处理程序在服务器A上作为处理号码1正在被执行。服务器A’的IP地址是152.16.2.55。表1中的应用会话2是断开的应用会话118的实例。应用会话2与用户2相关联,但应用会话2没有连接到本地机器10或者20。应用会话2包括正在IP地址152.16.2.55的服务器A上执行的数据库程序,作为处理代码3。应用会话3是一个用户怎样与在不同远程机器30上操作的应用会话相互作用的实例。应用会话3像应用会话1一样与用户1相关联。应用会话3包括在IP地址152.16.2.56的服务器B上正在被执行的电子数据表程序,为处理代码2,但是包括在应用会话1中的应用会话正在服务器A上执行。
[135]在另一个例子中,当通信越过具有诸如服务器B的第二远程机器30”的应用流会话来获取来自第二远程机器30”的第二应用程序用于本地执行时,用户可以通过在诸如服务器A的远程机器30’上执行的应用会话来访问第一应用程序。当不满足第一应用程序的执行所必须的条件时,本地机器10的用户可能拥有获得的在本地执行第二应用程序的授权。
[136]在一个实施例中,配置会话服务器420接收断开请求以断开与本地机器10相关联的应用会话,并且响应该请求断开该应用会话。该会话服务器420在从应用会话断开本地机器10后,继续执行应用会话。在该实施例中,会话服务器420访问所存储的应用数据库422,并更新与每个断开的应用会话相关联的数据记录,以便该记录指示与本地机器10相关联的应用会话被断开。
[137]在接收到与连接到网络的本地机器相关联的验证信息之后,会话服务器420参考所存储的应用数据库422以识别与本地机器的用户相关联的任何激活的应用会话,如果授权信息与例如本地机器20相关联,则用于识别连接到例如本地机器10的不同本地主机的任何激活的应用会话。在一个实施例中,如果会话服务器420识别任何这样激活的应用会话,该会话服务器420从本地机器10自动断开应用会话,并将该应用会话连接到现在的本地机器20。在一些实施例中,接收到的验证信息将限制本地机器10可重新连接的该应用会话。在其他实施例中,接收到的验证信息授权在本地机器20上的应用程序的执行,其中,本地机器10可能已经拒绝该授权。在这些实施例的一个中,会话服务器420可提供本地机器访问信息以获取用于本地执行的应用程序。
[138]接收请求以执行所列举的应用(步骤206)。在一个实施例中,本地机器10的用户从可用应用的接收列举中选择应用用于执行。在另一个实施例中,用户独立于接收到的列举选择应用用于执行。在一些实施例中,用户通过选择应用的图形表示来选择该应用用于执行,该图形表示通过客户端代理呈现在本地机器10上。在其他实施例中,用户通过选择应用的图形表示选择该应用用于执行,该图形表示呈现给web服务器或其他远程机器30”’上的用户。在一些实施例中,设备1250或加速程序6120加速图形表示的传送。在一些实施例中,设备1250高速缓存或存储该图形表示。在一些实施例中,设备可高速缓存或存储任意的和所有的相关应用或部分相关应用。
[139]仍然在其他的实施例中,用户请求访问文件。在这些实施例的一个中,请求执行应用以提供给用户对文件的访问。在这些实施例的另一个中,在选择用于执行的文件后,该应用被自动选择用于执行。仍然在这些实施例的另一个中,在对文件的访问请求之前,应用与文件的类型相关联,在识别与请求的文件相关联的文件类型后,启用应用的自动选择。在一些实施例中,可使用设备1250或加速程序6120加速一个或多个文件的传送。在一些实施例中设备1250可高速缓存或存储一些或所有的文件。
[140]在一个实施例中,所列举的应用包括多个应用文件。在一些实施例中,该多个应用文件驻留在远程机器30’上。在其它实施例中,该多个应用文件驻留在单独的文件服务器或远程机器30”上。仍然在其它实施例中,该多个应用文件可被传输到远程机器10。仍在其他实施例中,在该多个应用文件中的文件可先于该多个应用文件中的第二个文件传输到本地机器10上之前被执行。在一些实施例中,可使用设备1250或加速程序6120来加速一个或多个应用文件的传送。
[141]在一些实施例中,远程机器30从远程机器30’获取关于所列举的应用的信息。在这些实施例的一个中,远程机器30接收寄载多个应用文件的远程机器30”的标识。在这些实施例的另一个中,远程机器30接收多个应用文件的位置标识,该标识符合通用命名标准(UNC)。仍然在这些实施例的另一中,该标识包括网络位置和用于应用流协议的套接字。
[142]在一个实施例中,远程机器30获取包含关于所列举的应用的信息的文件。该文件可包括寄载所列举应用的服务器的的位置的标识。该文件可包括所列举的应用的多个版本的标识。该文件可包括多个应用文件的列举,该多个应用文件包括所列举的应用。该文件可包括压缩文件的标识,该压缩文件包括包含所列举的应用的多个应用文件。该文件可包括必须条件的标识,这些必须条件通过执行所列举的应用的机器来满足。该文件可以包括与所列举的应用相关联的数据文件的列举。该文件可包括脚本的列举,该脚本被用于执行所列举的应用的机器执行。该文件可包括与所列举的应用相关联的登记数据的列举。该文件可包括规则的列举,该规则用于所列举的应用在隔离环境之内执行的一个实施例中。在一个实施例中,该文件可被指为“清单(manifest)”文件。文件包含的信息在下面结合图21将进一步详细描述。
[143]在一些实施例中,远程机器30向本地机器10的识别特征应用策略。在这些实施例的一个中,响应所识别的特征,远程机器30识别所列举的应用的版本用于执行。在这些实施例的另一个中,远程机器30做出执行与本地机器10的特征相兼容的所列举的应用的版本的决定。仍然在这些实施例的另一个中,远程机器30做出执行与在本地机器10上执行的操作系统相兼容的所列举的应用的版本的决定。仍在这些实施例的另一个中,远程机器30做出执行与本地机器10上的操作系统的修订级相兼容的所列举的应用的版本的决定。在这些实施例的一个中,远程机器做出执行与本地机器10上的操作系统指定的语言相兼容的所列举的应用的版本的决定。
[144]响应策略,选择用于执行所列举的应用的预定数量的方法之一,预定数量的方法包括用于所列举应用的应用流的方法(步骤208)。在一个实施例中,响应策略的应用,对与本地机器10相关联的接收到的证书做出选择。在一些实施例中,通过策略引擎做出选择,例如在上述图4A、4B、4C中描述的策略引擎406。在其他实施例中,接收证书和请求以执行所列举应用的远程机器30进一步包括这样的策略引擎406。
[145]在一个实施例中,预定数量的方法包括用于执行在远程机器30’上的所列举应用的方法。在另一个实施例中,预定数量的方法包括用于执行本地机器10上的所列举应用的方法。仍然在另一个实施例中,预定数量的方法包括用于执行第二远程机器30’上的所列举的应用的方法。
[146]在一些实施例中,预定数量的方法包括用于通过应用流会话向本地机器10提供所列举的应用的方法。在这些实施例的一个中,本地机器10包括流服务代理,该代理可以启动与远程机器30’的连接,并从远程机器30’接收传输的数据包的流。
[147]数据包的流可以包括应用文件,该应用文件包括所列举的应用。在一些实施例中,应用文件包括与应用程序相关联的数据文件。在其他实施例中,应用文件包括执行应用程序所需的可执行文件。仍然在其他实施例中,应用文件包括元数据,该元数据包括关于文件的信息,例如位置、兼容性需求、配置数据、登记数据、用于使用在隔离环境中的执行脚本规则的标识、或者授权需求。在一个实施例中,数据包的流通过诸如TCP/IP包的有效载荷的传输层连接来传输。
[148]在一些实施例中,流应用先于包括流应用的多个应用文件中的每个应用文件的传输执行。在这些实施例的一个中,通过本地机器10接收多个应用中的一个应用文件后,开始流应用的执行。在这些实施例的另一个中,通过本地机器10接收到多个应用文件中的可执行应用文件后,开始流应用的执行。仍然在这些实施例的另一个中,本地机器10执行多个应用文件中的第一个接收到的应用文件,并且第一个接收到的应用文件请求对多个应用文件中的第二个应用文件访问。
[149]在一个实施例中,流应用在本地机器10上执行,无需永久驻留在本地机器10上。在这个实施例中,流应用可在本地机器10上执行,并且一旦中止流应用,则从本地机器10上移除。在另一个实施例中,在每个应用文件的预先部署的副本存储在本地机器10上之后,流应用在本地机器10上执行。仍然在另一实施例中,在每个应用文件的副本存储在本地机器的隔离环境中之后,流应用在本地机器10上执行。仍然在另一个实施例中,在每个应用文件的副本存储在本地机器10上的高速缓存中之后,流应用在本地机器10上执行。
[150]在一个实施例中,响应于本地机器10可接收流应用文件的决定,从预定数量的方法中选择用于将应用流式传输到本地机器10的方法。在另一实施例中,响应于本地机器10授权本地执行流应用文件的决定,从预定数量的方法中选择用于将应用流式传输到本地机器10的方法。
[151]在其他实施例中,预定数量的方法包括用于向本地机器10提供应用输出数据的方法,应用输出数据从在远程机器30上所列举应用的执行产生。在这些实施例的一个中,远程机器30是接收用于执行所列举应用的请求的远程机器30。在这些实施例的另一个中,远程机器30是第二远程机器30’,例如文件服务器或应用服务器。在一些实施例中,所列举的应用驻留在执行所列举的应用的本地机器30’上。在其他实施例中,执行所列举的应用的远程机器30’首先从第二远程机器30’通过应用流会话接收所列举的应用。在这些实施例的一个中,远程机器30’包括流服务代理,该流服务代理可以开始与第二远程机器30’的连接,并从第二远程机器30’接收所传输的数据流。在这些实施例的另一个中,可使用负载平衡技术识别第二远程机器30’。仍然在这些实施例的另一中,可基于接近远程机器30’而识别第二远程机器30’。这些实施例将结合下图9更详细的描述。
[152]在一些实施例中,远程机器30从预定数量的用于执行所列举的应用的方法中选择一种方法,该方法用于将所列举的应用流传输到远程机器30,在远程机器30上执行所列举的应用,以及向本地机器10提供由执行所列举的应用而产生的应用输出数据。在这些实施例的一个中,远程机器30响应本地机器10的评价来选择方法。在这些实施例的另一个中,响应策略的应用,做出本地机器10的评价的决定。仍然在这些实施例的另一个中,响应接收到的证书的评价做出决定。在一个实施例中,远程机器30接收包括所列举的应用的多个应用文件。在另一个实施例中,远程机器30通过表示层协议,例如ICA表示层协议或远程桌面窗口表示层协议或者X-窗口表示层协议,提供应用输出数据。
[153]在一些实施例中,远程机器30也提供与所列举的应用相关联的访问信息,响应所选择的方法产生该访问信息。在这些实施的一个中,访问信息向本地机器10提供选择的方法的指示,该选择的方法用于所列举的应用的执行。在这些实施例的另一个中,访问信息包括所列举的应用的位置的标识,该标识服从通用命名标准(UNC)。仍然在这些实施例的另一个中,访问信息包括会话管理服务器的标识。
[154]在一些实施例中,访问信息包括启动票据,该启动票据包括验证信息。在这些实施例的一个中,本地机器10可使用该启动票据验证从远程机器30接收的访问信息。在这些实施例的另一个中,本地机器10可使用该启动票据将其本身验证到寄载所列举的应用的第二远程机器30。仍然在这些实施例的另一个中,响应来自于本地机器10的用于启动票据的请求,远程机器30包括在访问信息中的启动票据。
[155]现在看图5,描述了实施例的框图,其中本地机器10请求应用程序的执行并且包括远程机器30的应用传送系统500选择执行应用程序的方法。在一个实施例中,远程机器30从本地机器10接收证书。在另一个实施例中,远程机器30从本地机器10接收用于可用应用列举的请求。
[156]在一些实施例中,提供多个、冗余的远程机器30,30’,30”,30”’以及30””。在这些实施例的一个中,例如,存在多个文件服务器、多个会话管理服务器、多个中间集结机器(staging machine)、多个web接口、或者多个访问组控制台。在这些实施例的另一个中,如果远程机器失效,选择冗余远程机器30提供失效机器的功能。在其他实施例中,虽然远程机器30、30’、30”、30”’以及30””、以及网络接口558和访问组控制台520被描述为具有管理服务器、会话管理服务器、中间集结机器、文件服务器、web服务器、以及访问组控制台的单独功能的单独远程机器30,但是可提供具有所有这些机器功能的单个远程机器30。仍然在其他实施例中,远程机器30可提供一个或多个其他远程机器的功能和服务。
[157]现在更详细的看图5,该框图描述了应用传送系统500的一个实施例,该系统提供对应用程序的访问。应用传送系统500可包括一个或多个远程机器30、设备1250或它们的任意组合。除了上述结合图1D描述的接口和子系统之外,远程机器30进一步包括管理通信服务514、XML服务516以及管理服务504。管理服务504包括应用管理子系统506、服务管理子系统508、会话管理子系统510以及许可管理子系统512。远程机器30可与访问组控制台520通信。
[158]在一个实施例中,管理服务504进一步包括专用远程过程调用子系统、元帧(Metaframe)远程过程调用(MFRPC)子系统522。在一些实施例中,MFRPC子系统522在远程机器30上的子系统间路由通信,例如XML服务516以及管理服务504。在其他实施例中,MFRPC子系统522提供远程过程调用(RPC)接口用于调用管理功能,向管理服务504传送RPC调用,并且向做出调用的子系统返回结果。
[159]在一些实施例中,远程机器30与协议引擎,例如图4B中描述的协议引擎406通信。在这些实施例的一个中,远程机器30与驻留在远程机器30’上的协议引擎406通信。在其他实施例中,远程机器30进一步包括协议引擎406。
[160]远程机器30可与访问组控制台520通信。访问组控制台520可寄载管理工具到远程机器30或群组38的管理员。在一些实施例中,远程机器30使用XML与访问组控制台520通信。在其他实施例中,远程机器30使用简单对象访问协议(SOAP)与访问组控制台520通信。
[161]对于例如图1D和图5中描述的例子,其中远程机器30包括子系统的子集,管理服务504包括多个子系统。在一个实施例中,每个子系统或者为单线程或者为多线程子系统。线程是运行在多任务环境中的独立的可执行流。单线程子系统在一个时间只可以执行一个线程。多线程子系统可以支持多个并发执行线程,例如,多线程子系统可同时执行多个任务。
[162]应用管理子系统506管理与多个应用相关联的信息,上述多个应用可以被流式传输。在一个实施例中,应用管理子系统506控制来自于其他部件的请求,例如用于存储、删除、更新、列举、或解析应用的请求。在另一实施例中,应用管理子系统506控制由与可被流式传输的应用相关的部件发出的请求。这些事件可分为三种类型的事件:应用发表、应用列举以及应用启动,下面将进一步详细的描述每一个。在其他实施例中,应用管理子系统506进一步包括对于应用解决(resolution)、应用公布(publication)以及应用发表(publishing)的支持。在其他实施例中,应用管理子系统506使用数据存储器来存储应用的性质和策略。
[163]服务器管理子系统508控制专用于服务器群组配置中的应用流的配置。在一些实施例中,服务器管理子系统508也控制请求获取与群组38的配置相关联的信息的事件。在其他实施例中,服务器管理子系统508控制由与远程机器相关的其他部件发送的事件,该远程机器提供对通过应用流的应用的访问和这些远程机器的性质。在一个实施例中,服务器管理子系统508存储远程机器性质和群组性质。
[164]在一些实施例中,远程机器30进一步包括一个或多个公共应用子系统520,该子系统为一个或多个专用应用子系统提供服务。这些远程机器30也可具有一个或多个公共远程机器子系统,该子系统为一个或多个专用远程机器子系统提供服务。在其他实施例中,不提供公共应用子系统,每个专用应用和远程机器子系统实现所有请求的功能性。
[165]在一个实施例中,其中远程机器30包括公共应用子系统524,公共应用子系统524管理用于发表的应用的公共性质。在一些实施例中,公共应用子系统524控制事件,该事件请求获取与发表的应用或公共特征相关联的信息。在其他实施例中,公共应用子系统524控制所有由与公共应用及它们的属性相关的其他部件发送的事件。
[166]公共应用子系统524可向群组38“发表”应用,这使得通过本地机器10每个应用可用于列举和启动。通常,应用被安装在每个远程机器30上,在远程机器30上期望应用的可用性。在一个实施例中,为了发表应用,管理者运行指定信息的管理工具,这些信息诸如远程机器30寄载应用、在每个远程机器上的可执行文件的名称、用于执行应用(例如,音频、视频、加密等)的本地机器的所请求的能力、以及能够使用该应用的用户列举。此指定的信息被分类为应用专用信息以及公共信息。应用专用信息的实例为:用于访问应用的路径名和用于运行应用的可执行文件的名称。公共信息(例如公共应用数据)包括,例如,应用的用户友好名称(例如“Microsoft WORD 2000”),应用的唯一标识以及应用的用户。
[167]应用专用信息和公共信息可被发送到专用应用子系统,该子系统控制在寄载应用的每个远程机器上的应用。专用应用子系统可向持久存储器240写入应用专用信息和公共信息。
[168]当被提供时,公共应用子系统524也提供用于管理群组38中的发表的应用的设备。通过公共应用子系统524,管理员可使用例如访问组控制台520的管理工具管理群组38的应用来配置应用组并且产生这些应用组的应用树分级。每个应用组可以被表示为应用树分级中的文件夹。在应用树分级中的每个应用文件夹可包括一个或多个其他应用文件夹和远程机器的指定实例。公共应用子系统524提供建立、移动、重命名、删除、以及列举应用文件夹的功能。
[169]在一个实施例中,公共应用子系统524在控制应用列举和应用解决请求中支持应用管理子系统506。在一些实施例中,响应一类数据文件和用于处理该类数据文件的应用之间的映射,公共应用子系统524提供用于识别用于执行的应用的功能性。在其它实施例中,第二应用子系统提供用于文件类型关联的功能。
[170]在一些实施例中,远程机器30进一步包括策略子系统。策略子系统包括用于在本地机器10请求应用的执行时确定是否应用可被流式传输到本地机器10的策略规则。在一些实施例中,策略子系统识别与发表在访问组控制台520中的流应用相关联的服务器访问选项。在这些实施例的一个中,策略子系统服务器使用服务器访问选择作为策略以代替策略规则。
[171]会话监控子系统520保持并更新与本地机器10相关联的应用流会话的会话状态,并执行用于应用流会话的许可请求。在一个实施例中,会话管理子系统510监控会话和记录事件,例如应用的启动或者应用流会话的终止。在另一个实施例中,会话监控子系统510接收例如心跳信息的通信,从本地机器10传输到远程机器30。仍然在另一实施例中,会话管理子系统510响应来自管理工具关于会话的询问,例如访问组控制台520内的工具。在一些实施例中,管理服务504进一步包括许可证管理子系统,该子系统与会话管理子系统通信以便为了应用的执行向本地机器提供并保存许可。
[172]在一个实施例中,管理服务504提供用于应用列举和应用解决的功能。在一些实施例中,管理服务504也提供用于应用启动、会话监控和跟踪、应用发表以及认证执行的功能。
[173]现在看图6,描述了远程机器30的一个实施例的框图,该远程机器30包括提供应用列举的管理服务。管理服务504通过使用与XML服务516交互的web接口可以提供应用列举。在一个实施例中,XML服务516列举用于本地机器10的用户的应用。在另一实施例中,XML服务516实现以上描述的ICA浏览器子系统以及程序邻近子系统的功能。XML服务516可以与管理通信服务514相互作用。在一个实施例中,XML服务516使用管理通信服务514产生应用列举请求。应用列举请求可以包括客户类型,该客户类型指示当执行所列举的应用时所使用的执行方法。应用列举请求被发送到公共应用子系统524。在一个实施例中,公共应用子系统524返回与应用列举请求的客户类型相关联的应用的列举。在另一个实施例中,公共应用子系统524向本地机器10的用户返回可用的应用列举,响应策略的应用向与本地机器10相关联的证书返回该选择的列举。在此实施例中,如上述结合图4B所描述的,策略引擎406可向由收集代理404收集的证书应用该策略。仍然在另一个实施例中,直到请求该列举的应用的执行,返回该应用的列举并推迟到本地机器10的策略的应用。
[174]管理服务504可提供用于识别寄载应用的第二远程机器30的应用解决服务。在一个实施例中,第二远程机器30’为文件服务器或应用服务器。在一些实施例中,管理服务504查阅文件,该文件包括用于寄载应用的多个远程机器30的标识符。在一个实施例中,管理服务504响应来自本地机器10的对于执行应用的请求来提供应用解决服务。在另一个实施例中,管理服务504识别第二远程机器30’,该第二远程机器30’能实现执行应用的、与第一远程机器30的不同方法。在一些实施例中,管理服务504识别第一远程机器30’,该第一远程机器30’可以向本地机器10流式传输应用程序,并且第二远程机器30’可以执行应用程序,并向本地机器10提供响应应用程序的执行而产生的应用输出数据。
[175]在一个实施例中,web接口向XML服务516传输应用解决请求。在另一个实施例中,XML服务516接收应用解决请求并向MFRPC子系统522传输该请求。
[176]在一个实施例中,MFRPC子系统522识别包括带有接收到的应用解决请求的客户端类型。在另一实施例中,MFRPC子系统向该客户端类型应用策略并确定将该应用“流式传输”到本地机器10。在该实施例中,MFRPC子系统522可向应用管理子系统506转发该应用解决请求。在一个实施例中,一旦接收到来自于MFRPC子系统522的应用解决请求,应用管理子系统506可为本地机器10识别远程机器30””,该远程机器30””作为会话管理服务器562运行。在一些实施例中,本地机器向会话管理服务器562传输心跳消息。在另一个实施例中,应用管理子系统506可识别寄载多个应用文件的远程机器30’,这些应用文件包括被流式传输到本地机器10的应用。
[177]在一些实施例中,应用管理子系统506使用文件来列举寄载多个应用文件的多个远程机器以识别该远程机器30’。在其它实施例中,应用管理子系统506识别远程机器30’,该远程机器30’的IP地址相似于本地机器10的IP地址。仍然在其它实施例中,应用管理子系统506识别远程机器30’,该远程机器30’的IP地址在本地机器10可访问的IP地址范围内。
[178]仍然在另一个实施例中,MFRPC子系统522向客户端类型应用策略,并确定可在远程机器30’上执行应用,远程机器30’向本地机器10传输由应用的执行而产生的应用输出数据。在该实施例中,MFRPC子系统522可向公共应用子系统524转发该应用解决请求,以获取用于本地机器30’的主机地址的标识符。在一个实施例中,识别的远程机器30’可使用例如ICA或RDP或X-Windows的表示层协议向本地机器传输应用输出数据。在一些实施例中,远程机器30’通过应用流会话从第二远程机器30’接收应用。
[179]在一个实施例中,一旦完成应用列举和应用解析,访问信息被传输到本地机器10,包括用于列举应用的执行方法的识别以及寄载所列举应用的远程机器30’的标识符。在一个实施例中,此处管理服务504确定所列举的应用将会在本地机器10上执行,web接口建立并向本地机器10传输包括关于所列举的应用的名称解析信息的文件。在一些实施例中,文件可使用扩展名“.rad”标识。本地机器10可响应于接收到的文件的内容来执行所列举的应用。表2描述包含在文件中的信息的一个实施例:
域                  描述                                         源
UNC路径             指向文件服务器上的容器主清单文件             XML服务
初始程序            程序从容器启动                               XML服务
命令行              用于使用FTA启动文件                          XML服务
web服务器URL        用于从RADE客户端到WI的消息                   WI配置
群组ID              应用属于的群组-心跳消息所需                  WI配置
启动票据            应用流客户端使用启动票据获得授权程序执行     XML/IMA
                    的许可
ICA后退启动信       如果后退是被允许的,嵌入ICA文件用于后退      XML服务
表2
[180]如表2所示,文件也可包括启动票据,本地机器在执行应用中使用该启动票据。在一些实施例中,启动票据在预定时间周期之后终止。在一个实施例中,本地机器向寄载将被执行的列举的应用的远程机器提供启动票据。本地机器的用户使用启动票据授权对列举的应用的访问,可有助于禁止用户重新使用文件或者产生文件的未授权版本以对应用进行不适当的访问。在一个实施例中,启动票据包括大量随机产生的数字。
[181]结合图2所述,当接收到与本地机器10或本地机器10的用户相关联的证书,开始用于选择应用程序的执行方法的方法(步骤202),并且响应接收到的证书,提供对本地机器10有用的多个应用程序的列举(步骤204)。接收请求以执行列举的应用(步骤206),并且响应策略,选择用于执行列举应用的预定数量的方法的一个,预定数量的方法包括用于列举应用的应用流的方法(步骤208)。
[182]现在参见图7,描述访问包括应用程序的多个文件所采用的多个步骤的一个实施例的流程图。本地机器执行本地机器的启动前分析(步骤210)。在一个实施例中,在获取和执行包括应用程序的多个应用文件之前,本地机器10执行启动前分析。在另一个实施例中,响应所接收到的指示启动前分析是用于授权访问包括应用程序的多个应用文件的必要条件,本地机器10执行启动前分析。
[183]在一些实施例中,本地机器10从远程机器30接收与多个应用文件相关联的访问信息。在这些实施例的一个中,访问信息包括寄载多个应用文件的远程机器30’的位置的标识。在这些实施例的另一个中,本地机器10接收包括一个或多个版本的应用程序的多个应用的标识。仍在这些实施例的另一个中,本地机器10接收包括一个或多个应用程序的多个应用文件的标识。在其它实施例中,本地机器10接收本地机器10可用的用于获取和执行的应用程序的列举。在这些实施例的一个中,由本地机器10的评价产生列举。仍然在其他实施例中,本地机器10响应于包括应用程序的多个应用文件的所获取的标识来获取至少一个特征。
[184]在一些实施例中,访问信息包括启动票据,该启动票据可以授权本地机器访问多个应用文件。在这些实施例的一个中,响应于本地机器10的评价,向本地机器10提供启动票据。在这些实施例的另一个中,在本地机器10进行本地机器10的启动前分析之后向本地机器10提供启动票据。
[185]在其他实施例中,本地机器10获取执行多个应用文件所必需的至少一个特征。在这些实施例的一个中,访问信息包括至少一个特征。在这些实施例的另一个中,访问信息指示用于通过远程机器10获取的文件的位置,该文件列出至少一个特征。仍然在这些实施例的另一个中,所列举的至少一个特征的该文件进一步包括多个应用文件的列举和寄载该多个应用文件的远程机器30的标识。
[186]本地机器10确定本地机器上的至少一个特征的存在。在一个实施例中,本地机器10将该确定作为启动前分析的一部分。在另一个实施例中,本地机器10确定本地机器10是否有至少一个特征。
[187]在一个实施例中,确定本地机器10上至少一个特征的存在包括确定设备驱动是否被安装在本地机器上。在另一个实施例中,确定本地机器10上至少一个特征的存在包括确定操作系统是否安装在本地机器10上。仍然在另一个实施例中,确定本地机器10上至少一个特征的存在包括确定特定的操作系统是否安装在本地机器10上。也在另一个实施例中,确定本地机器10上至少一个特征的存在包括确定特定修订版的操作系统是否安装在本地机器10上。
[188]在一些实施例中,确定本地机器10上至少一个特征的存在包括确定本地机器10是否已经获得授权以执行所列举的应用。在这些实施例的一个中,本地机器10作出确定,关于本地机器10是否已接收到许可以执行所列举的应用。在这些实施例的另一个中,本地机器10作出确定,关于本地机器10是否已接收到许可通过应用流会话接收包括所列举应用的多个应用文件。在其它实施例中,确定本地机器上至少一个特征的存在包括确定本地机器10是否有足够的可用带宽来获取和执行所列举的应用。
[189]在一些实施例中,确定本地机器10上至少一个特征的存在包括本地机器10上脚本的执行。在其他实施例中,确定本地机器10上至少一个特征的存在包括本地机器10上软件的安装。仍然在其他实施例中,确定本地机器10上至少一个特征的存在包括本地机器10上登记的修改。仍在其他实施例中,确定本地机器10上至少一个特征的存在包括向本地机器10传输收集代理404,用于在本地机器10上执行以收集与本地机器10相关联的证书。
[190]本地机器10从远程机器30请求用于执行多个应用文件的授权,该请求包括启动票据(步骤212)。在一些实施例中,本地机器10响应于确定至少一个特征存在于本地机器10上而作出请求。在这些实施例的一个中,本地机器10确定在本地机器10上存在多个特征,该多个特征与所列举的应用相关联,并且响应于请求被接收以执行所列举的应用。在这些实施例的另一个中,是否本地机器10接收了用于执行所列举的应用文件的授权的指示,依赖于本地机器10上至少一个特征的存在。在一个实施例中,本地机器10接收应用列举,请求所列举的应用的执行,并且接收访问信息,该访问信息包括至少一个特征和启动票据,该启动票据在确定本地机器10上至少一个特征的存在时授权所列举的应用的执行。
[191]在一个实施例中,本地机器10从远程机器30接收授权执行多个应用文件的许可。在一些实施例中,该许可授权执行特定的时间周期。在这些实施例的一个中,许可请求传输心跳信息以维持授权用于多个应用文件的执行。
[192]在另一个实施例中,本地机器10从远程机器30接收许可和与监控多个应用文件的执行的远程机器30相关联的标识符。如上图5中描述的,在一些实施例中,远程机器为会话管理服务器562。在这些实施例的一个中,会话管理服务器562包括会话管理子系统510,该子系统监控与本地机器10相关联的会话。在其它实施例中,单独的远程机器30””是会话管理服务器562。
[193]本地机器10接收并执行多个应用文件(步骤214)。在一个实施例中,本地机器10通过应用流会话接收多个应用文件。在另一个实施例中,本地机器10在本地机器10上的隔离环境中存储多个应用文件。仍然在另一个实施例中,本地机器10在接收到多个应用文件的第二个之前,执行多个应用文件的一个。在一些实施例中,远程机器向多个远程机器传输多个应用文件,多个远程机器中的每个已经与远程机器建立了单独的应用流会话。
[194]在一些实施例中,本地机器10在高速缓存中存储多个应用文件,并延迟应用文件的执行。在这些实施例的一个中,本地机器10以在定义前的时段接收执行应用文件的授权。在这些实施例的另一个中,当本地机器10缺少对网络的访问时,本地机器10在定义以前的时段接收授权以执行应用文件。在其他实施例中,本地机器在高速缓存中存储多个应用文件。在这些实施例的一个中,应用流客户端552建立内部应用流会话以从高速缓存获取多个应用文件。在这些实施例的另一个中,当本地机器10缺少对网络的访问时,本地机器10在定义以前的时段接收授权以执行应用文件。
[195]本地机器10向远程机器传输至少一个心跳消息(步骤216)。在一些实施例中,本地机器10传输至少一个心跳消息以保留授权来执行包括列举的应用的多个应用文件。在其他实施例中,本地机器10传输至少一个心跳消息以保留授权来在多个应用文件中获取应用文件。仍然在其他实施例中,本地机器10接收在确认前时段授权多个应用文件的执行的许可。
[196]在一些实施例中,本地机器10向第二远程机器30””传输心跳消息。在这些实施例的一个中,该第二远程机器30””可包括会话管理服务器562,该会话管理服务器562监控多个应用文件的获取和执行。在这些实施例的另一个中,该第二远程机器30””响应于该传输的心跳消息,可以更新用于授权多个应用文件的执行的许可。仍然在这些实施例的另一个中,第二远程机器30””响应于传输的心跳消息,可以向本地机器10传输命令。
[197]现在回看图5,本地机器10可包括应用流客户端552、流服务器554以及隔离环境556。应用流客户端552可为可执行程序。在一些实施例中,应用流客户端552可以启动另一个可执行程序。在其他实施例中,应用流客户端552可开始流服务554。在这些实施例的一个中,应用流客户端552可向流服务554提供与执行应用程序相关联的参数。在这些实施例的另一个中,应用流客户端552可使用远程过程调用来开始流服务554。
[198]在一个实施例中,本地机器10请求应用程序的执行并从远程机器30接收关于执行的访问信息。在另一个实施例中,应用流客户端552接收访问信息。仍然在另一个实施例中,应用流客户端552向流服务554提供访问信息。也在另一个实施例中,访问信息包括文件位置的标识,文件与包括应用程序的多个应用文件相关联。
[199]在一个实施例中,流服务554获取与多个应用文件相关联的文件。在一些实施例中,获取的文件包括多个应用文件的位置的标识。在这些实施例的一个中,流服务554获取多个应用文件。在这些实施例的另一个中,流服务554执行本地机器10上的获取的多个应用文件。在其他实施例中,流服务554向远程机器10传输心跳消息以维持授权来获取和执行多个应用文件。
[200]在一些实施例中,获取的文件包括多于一个的多个应用文件的位置的标识,每个多个应用文件包括不同的应用程序。在这些实施例的一个中,流服务554获取包括与本地机器10兼容的应用程序的多个应用文件。在这些实施例的另一个中,响应于本地机器10的评价,流服务554接收授权以获取特定的多个应用文件。
[201]在一些实施例中,多个应用文件被压缩并存储在文件服务器上档案文件中,例如CAB、ZIP、SIT、TAR、JAR或其他档案文件中。在一个实施例中,存储在档案文件中的多个应用文件包括应用程序。在另一个实施例中,存储在档案文件中的多个应用文件每个包括不同版本的应用程序。仍然在另一个实施例中,存储在档案文件中的多个应用文件每个包括不同的应用程序。在一些实施例中,档案文件包括元数据,该元数据与该多个应用文件中的每个文件相关联。在这些实施例的一个中,流服务554响应于包括的元数据产生目录结构。如下面结合附图12更详细描述,可使用元数据来满足应用程序对目录列举的请求。
[202]在一个实施例中,流服务554解压缩档案文件以获得该多个应用文件。在另一个实施例中,在从该多个应用文件获取文件之前,流服务554确定该多个应用文件中的文件的本地副本是否存在于本地机器10的高速缓存中。仍然在另一个实施例中,文件系统过滤器驱动器564确定本地副本是否存在于高速缓存中。在一些实施例中,在该多个应用文件中获取文件之前,流服务554修改登记入口。
[203]在一些实施例中,流服务554在本地机器10上的高速缓存中存储多个应用文件。在这些实施例的一个中,一旦接收到对该多个应用文件高速缓存的请求,流服务554可提供高速缓存多个应用文件的功能。在这些实施例的另一个中,流服务554可提供保护本地机器10上的高速缓存的功能。在这些实施例的另一个中,流服务554可使用算法调整高速缓存的尺寸和位置。
[204]在一些实施例中,流服务554在本地机器10上生成隔离环境。在这些实施例的一个中,流服务554使用隔离环境应用编程接口来生成隔离环境556。在这些实施例的另一个中,流服务554在该隔离环境556中存储该多个应用文件。仍然在这些实施例的另一个中,流服务554执行在隔离环境中的该多个应用文件中的文件。仍然在这些实施例的另一个中,流服务554在隔离环境中执行应用程序。
[205]对于接收授权以在本地机器10上执行应用的实施例,该应用的执行可发生在隔离环境556中。在一些实施例中,在执行应用前,包括该应用的多个应用文件存储在本地机器10上。在其他实施例中,在执行该应用之前,该多个应用文件的子集存储在本地机器10上。仍然在其他实施例中,该多个应用文件没有驻留在隔离环境556中。仍然在其他实施例中,该多个应用文件的子集没有驻留在本地机器10上。无论该多个应用文件的子集或者多个应用文件中的每个应用文件是否驻留在本地机器10上或隔离环境556中,在一些实施例中该多个应用文件中的应用文件可在隔离环境556中被执行。
[206]隔离环境556可由核心系统组成,该核心系统可以提供File SystemVirtualization(文件系统虚拟)、Registry System Virtualization(登记系统虚拟)、以及Named Object Virtualization(命名对象虚拟),不需要请求对应用源代码作任何改变而减少应用兼容性问题。隔离环境556可使用用于登记和命名对象虚拟的用户模式中和使用用于文件系统虚拟的文件系统过滤器驱动器的内核中二者的钩子(hooking),重定向应用资源请求。下述是对隔离环境556的一些实施例的描述。
[207]现在看图8A,示出了在操作系统100控制下运行的计算机的一个实施例,该计算机系统100已经减少了应用兼容性和应用群集度问题。操作系统100通过它的系统层108使得各种原生资源到应用程序112、114。系统层108包含的资源的范围(view)可称为“系统范围”。为了避免应用程序112、114对原生资源102、104、106、107访问的冲突,提供隔离环境200。如图8A所示,隔离环境200包括应用隔离层200以及用户隔离层240。概念上的,隔离环境200通过应用隔离层220提供带有唯一范围(view)的原生资源,例如文件系统102、登记104、对象106、以及窗口名称107。每个隔离层修改提供给应用的原生资源的范围(view)。通过层提供的原生资源的修改范围指层的“隔离范围”。如图8A所示,应用隔离层包括两个应用隔离范围222、224。范围222表示提供给应用112的原生资源的范围,并且范围224表示提供给应用114的原生资源的范围。因此,在图8A所示的实施例中,当提供带有其特定的另一个文件系统102”的APP2 114时,提供带有特定范围的文件系统102’的APP1 112。在一些实施例中,应用隔离层220为在操作系统100顶部上执行的每个单独的应用程序提供原生资源102、104、106、107的特定范围。在其他实施例中,应用程序112、114可被分为集合为集并且,在这些实施例中,应用隔离层220为每个应用程序集提供特定范围的原生资源。冲突应用程序放入单独的组中以增强应用的兼容性和群集度。仍在进一步的实施例中,属于集合的应用通过管理员配置。在一些实施例中,“通过”隔离范围可被定义恰恰对应于系统范围。换句话,在通过隔离范围执行的应用直接在系统范围内操作。
[208]在一些实施例中,应用隔离范围进一步被分为分层的子范围。主要的子范围包括基本应用隔离范围,并且附加子范围包括对多个应用的执行实例可能是可见的该范围的各种修改。例如,子范围可包括对该范围的修改,该范围具体化了对应用的补丁标准的改变或者附加特征安装或者移动。在一些实施例中,配置附加子范围的子集,该附加子范围的子集对执行应用的实施可见。在一些实施例中,无论代表是哪个应用正在执行的用户,用于执行应用的所有实例的可见子范围的集合是相同的。在另一个中,对于执行应用的不同用户,可见子范围的集可改变。仍然在其他实施例中,可定义子范围的各种子集,并且用户有机会选择使用哪个子集。在一些实施例中,当子集不再需要时可被丢弃。在一些实施例中,包括在子范围的集合中的修改可一起合并以形成单个子范围。
[209]现在看图8B,描述了具有减少的应用兼容性和应用群集度问题的多用户计算机。该多用户计算机包括在系统层108中的原生资源102、104、106、107、以及刚刚讨论的隔离环境200。该应用隔离层220如上讨论的运行,提供带有修改范围的原生资源的应用或应用组。用户隔离层240,概念上的,提供带有原生资源的范围的应用程序112、114,该原生资源进一步基于用户的用户标识改变,代表该用户正在执行应用。如图8B所示,可认为用户隔离层240包括许多的用户隔离范围242’、242”、242’”、242’”’、242’””、242”””(通称242)。用户隔离范围242提供原生资源的应用特定范围的用户特定范围。例如,提供带有文件系统范围102’(a)的代表用户‘a’的用户会话110中执行的APP1 112,该文件系统范围102’(a)通过用户隔离范围242’和应用隔离范围222被改变和修改。
[210]另一种方式,用户隔离层240通过“层化”用户特定范围修改来改变用于每个单独用户的原生资源范围,该用户特定范围修改由用户隔离范围242’在应用特定范围修改“之上”提供,该应用特定范围修改由应用隔离范围222提供,其由系统层提供的原生资源的系统宽范围“之上分层”。例如,当APP1 112的第一实施例在登记数据库104中访问入口时,考虑对第一用户会话和应用104’(a)为专用的登记数据库的范围。如果在登记104’(a)的用户特定范围内发现了请求的登记键值(registry key),该登记键值返回到App1 112。如果没有,考虑应用104’专用的登记数据库的范围。如果请求的登记键值在登记104’的应用特定范围内被找到,则该登记键值返回到APP1112。如果没有,则存储在系统层108中的登记数据库104中的该登记键值(例如,原生登记键值)返回给APP1 112。
[211]在一些实施例中,用户隔离层240为每个单独的用户提供隔离范围。在其他实施例中,用户隔离层240为用户群提供隔离范围,可通过在组织内的角色定义该用户群,或者由管理员确定。仍然在其他实施例中,不提供用户隔离层240。在这些实施例中,通过应用隔离层220提供应用程序可见的原生资源范围。虽然通过多个用户关于支持应用程序并发执行的多用户计算机来描述隔离环境200,但是隔离环境200也可用于单用户计算机上以处理应用兼容性和群集度的问题,这些问题来源于在同一计算机系统上的不同的用户对应用程序的顺序执行,并且这些问题来源于相同的用户的不兼容问题的安装和执行。
[212]在一些实施例中,用户隔离范围进一步被分为子范围。通过用户隔离范围对呈现给在该范围内执行的应用的范围的修改是包括在范围内的每个子范围中的修改的集合。每个子范围层叠在彼此之上,并且在集合中在更高子范围中的对资源的范围修改超越在较低层中的对相同资源的修改。
[213]在这些实施例的一些中,一个或多个这些子范围可包括对用户专用的范围的修改。在这些实施例的一些中,一个或多个子范围可包括对用户集专用的范围的修改,其可以由系统管理员限定或者被限定为操作系统中的用户的群。在这些实施例的一些中,这些子范围的其中之一可包括对特定登录会话专用的范围的修改,并且因此当会话结束时该子范围被丢弃。在这些实施例的一些中,通过与用户隔离范围相关联的应用实例改变的原生资源总是影响这些子范围之一,并且在其他实施例中,依赖于特定资源的改变,这些改变可影响不同的子范围。
[214]以上讨论的概念上结构允许代表用户正在执行的应用将被呈现为集合的、或统一的、虚拟的原生资源范围,对应用和用户的联合是特定的。该集合的范围可指“虚拟范围”。代表用户正在执行的应用实例呈现为带有单一范围的原生资源,该原生资源影响原生资源的所有运转着的虚拟实例。概念上的该集合的范围首先由在系统范围内的操作系统提供的原生资源的集合组成,覆盖包含在能够执行应用的应用隔离范围内的修改,进一步覆盖包括在能够执行代表用户的应用的用户隔离范围内的修改。除了操作系统许可对特定的用户或应用拒绝访问以外,在系统范围内的该原生资源的特点对在系统上所有用户和应用是共同的。对包含在应用隔离范围内的资源范围的修改的特点是对应用的所有实例是共同的,应用与该应用隔离范围相关联。对包含在用户隔离范围内的资源范围的修改的特点是对与可应用的应用隔离范围相关联的所有应用是共同的,该应用隔离范围代表与用户隔离范围相关联的用户正在执行。
[215]该概念可延伸到子范围;对在用户子范围内包含的资源范围的修改对所有应用都是公共的,上述应用与可应用的隔离子范围相关联,隔离子范围代表用户或用户群正执行,并与用户隔离子范围相关联。通过所有描述,应该理解的是任何时候存在于此处的通常所指的“范围”也指子范围。
[216]当应用请求原生资源的列举时,例如文件系统或登记数据库的一部分,通过首先列举原生资源的“系统范围”实例来构建虚拟列举,即,若有的话,存在于系统层中的实例。接着,请求的资源的“应用范围”实例,即在该适当的应用隔离范围内存在的实例,若存在,则被列举。在应用隔离范围内存在的任何列举的资源被加入到范围内。如果列举的资源已经存在于范围内(最好还是因为它已经存在于系统范围内),它被应用隔离范围内存在的资源的实例所替代。相似的,请求资源的“用户范围”实例,即在适当的用户隔离范围内发现的实例,若存在,则被列举。再一次的,在用户隔离范围内存在的任何列举的资源被加入到范围内。如果原生资源已经存在于范围内(由于它已经呈现在系统中或者在适当的应用隔离范围内),它被在用户隔离范围内存在的资源的实例所替代。以此方式,原生资源的任何列举将会正确的反映列举的原生资源的虚拟。概念上的,相同的方法可应用到包括多个子范围的隔离范围的列举。列举单独的带有来自更高子范围的资源的子范围,该更高的子范围代替来自集合范围中的更低子范围的匹配的实例。
[217]在其他实施例中,从用户隔离范围层下至系统层执行列举,而非反过来。在这些实施例中,列举用户隔离范围。接着列举应用隔离范围,并且出现在应用隔离范围内没有在用户隔离范围中列举的任何资源实例被加入到结构之下的集合范围。相似的处理过程可被重复用于仅出现在系统范围内的资源。
[218]仍然在其他实施例中,同时列举所有的隔离范围并且合并各个列举。
[219]如果应用试图打开存在的原生资源实例,但不试图修改该资源,则返回到应用的特定的实施例是在虚拟范围内发现的一个,或等效的,该实施例将出现在请求的资源的父虚拟列举中。从隔离环境的范围点,该应用被告知去请求打开“虚拟资源”,并且用于满足该请求的原生资源的特定实例被称为对应于请求的资源的“文字资源”。
[220]如果代表用户正执行的应用试图打开资源并指示它正在做的带有改变该资源的意图,当在应用隔离范围和系统范围内的资源对代表其他用户正在执行的应用是公共的时,通常的给该应用实例将要修改的资源的私有副本。代典型地,除非用户范围实例已经存在,否则制作资源的用户范围副本。通过虚拟范围提供的集合范围的限定意味着向用户隔离范围拷贝应用范围或系统范围的资源的行为没有改变集合范围,该集合范围通过虚拟范围提供给正被讨论的用户或应用,不给其他用户,也不给任何其他应用实例。后来由代表用户正在执行的应用实施例作出的对该副本资源的修改不影响任何其他应用实施例的集合范围,上述任何其他应用实施例不共享相同的用户隔离范围。换句话说,这些修改没有改变原生资源的集合范围,该原生资源用于其他用户或者用于与相同的应用隔离范围不相关的应用实例。
[221]应用可安装于特定的隔离范围内(以下更详细的描述)。安装在隔离范围内的应用总是与该范围相关联。可替代地,应用可在特定隔离范围内或者许多的隔离范围内启动。有效的,启动应用,并且该应用与一个或多个隔离范围相关联。相关联的隔离范围提供带有原生资源特定范围的处理。应用也可在系统资源范围内启动,即,它们可以与非隔离范围相关联。这使得在隔离范围内可选择性的执行操作系统应用,例如Internet Explorer,以及第三方应用。
[222]无论应用安装在何处在隔离范围内启动应用的能力减少了应用兼容性和群集度问题,从而不要求在隔离范围内单独安装应用。选择性的启动在不同隔离范围内的已安装的应用的能力提供拥有应用的能力,该应用需要帮助者应用(例如Word,Notepad等)使这些帮助者应用以相同规则集合启动。
[223]另外,在多个隔离环境中启动应用的能力允许在隔离的应用和公共的应用之间更好的集成。
[224]现在看图8C,总的来说,用于将过程和隔离范围相关联的方法包括在暂停状态中启动过程的步骤(步骤882)。获取与期望的隔离范围相关联的规则(步骤884)并且在存储元件中存储用于过程和获取规则的标识符(步骤886),并且重新开始暂停过程(步骤888)。拦截或挂起由过程作出的访问原生资源的随后调用(步骤890)并且与过程标识符相关联的规则,如果有的话,被用于对请求资源的虚拟访问(步骤892)。
[225]仍然看图8C,并且更详细的,过程在暂停状态中被启动(步骤882)。在一些实施例中,使用定制的启动程序完成此项任务。在这些实施例的一些中,启动装置被特别的设计以启动过程到选择的隔离环境中。在其他实施例中,启动当做期望的隔离环境的说明的输入,例如,通过命令行选项。
[226]获取与期望的隔离范围相关联的规则(步骤884)。在一些实施例中,从持久存储元件中获取规则,例如硬盘驱动器或其他固态存储元件。规则可作为关系数据库、平面文件数据库、树形结构数据库、二进制树结构或其他持久性数据结构被存储。在其他实施例中,规则可存储于为存储它们特别定制的数据结构中。
[227]用于过程的标识符,例如过程标识符(PID),以及获取规则被存储在存储元件中(步骤886)。在一些实施例中,提供内核模式驱动器以接收关于新过程生成的操作系统消息。在这些实施例中,PID和获取的规则可被存储在驱动器的上下文中。在其他实施例中,提供文件系统过滤器驱动器,或迷你过滤器拦截原生资源请求。在这些实施例中,PID和获取规则可存储在过滤器中。仍然在其他实施例中,通过用户模式挂起执行所有的拦截,并且根本不存储PID。在初始化过程期间,通过用户模式挂起设备加载规则,因为规则关联完全在过程中执行,所以不需要其他的部件知道应用到PID的规则。
[228]重新开始暂停过程(步骤888),并且拦截或挂起由过程作出的访问原生资源的随后调用(步骤890),并且与过程标识符相关联的规则,如果有的话,用于对请求资源的虚拟访问(步骤892)。在一些实施例中,文件系统过滤器驱动器,或者迷你过滤器,或者文件系统驱动器拦截访问原生资源的请求,并确定与拦截请求相关联的过程标识符是否已经与规则集合相关联。如果是这样,与存储的过程标识符相关联的规则被用于虚拟访问原生资源的请求。如果不是,访问原生资源的请求可不被修改的通过。在其他实施例中,动态链接库被载入到新生成的过程中,并且该库载入隔离的规则。仍然在其他实施例中,内核模式技术(挂起、过滤器驱动器、迷你驱动器)以及用户模式技术都被用于拦截对访问原生资源的调用。对于文件系统过滤器驱动器存储规则的实施例,该库可载入来自于文件系统过滤器驱动器的规则。
[229]与隔离范围相关联的过程的“子”过程与它们的“父”过程的隔离范围相关联。在一些实施例中,通过内核模式驱动器在子过程生成时通报文件系统过滤器驱动器可实现该关联。在这些实施例中,文件系统过滤器驱动器确定父过程的过程标识符是否与隔离范围相关联。如果这样,文件系统过滤驱动器存储用于新生成的子过程的过程标识符和父过程的隔离范围间的关联。在另一个实施例中,文件系统过滤器驱动器可从系统直接调用而不需使用内核模式驱动器。在其他实施例中,在与隔离范围相关联的过程中,生成新过程的操作系统功能被挂起或拦截。当从这样的过程接收到生成新过程的请求时,存储新的子过程和父过程的隔离范围间的关联。
[230]在一些实施例中,范围或子范围与单独的线程相关联而非与整个过程,这使得隔离在每一线程的基础上被执行。在一些实施例中,每一线程隔离可以被用于服务或COM+服务器。
[231]在一些实施例中,使用隔离环境向应用流客户端552提供附加的功能。在这些实施例的一个中,应用程序在隔离环境中被执行。在这些实施例的另一个中,获取的多个应用文件驻留在隔离环境中。仍然在这些实施例的另一个中,在隔离环境中作出本地机器10上的登记的改变。
[232]在一个实施例中,应用流客户端552包括隔离环境556。在一些实施例中,应用流客户端552包括文件系统过滤器驱动器564,该文件系统过滤器驱动器564拦截对于文件的应用请求。在这些实施例的一个中,文件系统过滤器驱动器564拦截应用请求以打开已存在的文件并确定该文件没有驻留在隔离环境556内。在这些实施例的另一个中,文件系统过滤器驱动器564响应于确定该文件没有驻留在隔离环境556中而重定向对流服务554的请求。流服务554可从多个应用文件中析取文件,并在隔离环境556中存储该文件。文件系统过滤器驱动器564可接着响应对于带有的文件已存储副本的文件的请求。在一些实施例中,文件系统过滤器驱动器564响应于流服务554没有获取到文件或多个应用文件的指示和该文件没有驻留在隔离环境556中的决定,可以将文件的请求重定向到文件服务器540。在一些实施例中,流服务554可包括加速程序6120来执行下述讨论的一些或所有的加速技术以加速文件和应用的存储和传送。
[233]在一些实施例中,文件系统过滤器驱动器564使用严格的隔离规则来阻止冲突或不一致数据出现在隔离环境556中。在这些实施例的一个中,在用户隔离环境中拦截对于资源的请求的文件系统过滤器驱动器564可重定向该请求到应用隔离环境。在这些实施例的另一个中,文件系统过滤器驱动器564不重定向该请求到系统范围。
[234]在一个实施例中,流服务554使用IOCTL命令与过滤器驱动器通信。在另一个实施例中,到文件服务器540的通信使用Microsoft SMB流协议被接收。
[235]在一些实施例中,包机制530在清单文件(manifest file)中存储已公布文件类型的列表作为可用的应用并且使得此信息对应用公布软件可用。在这些实施例的一个中,包机制530接收从监控应用程序安装到分段机器上的隔离环境中的信息。在这些实施例的另一个中,包机制530的用户向包机制530提供此信息。在另一个实施例中,在访问组控制台520中的应用公布软件查找该清单文件以便向访问组控制台520的用户呈现可能的文件类型,该文件类型与被请求的正在被公布的应用相关联。用户选择文件类型以关联特定公布的应用。在应用列举时文件类型被呈现给本地机器10。
[236]本地机器10可包括客户端代理560。客户端代理560提供将文件类型与应用程序相关联的功能,和响应于关联选择应用程序的执行的方法的功能。在一个实施例中,客户端代理560为程序邻近应用。
[237]当应用程序被选择用于执行时,本地机器10确定执行的方法,该执行的方法与应用程序的文件类型相关联。在一个实施例中,本地机器10确定文件类型与执行的方法相关联,该执行的方法要求在隔离环境中获取应用文件和执行的应用流会话。在该实施例中,本地机器10可重定向该请求到应用流客户端552,而不是启动应用程序的本地版本。在另一个实施例中,客户端代理560作出决定。仍然在另一个实施例中,客户端代理560重定向该请求到应用流客户端552。
[238]在一个实施例中,应用流客户端552从远程机器30请求与应用程序相关联的访问信息。在一些实施例中,应用流客户端552接收包含访问信息的可执行程序。在这些实施例的一个中,应用流客户端552接收可执行程序,该可执行程序可以在本地机器10上显示应用输出数据,该应用输出数据从在远程机器上的应用程序的执行中产生。在这些实施例的另一个中,应用流客户端552接收可执行程序,该可执行程序可以通过应用流会话获取该应用程序,并在本地机器10上的隔离环境中执行该应用程序。在这个实施例中,应用流客户端552可执行接收到的可执行应用程序。仍然在这些实施例的另一个中,如上所述的,远程机器30响应于执行应用程序解决,选择可执行程序以便提供给本地机器10。
[239]现在看图9,描述了用于执行应用的方法中所使用的步骤的一个实施例的流程图。如上述在图7中所述,关于步骤214,本地机器10接收并执行多个应用文件。总的来说,本地机器10接收包括访问信息的文件以访问多个应用文件并执行可以接收应用流的第一客户端(步骤902)。响应于该文件,本地机器10获取多个应用文件的标识(步骤904)。响应于该文件,本地机器10获取在多个应用文件的执行中需要的至少一个特征(步骤906)。本地机器10确定本地机器10是否包括至少一个特征(步骤908)。响应于确定本地机器10缺少至少一个特征,本地机器10执行第二客户端,第二客户端请求在远程机器上的多个应用文件的执行(步骤910)。
[240]现在看图9,更详细的,本地机器10接收包括访问信息的文件,访问信息用于访问多个应用文件并用于执行的第一客户端,该第一客户端可以接收应用流(步骤902)。在一个实施例中,本地机器10接收包括多个应用文件的位置标识的访问信息,这些应用文件包括应用程序。在另一个实施例中,本地机器10响应于应用程序的执行请求来接收文件。仍然在另一个实施例中,访问信息包括指示该多个应用文件驻留在本地机器30’上,例如应用服务器或文件服务务器。仍在另一个实施例中,访问信息指示本地机器10可在应用流会话上从远程机器30获取该多个应用文件。
[241]本地机器10响应于文件获取该多个应用文件的标识(步骤904)。在一个实施例中,响应于包括访问信息的文件,本地机器10识别其上有该多个应用文件驻留的远程机器。在另一个实施例中,本地机器10从远程机器30获取识别该多个应用文件的文件。在一些实施例中,该多个应用文件包括应用程序。在其他实施例中,该多个应用文件包括多个应用程序。仍然在其他实施例中,该多个应用文件包括单个应用程序的多个版本。
[242]现在提前看图10,示出了驻留在例如文件服务器540的远程机器30’上驻留的多个应用文件的一个实施例的流程图。在图10中,多个应用文件,指定为包,包括包含一个或多个应用程序的三个不同版本的应用文件。
[243]在一个实施例中,包括一个或多个应用程序的版本并被存储在包中的应用文件的每个子集被指定作为目标。目标1,例如,包括字处理应用程序和电子数据表程序的版本,该版本与Microsoft Windows 2000操作系统的英语版本相兼容。目标2包括字处理应用程序和电子数据表程序的版本,该版本与Microsoft XP操作系统的英语版本相兼容。目标3包括字处理应用程序和电子数据表程序的版本,该版本与带服务包3的Microsoft Windows 2000操作系统的日语版本相兼容。
[244]现在转而看图9,在一些实施例中,从寄载该多个应用文件的远程机器30获取的文件包括包的描述和包括在该多个应用文件中的目标。在其他实施例中,从远程机器30获取的文件识别该多个应用文件,该多个应用文件包括由本地机器10请求执行的应用程序。
[245]响应于该文件,本地机器10获取执行该多个应用文件需要的至少一个特征(步骤906)。在一些实施例中,本地机器10可以不执行应用程序,除非本地机器包括特定特征。在这些实施例的一个中,不同的应用程序要求本地机器10包括不同的特征,这些特征来自于被其他应用程序需要的特征。在这些实施例的另一个中,本地机器10接收执行该多个应用文件需要的至少一个特征的标识,该多个应用文件包括本地机器10请求的应用程序。
[246]本地机器确定本地机器10是否包括该至少一个特征(步骤908)。在一个实施例中,本地机器10评价本地机器10上的操作系统以确定本地机器10是否包括至少一个特征。在另一个实施例中,本地机器10识别本地机器10上的操作系统所使用的语言,以确定本地机器10是否包括该至少一个特征。仍然在另一个实施例中,本地机器10识别本地机器10上的操作系统的修订级,以确定本地机器10是否包括至少一个特征。仍然在另一个实施例中,本地机器10识别驻留在本地机器10上的应用程序的应用版本以确定本地机器10是否包括至少一个特征。在一些实施例中,本地机器10确定本地机器10是否包括设备驱动器以确定本地机器10是否包括该至少一个特征。在其他实施例中,本地机器10确定本地机器10是否包括操作系统以确定本地机器10是否包括该至少一个特征。仍然在其他实施例中,本地机器10确定本地机器10是否包括执行该多个应用文件的许可以确定本地机器10是否包括至少一个特征。
[247]响应于确定本地机器10缺少该至少一个特征,本地机器10执行第二客户端,该第二客户端请求在远程机器30上的该多个应用文件的执行(步骤910)。在一个实施例中,当本地机器10确定该本地机器10缺少该至少一个特征时,本地机器10不执行能够接收应用流的第一客户端。在另一个实施例中,当本地机器10缺少至少一个特征时,策略禁止本地机器10在应用流上接收该多个应用文件。在一些实施例中,本地机器10确定本地机器10包括该至少一个特征。在这些实施例的一个中,本地机器10执行第一客户端,该第一客户端从远程机器30接收应用流用于在本地机器上执行,该应用流包括该多个应用文件。
[248]在一些实施例中,一旦确定本地机器10缺少该至少一个特征,本地机器10执行第二客户端,该第二客户端请求在远程机器上该多个应用文件的执行。在这些实施例的一个中,第二客户端向寄载该多个应用文件的远程机器30传输该请求。在这些实施例的另一个中,远程机器30执行包括应用程序的该多个应用文件,并产生应用输出数据。仍然在这些实施例的另一个中,第二客户端接收通过在远程机器上的该多个应用文件的执行产生的应用输出数据。在一些实施例中,第二客户端通过独立计算结构表示层协议或远程桌面窗口表示层协议或X-Windows表示层协议接收应用输出数据。仍在这些实施例的另一个中,第二客户端在本地机器10上显示应用输出。
[249]在一些实施例中,第二客户端向远程机器30传输请求,该远程机器30没有寄载该多个应用文件。在这些实施例的一个中,远程机器30可从寄载该多个应用文件的第二远程机器30请求该多个应用文件。在这些实施例的另一个中,远程机器30可通过应用流会话从第二远程机器30接收该多个应用文件。仍然在这些实施例的另一个中,远程机器30在隔离环境中存储接收的该多个应用文件并在隔离环境中执行应用程序。仍然在这些实施例的另一个中,远程机器30向在本地机器上的第二客户端传输产生的应用输出数据。
[250]现在回看图5,在一个实施例中,可以接收应用流的第一客户端是应用流客户端552。应用流客户端552接收文件,响应于该文件,获取多个应用文件的标识和执行该多个应用文件需要的至少一个特征,并确定本地机器10是否包括至少一个特征。在另一个实施例中,第二客户端是客户端代理560。在一些实施例中,响应于应用流客户端552作出的本地机器10缺少该至少一个特征的确定,客户端代理560从应用流客户端552接收文件。
[251]在一些实施例中,在本地机器10上执行的应用566使用Win32FindFirstFile( )和FindNextFile( )API调用来列举与应用566相关联的文件。在这些实施例的一个中,多个应用文件包括应用566。在这些实施例的另一个中,不是所有的在多个应用中的文件都驻留在本地机器10上。仍然在这些实施例的另一个中,流服务554获取在存档文件中的多个应用文件但只提取该多个应用文件的子集。仍在这些实施例的另一个中,即使在请求的文件没有驻留在本地机器10上时,流服务554和文件过滤器驱动器564仍然提供用于满足列举请求的功能。
[252]在一个实施例中,通过拦截列举请求并且好像在该多个应用文件内的所有的文件都驻留在本地机器10上那样提供数据来提供功能。在另一个实施例中,通过由文件系统过滤器驱动器564拦截以IOCTL命令传输的列举请求,例如IRP_MJ_DIRECTORY_CONTROL IOCTL,来提供功能。当文件系统过滤器驱动器564拦截该调用时,文件系统过滤器驱动器564将该请求重定向到该流服务554。在一个实施例中,在将该请求重定向到该流服务554前,文件系统过滤器驱动器564确定该被请求的列举驻留在本地机器10上的隔离环境中。在另一个实施例中,流服务554使用在该多个应用文件中的文件实现该请求,该文件包括与该多个应用文件相关联的目录结构的列举。仍然在另一个实施例中,流服务554向文件系统过滤器驱动器564提供该请求的响应用于满足列举请求。
[253]现在看图11,描述了方法中所采用的步骤的一个实施例的流程图,该方法用于本地响应对与远程存储的文件相关联的文件元数据的请求。总的来说,(i)表示远程机器存储的应用程序的目录结构,和(ii)元数据被从远程机器接收,该元数据与包括存储的应用程序的每个文件相关联(步骤1102)。该目录结构和元数据被存储(步骤1104)。接收至少一个请求,该请求用于访问与目录结构中的特定文件相关联的元数据(步骤1106)。使用所存储的元数据响应该至少一个请求(步骤1108)。
[254]现在更详细的看图11,从远程机器接收代表被远程机器存储的应用程序的目录结构和与包括存储的应用程序的每个文件相关联的元数据(步骤1102)。在一个实施例中,流服务554接收该目录结构和该元数据。在另一个实施例中,当流服务554获取包括存储的应用程序的多个应用文件时,流服务554接收该目录结构和元数据。仍然在另一个实施例中,目录结构和元数据被存储在多个应用文件中的文件中。
[255]在一个实施例中,与每个文件相关联的元数据包括用于至少一个文件的选用名称。在另一个实施例中,与每个文件相关联的元数据包括用于至少一个文件的短名称,该名称的长度为八个字符、点以及三个字符的扩展名。仍然在另一个实施例中,与每个文件相关联的元数据包括在用于至少一个文件的选用名称和用于至少一个文件的短名称之间的映射。在一些实施例中,在该多个应用文件中的文件有选用文件名。在这些实施例的一个中,当流服务554获取到本地机器的文件时,响应于用于该文件的选用名称和用于至少一个文件的短名称之间的映射,该文件与短名称相关联。
[256]目录结构和元数据被存储(步骤1104)。在一个实施例中,目录结构和元数据存储在隔离环境556中。在另一个实施例中,目录结构和元数据存储在高速缓存元件中。仍然在另一个实施例中,表示应用程序被远程机器存储的目录结构被用于产生目录结构的列举,该目录结构表示在本地机器上执行的应用程序。
[257]接收访问元数据的至少一个请求,该元数据与在目录结构中的特定文件相关联(步骤1106)。在一个实施例中,该请求是文件列举请求。在另一个实施例中,该请求是确定文件副本是否本地驻留的请求,该文件副本包括存储的应用程序。
[258]在一个实施例中,由在本地机器上的隔离环境中执行的应用566作出请求。在另一个实施例中,由应用流客户端552作出请求。仍然在另一个实施例中,代表应用566作出请求。
[259]在一个实施例中,文件系统服务器过滤器564拦截该请求。在另一个实施例中,通过文件系统过滤器驱动器564转发该请求到应用流客户端552。仍然在另一个实施例中,通过文件系统过滤器驱动器564转发该请求到流服务554。
[260]在一些实施例中,该请求被代替操作系统功能或代替用于列举目录功能的功能挂起。在另一个实施例中,使用挂起动态链接库拦截该请求。在用户模式或内核模式执行该挂起功能。对于挂起功能在用户模式中执行的实施例,当过程被生成时该挂起功能被载入到过程的地址空间中。对于挂起功能在内核模式执行的实施例,挂起功能与操作系统资源相关联,该操作系统资源用于分派对于文件操作的请求。对于为文件操作的每种类型提供单独的操作系统功能的实施例,每个功能可被分别的单独挂起。可选的,可提供单独的挂起功能,其拦截用于一些类型的文件操作的生成或打开调用。
[261]使用存储的元数据响应该至少一个请求(步骤1108)。在一个实施例中,文件系统过滤器驱动器564响应该请求。在另一个实施例中,应用流客户端552响应该请求,仍然在另一个实施例中,流服务554响应该请求。在一个实施例中,访问存储的元数据以响应该至少一个请求。在另一个实施例中,以文件的远程副本本地驻留的错误指示响应该请求。
[262]在一个实施例中,响应于接收到的元数据,满足Windows操作系统的FindFirst操作。在另一个实施例中,响应于接收到的元数据,满足Windows操作系统的FindNext操作。仍然在另一个实施例中,响应于接收到的元数据,满足在目录结构中根节点的识别操作。在一些实施例中,使用例如WIN32_FIND_DATA API的应用层API来响应该操作。在其它实施例中,使用内核层API(例如FILE_BOTH_DIR_INFORMATION)来响应该操作,。
[263]在一个实施例中,元数据满足用于标识与目录结构中的节点相关联的访问次数的操作。在另一个实施例中,元数据满足用于标识与目录结构中的节点相关联的修改次数的操作。仍然在另一个实施例中,元数据满足用于识别在目录结构中的所修改的节点的操作。
[264]现在看图12,描述了系统的一个实施例的框图,该系统用于本地响应对与远程存储的文件相关联的文件元数据的请求,该系统包括流服务554、文件系统过滤器驱动器564、目录结构570、多个应用文件572、元数据574、以及高速缓存元件576。总的来说,目录结构570识别与至少一个应用程序相关联的多个文件。元数据574与该多个文件的至少一个相关联,多个文件中的至少一个驻留在远程机器上。在一个实施例中,目录结构570包括元数据574。高速缓存元件576存储目录结构570。文件系统过滤器驱动器564拦截对访问元数据的请求,该元数据与至少一个远程存储的文件相关联,文件系统过滤器驱动器564访问高速缓存元件,并使用存储的目录结构来响应该至少一个请求。
[265]在一些实施例中,流服务554接收目录结构570和元数据574。在这些实施例的一个中,目录机构570表示与应用程序相关联的多个应用文件572,该多个应用文件572驻留在远程机器上,例如远程机器30。在这些实施例的另一个中,元数据574包括用于响应Windows操作系统的FindFirst请求的信息。仍然在这些实施例的另一个中,元数据574包括用于响应Windows操作系统的FindNext请求的信息。也在这些实施例的另一个中,元数据574包括用于响应对在目录结构中的根节点的标识的请求的信息。在这些实施例的另一个中,元数据574包括用于响应对在目录结构中的节点的标识的请求的信息。在一些实施例中,使用应用层API(例如WIN32_FIND_DATA API)来响应操作。在其它实施例中,使用内核层API(例如FILE_BOTH_DIR_INFORMATION)来响应操作。
[266]在一些实施例中,关于文件的少量元数据574可以文字的文件名直接存储,例如通过为带有元数据指示器的虚拟名称添加后缀,此处元数据指示器是唯一的与特定元数据状态相关联的字符串。元数据指示器可指示或编码元数据的一个或几个位。由于元数据指示器的存在,通过虚拟文件名访问文件的请求检查文字的文件名可能的变化,并且为了使用文字的文件名响应,获取文件本身的名称的请求被挂起或拦截。在其他实施例中,用于文件的一个或多个选用名称由虚拟文件名和元数据指示器构成,并使用文件系统提供的硬链接或软链接设备生成。如果给出使用链接的名称访问文件的请求,则由隔离环境通过指示该文件没有找到从而向应用隐藏这些链接的存在。特定链接的存在或不存在可指示用于每个元数据指示器的元数据的一个位,或者存在带有元数据指示器的链接,该指示器能够采用多个状态以指示元数据的一些位。仍然在其他实施例中,此处文件系统支持可选的文件流,生成可选的文件流以具包含元数据,该文件流带有指示元数据几个位的流尺寸。仍然在其他实施例中,文件系统可直接提供存储一些第三方元数据用于在文件系统中的每个文件的能力。仍然在其他实施例中,可以使用单独的子范围记录删除的文件,在该子范围内存在的文件(没有标记为占位符)意味着该文件被删除。
[267]在一个实施例中,合并在用户隔离环境、应用隔离环境和系统范围内的数据以形成表示应用的目录结构的本地列举。在另一个实施例中,流服务554访问元数据574和目录结构570以总装(populate)应用隔离环境。仍然在其他实施例中,文件系统过滤器驱动器564产生目录结构的本地列举。仍然在另一个实施例中,目录结构的本地列举识别在该多个应用文件572中的至少一个文件,该至少一个文件驻留在远程机器而非本地机器上。在一些实施例中,目录结构的本地列举被存储在高速缓存元件576中。在其他实施例中,流服务554产生应用隔离环境和目录结构的本地列举。
[268]在一个实施例中,文件系统过滤器驱动器564拦截请求,该请求传输到系统范围用于访问目录结构的本地列举。在另一个实施例中,文件系统过滤器驱动器564在拦截该请求后产生本地列举。仍然在另一个实施例中,文件系统过滤器驱动器564将对本地列举的请求重定向到用户隔离环境。仍然在另一个实施例中,文件系统过滤器驱动器564将对本地列举的请求重定向到应用隔离环境。
[269]在一些实施例中,文件系统过滤器驱动器564拦截对文件访问的请求,该文件在目录的本地列表中识别,该文件驻留远程机器上。在这些实施例的一个中,如下述结合图13更详细描述的,文件系统过滤器驱动器564通过流服务554请求文件的获取。
[270]当在隔离环境中运行的应用做出对于文件的请求时,过滤器驱动器拦截这些请求。如果该请求是用于打开文件,过滤器驱动器将首先重定向该请求到隔离环境,以确定该请求是否可被隔离环境满足。如果调用成功,过滤器驱动器将使用位于隔离环境中的该文件的实例来响应请求。
[271]然而,如果该请求的文件没有驻留在隔离环境中,过滤器驱动器向流服务554发送请求以从该多个应用文件、程序块中获取该文件,直到该请求完成,并且接着重试最初的打开。在一些实施例中,流服务554的功能被称为“随选高速缓存”,该流服务554用于一旦从过滤器驱动器接收到请求则从该多个应用文件中获取文件。
[272]现在看图13,描述了方法中所采用步骤的实施例的流程图,该方法用于访问在目录机构中的远程文件,该目录结构与本地执行的应用程序相关联。总的来说,拦截通过应用访问文件的请求(步骤1302)。该请求被重定向到第一隔离环境(步骤1304)。做出被请求的文件在第一隔离环境中不存在的决定(步骤1306)。响应文件在目录结构的列举中识别,该请求被重定向到第二隔离环境,该目录结构与驻留在远程机器上的多个应用文件关联(步骤1308)。响应于第二隔离环境不包括该文件以及该文件在列举中被识别的决定,而从远程机器获取所请求的文件(步骤1310)。
[273]现在看图13,更详细的,拦截应用对于访问文件的请求(步骤1302)。在一个实施例中,通过文件系统过滤器驱动器拦截该请求。在另一个实施例中,文件系统驱动器过滤器拦截对于访问文件的所有请求。仍在另一个实施例中,应用流客户端552拦截该请求。在一些实施例中,拦截应用对于访问可执行文件的请求。在其他实施例中,拦截应用对于文件、在本地机器10上执行的应用一部分的访问的请求。
[274]该请求被重定向到第一隔离环境(步骤1304)。在一个实施例中,应用在第一隔离环境中执行。在一个实施例中,应用是应用程序,例如字处理程序或电子数据表程序。在另一个实施例中,该应用是应用流客户端552。仍然在另一个实施例中,应用是在应用流客户端552内的部件,试图启动代表本地机器10上的用户的应用程序。在另一个实施例中,文件系统过滤器驱动器重定向该请求到第一隔离环境。
[275]做出该请求的文件没有存在于第一隔离环境中的决定(步骤1306)。在一个实施例中,文件系统过滤器驱动器接收请求的文件没有存在于第一隔离环境中的指示。
[276]响应于该文件在目录结构列举中被识别的决定,该请求被重定向到第二隔离环境,该目录结构与驻留在远程机器上的多个应用文件相关联(步骤1308)。在一个实施例中,接收带有关于第一应用执行的访问信息的目录结构列举。在另一个实施例中,该列举识别包括第二应用的多个应用文件。在此实施例中,第一应用是第二应用的本地副本。
[277]响应于第二隔离环境不包括文件以及文件在列举中被识别的决定,从远程机器获取请求的文件(步骤1310)。在一个实施例中,从第二远程机器获取请求的文件。在另一个实施例中,从文件服务器获取请求的文件。在一些实施例中,目录结构的列举识别驻留在本地机器上的多个应用文件。在其他实施例中,目录结构的列举指示该多个应用文件驻留在本地机器上。在这些实施例的一个中,目录结构的列举已经指示该多个应用文件驻留在本地机器上,当应用请求存储在多个应用文件中的文件时,一旦拦截访问请求则从文件服务器获得该文件。在这些实施例的另一个中,文件服务器将请求的文件流式传输到本地机器。仍然在这些实施例的另一个中,一旦接收到请求的文件,该请求的文件被存储在第二隔离环境中。仍然在其他实施例中,目录结构的列举已经指示该多个应用文件驻留在本地机器上,当应用请求存储在多个应用文件中的文件时,文件的副本从本地高速缓存提供给应用。
[278]在一些实施例中,请求的文件被加密。在其它实施例中,请求的文件以加密的形式被存储。仍然在其他实施例中,如果应用程序缺少对请求的文件访问的授权,则阻止请求该文件的应用解密被请求的文件。
[279]在一个实施例中,作出目录结构列举没有识别该文件的决定。在此实施例中,访问文件的请求可以被重定向到在第一隔离环境之外和第二隔离环境之外的环境中。
[280]在一些实施例中,拦截访问文件的第二请求。在这些实施例的一个中,通过第二应用作出访问文件的请求。在这些实施例的另一个中,在第三隔离环境中执行第二应用。仍然在这些实施例的另一个中,响应于该文件在列举中被列出以及第二隔离环境包括该文件的决定,该请求被重定向到第二隔离环境。一旦从文件服务器接收到文件,则可以作出本地机器在第二隔离环境中存储文件的决定。仍然在另一个实施例中,该文件被存储在第三隔离环境中。
[281]现在看图14,描述了系统的一个实施例的框图,该系统用于访问与应用相关联的目录结构中的文件。总的来说,本地机器10包括应用流客户端552、流服务554、隔离环境556、文件系统过滤器驱动器564以及第一应用556。本地机器10可与文件服务器540、远程机器30、网络接口558以及第二应用556’相互作用。
[282]本地机器10初始化应用流客户端552以执行第一应用556。在一个实施例中,应用流客户端552初始化流服务554以获取并执行第一应用566。在一些实施例中,多个应用文件包括第一应用566。在这些实施例的一个中,流服务554获取该多个应用文件并将它们存储在隔离环境566中。在这些实施例的另一个中,流服务554识别远程机器的位置,该多个应用程序文件驻留在该远程机器上但不获取该多个应用程序文件。仍然在这些实施例的另一个中,流服务554在该多个应用程序文件中获取文件的子集。仍然在这些实施例的另一个中,流服务554获取包括多个应用程序文件的档案文件。
[283]在一个实施例中,第一应用566包括驻留在远程机器30上的第二应用566’的本地副本。在另一个实施例中,多个应用文件驻留在远程机器30上并且包括驻留在远程机器30上的第二应用566’。仍然在另一个实施例中,为了执行第二应用566’,本地机器10获取多个应用文件,在本地机器上生成第一应用566,并执行第一应用566。在一些实施例中,应用566和566’是用户应用,例如字处理应用或电子数据表应用或显示应用。
[284]在一些实施例中,多个应用文件包括识别目录结构的文件,该目录结构与在远程机器30上的该多个应用文件相关联。在这些实施例的一个中,该文件包括元数据,该元数据涉及在该多个应用文件中的每个应用文件。如上述结合图12的描述,在这些实施例的另一个中,流服务554从文件中获取元数据以生成目录结构的列举,该目录结构与该多个应用文件相关联。仍然在这些实施例的另一个中,流服务554存储目录结构的列举,该目录结构与包括第二应用556’的多个应用文件相关联。在一些实施例中,流服务554在第二隔离环境中存储列举。
[285]在一个实施例中,流服务554获取与第一应用566相关联的初始可执行文件。在另一个实施例中,一旦获取初始可执行文件,流服务554执行在本地机器10上的第一应用566。仍然在另一个实施例中,当需要该文件以继续第一应用566的执行时,第一应用566请求在多个应用程序文件中的其他文件的访问。在一些实施例中,第一应用566在隔离环境556中执行。
[286]文件系统过滤器驱动器564通过第一应用566拦截请求,该第一应用566在隔离环境556中执行,用于访问在多个应用文件中的文件。文件系统过滤器驱动器564重定向该请求到隔离环境556。如果请求的文件驻留在隔离环境556中,向第一应用566提供对请求的文件的访问。
[287]如果请求的文件没有驻留在隔离环境556中,文件系统过滤器驱动器564重定向该请求到第二隔离环境。在一个实施例中,第二隔离环境包括目录结构的列举,该目录结构通过流服务554产生并与包括第二应用566’的多个应用文件相关联。在另一个实施例中,做出请求的文件在目录结构的列举中被识别的决定。
[288]在一些实施例中,流服务554向隔离环境556提供信号量。在这些实施例的一个中,文件系统过滤器驱动器564使用该信号量来向流服务554指出需要访问在多个应用文件中的文件。在其它实施例中,文件系统过滤器驱动器564使用线程向流服务554指示需要访问文件。
[289]一旦从文件系统过滤器驱动器564接收到通知,流服务554从多个应用文件获取请求的文件。仍然在这些实施例的另一个中,流服务554在第二应用隔离环境中存储请求的文件。在一个实施例中,用于访问文件的请求使用文件的实施例满足,该文件的实施例从多个应用文件中获取并存储在第二隔离环境中。在另一个实施例中,请求的文件也被存储在第一隔离环境中。
[290]在一些实施例中,做出第二隔离环境不包括文件以及该文件在列举中被识别的决定。在这些实施例的一个中,文件在目录结构的列举中识别,该目录结构与包括第二应用566’的多个应用文件相关联,并且该文件是该多个应用文件中的文件。在这些实施例的另一个中,流服务554不从远程机器上获取文件。仍然在这些实施例的另一个中,流服务554不获取包括请求的文件的多个应用文件。仍然在这些实施例的另一个中,流服务554在档案文件中获取多个应用文件,但不获取来自档案文件的请求的文件。
[291]在一个实施例中,流服务554包括收发器,与文件系统过滤器驱动器通信。在另一个实施例中,收发器从文件系统过滤器驱动器接收重定向的请求。仍然在另一个实施例中,收发器向寄载请求的文件的远程机器转发对于文件的请求。在一个实施例中,远程机器是文件服务器540。在另一个实施例中,请求被转发到远程机器30,该远程机器30路由该请求到文件服务器540。在一些实施例中,文件服务器540将请求的文件流式传输到本地机器10上的转发器。在其他实施例中,远程机器30将请求的文件流式传输到本地机器10上的转发器。仍然在其他实施例中,一旦从文件服务器540接收到请求的文件,转发器在第二隔离环境中存储接收的文件。
[292]在一个实施例中,文件系统过滤器驱动器564拦截用于访问文件的第二请求,该第二请求由第三应用566”做出,并在本地机器上第三隔离环境中执行。在另一个实施例中,文件系统过滤器驱动器564重定向用于访问文件的请求到第二隔离环境。仍然在另一个实施例中,在通过第三应用566”拦截用于访问的请求之前,文件系统过滤器驱动器564确定流服务554在第二隔离环境中存储接收的文件。
[293]在一些实施例中,一旦初始化,在执行应用程序之前,流服务554在隔离环境中可以总装高速缓存。在这些实施例的一个中,流服务554将登记文件安装到隔离环境中。在这些实施例的另一个中,流服务554存储在文件的长名称和短文件名称之间的映射。
[294]在一个实施例中,为了节省本地机器上的空间,限制高速缓存的尺寸。在一些实施例中,当高速缓存接近它的尺寸限定时,高速缓存中最旧的文件将被自动删除以获得空间用于新的文件。在这些实施例的一个中,文件的年龄通过时间戳确定,该时间戳由操作系统保持,表示“最后一次访问”的时间戳的时间。除了文件的年龄之外,也考虑文件类型-二进制可执行文件(.EXE,.DLL等)比其他类型相同年龄的文件保存的更长。
[295]一旦初始化,流服务554可列举在高速缓存中的现有文件,并确定高速缓存的总尺寸。在文件被加入高速缓存之后,或者通过隔离环境556或者通过流服务554,流服务554调用通知高速缓存系统新文件以及其位置和尺寸的功能。每个最近高速缓存的文件的尺寸被加入现有高速缓存尺寸的运行总量中。新的总量接着与高速缓存尺寸限定相比较,并且如果超过了限定,代码发出线程以增加高速缓存的年龄(age the cache)。任何时候可以只有该线程的一个实施例在任何给定的时间运行。
[296]线程一般在高速缓存中产生所有文件的列表,通过最近访问的时间戳排序该列表,并接着开始顺着该列表向下删除文件,直到有足够的磁盘空间满足用于该线程的退出标准。退出标准基于减少高速缓存尺寸下降到低于限定的级,该限定作为限定的百分比(缺省值是10%)被确定。删除比所需要的更多以防止超过该限定,该限定防止高速缓存在每次加入新文件时过载。
[297]在一些实施例中,流服务554向本地机器10以压缩文件格式提供在多个应用文件中的每个文件拷贝的能力,这些应用文件包括应用程序。这种能力被称为“预高速缓存”。在这些实施例的一个中,当应用程序被顺序的执行,所有的包请求去到本地副本而非遍历网络。这些实施例使得本地机器10的用户在用户没有访问网络时每次执行应用程序
[298]远程机器30包括监控被本地机器10使用的应用的功能。远程机器30可监控本地机器10所使用的每个应用的状态,例如当应用的执行或终止时。在一个实施例中,远程机器30要求本地机器10传输关于应用状态的消息,该应用被本地机器10执行。在另一个实施例中,当本地机器10连接到远程机器驻留的网络上时,本地机器10传输消息,该消息指示本地机器10已经连接到网络。
[299]在一个实施例中,当本地机器10与远程机器30交互并执行一个或多个应用时,本地机器10拥有会话。在另一个实施例中,远程机器30要求本地机器维持许可,该许可用于会话的期间,授权从远程机器接收的应用的执行。仍然在另一个实施例中,会话具有由远程机器分配的唯一的会话标识符。
[300]在一个实施例中,本地机器10向远程机器30传输消息,与远程机器交互以接收并执行应用程序。在另一个实施例中,本地机器10从远程机器30接收第二远程机器的标识符,例如会话管理服务器562,第二远程机器接收并存储所有传输的消息,该消息与本地机器10上的会话相关联。
[301]在一些实施例中,会话管理服务器562为提供许可管理和会话监控服务的远程机器30。在这些实施例的一个中,会话管理服务器562包括提供这些服务的服务器管理子系统508。
[302]在一个实施例中,本地机器10直接向会话管理服务器562传输消息。在另一个实施例中,本地机器10向远程机器30传输消息,远程机器30向会话管理服务器562转发该消息,该会话管理服务器562带有本地机器10的标识。
[303]本地机器10可向远程机器30传输心跳消息。在一个实施例中,该心跳消息包括对许可的请求。在此实施例中,本地机器10在接收到与应用程序相关联的访问信息后可传输心跳信息,本地机器10请求授权以执行该应用程序。本地机器10在执行该应用之前传输该心跳消息。在一个实施例中,本地机器10包括带有心跳信息的启动票据,该启动票据带有访问信息被接收。在此实施例中,一旦成功验证启动票据,远程机器30授予本地机器552许可。
[304]在另一个实施例中,心跳信息包括本地机器已经开始应用执行的指示。仍然在另一个实施例中,心跳信息包括本地机器已经终止应用程序执行的指示。仍然在另一个实施例中,心跳信息包括应用执行失败的指示。
[305]在一个实施例中,心跳信息包括第二会话管理服务器的标识的请求,例如会话管理服务器562。在另一个实施例中,心跳消息包括本地机器10已经连接到远程机器30驻留的网络的指示。
[306]在一些实施例中,心跳消息包括重启应用流会话的请求。在这些实施例的一个中,当发生错误,在远程机器30驻留的网络和本地机器10间的连接被停止时,本地机器10传输该心跳消息。在这些实施例的另一个中,本地机器10传输带有与会话相关联的心跳消息信息。仍然在这些实施例的另一个中,如果会话没有终止,远程机器30可向本地机器10传输会话相关数据。
[307]在这些实施例的另一个中,如果远程机器30从在其上应答的网络上断开,本地机器10不接收传输到远程机器30的心跳信息的应答。在一个实施例中,本地机器10通过传输请求到远程机器30的会话复位的消息可以重新重建会话。在另一个实施例中,远程机器10通过传输请求到第二远程机器30的会话复位的消息可以重建会话。在一些实施例中,当远程机器30重连接到网络中时,将为在远程机器30被断开时接收的每个会话重置请求生成新的会话。在这些实施例的一个中,新会话被关联到重连接和未许可状态。在这些实施例的另一个中,不获得用于新的会话的新许可。仍然在这些实施例的另一个中,当本地机器10执行应用时,将获得新的许可,并且与本地机器10相关联的所有会话将与活动的和许可的状态相关联。
[308]在一些实施例中,本地机器10上的应用流客户端552生成心跳消息。在这些实施例的一个中,应用流客户端552向web接口558转发该心跳消息用于向本地机器10传输以向远程机器30传输。在其他实施例中,在远程机器30上的管理服务504从本地机器10通过web接口558接收心跳消息。仍然在其他实施例中,包括收集点240的远程机器30(上述结合图1D描述)接收并存储心跳消息。
[309]在一些实施例中,应用流客户端552从远程机器30请求许可。在这些实施例的一个中,该许可授权本地机器552上的应用程序的执行。在这些实施例的另一个中,远程机器30可访问第二远程机器以提供该许可。仍然在这些实施例的另一个中,远程机器30可向本地机器提供许可。仍然在这些实施例的另一个中,远程机器30可向第二远程机器提供可接受的用于授权的许可。在一些实施例中,一旦应用程序的执行终止,许可被撤回。
[310]在一些实施例中,在群组38中的远程机器30包括许可管理子系统,用于配置和维持用于这些子系统的许可并用于控制到这样的子系统的连接的数量,这些子系统需要操作许可。在其他实施例中,远程机器30包括在其他子系统(例如应用管理子系统和会话管理子系统)中的许可管理子系统的功能。在一个实施例中,每个远程机器30包括许可管理子系统或者与许可管理子系统相关联的功能。许可管理子系统管理两种类型的许可(1)特征许可,以及(2)连接许可。总的来说,许可管理子系统使用特征许可来控制访问许可的软件产品的特征,例如负荷管理,并使用连接许可来控制这些许可软件产品允许的用户连接的数量。特征可为软件产品的一些方面或特定功能,或者该特征可为整个的产品,该产品在没有特征许可时不工作。
[311]图15示出了在群组38中的远程机器30的一个实施例,其中远程机器30包括许可管理子系统1510,组子系统1520,持久存储系统服务模块1570,动态存储系统服务模块1580,关系子系统1530,特定远程机器子系统1540,以及与事件总线1570通信的公共接入点子系统524。图15中示出的这些子系统用于描述许可管理子系统1510的行为。远程机器30包括其他类型的子系统。
[312]许可管理子系统1510通过事件总线与组子系统1520通信,从而建立和维持许可的逻辑分组(此处,“许可组”)以促进许可池、分配和组。许可组包括以下描述的许可串的集合和/或其他许可组。许可组收集相似特征的许可并从而实现许可池化。池化的许可是可被群组38中的任何远程机器30使用的许可。每个许可组保存在许可组和其他许可子组(例如在许可组中的其他许可组)中的许可的收集性能。在一个实施例中,许可池相关信息被保持在动态存储器240中。在该实施例中,每个许可管理子系统1610本地存存储的许可总数量和分配给群组38中的远程机器30的许可的数量。一旦授予池化的许可,该授予许可管理子系统1510在动态存储器240中产生入口,指示该池化的许可“正使用中”。每个其他许可管理子系统1510识别这样的池化的许可不可用于授予的。在一个特定实施例中,动态存储240存储与每个许可组相关联的远程机器ID/客户端ID对以识别使用中的池化的许可。
[313]关系子系统1530在许可和远程机器30间以及在许可组和远程机器30间维持关联。关联定义了用于每个许可和许可组的许可的数量,只有相关联的远程机器30可获得该关联(例如“本地许可”)。本地许可是分配给群组38中的一个远程机器的许可,并且没有被其他远程机器38分享。许可管理子系统1510与关系子系统1530通信以建立、删除、查询并更新这样的关联。公共接入点子系统524提供每个驻留在远程机器30上的软件产品所使用的远程过程调用(RPC)。这些RPC接口使得这样的软件产品通过公共接入子系统524通信来访问许可信息。
[314]仍然看图15,特定远程机器子系统1540与许可管理子系统1510通信以获得特征许可,该特征许可用于需要许可的特定远程机器子系统1540的每个性能。这发生在特定远程机器子系统1540初始化和任何许可事件后。如果不能获得特征许可,特定远程机器子系统1540限制子系统将提供许可的功能。同样的,只要客户端会话使用远程机器30开始,特定远程机器子系统1540使用许可管理子系统1510获得客户端连接许可。
[315]当许可串依照命名规定形成时,许可管理子系统1510与持久存储系统服务模块352通信从而在许可存储库1550中存储特征和连接许可。许可存储库1550驻留在持久存储器230中。当这样的许可被存储在许可存储库1550中时,循环冗余码校验(CRC)禁止许可的篡改。许可管理子系统1510也存储与许可存储库1550中的许可串相关的信息。例如,该信息可指示哪个许可被分配给群组38的哪个远程机器30,和在一些实施例中,每个许可的激活状态。在一个实施例中,连接许可表1560存储这些已经获得了连接许可的本地机器的标识符。
[316]在一个实施例中,许可管理子系统1510支持来自请求使用许可性能的子系统的事件,例如对可用的池化许可的请求。事件包括请求许可的子系统的UID和该子系统驻留的远程机器30的UID。该事件也包括以许可组ID形式被请求的许可类型(例如,特征或连接许可)。存储在持久存储器230中的实际的许可组ID是任意的,但符合命名规则,为远程机器30提供新软件产品(例如子系统)将来附加的便利。
[317]由寻找许可的请求子系统发送的事件包括(1)许可组类型的指示,请求许可的本地机器和远程机器的标识,以及“强制获得”标志。许可组类型的指示可包括特征许可的标识,例如负荷管理,或者连接类型许可,例如软件应用产品。识别寻找许可的本地机器和远程机器的域可包括与远程机器和本地机器相关联的唯一的标识符。强制获得标记可被用于,例如,在许可改变事件之后重新获得连接许可。许可改变事件指示在持久存储器230中的许可信息已经改变;例如,许可已经被删除、增加或者分配。一旦许可改变事件发生,因为远程机器不知道许可改变事件的特定原因,每个远程机器30试图重新获得在许可改变事件之前所持有的所有的连接许可。该标记,如果设置,指示必须获得连接许可,即使这样做增加了到远程机器30的连接数量,超过允许连接的预定最大量。直到使用中的连接许可量下降到低于预定的最大量,否则后来不授予新的连接许可。在此方式中,由于许可改变事件,本地机器连接许可在会话中将不被终止。
[318]现在看图16,描述了包括在许可执行中的部件的一个实施例的框图。远程机器30包括服务器管理子系统508和许可管理子系统512。在一些实施例中,该服务管理子系统508和许可管理子系统512提供上述的许可管理子系统1510的功能。在另一个实施例中,应用管理子系统506和会话管理子系统510提供上述的许可管理子系统1510的功能。仍然在其他实施例中,其他子系统提供上述的许可管理子系统1510的功能。
[319]在一个实施例中,服务器管理子系统508包括许可部件,该许可部件用于请求许可的发布和撤回。在另一个实施例中,许可管理子系统512可应用策略到从服务器管理子系统508接收的许可发布和撤回的请求。仍然在另一个实施例中,许可管理子系统512可向提供许可执行功能的远程机器30传输该请求。在一些实施例中,管理服务504可维持与提供许可执行功能德第二远程机器30的连接。在其他实施例中,远程机器30提供许可执行功能。
[320]在一些实施例中,一旦本地机器10向远程机器传输预定数量的心跳信息失败,许可的终止或停止将有效。在这些实施例的一个中,许可的终止撤回由本地机器10执行应用程序的授权。
[321]在其他实施例中,在预定时间周期终止时,会话将终止。在一个实施例中,在许可满期后,直到会话满期,管理服务504维持会话相关的数据。在一些实施例中,会话相关数据可包括信息例如会话名称、会话ID、客户端ID、客户端名称、会话开始时间、服务器名称(文件服务器的UNC路径)、应用名称(本地机器基于浏览器名称产生的唯一名称)、别名、会话状态(激活/许可、激活/未许可、重连接/未许可)。在另一个实施例中,本地机器10停止心跳消息的传输并在稍后的时间点重新开始心跳消息的传输。仍然在另一个实例中,如果在会话满期之前本地机器10重新开始心跳消息的传输,则管理服务504可重新发行认证并使得保持的会话相关数据对本地机器10可用。
[322]现在看图17,描述了本地机器10上的会话的持续期间请求并保持来自远程机器30的许可所采用步骤的一个实施例的流程图。总的来说,应用流客户端请求许可(步骤1702)。远程机器30接收对许可的请求,验证与该请求相关联的票据,并产生许可(步骤1704)。远程机器30向本地机器10提供许可和与许可相关联的信息(步骤1706)。本地机器10执行结合上述在图7中的步骤214描述的应用。本地机器传输心跳消息,该心跳消息指示本地机器已经执行了应用(步骤1708)。远程机器30接收该心跳消息并验证与心跳信息一起被传输的识别信息(步骤1708)。远程机器30建立与执行的应用和与本地机器10相关联的会话(步骤1710)。建立会话的结果被传输到本地机器10(步骤1712)。如上述结合图7中的步骤216描述的,在整个应用执行期间,本地机器传输心跳消息。本地机器接收对传输的心跳消息的响应(步骤1714)。本地机器传输心跳消息,该心跳消息指示该应用的执行的终止(步骤1716)。远程机器30接收该心跳消息并确定是否移除会话相关数据以及是否释放与本地机器10和终止应用相关联的许可(步骤1718)。远程机器10作出的决定的结果被传输到本地机器10(步骤1720)。
[323]现在看图17,更详细的,在本地机器10上的应用流客户端请求许可(步骤1702)。在一些实施例中,一旦接收到与应用程序相关联的访问信息,本地机器10请求该许可。在这些实施例的一个中,本地机器请求来自远程机器30的许可,该许可授予本地机器10执行应用程序的授权。在一些实施例中,该许可的请求包括从带有访问信息的远程机器30接收的启动票据。在其他实施例中,本地机器10上的应用流客户端552向web接口558传输该请求,并且web接口558向远程机器30传输该请求。仍然在其他实施例中,远程机器上的会话管理子系统510接收并处理该对许可的请求。
[324]远程机器30接收对该许可的请求,验证与该请求相关联的票据,并产生许可(步骤1704)。在一个实施例中,远程机器30验证本地机器10被授权以执行该应用。在另一个实施例中,远程机器30确定本地机器10是否已经与存在的许可相关联。仍然在另一个实施例中,远程机器30确定本地机器10与存在的许可相关联并为本地机器10提供标识符,用于会话管理服务器562管理该存在的许可。在又一个实施例中,远程机器30产生并向本地机器10提供新许可、会话标识符、以及管理该新许可的会话管理服务器562的标识。
[325]在一些实施例中,远程机器30使用许可管理子系统1510来响应在一个实施例中的许可请求。许可管理子系统1510接收许可请求。该请求可用于特征许可或者用于连接许可。该许可管理子系统1510确定该许可已是否经被授予,即该特征已经被开始或者用于本地机器的连接已经存在。如果该许可已经被授予,该许可管理子系统1510向该许可请求者发送“授予”事件。如果许可没有事先授予,该许可管理子系统1510确定本地许可,即,已经永久指定给该远程机器30的许可,是否可用。在一些实施例中,该许可管理子系统1510通过检查本地存储器来执行该确定。如果本地许可是可用的,即,远程机器30的许可永久分配比当前授予多,该许可管理子系统1510向该许可请求者发送“授予”事件。
[326]远程机器30向本地机器10提供许可和与该许可相关联的信息(步骤1706)。在一个实施例中,一旦从远程机器30接收到该许可、该会话标识符以及该会话管理服务器562的标识,本地机器10执行该应用。如结合上述图7中的步骤214所描述的,本地机器10可执行该应用。本地机器传输心跳消息,该心跳消息指示本地机器已经执行应用(步骤1708)。在一个实施例中,本地机器向传输该心跳消息到会话管理服务器562的远程机器30传输该心跳消息。在另一个实施例中,响应于从远程机器30接收的会话管理服务器562的标识符,本地机器10直接向会话管理服务器562传输心跳消息。
[327]远程机器30接收该心跳消息并验证与该心跳消息一起传输的识别信息(步骤1708)。在一个实施例中,远程机器30’为会话管理服务器562。在另一个实施例中,会话管理服务器562验证服务器标识符,该标识符与心跳消息一起由本地机器10提供,仍然在另一个实施例中,服务器标识符是远程机器30向本地机器10提供的标识符。
[328]远程机器30建立与所执行的应用和本地机器10相关联的会话(步骤1710)。在一个实施例中,会话管理服务器562一旦接收到该心跳消息,则建立与执行的应用相关联的新会话。在另一个实施例中,第三方远程机器30建立新会话。在一些实施例中,会话管理服务器562在生成新会话时,存储会话相关信息。
[329]建立会话的结果被传输到本地机器10(步骤1712)。在一些实施例中,该结果确定会话的建立。在其他实施例中,该结果识别该应用或与会话相关联的应用。如上述结合图7中步骤216描述的,本地机器在该应用执行的整个期间传输心跳消息。在一个实施例中,本地机器10在有规律的间隔连续的传输心跳消息,在整个应用程序的执行期间定期的时间间隔到会话管理服务器562。本地机器接收对已传输的心跳消息的响应(步骤1714)。在一个实施例中,本地机器10从会话管理服务器562接收心跳消息的确认。在另一个实施例中,响应于经由会话管理服务器562的心跳消息的接收,本地机器10从会话管理服务器562接收用于执行的命令。
[330]本地机器传输心跳消息,该心跳消息指示该应用的执行的终止(步骤1716)。远程机器30接收该心跳消息并决定是否移除会话相关数据以及是否释放与本地机器10和终止的应用相关联的许可(步骤1718)。远程机器30作出的决定的结果被传输到本地机器10(步骤1720)。
[331]现在看图18,描述了可与管理服务504监控的会话相关联的状态的实施例的框图。在一个实施例中,在管理服务504上的会话保持子系统510监控本地机器10的会话并为该会话分配状态。在另一个实施例中,会话保持子系统510保持许可相关数据列表,该列表包括与本地机器相关联的标识符、与会话相关联的标识符、会话状态以及指示远程机器30从本地机器10接收消息的上一次的时间戳。在一些实施例中,会话保持子系统510包括会话监控线程。在这些实施例的一个中,会话监控线程在定期的许可超时间隔唤醒,以扫描该许可相关数据的列表和更新会话的会话状态。
[332]会话可处于的第一状态是激活以及被许可状态。在一个实施例中,当在此状态中,本地机器10已经维持了授权应用的执行的有效的许可。在另一个实施例中,会话管理服务器562维持会话相关数据。在一些实施例中,会话管理服务器562在第二远程机器上存储会话相关数据。在一个实施例中,当本地机器10最初执行应用时,该用于本地机器的会话处于激活和许可状态。
[333]会话可处于的第二状态是激活和未许可状态。在一个实施例中,当本地机器10传输心跳消息失败并且到本地机器10的许可已经终止时,会话处于此状态。在一个实施例中,如果会话处于这个状态,尽管该许可已经过期,用于会话的不充足的时间已经过去以致过期,并且该会话视为激活。在一些实施例中,当会话处于该状态,远程机器30或会话管理服务器562可存储代表本地机器10的会话相关数据。在其它实施例中,如果本地机器10在会话终止之前传输心跳消息,则会话相关数据被传输到具有新许可的本地机器10,并且该会话返回到激活和被许可状态。在一个实施例中,远程机器30使用会话标识符和与本地机器相关的标识符以验证会话没有终止,并向本地机器提供适当的会话相关数据。
[334]会话可处于的第三状态是未连接和不存在状态。当会话终止,删除会话相关数据。
[335]会话可处于的第四状态是重连接和未许可状态。在一个实施例中,当本地机器10上的会话终止,则删除会话相关数据。在另一个实施例中,当本地机器10传输新的心跳信息时,产生用于本地机器10的新会话标识符和本地机器标识符。在一些实施例中,本地机器10重授权远程机器30,接收新许可,并进入激活和被许可状态。
[336]表3总结了与会话相关的状态。
会话状态             描述
激活\被许可          操作的正常模式
激活\未被许可        缺少心跳的持续时间>
                     许可超时
                     并且
                      缺少心跳的持续时间
                      <会话超时
重连接\未被许可       缺少心跳的持续时间>
                      会话超时
                      或者寄载会话的CPS/RADE下线和重新在线(down
                      and back online)
表3
[337]在一些实施例中,包机制启用与应用程序相关联的多个应用文件的建立。在这些实施例的一个中,包机制启用多个应用文件的标识。在这些实施例的另一个中,包机制启用将单个的应用文件分组到多个应用文件中。仍然在这些实施例的一个中,包机制启用在例如文件服务器或应用服务器的远程机器上寄载该多个应用文件。
[338]在一个实施例中,包机制在被描述为“中间集结机器”的远程机器上执行。在另一个实施例中,包机制在“干净的机器”上执行。干净的机器可为其上只安装了操作系统的远程机器,而没有附加的软件、驱动器、登记入口或其他文件。仍然在另一个实施例中,包机制在远程机器上执行,该远程机器类似应用程序可在其上执行的本地机器。在一些实施例中,包机制在其上执行的远程机器包括隔离环境,即使远程机器本身不是干净的机器,该隔离环境可提供应用程序可安装在其中的干净的机器环境。
[339]在一个实施例中,该多个应用文件被指定作为“包”。在其他实施例中,该包可为存储多个应用文件的档案文件。仍然在另一个实施例中,包可为档案文件,该档案文件存储该多个应用文件和文件,该文件包括与在该多个应用文件中的至少一个文件相关联的元数据。在一些实施例中,包包括多个应用文件,该多个应用文件包括应用程序。在其它实施例中,包包括多个应用文件,该多个应用文件包括一组应用程序。在又一些实施例中,包包括多个应用文件,该多个应用文件包括应用程序和执行该应用程序需要的先决条件。
[340]在一个实施例中,包机制在隔离环境中开始安装程序的执行。在另一个实施例中,包机制监控安装程序产生的对隔离环境的改变。仍然在另一个实施例中,包机制通过安装程序监控在隔离环境中文件的生成。仍然在另一个实施例中,包机制通过安装程序监控在隔离环境中的文件的修改。在一些实施例中,该多个应用文件包括通过安装程序生成或修改的文件。在其他实施例中,包机制实现文件系统过滤器驱动器564以监控该隔离环境。
[341]在一些实施例中,包机制可产生多种该多个应用文件,每种包括应用程序的不同版本,该应用程序被配置用于在不同目标环境中执行。在这些实施例的一个中,配置多个应用文件从而在本地机器上执行,该本地机器有特定的操作系统、修订级、语言配置和主驱动器(例如配置一个多个应用文件以在本地机器上执行,该本地机器有带有修订级SP2及以上的Windows XP Professional操作系统、使用英语并有主驱动器C:\)。在这些实施例的另一个中,多于一种多个应用文件可合并为一个档案文件。仍然在这些实施例的另一个中,每种多个应用文件可被指定为“目标”。仍然在这些实施例的另一个中,包含一种或多种多个应用文件的档案文件可被指定为“包”。
[342]现在看图9,描述了包括两个目标的包的框图,每个目标包括多个应用文件,该多个应用文件包括应用。在图19中,该应用程序“Foo”被包入两个目标中。两个目标间的差别是“目标语言”。特别地,目标1支持“英语”,并且目标2支持“德语”。在一个实施例中,可用应用程序的列举可列出该应用程序“Foo”。在另一个实施例中,该合适的多个文件被传输到请求访问该应用程序的本地机器。仍然在另一个实施例中,响应于本地机器的评价,做出向本地机器传输特定目标的决定。仍然在另一个实施例中,与包相关联的文件识别与包中目标相关联的、本地机器上的执行请求的至少一个特征。
[343]在一些实施例中,包机制530通过执行与应用程序相关联的安装程序,预备用于流式传输的应用程序。在这些实施例的一个中,包机制产生远程机器30上的隔离环境,该包机制在该远程机器30上执行。在这些实施例的另一个中,包机制执行在隔离环境中的应用程序。仍然在这些实施例的另一个中,包机制识别由安装程序产生或修改的多个应用文件。仍然在这些实施例的另一个中,包机制建立包括该多个应用文件的档案文件。在这些实施例的一个中,包机制建立包括该多个应用文件的.CAB文件。在这些实施例的另一个中,包机制建立目录并在该目录中存储该多个应用文件。在一些实施例中,包机制在文件服务器或其他远程机器30上存储该多个应用文件。在其他实施例中,该包机制在多个远程机器上存储该多个应用文件。
[344]现在看图20,描述了基于策略的方法中采用的步骤的一个实施例的流程图,用于有效的安装应用程序而不用重新启动操作系统。总的来说,包机制在隔离环境中执行安装程序,该安装程序将与第二应用相关联的至少一个应用文件安装到隔离环境中(步骤2002)。通过安装程序对至少一个应用编程接口(API)的调用被拦截,在重新启动操作系统后该调用需要动作的执行(步骤2004)。不用重新启动操作系统,执行至少一个拦截的调用的动作(步骤2006)。接收至少一个应用文件的文件类型的标识(步骤2008)。响应于识别的文件类型,至少一个执行方法与该至少一个被安装的应用文件相关联(步骤2010)。该至少一个被安装的应用文件被存储在至少一个服务器上(步骤2012)。产生第二应用、该至少一个被安装的应用文件、该至少一个服务器的位置以及该至少一个执行方法的列举(步骤2014)。
[345]现在看图20,更详细的,包机制在隔离环境中执行安装程序,该安装程序将与第二应用相关联的至少一个应用文件安装到隔离环境中(步骤2002)。在一个实施例中,在隔离环境中执行安装程序启用包机制来隔离安装程序对本地机器上的文件或登记所作出的改变。在另一个实施例中,包机制拦截安装程序请求的改变,并将该改变重定向到隔离环境以防止改变发生在本地机器上。仍然在另一个实施例中,包机制在隔离环境中执行第二安装程序,该第二应用向隔离环境中安装与第三应用相关联的至少一个应用文件。
[346]在一些实施例中,包机制在隔离环境中执行该安装程序,该安装程序在隔离环境内执行与应用相关联的至少一个可执行应用。在一个实施例中,其中安装程序执行应用,应用的执行启用第二应用的安装。
[347]在这些实施例的另一个中,除了安装程序的执行之外,应用的安装需要执行至少一个可执行应用。仍然在这些实施例的另一个中,除了安装程序的执行之外,应用的安装需要因特网浏览器应用的执行。在一些实施例中,执行安装程序以安装程序,并且安装程序的执行包括第二程序的执行,需要该第二程序以安装该程序。在这些实施例的一个中,该程序是插件。在这些实施例的另一个中,该程序是Active X部件。仍然在这些实施例的另一个中,该程序是Flash部件。仍然在这些实施例的另一个中,该程序是定制的工具栏,例如Yahoo!或者Google工具栏。在其他实施例中,该程序是安装到第二程序中的部件,并且独立于第二程序不可执行。
[348]通过安装程序对至少一个应用编程接口(API)的调用被拦截,在重新启动操作系统后该调用需要动作的执行(步骤2004)。不用重新启动操作系统执行至少一个拦截的调用的动作(步骤2006)。在一些实施例中,动作的执行包括执行安装期间被修改的登记入口的动作。关于不重新启动操作系统时至少一个拦截调用的执行的进一步的细节下面结合图25提供。
[349]接收至少一个应用文件的文件类型的标识(步骤2008)。响应于识别的文件类型,至少一个执行方法与该至少一个被安装的应用文件相关联(步骤2010)。在一个实施例中,该至少一个执行方法启用至少一个应用文件流式传输到客户端。在另一个实施例中,该至少一个执行方法启用客户端上的该至少一个被安装的应用文件执行。仍然在另一个实施例中,该至少一个执行方法启用服务器上的该至少一个被安装的应用文件执行。在又一个实施例中,该至少一个执行方法启用该至少一个应用文件流式传输到服务器。
[350]该至少一个被安装的应用文件被存储在至少一个服务器上(步骤2012)。在一些实施例中,在至少一个服务器上存储该至少一个被安装的应用文件之前,该被安装的应用程序在该隔离环境中被执行。在这些实施例的一个中,响应于该被安装的应用程序的执行,产生附加的应用文件。在这些实施例的另一个中,产生数据文件。仍然在这些实施例的另一个中,被安装的应用程序需要信息以完成安装,在最初的安装过程之后需要该信息。仍然在这些实施例的另一个中,需要诸如软件产品标识符、许可标识符或者其他证书的信息。
[351]在一些实施例中,提供标识符以识别在该至少一个服务器上的该至少一个被安装的应用文件的位置。在这些实施例的一个中,标识符符合通用命名标准(UNC)。在其他实施例中,在例如.CAB文件的档案文件中放置该至少一个被安装的应用文件。在这些实施例的一个中,多个应用文件被存储在档案文件中,并且该档案文件被存储在该至少一个服务器上。仍然在这些实施例的另一个中,该至少一个被安装的应用文件被存储在多个服务器上。仍然在其他实施例中,该至少一个应用文件被放置在存储应用文件的目录中。
[352]产生第二应用、该至少一个被安装的应用文件、该至少一个服务器的位置以及该至少一个执行方法的列举(步骤2014)。在一些实施例中,该列举被存储在文件中。在其他实施例中,该列举被存储在清单文件中。仍然在其他实施例中,该列举被存储在XML文件中。
[353]在一个实施例中,产生多个应用、与多个应用中的每个相关联的多个被安装的应用文件以及存储多个被安装的应用文件的至少一个服务器的位置的列举。在其他实施例中,产生列举包括第二应用和多个被安装的应用文件之间的关联。仍然在另一个实施例中,产生的列举包括在第二应用和压缩文件间的关联,该压缩文件包括至少一个被安装的应用文件。
[354]现在看图21,描述了基于策略的方法中使用的步骤的一个实施例的流程图,用于不重启操作系统而安装应用程序。总的来说,包机制在隔离环境中执行安装程序,该安装程序向该隔离环境安装至少一个应用文件,该应用文件与第二应用相关联(步骤2102)。拦截由安装程序对至少一个应用编程接口(API)的调用,在重启操作系统之后,该调用需要动作的执行(步骤2104)。该至少一个被拦截的嗲用的动作不用重启操作系统而被执行(步骤2106)。接收该至少一个应用文件的特征的标识(步骤2108)。响应于被识别的特征,至少一个执行必须条件与该至少一个被安装的应用文件相关联(步骤2110)。该至少一个被安装的应用文件被存储在至少一个服务器上(步骤2112)。产生第二应用、该至少一个被安装的应用文件、该至少一个服务器的位置以及该至少一个执行必须条件的列举(步骤2114)。
[355]现在看图21,更详细的,包机制在隔离环境中执行安装程序,该安装程序向该隔离环境中安装至少一个应用文件,该应用文件与第二应用相关联(步骤2102)。在一个实施例中,在该隔离环境中执行该安装程序启用包机制来隔离由安装程序产生对本地机器上的文件或登记表的改变。在另一个实施例中,包机制拦截安装程序请求的改变并将该改变重定向到隔离环境中以防止该改变发生在本地机器上。在另一个实施例中,包机制在隔离环境中执行第二安装程序,该第二应用将至少一个应用文件安装到隔离环境中,该至少一个应用文件与第三应用相关联。
[356]在一些实施例中,包机制在隔离环境中执行安装程序,该安装程序在隔离环境内执行至少一个可执行应用,该至少一个可执行应用与应用相关联。在一个实施例中,其中安装程序执行应用,应用的执行启用安装第二应用。在这些实施例的另一个中,除了安装程序的执行之外,安装应用需要该至少一个可执行应用的执行。仍然在这些实施例的另一个中,除了安装程序的执行之外,应用的执行需要因特网浏览器应用的执行。
[357]提前看图23,描述了系统的一个实施例的框图,该系统包括执行安装程序2350到隔离环境532内的包机制530,以及与包机制530通信的文件系统过滤器驱动器534,和隔离系统532。
[358]在一个实施例中,包机制530通过向隔离环境532中安装应用程序来产生包(如上述结合图21所描述的)。在另一个实施例中,包机制530通过执行安装程序2350向隔离环境532中安装应用程序。在一些实施例中,包机制530包括图形用户界面。在这些实施例的一个中,图形用户界面启用包机制530的用户通过包机制530来定制包的产生。在这些实施例的另一个中,包机制与访问控制台520上的图形用户界面通信,使得访问控制台520的用户通过包机制530定制包的产生。
[359]在一些实施例中,文件系统过滤器驱动器532启用在隔离环境532中安装应用程序。在这些实施例的一个中,文件系统过滤器驱动器532拦截安装程序2350的请求。在这些实施例的另一个中,文件系统过滤器驱动器532重定向该安装程序2350的请求到隔离环境532中。仍然在这些实施例的另一个中,文件系统过滤器驱动器532存储安装程序2350做出的请求的记录。在这些实施例的又一个中,文件系统过滤器驱动器532存储安装程序2350建立或修改的文件的副本。在一些实施例中,文件系统过滤器驱动器532产生的被存储的记录作为多个应用文件被存储在一些,上述多个应用文件包括应用程序。在其它实施例中,该多个应用文件被存储在文件服务器540上。
[360]现在回头看图21,拦截安装程序对至少一个应用编程接口(API)的调用,该调用在重启操作系统之后需要动作的执行(步骤2104)。不用重新操作系统而执行该至少一个被拦截的调用的动作(步骤2106)。在一些实施例中,动作的执行包括驱动器的安装,该驱动器被配置为在启动计算机系统时被启动。在其他实施例中,动作的执行包括执行在安装期间修改的登记入口的动作。
[361]接收至少一个应用文件的特征的标识(步骤2108)。在一些实施例中,接收操作系统类型的标识。在其他实施例中,接收操作系统使用的语言的标识。仍然在其他实施例中,接收第二应用的版本的标识。
[362]响应于被识别的特征,至少一个执行的必要条件与至少一个被安装的应用文件相关联(步骤2110)。在一个实施例中,响应于到特征的策略的应用,该至少一个执行的必要条件与该至少一个被安装的应用文件相关联。在另一个实施例中,脚本与该至少一个被安装的应用文件相关联,该脚本包括可执行程序,该可执行程序确定客户端上的至少一个执行必要条件的存在。现在提前参见图22,屏幕图片描述了在本地机器上执行的脚本列举的一个实施例。脚本2202的类型指示何时脚本将被执行,例如,或者在应用程序的执行之前,或应用程序的执行终止之后。隔离指示器24指示了脚本是否应该在本地机器10上的隔离环境中被执行。如图22所示,在一些实施例中,在该多个应用文件被打包到一起并存储在寄载该多个应用文件的远程机器30’上时,脚本与该应用程序相关联。
[363]在一些实施例中,该至少一个执行必要条件需要在执行至少一个被安装的应用文件的系统上安装操作系统的版本。在其它实施例中,该至少一个执行必要条件需要在执行至少一个被安装的应用文件的系统上安装第二应用的版本。在又一些实施例中,指令与至少一个被安装的应用文件相关联,该指令指示通过客户端所使用的第二被安装应用文件不能满足至少一个执行的必要条件。在又一些实施例中,指令与至少一个被安装的应用文件相关联,该指令指示第二执行方法不能满足该至少一个执行必要条件,该第二执行方法用于在客户端上的至少一个被安装的应用文件的执行。在这些实施例的一个中,执行方法与该至少一个被安装的应用程序文件相关联,该执行方法授权流式传输包括第二应用的多个应用文件到本地机器用于在本地机器上的执行。在这些实施例的另一个中,本地机器的评价识别至少一个特征,该特征与至少一个被安装的没有包括在本地机器上的应用文件相关联。仍然在这些实施例的另一个中,撤回用于该多个应用文件的执行的授权。在这些实施的又一个中,提供第二执行方法用于执行该多个应用文件,该第二执行方法启用远程机器上该多个应用文件的执行以及从远程机器向本地机器传输应用输出数据。
[364]该至少一个被安装的应用文件被存储在至少一个服务器上(步骤2112)。在一些实施例中,在至少一个服务器上存储该至少一个被安装的应用文件之前,该被安装的应用程序在该隔离环境中被执行。在这些实施例的一个中,响应于该被安装的应用程序的执行产生附加的文件。在这些实施例的另一个中,产生数据文件。仍然在这些实施例的另一个中,该被安装的应用程序需要信息以完成安装,在初始安装过程之后需要这些信息。在这些实施例的又一个中,需要信息,例如软件产品标识符、许可标识符、或其它证书。
[365]在一些实施例中,提供标识符识别至少一个服务器上的至少一个被安装的应用文件的位置。在这些实施例的一个中,标识符服从通用命名标准(UNC)。在其他实施例中,该至少一个被安装的应用文件被放置于档案文件中,例如.CAB文件。在这些实施例的一个中,多个应用文件被存储在档案文件中,并且该档案文件被存储在至少一个服务器上。仍然在这些实施例的另一个中,至少一个被安装的应用文件被存储在多个服务器上。仍然在其他实施例中,至少一个被安装的应用文件被放置在存储应用文件的目录中。
[366]产生第二应用、至少一个被安装的应用文件、至少一个服务器的位置以及至少一个执行必要条件的列举(步骤2114)。在一些实施例中,该列举被存储在文件中。在其他实施例中,该列举被存储在清单文件中。仍然在其他实施例中,该列举被存储在XML文件中。
[367]在一个实施例中,产生多个应用、与多个应用中的每个相关联的多个被安装应用文件、以及存储该多个被安装的应用文件的至少一个服务器的位置的列举。在另一个实施例中,产生的列表包括在第二应用和多个被安装的应用文件间的关联。仍然在另一个实施例中,产生的列举包括在第二应用和压缩文件间的关联,该压缩文件包括至少一个被安装的应用文件。
[368]回头看步骤2106,此处没有重启操作系统而执行至少一个被拦截的调用的动作,在一些实施例中,提供虚拟化的安装和执行环境,其在执行被安装的应用之前移除重启系统的需要。
[369]现在看图24,描述了实施例的一个流程图,其中安装程序的执行需要重启本地机器上的操作系统,安装程序在该本地机器上执行。传统应用安装复制文件到该应用被安装的远程机器上(步骤2402)。在一些实施例中,拷贝文件可使得远程机器重启。应用安装试着将至少一个文件拷贝以锁定文件(步骤2404)。在一个实施例中,当操作系统被执行(或“重启”)时锁定的文件只能被写入。MOVE_FILE_DELAY_UNTIL_REBOOT选项可在MoveFileEx()Win32Api中被设置(步骤2406),并且应用安装调用系统关闭/重启功能(步骤2408)。随着重启,在重启时,初始锁定文件接着被安装(步骤2410)。
[370]现在看图25,描述了远程机器30的一个实施例的框图,包机制安装应用文件到该远程机器上。远程机器30包括系统资源2502、系统API 2504和用于安装应用的应用安装程序2506。远程机器30也包括钩住功能(function-hooking)机制2508,安装后处理器模块2510以及应用隔离环境2512。在一些实施例中,向隔离环境2512中安装应用程序启用不使用重启远程机器30而安装。在这些实施例的一个中,在隔离环境2512中实现的对系统资源2502做的改变不改变远程机器30上的相应系统资源2502。由于在远程机器30上的系统资源没有改变,不需要重启机器以保护系统资源被不合适的改变。
[371]现在看图25,更详细的,系统资源2502可以包括登记人口、系统DLL以及其他被锁定文件,当远程机器30被执行时,阻止操作系统写入该被锁定文件。系统API2504包括用于重新启动系统的API,这些API被应用安装程序2506调用并被钩住功能机制2508钩住以防止重新启动远程机器30。
[372]应用隔离环境2512向应用安装程序2506提供带有操作系统资源视图的环境。在一个实施例中,应用隔离环境2512是隔离环境556。在一些实施例中,应用隔离环境2512提供诸如文件系统、登记和命名对象的操作系统资源的虚拟化。在一个实施例中,应用安装程序2506在应用隔离环境2512中执行。在另一个实施例中,应用安装程序2506向应用隔离环境2512中安装应用程序。仍然在另一个实施例中,应用安装程序2506在应用隔离环境2512外执行,并在应用隔离环境2512内安装应用程序。
[373]在一些实施例中,当应用安装程序2506向应用隔离环境2512中安装应用时,应用隔离环境2512避开对于重启远程机器30的需要。在一个实施例中,应用隔离环境2512拦截向锁定的文件拷贝应用文件的请求。在另一个实施例中,应用隔离环境2512将该拷贝应用文件的请求重定向到未锁定的文件。在另一个实施例中,应用隔离环境将该拷贝应用文件的请求重定向到虚拟文件。在又一个实施例中,重定向拷贝应用文件的请求启用不需要重新启动远程机器30而安装应用文件。在一个实例中,如果应用安装程序2506试图写到锁定文件,例如C:\windows\system32\mfc40.d11,应用隔离环境2512拦截该请求并将该文件重定向到另一个未锁定的位置。这种避免锁定文件的能力意味着文件不必使用MoveFileEX()API以及MOVE_FILE_DELAY_UNTIL_REBOOT标记而被安装。这种能力消除了重启远程机器30的需要。
[374]在一个实施例中,钩住功能机制2508是文件系统过滤器驱动器564。在另一个实施例中,文件系统过滤器驱动器564包括钩住功能机制2508。仍然在另一个实施例中,钩住功能机制2508拦截来自应用安装程序2506的请求以重启远程机器30。在一些实施例中,应用隔离环境2512提供向未锁定文件拷贝应用文件。然而,应用隔离环境2512不处理由应用安装程序2506提出的用于重启远程机器30的请求。钩住功能机制2508可提供实施动作的功能并且对应于应用的安装程序2506。
[375]应用隔离环境2512启用向未锁定文件拷贝应用文件。然而,在一些实施例中,需要用于安装应用的其它动作,并且一旦重启,这些动作可发生。阻止重启不阻止在安装过程中完成这些动作的需要。钩住功能机制2508可以提供用于执行和安装应用相关联的动作的功能性。
[376]例如,在应用安装期间,可写入登记入口,例如HKLM\SYSTEM\CurrentControlSet\Control\Session_Manager\Pending-FileRenameOperations。其他服务可安装服务或驱动器,一旦重启机器需要开始的这些服务或驱动器。安装后处理器模块2510识别应用文件,这些应用文件在安装期间已被修改,并完成与应用文件相关联的动作。
[377]现在看图26,描述了步骤的实施例的流程图,随着上述步骤在应用隔离环境2512中安装应用。应用隔离环境2512还将为应用安装程序提供服务器操作系统的虚拟视图(步骤2602)。在服务器上涉及系统重启和关闭的API被钩住(步骤2604)以阻止引起应用安装程序2506的重启。应用安装程序2506请求文件拷贝操作以锁定文件,该请求被拦截并被重定向到无冲突位置(步骤2606)。当应用安装程序2506试图通过调用系统API重启,该请求被拦截并且该重启被阻止(步骤2608)。安装后处理器模块2510执行通常在重启后发生的动作(步骤2510)并且不用重启远程机器30,该应用可接着在应用隔离环境2512中被执行(步骤2612)。
[378]在一些实施例中,在向应用隔离环境2512中安装应用程序之后,包机制识别在应用程序安装期间建立或修改的多个应用文件。在这些实施例的一个中,该多个应用文件被存储在远程机器上。在这些实施例的另一个中,获取该多个应用文件的本地机器可执行该应用程序。
[379]在一些实施例中,包机制530在远程机器上执行,该远程机器包括隔离环境532和文件系统过滤器驱动器534,并且包机制530向隔离环境532中安装应用程序。在这些实施例的一个中,远程机器被指定作为“干净的机器”或者“中间集结的机器”。在这些实施例的另一个中,隔离环境532包括应用隔离范围,提供原生资源可修改、虚拟化的实例,由在干净的机器上的操作系统提供该原生资源。仍然在这些实施例的另一个中,隔离环境532包括系统隔离范围,提供原生资源的只读视图。在这些实施例的又一个中,原生资源的只读视图包括文件系统的快照和驻留在干净机器上的登记表。
[380]在一个实施例中,转向器拦截用于改变原生资源的请求。在一些实施例中,转向器为文件系统过滤器驱动器534。在另一个实施例中,由包机制530执行的安装程序做出用于改变的请求。仍然在另一个实施例中,需要对原生资源改变以向干净的机器上安装应用程序。在又一个实施例中,转向器将请求重定向到隔离环境532。
[381]在一些实施例中,将改变原生资源的请求重定向到隔离环境532导致与应用程序的安装相关联的改变的隔离。在其他实施例中,改变原生资源的请求被记录并被存储在存储元件中。在这些实施例的一个中,与应用程序的安装相关联的所有改变驻留在存储元件中。在这些实施例的另一个中,获取存储元件的内容并实施驻留在本地机上552的隔离环境556中的原生资源的改变导致本地机器552上的应用程序的安装。
[382]在一些实施例中,需要本地机器10的启动前分析。在这些实施例的一个中,本地机器10验证包括在本地机器10中的至少一个特征。在这些实施例的另一个中,在启动前分析确定本地机器10缺少至少一个特征之后,将至少一个特征加入到本地机器中。仍然在这些实施例的另一个中,至少一个特征被包括在寄载应用程序的远程机器上,并且本地机器不包括至少一个特征将阻止应用程序的执行。在又一个实施例中,应用程序需要本地机器上的至少一个特征的存在用于执行。
[383]在一些实施例中,包机制启用至少一个特征的标识,该至少一个特征在本地机器的启动前分析中使用。在另一个实施例中,包机制启用至少一个特征与可用于本地机器上执行的应用程序的关联。在另一个其他实施例中,包机制启用可执行脚本与应用程序间关联,本地机器执行该可执行脚本以完成启动前分析。在又一些实施例中,在应用程序的执行之后,需要至少一个特征存在于本地机器上。
[384]包机制可提供用于签名多个应用文件的功能。在一个实施例中,签名多个应用文件启用本地机器以验证多个应用文件的完整性。在另一个实施例中,签名多个应用文件防止本地机器执行被破坏的应用程序。在一些实施例中,计算在多个应用文件中的文件的密码校验和,例如MD4 hash,MD5 hash或者SHA-1 hash。
[385]在其他实施例中,计算在多个应用文件中的每个文件的密码校验和。在这些实施例的一个中,密码校验和被存储在第二文件中。在这些实施例的另一个中,第二文件与多个应用文件关联。在一些实施例中,第二文件被加到多个应用文件。在其他实施例中,第二文件使用证书,例如X.509证书被签名。仍然在其他实施例中,获取多个应用文件的本地机器使用证书的公开部分验证签名。在又一些实施例中,本地机器接收证书的公开部分以及证书信任列表的标识用于签名的验证。在这些实施例的一个中,本地机器接收登记键值,该登记键值包括证书信任列表的标识。
[386]在一个实施例中,包机制提供用于定制隔离环境的功能。在另一个实施例中,包机制提供产生存储隔离环境的定义的文件的功能。仍然在另一个实施例中,包机制包括带有多个应用文件的文件,该多个应用文件包括应用程序。在又一个实施例中,本地机器从远程机器接收带有访问信息的文件。
[387]在一些实施例中,多个应用文件被存储在档案文件中。在这些实施例的一个中,档案文件为CAB文件格式。在这些实施例的另一个中,档案文件格式不提供通过文件的短文件名称的应用程序对详细说明的支持。仍然在这些实施例的另一个中,操作系统,例如WINDOWS2000,可能不提供通过文件的短文件名称的应用程序对详细说明的支持。在其他实施例中,操作系统,例如WINDOW XP,提供通过文件的短文件名称的应用程序对详细说明的支持。在这些实施例的一个中,执行文件的请求必须包括校正短文件名称。
[388]在一个实施例中,产生映射以将在多个应用文件中的文件的长文件名称与文件的短名称关联。在另一个实施例中,该映射被存储在该多个应用文件中的文件中。仍然在另一个实施例中,仅当文件的长文件名称大于十二个字符,文件有短文件名。在一些实施例中,短文件名是与文件相关联的虚拟文件名。在这些实施例的一个中,文件被传输到本地机器10用于执行,此处与长文件名一起被存储。在这些实施例的另一个中,本地机器10上的应用文件使用短文件名请求文件的执行。仍然在这些实施例的另一个中,虽然用于执行文件的请求不使用本地机器上的文件的名称(长文件名称),但映射启用文件的执行。
[389]在一些实施例中,包机制530产生映射。在这些实施例的一个中,包机制为有长文件名的文件选择短文件名。在这些实施例的另一个中,包机制530正执行的远程机器30’上的操作系统为有长文件名的文件选择短文件名。仍然在这些实施例的另一个中,选择唯一的短文件名称,该唯一的短文件名称与远程机器30’上的第二短文件名称不冲突。在这些实施例的又一个中,被包机制530执行的安装程序产生包括在长文件名和短文件名间的映射的文件。在其他实施例中,映射被发送到获取该文件的本地机器10。在这些实施例的一个中,本地机器10指向正在执行的文件。
[390]下述示范性实施例示出了上述讨论的方法和系统可怎样被用于选择、流式传输到本地机器,并在本地机器上执行包括应用程序的多个文件。这些实施例只意味着示出而非限制。
实例1
[391]在一个实施例中,本地机器10的用户请求访问应用程序,例如字处理程序、web浏览应用或者电子数据表程序,该应用程序在应用程序列举中被识别。在此实施例的一个例子中,本地机器10执行程序邻近应用,该程序邻近应用从远程机器30接收可用于本地机器10的应用列举。在此实施例的另一个例子中,本地机器10与例如远程机器30”’的web服务器通信以接收该应用列举。通过选择代表被列举的应用程序的图解,本地机器10的用户可请求访问所列举的应用程序。本地机器10的用户可请求访问不是预先安装在本地机器10上的应用程序。
[392]本地机器10向远程机器30传输对应用程序的访问请求。本地机器10接收远程机器30”的识别,该远程机器30”提供对包括应用程序的多个应用文件的访问。本地机器10识别至少一个特征,在应用程序的执行中需要上述至少一个特征。在此实施例的一个实例中,本地机器10接收带有远程机器30”的标识的该至少一个特征,该至少一个特征通过远程机器30被传输到本地机器10。在此实施例的另一个实例中,在接收远程机器30”的标识之后,本地机器10从远程机器30”获取该至少一个特征。在接收授权以获取多个应用文件之前,可请求本地机器10以包括至少一个特征。可替代的,在执行多个应用文件之前,可请求本地机器10以包括至少一个特征。在此实施例的一个实例中,在执行该多个应用文件的整个过程中,可请求本地机器10以包括该至少一个特征。
[393]一旦本地机器10验证本地机器10包括至少一个特征,本地机器10在该多个应用文件中获取至少一个应用文件并执行获取到的应用文件以执行应用程序。
实例2
[394]远程机器30从本地机器10接收对应用程序的访问请求。远程机器30验证本地机器10。在该实施例的一个实例中,远程机器30从本地机器10请求证书,例如用户名和密码。在此具体实施例的另一个实例中,远程机器30向本地机器10传输收集代理404。收集代理404收集关于本地机器10的信息并向远程机器30传输此信息用于验证本地机器10。仍然在此实施例的另一个实例中,远程机器30向策略引擎406提供关于本地机器10的信息用于验证本地机器10。远程机器30可包括策略引擎406。可替代的,远程机器30可与包括策略引擎406的远程机器30’通信。
[395]远程机器30选择应用程序的执行方法。远程机器30响应于本地机器10的验证,作出选择。在此实施例的一个实例中,远程机器30向收集的关于本地机器10的信息应用策略。在此实施例的另一个实例中,远程机器30响应于应用到应用程序的策略作出选择。仍然在此实施例的另一个实例中,远程机器30响应于应用到与应用程序相关联的文件类型的策略作出选择。远程机器30可参考文件以作出对应用程序的执行方法的选择。
[396]远程机器30可选择应用程序的执行方法,该执行方法启用本地机器10接收应用输出数据,该应用输出数据通过远程机器30’上的应用程序的执行而产生。远程机器30可选择应用程序的执行方法,该执行方法使得本地机器10在获取包括应用程序的多个应用文件之后本地执行应用程序。
[397]在一个实施例中,远程机器30选择执行应用程序的执行方法,当通过应用流会话获取包括应用程序的多个应用文件时,该执行方法启用本地机器10本地执行应用程序。在此实施例的一个实例中,本地机器10建立与远程机器的应用流会话,该远程机器寄载多个应用文件,本地机器10通过应用流会话开始对多个应用文件的获取,并且在该多个应用文件中获取第二应用文件时,本地机器10执行在该多个应用文件中的获取到的第一应用文件。在此实施例的另一个实例中,一旦从第一应用文件接收对第二应用文件的访问的请求,本地机器10执行在该多个应用文件中的第一应用文件并获取在多个应用中的第二应用文件。
[398]对于被选择的执行方法启用本地机器10在多个应用文件中获取至少一个应用文件的实施例中,其中多个应用文件包括应用程序,远程机器30识别寄载应用程序的远程机器,该应用程序对于本地机器10的访问有用。远程机器30”寄载包括应用程序的多个应用文件。远程机器30”可寄载包括多个应用程序的该多种多个应用文件。在此实施例的一个实例中,远程机器30”寄载多个应用文件,此多个应用文件用于应用程序的不同版本的每一个。
[399]远程机器30”寄载与多个应用文件相关联的文件,多个应用文件包括带有应用程序说明的特定应用程序。在向机器传输该多个应用文件之前,文件也可识别将在机器上被识别的一个或多个执行必要条件。文件可进一步包括远程机器30”的网络上的位置的标识。在此实施例的一个实例中,远程机器30参考文件以识别远程机器30”的网络上的位置。
[400]远程机器30选择远程机器30”。远程机器30可以选择具有本地机器10可访问的网络上的位置的远程机器30”。远程机器30可选择远程机器30”,该远程机器30”寄载与本地机器10兼容的应用程序的版本。响应于接收到对于应用程序的访问请求,远程机器30向本地机器10传输被选择的执行应用程序的方法的识别以及远程机器30”的标识。远程机器30也可向本地机器10传输文件。
实例3
[401]在一个实施例中,本地机器10接收被选择的执行应用程序的方法的标识以及远程机器30”的标识,该远程机器30”提供对多个应用文件的访问,多个应用文件包括应用程序。本地机器10验证对应用程序访问的授权。在此实施例的一个实例中,本地机器10执行自身的启动前分析。本地机器10识别至少一个特征,并验证本地机器10上的该至少一个特征的存在。该至少一个特征是维持授权以访问并执行应用程序的必要条件。验证本地机器10上的至少一个特征的存在可确保本地机器10的特征和应用程序的系统需求间的兼容性,并附加的确保与安全策略或者许可协定的适应性。
[402]一旦成功完成启动前分析,本地机器10建立与远程机器30”的应用流会话,提供对该多个应用文件的访问。应用流会话可为任何连接,通过该连接本地机器10可请求并接收该多个应用文件中的文件。在获取该多个应用文件中的所有文件之前,应用流会话的建立可以启动本地机器10执行在该多个应用文件中的第一应用文件。当连续的在该多个应用文件中获取附加文件时,本地机器10可开始应用程序的执行。可替代的,当从档案文件中提取第二应用文件时,本地机器10可在档案文件中获取该多个应用文件并执行第一被提取的应用文件。
实例4
[403]在一个实施例中,本地机器10上的应用流客户端552从远程机器30获取多个应用文件。应用流客户端包括流服务554、隔离环境556以及文件系统过滤器驱动器564。流服务554建立与远程机器30的应用流会话,用于请求和获取该多个应用文件。流服务554在隔离环境556中执行应用文件。通过拦截来自于执行应用文件的请求并将该请求重定向到隔离环境556中,文件系统过滤器驱动器564启用在隔离环境556中执行应用文件。
[404]在该实施例的一个实例中,流服务554获取包括该多个应用文件的档案文件,该该多个应用文件包括应用程序。流服务554从档案文件中提取来自于该多个应用文件的第一应用文件。第一应用文件可为可执行文件。流服务554可在隔离环境556中执行第一应用文件。第一应用文件的执行可开始应用程序的执行。
[405]在另一个实施例中,在隔离环境556内执行的第一应用文件从本地机器10请求该多个应用文件的列举。文件系统过滤器驱动器564拦截用于列举的请求并将该请求重定向到流服务554。在流服务554获取该多个应用文件的实施例中,流服务554可产生该多个应用文件的列举。在实施例中,此处流服务554获取包括该多个应用文件的档案文件,流服务554响应于包括在被获取的档案文件中的列举而产生该多个应用文件的列举。在其他实施例中,当该多个应用文件中的至少一个应用文件驻留在远程机器30上,并且没有通过流服务554获取到本地机器10时,流服务554只获取该多个应用文件的列举。在这些实施例中,响应于获取到的列举,流服务554可产生该多个应用文件的列举。在这些实施例的一个实例中,虽然只有列举驻留在本地机器10上,流服务554向第一应用文件指示该多个应用文件驻留在本地机器10上。
实例5
[406]在一个实施例中,在隔离环境556中执行的第一应用文件从本地机器10请求访问通过该多个应用文件的列举被识别的文件。如果被请求的文件驻留在第一应用文件可访问的隔离环境556中的用户范围内,则第一应用文件访问被请求的文件。
[407]如果被请求的文件没有驻留在用户范围或隔离环境556内,则文件系统过滤器驱动器564拦截该请求并将该请求重定向到流服务554。如果被请求的文件为包括该多个应用文件的档案文件内的文件,则流服务554提取被请求的文件并将该被请求的文件存储在本地机器10上。流服务554可在隔离环境556中存储文件。当文件被存储在隔离环境556中时,满足对于文件的请求。
[408]如果被请求的文件没有驻留在隔离环境556或包括该多个应用文件的档案文件中,则流服务554从远程机器30请求文件。流服务554通过应用流会话可从远程机器30接收文件。流服务554在隔离环境556中存储接收的文件。当文件被存储在隔离环境556中时,满足对于文件的请求。
[409]在此实施例的一个实例中,第二应用文件在隔离环境556中的第二用户范围内执行。第二应用文件请求访问初始被第一应用文件请求的文件。如果被请求文件的副本没有驻留在第二用户范围内,使用存储在隔离环境556中的被请求文件的副本满足对于应用文件的请求。
实例6
[410]在一个实施例中,本地机器10从远程机器30接收应用程序执行选择的方法的标识以及远程机器30’的识别,该远程机器30’提供对多个应用文件的访问,该多个应用文件包括应用程序。本地机器10成功完成本地机器10的启动前分析。本地机器10从远程机器30接收许可,该许可授权应用程序的执行。在此实施例的一个实例中,许可需要本地机器10向会话管理服务器562传输心跳消息以维持执行应用程序的授权。心跳消息可包括指示应用程序开始执行的消息,应用程序执行终止的消息,以及整个应用程序执行过程中以周期性为基础的被发送的消息。心跳消息也可包括关于本地机器10状态的消息,例如本地机器10何时连接到网络或者本地机器10何时终止与网络的连接。在此实施例的另一个实例中,许可指定事先确定的时间周期,在此时间周期内本地机器10已被授权执行应用程序。
[411]本地机器10建立与远程机器30’的应用流会话,并在该多个应用文件中获取至少一个应用文件。在至少一个应用文件执行期间,在实施例中此处被接收的许可需要心跳消息的传输,本地机器10向会话管理服务器562传输心跳消息以维持至少一个应用文件的执行的授权。
实例7
[412]在一个实施例中,本地机器10接收执行应用程序的选择的方法的标识以及远程机器30’的识别,该远程机器提供对包括应用程序的多个应用文件的访问。本地机器10成功完成本地机器10的启动前分析。本地机器10接收指定预定时间周期的许可,在此时间周期内本地机器10已授权执行应用程序。
[413]本地机器10建立与远程机器30’的应用流会话,并在该多个应用文件中获取至少一个应用文件。在此实施例的一个实例中,本地机器获取该多个应用文件的子集,当本地机器10没有被连接到网络时,该子集包括执行应用程序必须的每个文件。本地机器10在本地机器10的高速缓存中存储该子集。
[414]在预先确定的时间周期的时间点,本地机器10从网络上断开,并从本地机器10的用户接收访问应用程序的请求。在此实施例的一个实例中,本地机器10是例如膝上型电脑的设备,并且本地机器10的用户处于禁止网络连接的环境,例如飞机。一旦从用户接收请求,本地机器10可从高速缓存中获取来自该多个应用文件的应用文件,并执行该应用程序。
实例8
[415]在另一个实施例中,本地机器10接收执行应用程序的选择的方法的标识,以及远程机器30’的标识,该远程机器提供对包括应用程序的多个应用文件的访问。本地机器10可接收驻留在本地机器10上的第一客户端代理的标识以执行该多个应用文件的获取,例如应用流客户端。
[416]在此实施例的一个实例中,本地机器10不能成功完成自身的启动前分析。本地机器10可能缺少与应用程序的需求兼容所需的特征,例如特定的设备驱动器或操作系统。本地机器10可以缺少服从安全策略必需的特征,例如,用于授权访问专用网络或者在特定激活目录中的成员资格。本地机器10可能是与应用程序的需要不兼容的机器类型,例如个人数字助理,其试图访问计算密集型应用程序,或者在亭子(kiosk)中的公共计算机,其试图执行由专用网络上的远程计算机寄载的安全应用。
[417]响应于确定本地机器10缺少访问应用程序必需的至少一个特征,本地机器10做出不通过应用程序流获取该多个应用文件的决定。本地机器10执行驻留在本地机器10上的第二客户端代理,而不是执行被识别的第一客户端代理。在此实施例的一个实例中,在不能成功完成启动前分析的事件中,本地机器10接收第二客户端代理的标识以执行。本地机器10请求在远程机器30”上的应用程序的执行。第二客户端代理接收应用输出数据,该应用输出数据由远程机器30”上的应用程序的执行产生。第二客户端代理在本地机器10上显示应用输出数据。
实例9
[418]在一个实施例中,网络管理员为本地机器10的用户提供对应用程序的访问。管理员在远程机器30’上执行应用以产生包括应用程序的多个应用文件。应用可包括图形用户界面。管理员可使用图形用户界面以识别应用程序和与应用程序相关联的安装程序,定义策略,以及指明关于被提供的访问的类型的特征,上述策略将被应用于授权对应用程序访问中,上述特征包括由本地机器10满足的试图访问或执行应用程序的必需条件。管理员可以识别安装整个应用程序或者应用程序的部分的安装程序,诸如更新或者补丁。
[419]在此实施例的一个实例中,远程机器30包括包机制530。包机制530在远程机器30上的隔离环境中执行安装程序。安装程序的执行导致向隔离环境532中安装至少一个应用文件,该应用文件与应用程序相关联。远程机器30可包括文件系统过滤器驱动器534,该文件系统过滤器驱动器534通过拦截安装程序的请求保证向隔离环境532中安装应用文件,从而在本地机器10上安装应用文件,并将该请求重定向到隔离环境532中。包机制530可使用文件系统过滤器驱动器534以保持安装到隔离环境532中的每个应用文件的记录。
[420]安装程序可向隔离环境532中安装多个应用文件。包机制530产生包括应用文件列举的文件,该应用文件在多个应用文件中。该文件可包括与多个应用文件相关联的信息,例如多个应用文件包括的应用程序的类型,应用程序的版本,与应用程序相关联的执行必需条件,以及策略需求,例如特定应用程序必需的执行方法。包机制530在远程机器30’上存储多个应用文件和文件。
[421]在一个实施例中,网络管理员识别包括现有的应用程序的更新版本的应用程序,或者在包括应用程序的多个应用文件中的应用文件。
C.用于加速客户端-服务器通信的系统和方法
[422]本发明的一个实施例指向用于加速客户端-服务器通信的系统和方法。这些系统和方法可被单独或一起使用,并且可与以上讨论的用于传送计算环境的任何系统和方法结合使用。更具体地,将讨论四个一般种类的加速技术。
[423]1.动态生成对象的高速缓存:在一些实施例中,通过设备1250在数据通信网络中执行高速缓存动态生成对象来加速客户端-服务器的通信。
[424]2.连接池:在一些实施例中,通过设备1250执行连接池技术加速客户端-服务器的通信。
[425]3.集成高速缓存:在另一个实施例中,通过设备1250执行与多个加速技术相集成的高速缓存来加速客户端-服务器的通信。
[426]4.客户端加速:在又一个实施例中,通过客户端10上执行的程序执行一个或多个加速技术来加速客户端-服务器的通信。
1.高速缓存动态生成对象
[427]就像此处更详细描述的,在一个实施例中,设备1250可在带有一个或多个处理任务的操作系统的内核级别集成高速缓存功能,这些处理任务包括但不限于解码、解压缩、或验证和/或授权。这样的实例结构此处结合图27描述,但其它实例可用于实现此处描述的操作。
[428]图27示出了设备1250的实例结构3200。如上所述的,结构3200仅仅通过示出的方式被提供,并不试图被限制。如图2所示的,实例结构3200包括硬件层3206和分为用户空间3202和内核空间3204的软件层。
[429]硬件层3206提供硬件元件,在内核空间3204内的程序和服务在该硬件元件上被执行。硬件层3206也提供结构和元件,这使得在内核空间3204和用户空间3202内的程序和服务关于设备1250既在内又在外通信数据。如图27所示,硬件层3206包括用于执行软件程序和服务的处理单元3262,用于存储软件和数据的存储器3264,用于通过网络传输和接收数据的网络端口3266,以及用于执行涉及数据通过网络被传输和接收的加密套接字协议层处理功能的加密处理器3260。在一些实施例中,中央处理单元3262可在单独的处理器中执行加密处理器3260的功能。另外,硬件层3206可包括用于每个处理单元3262和加密处理器3260的多处理器。虽然示出的设备1250的硬件层3206通常带有加密处理器3260,但是处理器3260可为执行涉及任何加密协议的功能的处理器,例如加密套接字协议层(SSL)或者传输层安全(TLS)协议。在一些实施例中,处理器3260可为通用处理器(GPP),并且在进一步的实施例中,可为用于执行任何安全相关协议处理的可执行指令。
[430]虽然在图27中示出的设备1250的硬件层带有特定元件,但是设备1250的硬件部分或部件可包括任何类型和形式的元件、硬件或软件,任何类型或形式的计算设备,例如此处结合图1C和1D讨论和示出的计算设备135。在一些实施例中,设备1250可包括服务器、网关、路由器、开关、桥接器或其它类型的计算或网络设备,并且拥有与此相关的任何硬件和/或软件元件。
[431]设备1250的操作系统分配、管理或另外分离可用的系统存储器到内核空间3204和用户空间3204。在示例的软件结构3200中,操作系统可为任何类型和/或形式的Unix操作系统。同样的,设备1250可正运行任何操作系统,例如
Figure A200780021971D0104193445QIETU
Windows操作系统的任何版本,Unix和Linux操作系统的不同版本,用于Macintosh计算机的Mac 
Figure A200780021971D0104193450QIETU
的任何版本,任何被嵌入的操作系统,任何网络操作系统,任何实时操作系统,任何开放源操作系统,任何专有操作系统,用于移动计算设备或网络设备的任何操作系统,或者可以在设备1250上运行并执行此处所述操作的任何其它操作系统。
[432]预定内核空间3204用于运行内核3230,内核3230包括任何设备驱动器,内核扩展或其他内核相关软件。就像本领域技术人员所知的,内核3230是操作系统的核心,并提供对资源以及设备1250的相关硬件元件的访问、控制和管理。根据实施例,内核空间3204也包括与高速缓存管理器3232协同工作的许多的网络服务或处理。有时也称为集成高速缓存,其益处此处将进一步详细描述。另外,内核3230的实施例将依赖于通过设备1250安装、配置或其他使用的操作系统的实施例。
[433]在一个实施例中,设备1250包括一个网络堆栈3267,例如基于TCP/IP的堆栈,用于与客户端10和/或服务器30通信。在一个实施例中,使用网络堆栈3267与例如网络40的第一网络以及第二网络40通信。在一些实施例中,设备1250终止第一传输层连接,例如客户端10的TCP连接,并建立到服务器30的第二传输层连接,客户端10使用该第二传输层连接,例如,在设备1250和服务器30终止第二传输层连接。可通过单独的网络堆栈3267建立第一和第二传输层连接。在其他实施例中,设备1250可包括多个网络堆栈,例如3267或3267’,并且在一个网络堆栈3267可建立或终止第一传输层连接,在第二网络堆栈3267’上可建立或者终止第二传输层连接。例如,一个网络堆栈可用于在第一网络上接收和传输网络包,并且另一个网络堆栈用于在第二网络上接收和传输网络包。在一个实施例中,网络堆栈3267包括用于排队一个或多个网络包的缓冲器3243,其中网络包由设备1250传输。
[434]如图27所示,内核空间3204包括高速缓存管理器3232、高速层2-7集成包引擎3240、加密引擎3234、策略引擎3236以及多协议压缩逻辑3238。在内核空间3204或内核模式而不是用户空间3202中运行这些部件或处理3232、3240、3234、3236和3238提高这些部件中的每个单独的和结合的性能。内核操作意味着这些部件或处理3232、3240、3234、3236和3238在设备1250的操作系统的核地址空间中运行。例如,在内核模式中运行加密引擎3234通过移动加密和解密操作到内核可改进加密性能,从而可减少在存储空间或在内核模式中的内核线程与存储空间或在用户模式的线程的传输的数量。例如,在内核模式获得的数据不需要传输或拷贝到运行在用户模式的处理或线程,例如从内核级数据结构到用户级数据结构。在另一个方面,也可减少内核模式和用户模式之间的上下文开关的数量。另外,在任何部件或处理3232、3240、3235、3236和3238间的同步和通信在内核空间3204中可被执行的更有效率。
[435]在一些实施例中,部件3232、3240、3234、3236和3238的任何部分可在内核空间3204中运行或操作,而这些部件或处理3232、3240、3235、3236和3238的其他部分可在用户空间3202中运行或操作。在一个实施例中,使用内核级数据结构来提供对一个或多个网络包的任何部分的访问,例如,网络包包括来自客户端10的请求或者来自服务器30的响应。在一些实施例中,由包引擎3240通过传输层驱动器接口或到网络堆栈3267的过滤器获得内核级数据结构。内核级数据结构可包括任何接口和/或通过与网络堆栈3257相关的内核空间3204可访问的数据,由网络堆栈3267接收或传输的网络话务量或包。在其他实施例中,任何部件或处理3232、3240、3234、3236和3238可使用内核级数据结构来执行部件或处理的需要的操作。在一个实例中,当使用内核级数据结构时,部件3232、3240、3234、3236和3238在内核模式3204中运行,而在另一个实施例中,当使用内核级数据结构时,部件3232、3240、3234、3236和3238在用户模式中运行。在一些实施例中,内核级数据结构可被拷贝或传输给第二内核级数据结构,或任何需要的用户级数据结构。
[436]高速缓存管理器3232可包括软件、硬件或软件和硬件的任意组合,以提供对任何类型和形式的内容的高速缓存访问、控制和管理,例如对象或由源服务器30提供服务的动态产生的对象。由高速缓存管理器3232处理和存储的数据、对象或内容可包括任何格式的数据,例如标记语言,或通过任何协议通信。在一些实施例中,高速缓冲管理器3232复制存储在其它地方的原始数据或先前被计算、产生或传输的数据,其中相对于读高速缓存元件,原始数据可能需要更长的访问时间以便取得、计算或以别的方式获得。一旦数据被存储在高速缓存存储元件中,将来的使用可通过访问高速缓存的副本而非再取回或再计算的原始数据而获得,因而减少了访问时间。在一些实施例中,高速缓存存储元件奈特(nat)包括设备1250的存储器3264中的数据对象。在其它实施例中,高速缓存存储元件可包括有比存储器3264更快的存储时间的存储器。在另一个实施例中,高速缓存存储元件可以包括设备1250的任何类型和形式的存储元件,诸如硬盘的部分。在一些实施例中,处理单元3262可提供被高速缓存管理器3232使用的高速缓存存储器。在又一个实施例中,高速缓存管理器3232可使用存储器、存储区或处理单元的任何部分和组合来高速缓存数据、对象或其它内容。
[437]另外,高速缓存管理器3233包括用于执行此处描述的技术的任何实施例的任何逻辑、功能、规则或操作。例如,基于无效时间周期的终止,或者从客户端10或服务器30接收无效命令,高速缓存管理器3232包括无效对象的逻辑或功能。在一些实施例中,高速缓存管理器3232可作为在内核空间3204中执行的程序、服务、处理或任务来操作,并且在其它实施例中在用户空间3202中操作。在一个实施例中,当高速缓存管理器3232的第一部分在用户空间3202内执行时,第二部分在内核空间3204内执行。在一些实施例中,高速缓存管理器3232可包括任何形式的通用处理器(GPP),或者任何其它形式的集成电路,例如现场可编程门阵列(FPGA),可编程逻辑电路(PLD),或者专用集成电路(ASIC)。
[438]策略引擎3236可包括,例如,智能统计引擎或其它可编程应用。在一个实施例中,策略引擎3236提供配置功能以允许用户识别、指定、定义或配置高速缓存策略。策略引擎3236,在一些实施例中,也访问存储器以支持数据结构,例如备份表或hash表,以启用用户选择的高速缓存策略决定。在其它实施例中,除了对安全、网络话务量、网络访问、压缩或其它任何由设备1250执行的功能或操作的访问、控制和管理之外,策略引擎3236可包括任何逻辑、规则、功能或操作以决定和提供对设备1250所高速缓存的对象、数据、或内容的访问、控制和管理。在一些实施例中,策略引擎3236可与策略引擎406的功能相集成。在一个实施例中,策略引擎3236可基于收集代理404提供的信息,确定高速缓存的策略决定。在一些实施例中,策略引擎3236可基于应用执行的类型,确定高速缓存策略决定。在一个实施例中,策略引擎可基于应用是否被流式传输到客户端10,确定高速缓存的策略决定。特定高速缓存策略的其它实施例此处进一步描述。
[439]加密引擎3234包括用于控制任何安全相关协议处理,例如SSL或TLS,或其相关的任何功能的任何逻辑、商业规则、功能或操作。例如,加密引擎3234加密并解密通过设备1250通信的网络包,或其任何部分。加密引擎3234也可代表客户端10、服务器30或设备1250安装或建立SSL或TLS连接。同样的,加密引擎3234提供SSL处理的卸载和加速。在一个实施例中,加密引擎3234使用隧道协议来提供在客户端10和服务器30间的虚拟专用网络。在一些实施例中,加密引擎3234与加密处理器3260通信。在其它实施例中,加密引擎3234包括运行在加密处理器3260上的可执行指令。
[440]多协议压缩引擎3238包括用于压缩一个或多个网络包协议(例如被设备1250的网络堆栈3267使用的任何协议)的任何逻辑、商业规则、功能或操作。在一个实施例中,多协议压缩引擎3238双向压缩在客户端10和服务器30间任何基于TCP/IP的协议,包括消息应用编程接口(MAPI)(电子邮件,email)、文件传输协议(FTP)、超文本传输协议(HTTP)、通用Internet文件系统(CIFS)协议(文件传输)、独立计算结构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议以及IP上语音(VoIP)协议。在其它实施例中,多协议压缩引擎3238提供基于超文本标记语言(HTML)的协议的压缩,并且在一些实施例中,提供任何标记语言的压缩,例如可扩展标记语言(XML)。在一个实施例中,多协议压缩引擎3238提供任何高性能协议的压缩,例如为设备1250设计的用于设备1250通信的任何协议。在另一个实施例中,多协议压缩引擎3238使用修改的传输控制协议来压缩任何载荷或任何通信,例如事务TCP(T/TCP)、带有选择确认的TCP(TCP-SACK)、带有大窗口的TCP(TCP-LW)、例如TCP-Vegas协议的拥塞预报协议以及TCP欺骗协议。
[441]同样的,多协议压缩引擎3238通过桌面客户端,例如Micosoft Outlook和非web瘦客户端,例如由通用企业应用像Oracle,SAP和Siebel启动的任何客户端,甚至移动客户端(例如便携式计算机),来加速用户访问应用的性能。在一些实施例中,多协议压缩引擎3238通过在内核模式3204内部执行并与访问网络堆栈3267的包处理引擎3240集成,可以压缩TCP/IP协议携带的任何协议,例如任何应用层协议。
[442]高速层2-7集成包引擎3240,通常也称为包处理引擎,或包引擎,通过网络端口3266负责内核级包的处理的管理,该包由设备1250接收和传输。高速层2-7集成包引擎3240可包括在处理期间用于排队一个或多个网络包的缓冲器,例如用于网络包的接收或者网络包的传输。另外,高速层2-7集成包引擎3240通过网络端口3266与一个或多个网络堆栈3267通信以发送和接收网络包。高速层2-7集成包引擎3240与加密引擎3234、高速缓存管理器3232、策略引擎3236和多协议压缩逻辑3238协同工作。更具体地,配置加密引擎3234以执行包的SSL处理,配置策略引擎3236以执行涉及话务量管理的功能,例如请求级内容切换以及请求级高速缓冲重定向,并配置多协议压缩逻辑3238以执行涉及数据压缩和解压缩的功能。
[443]高速层2-7集成包引擎240包括包处理定时器3243。在一个实施例中,包处理定时器3242提供一个或多个时间间隔以触发输入处理,例如,接收或者输出(即传输)网络包。在一些实施例中,高速层2-7集成包引擎3240响应于定时器3242处理网络包。包处理定时器3242向包引擎3240提供任何类型和形式的信号以通知、触发或传输时间相关事件、间隔或发生。在许多实施例中,包处理定时器3242以毫秒级操作,例如100ms、50ms、或25ms。例如,在一些实例中,包处理定时器3242提供时间间隔或者其它使得由高速层2-7集成包引擎3240以10ms时间间隔所处理的网络包,而在其它实施例中,以5ms时间间隔,并且在进一步的实施例中,短到3、2或1ms时间间隔。高速层2-7集成包引擎3240在操作期间可与加密引擎3234、高速缓存管理器3232、策略引擎3236以及多协议压缩引擎3238连接、集成或通信。同样的,响应于包处理定时器3242和/或包引擎3240,可执行加密引擎3234、高速缓存管理器3232、策略引擎3236以及多协议压缩引擎3238的任何逻辑、功能或操作。因此,在由包处理定时器3242提供的时间间隔粒度,可执行加密引擎3234、高速缓存管理器3232、策略引擎3236以及多协议压缩引擎3238的任何逻辑、功能或操作,例如,时间间隔少于或等于10ms。例如,在一个实施例中,响应于高速层2-7集成包引擎240和/或包处理定时器3242,高速缓存管理器3232可执行任何所高速缓存的对象的无效。在另一个实施例中,高速缓存的对象的终止或无效时间被设定为与包处理定时器3242的时间间隔相同的粒度级,例如每10ms。
[444]与内核空间3204不同,用户空间3202是操作系统的存储区域或部分,被用户模式应用或用户模式运行的程序所使用。用户模式应用不能直接访问内核空间3204和为了存储内核服务而使用用户服务调用。如图27所示,设备1250的用户空间3202包括图形用户界面(GUI)3210、命令行接口(CLI)3212、壳服务(shell service)3214、健康监控程序3216以及守护(daemon)服务3218。GUI 210和CLI 3212提供方法,通过该方法系统管理员或其他用户可与设备1250的操作作用并控制该设备1250的操作,例如通过设备1250的操作系统,或者是用户空间3202或者内核空间3204。GUI 3210可为任何类型和形式的图形用户界面,并且可通过文本、图形由任意类型的程序或应用呈现,例如浏览器。CLI 3212可为任何类型和形式的命令行或基于文本的接口,例如通过操作系统提供的命令行。例如,CLI 3212可包括壳,该壳是启用用户与操作系统相互作用的工具。在一些实施例中,可通过bash、csh、tcsh或者ksh类型的壳提供CLI 3212。,壳服务3214包括程序,服务,任务,处理或可执行指令以支持由用户通过GUI 3210和/或CLI 3212与设备1250或操作系统交互。
[445]使用健康监控程序3216监控、检查、报告并确保网络系统运行正常,用户正通过网络接收请求的内容。健康监控程序3216包括一个或多个程序、服务、任务、处理或可执行指令,为监控设备1250的任何行为提供逻辑、规则、功能或操作。在一些实施例中,健康监控程序3216拦截并检查通过设备1250传递的任何网络话务量。在其他实施例中,健康监控程序3216通过任何合适的方法和/或机制与一个或多个下述设备连接:加密引擎3234,高速缓存管理器3232,策略引擎3236,多协议压缩逻辑3238,包引擎3240,守护服务3218以及壳服务3214。同样的,健康监控程序3216可调用任何应用编程接口(API)以确定设备1250的任何部分的状态、情况或健康。例如,健康监控程序3216可基于周期性的查验或发送状态查询以检查程序、处理、服务是否被激活并当前正在运行。在另一个实施例中,健康监控程序3216可检查由任何程序、处理、服务或任务提供的任何状态、错误或历史日志以确定设备1250任何部分的任何条件、状态或错误。
[446]守护服务3218是连续的或在背景中运行的程序,并且操纵该程序控制设备1250接收的周期性服务请求。在一些实施例中,守护服务向其他程序或处理(例如合适的另一个守护服务3218)转发请求。对于本领域技术人员所公知的,守护服务3218可无人监护的运行,以执行连续的或周期性的系统范围程序,例如网络控制,或者执行任何需要的任务。在一些实施例中,一个或多个服务3218运行在用户空间3202中,而在其他实施例中,一个或多个守护服务3218运行在内核空间。
[447]动态内容,例如一个或多个动态产生的对象,可通过服务器产生,称为应用或源服务器30和/或后端数据库,如图1A所描述的,该数据库处理来自一个或多个本地或远程的客户端10的对象请求。当这些应用或数据库处理数据时,包括涉及到输入从客户端接收的数据、被这些数据库或应用服务的响应对象可改变。由这些应用或数据库在源服务器中产生的在前的对象不再新鲜并且因此不再被高速缓存存储。例如,假定相同输入集,第一实例的动态产生对象与第二实例的动态产生对象不同。在另一个实例中,使用不同的输入集动态产生相同的对象,使得对象的第一实例被产生不同于对象的第二实例。
[448]为了获得提高的网络性能,设计并配置设备1250以通过以下详细描述的各种方法解决问题,该问题出现在高速缓存动态产生内容中。在此处描述的一些实施例中,设备1250包括一个或多个技术,这些技术用于使得存储在高速缓存中的动态产生内容的无效更加有效率和有效果。另外,设备可包括用于执行控制和用于突发访问的高速缓存的技术。高速缓存存储器典型的存储每个对于对象的请求的响应,只要这种请求没有标记为不可高速缓存的。如此处描述的,动态产生内容的有效率的高速缓存需要可使得在高速缓存中的对象及时无效的技术,该对象在源服务器上已经经历了改变。及时无效允许高速缓存避免服务失时效内容——带有动态产生内容的特定相关的任务,特别是内容的改变不规则发生的地方。以下提出的是一些保证动态产生内容的及时无效的技术。
a.集成功能
[449]在一个方面,动态产生对象的高速缓存涉及到高速缓存管理器3232,策略引擎3236,加密引擎3234,和/或多协议压缩引擎3238的集成功能、逻辑或操作的技术,上述多协议压缩引擎3238带有响应于包处理定时器3242的高速层2-7集成包引擎3240的包处理操作。例如,可在用于包处理操作的包处理定时器3242的时间间隔内执行高速缓存管理器3232的操作,例如在接收或传输网络包之上。就像下述将详细描述的,在一个实施例中,通过与包处理操作集成和/或使用包处理定时器,高速缓存管理器3232可高速缓存带有终止时间降至非常小的时间间隔的对象。在其他实施例中,响应于包处理定时器3242的高速缓存管理器3232也可接收无效命令从而在高速缓冲对象的非常短的时间周期内无效对象。
[450]图28A描述的方法3300示出了技术的一个实施例,该技术用于请求高速缓存管理器3232、策略引擎3236、加密引擎3234和/或多协议压缩引擎3238以执行在处理期间或与时间间隔相关联的操作,用于通过高速层2-7集成包引擎或包处理引擎3240处理网络包。总的来说,在方法3300的步骤3310,设备1250接收网络包或被请求传输网络包。在步骤3315,设备31250请求包处理引擎3240响应于包处理定时器3242处理网络包。作为包处理操作的一部分,或与之关联,在步骤3320,包处理引擎240请求高速缓存管理器3232、策略引擎3236、加密引擎234,和/或多协议压缩引擎3238在高速缓存的对象上执行操作。在步骤3325,高速缓存管理器3232、策略引擎3236、加密引擎3234和/或多协议压缩引擎3238执行被请求的操作,该操作可包括此处描述技术的任何一个或者组合。在一个实施例中,高速缓存管理器3232确定高速缓存的对象的无效,并标记高速缓存的对象无效。在一些实施例中,高速缓存管理器3232响应于包处理引擎3240的请求来清除无效对象。当高速缓存管理器3232响应于包处理定时器3242正执行这些操作时,对象的无效可发生在毫秒级的时间段内,并带有拥有时间间隔量级中终止的对象,该时间间隔终止由包处理定时器3242提供,例如10ms。
[451]在方法3300进一步的细节中,在步骤3310,设备1250接收一个或多个网络包,和/或传输一个或多个网络包。在一些实施例中,设备1250请求通过网络40或网络40’传输一个或多个网络包。在另一个实施例中,设备1250在一个端口3266接收网络包并在相同的端口3266或不同的端口3266’传输网络包。在一些实施例中,设备1250的包引擎3240传输或请求传输一个或多个网络包。在一个实施例中,设备1250在第一网络40接收或传输包,而在另一个实施例中,设备1250在第二个网络40’上接收或传输包。在其它实施例中,设备1250在相同的网络40中接收和传输包。在一些实施例中,设备1250向一个或多个客户端10接收和/或传输网络包。在其它实施例中,设备1250向一个或多个服务器30接收和/或传输网络包。
[452]在步骤3315,一旦在设备1250的网络端口3266接收到网络包,或者一旦请求从设备1250传输网络包,或者一旦一个或多个网络包的接收和/或传输的任何组合,设备1250可请求或触发包处理引擎3240的包处理操作。在一些实施例中,包处理引擎3240的包处理操作由包处理定时器3242提供的信号触发。在一个实施例中,包处理定时器3242可提供涉及到一个或多个网路包的接收和/或传输的中断驱动或者事件驱动定时器功能。在一些实施例中,通过由设备1250接收和/或传输的网络包的速率,或者通过处理每个包或一批包的速率,驱动包处理定时器3242。同样的,在一个或多个包处理操作的每个设置之后,包处理定时器3242可被触发和复位。在另一个实施例中,包处理定时器3242提供时间间隔,相同或者不同的时间间隔,以触发、唤醒或信号通知包处理引擎3240以执行功能或操作,例如控制被接收的包或者传输被提交的包。如上结合图27中的设备1250所讨论的,包处理定时器3242可以毫秒级操作,例如以时间间隔10ms或更少引发包处理操作的时间间隔或触发。包处理定时器的时间粒度功能可以不同的方式提供,并用于包处理引擎3240的包处理操作的操作中。
[453]在方法3300的步骤3320,包处理引擎3240请求一个或多个高速缓存管理器3232、策略引擎3236、加密引擎3234和/或多协议压缩引擎3238以执行操作。在一个实施例中,包处理引擎3240或包处理定时器3242产生一个或者多个信号向一个或者多个高速缓存管理器3232、策略引擎3236、加密引擎3234和/或多协议压缩引擎3238。在网络包或一个或多个网络包的包处理操作之前、之中或之后的任何时间点,包处理引擎3240可执行请求或发信号通知操作。在一个实施例中,一旦包处理定时器3242触发或包处理定时器3242提供时间间隔的终止,并且在网络包上执行包处理操作之前,包处理引擎240做出请求。在另一个实施例中,在执行一个或多个网络包操作的过程中,包处理引擎3240做出请求。例如,在操作执行过程中,例如在功能调用中,包处理引擎240可向高速缓存管理器3232、策略引擎3236、加密引擎3234和/或多协议压缩引擎238做出应用编程接口(API)调用。在其它实施例中,一旦完成网络包处理操作,包处理引擎3240做出请求。
[454]在步骤3325,通过一个或多个高速缓存管理器3232、策略引擎3236、加密引擎3234和/或多协议压缩引擎3238执行请求操作。在一些实施例中,通过内核3204提供的任何功能或操作可被请求从而被执行,例如通过内核应用编程接口(API)。同样,可结合通过包处理定时器3232的包处理的计时或计时间隔,执行设备1250的任何功能。在一些实施例中,被请求的操作可同步并结合包处理引擎3240的包处理操作执行。例如,一旦完成被请求的操作,或者从被请求的操作获得响应,包处理操作等待并持续。在其它实施例中,被请求的操作与包处理操作异步执行。例如,包处理引擎3240发送请求以执行操作但不阻塞或等待以接收来自该操作的响应。如将进一步结合图28B的方法3350进一步详细描述的,包处理引擎3240可请求高速缓存3232以执行任何高速缓存管理功能,例如检查对象的终止或无效,标记对象为无效,或清除无效或终止的对象。
[455]在一些实施例中,在步骤3320包处理引擎3240发送多个请求,例如第一请求到高速缓存管理器232,并且第二请求到加密引擎3234。在其它实施例中,包处理引擎3240,在步骤3320,发送单个请求,该单个请求包括将被设备1250分发的多个请求,例如通过内核3230到设备1250的指定部分。在一个实施例中,请求持续在彼此间传送。在另一个实施例中,请求可依赖于在前请求的状态、结果、成功或完成。例如,到策略引擎3236的第一请求可被用于确定策略,该策略用于处理来自另一个设备或与网络包相关联的用户的网络包。基于策略引擎3236的策略,依赖于第一请求的结果,可获得或不获得到高速缓存的第二请求。高速缓存管理器3232、策略引擎3236、加密引擎3234和/或多协议压缩引擎3238与包处理引擎3240一起集成在设备1250的内核空间204中,就像此处所描述的,存在设备1250的各种操作,这些操作通过包处理操作触发和与包处理操作集成。
b.无效粒度
[456]在另一个方面,动态产生对象的高速缓存涉及和包括配置被高速缓存存储的对象的终止时间到合适的粒度时间间隔的能力,例如由包处理定时器提供的时间间隔的粒度。该特征称为“无效粒度”。同样,在一个实施例中,无效时间降至非常小的时间间隔的对象可被高速缓存。在其他实施例中,响应于包处理定时器的高速缓存管理器也可接收无效命令从而在高速缓存对象的非常短的时间周期内无效对象。通过在终止时间内提供该微小的粒度,该高速缓存可高速缓存并保存频繁改变的对象,有时在一秒内甚至几次。在一个实施例中设备使用的一项技术可影响包处理定时器,该技术可以毫秒级的时间增量操作,允许无效或终止粒度降至10ms或更少。传统的高速缓存,与之对比,通常不设置少于一秒的终止或无效粒度。
[457]现在看图28B,描述方法3350的实施例,用于响应于包处理定时器3242和/或包处理引擎3240而无效或终止高速缓存的对象。同样,在一些实施例中,高速缓存的对象可以毫秒级被无效或终止,例如10ms或更少。总的来说,在方法3350的步骤3355,响应于包处理定时器3242,高速缓存管理器3232接收信号或者请求从而通过包处理引擎3240执行操作。在步骤3360,高速缓存管理器3232确定高速缓存的对象(例如动态产生对象)是否无效或者被终止。在步骤3365,如果对象是无效的,高速缓存管理器3232标识该对象为无效,并且在步骤3370,从高速缓存管理器3232清除该无效的对象。
[458]在步骤3355进一步的细节中,在一些实施例中,在网络包处理期间的任何时间点,高速缓存管理器3232可被发送信号或者被请求以执行高速缓存涉及的操作。在一个实施例中,在步骤3355,在由设备1250接收或传输的网络包处理之前,高速缓存管理器3232接收操作请求。在另一个实施例中,一旦完成网络包的处理,高速缓存管理器3232接收操作请求。例如,包处理引擎3240完成网络包处理,并且在等待定时器3242的另一个时间间隔之前,或者在处理下一个包之前,请求高速缓存以执行操作。在其他实施例中,在包处理操作期间,包处理引擎3240向高速缓存管理器3232传送操作请求。在另一个实施例中,高速缓存管理器3232例如从包处理引擎3240或者从包处理定时器3242接收信号,以触发高速缓存管理器3232来执行操作。在一些实施例中,信号指示高速缓存对象无效或者指示终止高速缓存的对象的终止。
[459]在一些实施例中,高速缓存管理器3232可从高速缓存管理器3232的外部实体接收请求,从而执行高速缓存操作,例如请求对象无效,该对象被服务器30传送,并被包处理引擎3240处理。在一个实施例中,高速缓存管理器3232可在10ms或更少时间之内接收高速缓存对象的无效请求,而在另一个实施例中,短到5ms、2ms或1ms。在其他实施例中,高速缓存管理器3232可响应于高速缓存管理器3232的操作或功能以执行高速缓存操作,例如在任何高速缓存命令的处理期间,定时器的终止使得对象被无效。在其他实施例中,高速缓存管理器3232使用设备1250的包处理定时器3242触发高速缓存操作。例如,在可被定时器3242设置的任何时间间隔,定时器2342可触发或发信号给高速缓存以检查高速缓存的对象的无效或终止。在一个实例中,在设置为10ms或更少的时间内,定时器3242可被设置触发或发信号给高速缓存,或者在另一个实施例中,设置短至5ms、2ms或者1ms。在一些实施例中,源服务器30可设置对象的终止时间。在其他实施例中,设备1250或客户端10可设置对象的终止时间。
[460]在步骤3360,高速缓存管理器3232确定存储在高速缓存中的对象的无效或终止。在一些实施例中,在高速缓存中的对象基于定时器的终止被无效。在一个实施例中,高速缓存管理器3232基于定时器的终止可发出关于对象无效的命令。在另一个实施例中,响应于定时器的终止,被存储在高速缓存中的对象通过高速缓存管理器3232被自动无效,例如具有包处理定时器3242的定时器设定。在一些实施例中,响应于包处理定时器3242,高速缓存管理器3232检查用于高速缓存的对象的任何定时器的终止。在一个实施例中,高速缓存管理器3232决定对象定时器已经终止,而在另一个实施例中,高速缓存管理器3232对象定时器还没有终止。在进一步的实施例中,响应于包处理定时器3242的第二触发或第二时间间隔,如果先前被检查的对象定时器已经终止,高速缓存管理器3232将检查第二定时器。
[461]在一些实例中,高速缓存管理器3232解析、拦截、访问、读取或其他方式处理无效命令或者请求以识别在高速缓存中的对象的无效。在一个实施例中,高速缓存管理器3232外的实体向高速缓存管理器3232发送无效命令以无效对象。在另一个实施例中,响应于包处理定时器3242,外部实体可发送无效命令。如果对象是有效的和/或者还没有被无效掉,高速缓存管理器3232响应于请求来无效该对象。在一些实施例中,由高速缓存管理器3232处理的无效请求响应于处理请求的包处理引擎3240的包处理操作,其接着可能也响应于包处理定时器3242。
[462]在步骤3365,高速缓存管理器3232标记对象为无效。高速缓存管理器3232可以以任何合适或者期望的方式标记每一对象为无效。在一个实施例中,通过设置存储对象的标志、属性或者性质,将对象标记为无效。例如,标志可以被设为向高速缓存管理器3232标识对象无效的任何值。在另一个实施例中,通过移动对象到用于存储无效对象的高速缓存的区域或者部分,可以将对象标记为无效。在其他实施例中,高速缓存管理器3232可以通过数据库或者链接列表或者任何类型和形式的数据结构来识别或者跟踪存储对象的无效和/或有效状态。在一些实施例中,高速缓存管理器3232使用一个或者多个对象来识别或者跟踪存储在高速缓存中的一个或者多个对象的有效性或者无效性。在另一个实施例中,通过改变、修改或者变更存储的对象将对象标记为无效,例如删除或者移动对象的部分使得其不可以被使用,或者通过改变或者修正对象的名称。
[463]在步骤3370,高速缓存管理器3232,在一些实施例中,从高速缓存清除这些被标记为无效的对象。在另一个实施例中,一旦请求对象,例如通过客户端10,高速缓存管理器3232从高速缓存清除无效对象。在一些实施例中,高速缓存管理器3232使用在对象的无效或终止之后接收的对象的更新的副本或版本改写无效对象。在另一个实施例中,高速缓存管理器3232通过存储另一个到高速缓存的相同部分来重新使用被无效对象占用的高速缓冲存储器。在又一个实施例中,高速缓存管理器3232不清除被标记为无效的对象,而是保持存储在存储器或者高速缓存存储部件中的对象。
[464]尽管响应于包处理定时器和/或结合包处理操作来提供无效粒度,方法3350描述了无效和高速缓存的对象的清除,但是此处描述的高速缓存的任何操作和高速缓存管理的任何技术,以及设备1250的任何其他操作可在合适的粒度时间间隔内被执行,该粒度时间间隔由包处理定时器提供。在一些实施例中,高速缓存的对象的无效或终止可发生在短至100ms的时间间隔,而在另一个实施例中,短至50ms时间间隔。在一些实施例中,高速缓存的对象的无效或终止可发生在短至25ms的时间间隔,并且在其它实施例中,短至10ms时间间隔。然而在其他实施例中,高速缓存的对象的无效或终止可发生在短至5ms的时间间隔,并且仍然在进一步在实施例中,短至3、2或1ms时间间隔。
[465]如在结合上述图28A和28B的方法3300和3350中所描述的,在耗用非常小的时间增量之后,通过包括无效对象的功能,启用动态产生内容的改进的高速缓存。一些动态内容事实上是可修订的,以用于在非常短的时间周期从高速缓存被存储和被服务。但是,为了成功的高速缓存这样的内容,在对象被无效并从高速缓冲存储器中清除之前,根据一个实施例的方法提供在非常短的时间周期内对象的高速缓存。例如,某些动态产生对象可被高速缓存的时间长为1秒,但是对于经常改变的内容更长的任何时间是经常不可接受的。在一个实施例中,在1秒的几分之一的时间之后,方法包括无效或终止高速缓存的内容。作为例子,如果应用花费100毫秒产生动态响应,则高速缓存可存储并服务该响应持续时间少于或等于100毫秒周期,不伤害数据的新鲜度。由于100毫秒少于产生新对象的时间,在100毫秒周期内将不会产生新的对象。在此期间,设备1250因此可被建立以服务于先前的对象。降至非常小的时间增量的设备1250的这种无效的能力经常对于这样的应用环境非常有用,在该环境中设置数据库处理隔离级别从而允许重复的读或串行的读。
C.无效命令
[466]基于用于内容的预先定义的终止时间,传统的高速缓存技术无效被存储的内容,该技术通常由管理员配置或从服务对象的服务器接收。下面描述的是另一个用于无效对象的技术,该技术为了更有效率的高速缓存动态产生的内容。技术包括在设备1250接收无效命令的能力,该命令实时识别一个或多个先前存储在高速缓存中的对象为无效。例如,无效命令可通过传输到客户端的网络包传送到客户端或通过服务器调用的应用编程接口(API)到设备。这与传统的方法不同,通过传统的方法,在对象被服务时服务器简单的设置包括在对象头部中的高速缓存终止时间。
[467]图29A和29B中更具体地示出了技术。图29A示出了用于维持高速缓存的方法的流程图,例如计算机存储器高速缓存。总的来说并根据步骤3410,先前被源服务器30服务的动态产生对象被存储在高速缓存中。例如,动态产生对象可不被识别为可高速缓存的或者包括任何高速缓存或高速缓存控制信息。在步骤3420,在高速缓存或高速缓存管理器3232接收无效命令。无效命令识别一个或多个先前被服务的对象为无效。在步骤3430,响应无效命令,高速缓存或高速缓存管理器3232标记被识别的对象为无效。
[468]在步骤3410进一步的细节中,高速缓存管理器3232在高速缓冲存储器元件中存储从任何源接收、获得或传递的动态产生对象。在一些实施例中,动态产生对象可从服务器30产生和服务。在其它实施例中,动态产生对象可被客户端10产生和传递。在一些实施例中,设备1250的另一个部分、部件或处理产生对象并在高速缓存中存储该对象。在进一步的实施例中,动态产生对象可由另一个设备1250或网络上的另一个计算设备产生,并传输或传送到设备1250。在一些实施例中,动态产生对象没有识别为可高速缓存的或者识别为不可高速缓存的。在其它实施例中,动态产生对象被识别为可高速缓存的或者在高速缓存的控制下。
[469]在步骤3420,高速缓存管理器3232接收识别对象为无效的无效命令,这样的动态产生对象被存储在高速缓存中。在一个实施例中,无效命令可包括任何类型的命令或指令,指示高速缓存该对象无效或者可能以其他方式失时效。在一些实施例中,无效命令识别对象并且也识别对象无效的时间,以及对象的哪一部分无效。在一个实施例中,高速缓存管理器3232提供应用编程接口(API),该应用编程接口可被源服务器30远程调用。在一些实施例中,高速缓存管理器3232可提供任何类型和形式的协议,用于通过一个或多个网络包接收命令并答复命令。在一个实施例中,高速缓存管理器3232或设备1250提供可扩展标记语言(XML)API接口用于接收和处理无效命令。例如,高速缓存管理器3232可提供web服务接口。在一些实施例中,高速缓存管理器3232通过向源服务器30发送确认、状态或其它响应以答复无效命令。在其它实施例中,高速缓存管理器3232不答复无效命令。在一个实施例中,如果运行在源服务器30的应用执行使被存储的对象失时效的动作,例如通过产生新的或更新版本的对象,则该对象被标记为无效。这可发生在,例如,当新闻编辑对快速发展中的新闻故事做出改变并因此想确定故事的最新版本已经被提供给客户端时。
[470]无效命令可从源服务器通过产生该对象的应用,通过另一个服务器30或者另一个设备1250来发送。在一个实施例中,源服务器30响应于对源服务器30上的动态产生对象的改变,自动向高速缓存3232发送或传送无效命令。无效命令也可通过服务器30或者设备1250外部的管理控制产生。例如,管理控制可为运行在网络上并于设备1250通信的任何类型和形式的程序或应用,例如管理员控制台。另外,客户端10可向设备1250或高速缓存管理器3232发出或传达无效命令。例如如果客户端将采取客户端10承认的动作,该动作将引起在源服务器的被请求对象的改变,客户端可传达无效命令。任何被存储在高速缓存中的对象可通过将用户命令传输到高速缓存而被无效,该命令在高速缓存被本地执行或使用XML API内部结构被远程调用。
[471]根据步骤3430,存储在高速缓存中的已经被识别为无效的对象,例如先前被服务的动态产生对象,则响应于无效命令被标记为无效。无效的对象不会从高速缓存中提供给请求客户端,而是改为从源服务器直接服务。高速缓存管理器3232可以任何合适或期望的方式标记每个对象为无效。在一个实施例中,通过设置被存储对象的标志、属性或性质来标记对象的无效。例如,标志可设置为给高速缓存管理器3232识别对象是无效的任何值。在另一个实施例中,通过将对象移动到存储无效对象的高速缓存的区域或部分来标记对象无效。在其它实施例中,高速缓存管理器3232可通过数据库或者链接表或者任何类型和形式的数据结构来识别或跟踪被存储对象的无效和/或有效状态。在一些实施例中,高速缓存管理器3232使用一个或多个对象来识别或跟踪存储在高速缓存中的一个或多个对象的有效或无效。在另一个实施例中,通过改变、修改或变更被存储的对象标记对象为无效,例如删除或移除对象的一部分以便使其不再使用,或通过改变或修正对象的名称。
[472]在一些实施例中,设备1250连续的从高速缓存清除被标记为无效的对象。在另一个实施例中,一旦请求该对象,例如由客户端10,设备1250从高速缓存中清除该无效对象。在一些实施例中,设备1250使用对象的更新的副本或版本重写无效对象。在另一个实施例中,通过向高速缓存的相同部分存储另一个动态产生对象,设备1250重新使用被无效对象所占用的高速缓冲存储器。
[473]利用高速缓存管理器3232的命令无效API,任何与设备1250通信的计算设备或用户可请求来无效一个对象,例如动态产生的存储在高速缓存中的对象。同样,存储在高速缓存中的对象的无效可被实时控制,而非使用预先确定的配置终止或无效时间周期。因此,使用这些技术被高速缓存的对象的寿命可从例如数据库的外部应用处理节点或发端应用服务器控制。例如,可配置设备1250与数据库一起工作,以便数据库的改变自动触发从数据库(或应用)到设备1250的无效命令以清除特定的对象。
d.使用无效命令的组的无效
[474]在进一步的实施例中,在相同的时间,设备1250识别并无效存储在高速缓冲中的对象组。存储在传统高速缓冲存储器中的每个对象被高速缓存单独、分别处理,确定对象是否失时效。当每个对象达到它的指定终止时间(通常由服务器设置并被高速缓冲存储在表中)时,该项目被从高速缓冲存储器中清除。此传统的方法效率低,并且最终不足以成功的控制在试图高速缓存动态产生内容时出现的挑战。
[475]图29B示出了用于维持高速缓存的方法的另一个实施例,例如计算机存储器高速缓存,其中设备1250有能力建立、存储和无效之前已经被源服务器30服务的相关对象组。总的来说,在步骤3410,对象,例如,从源服务器30服务的动态产生对象被存储在高速缓存中。在步骤3412,高速缓存管理器3232形成先前被服务的存储在高速缓存中的对象的组。在一个实施例中,如下述进一步详细描述的,该组可与一个或多个对象确定因子相关联或被一个或多个对象确定因子确定。在步骤3414,高速缓存管理器3232维护对象组的记录。在步骤3422,高速缓存管理器3232接收无效命令以无效对象组。在步骤3432,高速缓存管理器3232响应于无效命令,标记对象组为无效。
[476]步骤3410与在图29A中一样,其中对象存储在设备1250的高速缓存中,例如先前从源服务器30服务的动态产生对象。在一些实施例中,一个或多个对象不能识别为当可高速缓存的或其他的,或者可以以其他方式不具有任何高速缓存或者高速缓存控制信息。例如,服务器30可以假设动态产生对象不被高速缓存。
[477]根据步骤3412,设备1250形成组,该组在先前由源服务器30服务并存储在高速缓存中的对象集之外。任何对象的合适或期望的集可与彼此关联以形成组。例如,产生用于服务web页面或者与服务web页面关联的任何动态产生对象可以形成组。在一些实施例中,对象可与多个组相关联。在其他实施例中,对象的一个组可形成对象的另一个组的子集。在一些实施例中,对象的形成的组拥有从相同的服务器30服务的对象,而在其他实施例中,对象的形成的组拥有从不同服务器30服务的对象。在进一步的实施例中,对象的形成的组可包括来自客户端10的对象,来自服务器30的对象,或者由客户端10和服务器30产生或服务的对象。在一个实施例中,在组中的一个对象是静态的,而在组中的另一个对象是动态产生的。在一些实例中,组中的一个对象不被识别为可高速缓存的,而组中的另一个对象被识别为可高速缓存的。在其他实例中,组中的对象根据服务器30提供的功能或应用可以逻辑相关。在另一个实例中,组中的对象当与相同的客户端10或相同的用户相关联时相关。
[478]在步骤3414,维护对象组的记录。在实现此处描述的一些实施例的操作中,可使用用于记录和维护对象组的记录或者其他相关对象的各种技术。在一个实施例中,可在例如查询表中直接维持记录。在另一个实施例中,记录可以hash表格式出现。在一些实施例中,高速缓存管理器3232维持在数据库、数据结构中对象、或者在存储器中维持对象的相关性。在进一步的实施例中,组中每个对象的标志、性质或属性被分配或设定为识别该组的值,例如值等于,识别或引用组的名称或标识符,例如将在下面更详细的描述的组的对象确定因子。在一些实施例中,对象组在被识别为持有该组的高速缓存存储器的一部分中被布置、放置或定位。
[479]在步骤3422,在设备1250或高速缓存管理器3232接收无效命令。根据图29B描述的实施例,无效命令识别一个或多个对象是无效的,或者是失效的。在一些实施例中,无效命令引用、识别或指定对象组的名称或标识符。在一个实施例中,无效命令包括无效组中的所有对象的单独的无效请求。在另一个实施例中,无效命令识别组中的一个对象无效。在其他实施例中,无效命令包括多个无效请求,这些无效请求无效在组中的多个对象。
[480]根据步骤3432,如果无效命令引用、识别或指定组的对象为无效,组中的每个对象无效,或者组无效,则先前被服务的对象组被标识为无效。在一些实施例中,如果无效命令识别组中的对象为无效,则高速缓存管理器3232标记对象为无效。在其他实施例中,如果无效命令识别组中的对象为无效,则高速缓存管理器3232标记对象的组为无效或组中的每个对象为无效。在又一个实施例中,当通过一个或多个无效命令识别多个对象为无效时,高速缓存管理器3232仅无效对象的组。在另一个实施例中,无效命令可指定组的名称或标识符,并且高速缓存管理器3232标记该组为无效,或组中的每个对象为无效。
[481]在一个实施例中,设备1250或高速缓存管理器3232从高速缓冲存储器中清除已经标记为无效的对象组。在一些实施例中,仅当组中的每个对象被标记为无效时,在组中的对象可被从高速缓冲存储器中清除。在其他实施例中,如果组中的一个对象已经被标记为无效,则整个组被清除。在另一个实施例中,一旦通过客户端10接收到对于对象组或者组中的任何对象的请求,标记为无效的对象组或标记为无效的组中的任何对象被清除。在其他实施例中,一旦从提供组中的一个或多个新对象的服务器30接收到响应,标记为无效的对象组或标记为无效的组中的任何对象可被清除。
[482]接着是上述描述的实施例的实例。客户资源管理(“CRM”)应用被许多商业使用以追踪和评价资源管理的所有方面。经常,通过专用或包括Internet的公共网络,实施或访问CRM应用。提供对大量数据的访问的这些应用经常被访问,因此受益于由这样的应用产生的数据的高速缓存。例如,经常产生销售报告并提供给远程连接用户。这些销售报告由相关应用通过编译来自销售的信息建立,该信息被邮往这样的应用服务器和/或它们的主要数据库。当许多用户请求相同的文件(例如某个销售报告)时,没有高速缓存,应用服务器必需为每个应用重新产生对象。但是,当高速缓存放置于更接近该请求客户端时,如果这样的对象可存储在高速缓存中,则可保留应用和数据库处理,包括潜在的有价值的带宽。
[483]由于每次新的销售都邮往运行在源服务器(或到其主要数据库)的应用,在销售报告中的信息需要被更新,则出现了用于高速缓存这样的对象的挑战。结果是,已经存储在任何支持这些应用服务器的高速缓存中的所有的销售报告必需被无效并从高速缓冲存储器中清除其内容。然而,用于高速缓存的传统的方法不能精确确定对主要数据库或程序的改变何时将发生并且因此不能合理评价动态内容的新鲜度。每次在数据库或应用程序或源服务器中发生改变,该高速缓存必需能够识别已经作出的改变,以及哪个对象组将被无效以作为这个改变的结果。无效命令的产生,如上所述,可满足该需要,该无效命令包括链接到前述服务的对象的组的对象确定因子。
[484]相关对象的多个组可在单一的分级级别中形成。可选的,可形成对象的子组以建立多个分级级别。在一个实施例中,对象的组或子组可通过用户设定。在另一个实施例中,用户可建立规则,通过该规则设备1250自动形成相关对象的组,以及关联其中的对象确定因子。
e.在客户端请求或响应中的对象确定因子的标识
[485]通过对象的组的产生以及实现参数化的无效,实施例也满足可以识别所有的对象的需要,这些对象被在源应用服务器30(和/或主要数据库)的状态改变所影响。在此实施例中,通过例如来自客户端的拦截的HTTP请求,任何对象或对象的预先定义的组可被无效,该高速缓存解析该HTTP请求以识别该对象确定因子。术语“对象确定因子”指唯一的或者以其他方式引用、识别或指定一个对象或一组对象的任何信息、数据、数据结构、参数、值、数据模式、请求、回复或命令。在一些实施例中,对象确定因子是在通信中的字节或字符的模式,该通信可与对象相关联或用于唯一的识别该通信与该对象相关联或引用该对象。在一个实施例中,对象确定因子指示在源服务器中是否对先前服务的对象的组的改变已经发生或将要发生,该先前服务的对象的组存储在对象确定因子相关联的高速缓存管理器3232中。在一些实施例中,在对象组中的对象被关联,以使它们与至少一个对象确定因子相关联。特别的,下面更全面的描述对象确定因子非限定的实施例以及它们应用的进一步示例。
[486]在本实施例的一些实例中,对象确定因子为包括或嵌入到客户端中的请求或回应中的某些预先定义的参数或数据结构。在另一个实施例中,客户端10、服务器30或设备1250嵌入到与一个或多个对象确定因子的通信中,例如代表对象确定因子的预先定义的字符串或参数集。对象确定因子指示这样的请求是否将对在对象状态中引起的改变产生影响,该对象的状态存储在源服务器30或其链接的数据库中。在一个实施例中,在请求中的对象确定因子的存在指示改变已经或将要在对象上发生。在另一个实施例中,对象确定因子的语法、结构、参数或值指示改变已经或将要在对象上发生。在一个实施例中,高速缓存从客户端10接收对象请求。该请求可包括某些参数或值(对象确定因子),这些参数和值由高速缓存识别,将改变源服务器或应用服务器的状态,这些服务器随后将使高速缓存管理器3232存储的某些相关对象失时效,通过这样的源服务器或应用服务器30已经被预先产生某些相关对象。依赖于由用户设置的无效策略,该参数(对象确定因子)可通过源服务器请求已经被存储在高速缓存中的一个或多个预先服务的对象或对象组的无效。配置该高速缓存以识别将被这些状态改变影响的相关对象(例如,这些对象或对象组被链接到对象确定因子),并且通过标记每个对象为无效和/或从高速缓冲存储器清除这样的对象的方法来无效这些对象。
[487]以上描述的技术在图29C中示出。作为此处描述的其他实施例,步骤3410包括在高速缓存中存储对象,例如从源服务器的先前服务的动态产生对象。该对象可通过运行在源服务器30上的应用产生,或例如,通过源服务器30访问数据库中提取。在一些实施例中,动态产生对象被识别为不能高速缓存的或以其他方式不识别为可高速缓存的。
[488]根据步骤3421,高速缓存在客户端和服务器之间拦截或以其他方式接收通信,诸如来自客户端的请求或来自服务器的响应。在一些实施例中,请求用于特定的对象,该对象已经被预先服务并存储在高速缓存中。在另一个实施例中,通信包括来自带有被请求的对象的服务器的响应。在一个实施例中,这样的接收或拦截根据建立的高速缓存协议或通信标准发生。虽然高速缓存管理器3232或设备1250通常被描述为接收请求、响应或通信,在接收这样的请求、响应或通信中,高速缓存3232或设备1250可通过任何合适的方法或机制拦截或获得请求、响应或通信,甚至不直接或明确的与高速缓存通信。
[489]在步骤3423,在拦截的通信中识别对象确定因子。高速缓冲管理器3232可提取、解释、解析、访问、读取或以其他方式处理被拦截的通信以确定或识别在通信中的一个或多个对象确定因子。可使用通信的一个或多个字符的任何参数、值、语法、数据、结构或集来识别对象确定因子。在一个实施例中,高速缓存管理器3232可识别从客户端10到服务器30的请求中的对象的名称或标识符,其中该客户端请求该对象。在另一个实施例中,高速缓存管理器3232可识别在客户端10的请求或者来自服务器30的响应中的第一对象的名称或标识符,该响应指示对存储在高速缓存中的第二对象的改变已经发生或将要发生。在其他实施例中,高速缓存管理器3232确定请求中的任何模式的字符与高速缓存中的对象组或者对象相关联的对象确定因子是否相匹配。在一些实施例中,对于当前没有存储在高速缓冲中的对象可以确定对象确定因子。在其他实施例中,对于当前标记为无效的对象可以确定对象确定因子。在其他实施例中,用于请求的对象的对象确定因子被确定为将与高速缓存的对象的对象确定因子相关联。在又一实施例中,根据用于在通信中的对象的第一引用、请求或应答,高速缓存管理器3232建立所识别的对象确定因子作为用于该对象的对象确定因子。
[490]通过接收和解析通信,例如客户端请求或服务器应答,以识别对象确定因子,高速缓存管理器3232或设备1250可有效的确定已经与识别对象确定因子相关联的高速缓存的对象是否标记为无效。因此,根据步骤3425,做出关于对象确定因子指示高速缓存的对象是否改变的决定。在一些实施例中,被识别的对象确定因子可为通信的一部分,该部分没有改变、修改或产生对象。在其他实施例中,被识别的对象确定因子是通信的一部分,该部分指示与对象确定因子相关联的对象的改变已经发生或将要发生。例如,通信可为用于动态产生对象的获得请求或者提交请求,该提交请求将改变用于一个或多个动态产生对象的数据。在一些实施例中,在通信中的对象确定因子的存在指示在一个或多个对象上的改变已经或将要发生。在另一个实施例中,在通信中的命令、指示或指令的类型或名称连同对象确定因子指示在一个或多个对象上的改变已经或将要发生。在进一步的实施例中,参数的存在、值或设定,或命令、指示或指令的变量指示在与对象确定因子相关联的一个或多个对象上的改变已经或将要发生。
[491]在其他实施例中,高速缓存管理器3232在拦截的通信或对象确定因子上执行hash函数、算法或操作,以确定改变是否在对象中已经发生。在一些实施例中,该hash值与先前被存储的用于对象的hash值相比较,如果不同则高速缓存管理器3232识别对象已经改变。在又一个实施例中,用于对象的hash值可被包括在通信或对象确定因子中。在一个实施例中,通信指示对象已经被参数的值或设定改变,例如带有Boolean标志。在其他实施例中,以下将详细描述的实体标签控制和确认机制可被用于识别对象并确认对象是否已经改变。
[492]如果改变被指示,则在步骤3431,接着,与对象确定因子相关联或被对象确定因子识别的对象被标记为无效。在一些实施例中,根据步骤3431,由被拦截的通信请求的对象被标记为无效,并根据步骤3440从源服务器30获取。否则,在其他实施例中,被请求的对象根据步骤3450从高速缓存中被获取。在一个实施例中,被标记为无效的任何对象将从高速缓存中清除。
f.基于对象确定因子对象组的无效
[493]以上的实施例描述了基于在客户端请求中的对象确定因子的标识,无效在高速缓冲管理器3232中先前服务的对象。在另一个实施例中,这个一般的概念可被用于识别或无效对象组,一个或多个对象确定因子已经与该无效对象组相关联。该实施例将在图29D中示出。
[494]在图29D中描述的方法以与方法图29C同样的方式开始。步骤3410包括在高速缓存中存储对象,例如先前从源服务器服务的动态产生对象。在一些实施例中,一个或多个对象没有被识别为可高速缓存的。根据步骤3412和类似于图29B,先前被服务的对象被形成组。在一个实施例中并且根据对象确定因子技术,对象组与至少一个对象确定因子相关联并被该至少一个对象确定因子识别。就像以下更充分描述的,在一些实施例中,组和对象确定因子的关系依赖于用户高速缓存策略的性质和细节,例如被策略引擎3236使用、定义、控制的策略。在其他实施例中,组的一个或多个对象确定因子包括组中的对象的一个或多个对象确定因子。在另一个实施例中,组的对象确定因子包括组中的对象的对象确定因子的组合。
[495]根据步骤3414,维护组的记录,连同其相关联的对象确定因子,如果可应用的。该步骤相似于图29B中示出的步骤3414。在一个实施例中,记录和/或组的任何对象确定因子在查询表中被维护。在其他实施例中,记录和/或组的任何对象确定因子可以hash表的格式被维护。可设计该hash表有效率的存储非邻近关键字,在字母和数字顺序中,hash表有很大的差距。在另一个实施例中,可在hash表之上建立索引系统。在一些实施例中,高速缓存管理器232维护作为组的对象与在数据库或数据结构中的一个或多个对象确定因子或在存储器中的对象的关系。在进一步的实施例中,在组中的每个对象的标志、属性或性质被指定或设定为识别该组的值,例如值等于,识别或引用组的名称或标识符,或者组的对象确定因子。在一些实施例中,对象的组在被识别作为保持该组的高速缓冲存储器的部分中被布置、放置或定位。在另一个实施例中,与对象的组相关联的一个或多个对象确定因子被存储。
[496]步骤3421和3432类似于如图29C示出的步骤3421和3423。根据步骤3421,高速缓存管理器3232或设备1250在客户端10和服务器30之间拦截或以其他方式接收通信,例如来自于客户端用于先前服务和存储在高速缓存中的对象的请求。在一个实施例中,高速缓冲管理器3232拦截从客户端10到服务器30的请求。在一些实施例中,该请求用于存储在高速缓存中的对象。在其它实施例中,该请求是到服务器30的指令、命令或指示,将引起存储在高速缓存中的对象的改变,使得对象被动态产生。在另一个实施例中,高速缓存管理器3232拦截从服务器30到客户端10的包括或识别存储在高速缓冲中的对象的响应。
[497]在步骤3432,在拦截的通信中识别对象确定因子。如上所注释的,对象确定因子指示在源服务器30被请求的对象中是否已经发生或将要发生改变。然而,在图29D的实施例中,对象确定因子可与对象的组相关联。这启用有效的将存储在高速缓存中的全部对象无效,其可能被特定对象确定因子所影响。在一些实施例中,识别在组中的对象的对象确定因子。在其他实施例中,识别用于对象的组的对象确定因子,例如,组对象确定因子。在另一个实施例中,识别组中的一个或多个对象的对象确定因子的组合。
[498]因此,根据步骤3427,做出关于对象确定因子是否指示先前被服务的对象的组中的改变的决定。在一些实施例中,在拦截的通信中的组的对象确定因子的存在指示组中的一个或多个或所有的对象的改变已经发生或将要发生。在其他实施例中,在拦截的通信中的命令、指示或指令的名称和类型指示这个改变。在又一个实施例中,在通信中的任何参数或变量的存在、值或设定也可指示这样的改变。
[499]如果在步骤3427,对象确定因子指示组中的改变,接着根据步骤3435,先前被服务的对象的组在高速缓存中被标记为无效。在一些实施例中,根据步骤3440,组中的一个或多个或所有的对象被从源服务器30请求和获取。如果在步骤3427,对象确定因子没有指示组中的变化,则根据步骤3450,在一些实施例中,从高速缓存管理器3232中获取对象作为被拦截的通信的一部分被请求的任何对象,并且该对象先前被服务和存储在高速缓存中。在实施例中,标记为无效的任何对象或对象组被高速缓存管理器3232从高速缓存中清除。
g.组的指示
[500]高速缓冲的管理员可特别指定被包括在特定组中的对象。无论任何时候对象被存储在高速缓存中,管理员可依赖于配置使该对象为配置或隐式(implicit)组之一的成员。被配置的组可基于配置,该配置为管理员先前建立或可选的基于应用行为和涉及对象无效的其他数据。如果对象的配置组是动态的,则对象也可为隐式组的部分。在隐式组中的对象通过有效的无效参数的值被分组。
[501]通过允许对象的非常灵活的分组,高速缓冲可以获得无效中的灵活和协调水平,这对于高速缓冲动态产生内容是有必要的。高速缓存可同时无效对象的非常特别的组,因此使得高速缓存更能响应于无效动态产生内容的频繁需要。这时,为了关联的一个或多个对象确定因子,高速缓冲分配对象到组中,该组确定许多涉及到该对象的事情,包括无效参数和命中确定因子。
[502]在客户资源管理(“CRM”)实例中,高速缓存管理员可预先指定每个分组。例如,管理员配置高速缓存以便通过名称分组每个销售部门。因此管理员可以指定汽车部门、摩托车部门等,并且在每次到达高速缓存的请求中识别对象确定因子,该高速缓存可接着无效存储在指定组中的所有对象,该指定组通过对象行列市链接到合适的部门。
h.基于规则分组
[503]可选的,高速缓存管理员可建立规则,该规则允许高速缓存设备在运行中确定包括在特定组中的对象。这种基于规则的分组可通过虚拟建立的规则依赖于组的指定,该已建立的规则将重要的对象确定因子连接到该对象,高速缓存使用该重要的对象确定因子生成相关的组。该方法的实例可包括以规则配置高速缓存,高速缓存使用该规则来识别什么对象放于每个组中。
[504]再一次看CRM实例,规则可规定,建立在应用上的销售部门的细分将被高速缓存识别为自身的分组。在这种方式中,在没有高速缓存管理员必需特定识别每个分组时,建立分组,但是允许高速缓存基于相关规则确定。此技术生成很方便并常常为小的工作强度的方式来指定分组。高速缓存管理员可配置规则,该规则规定每个销售部门的细分(例如,销售\汽车,销售\摩托车等)通过高速缓存产生新分组。当来自汽车销售部门的请求通过高速缓存被处理并由应用返回时,高速缓存基于预先配置的规则,可识别销售的每个子分组并为其自动生成分组。
[505]通过高速缓存可实施该规则,每次高速缓存获取用于报告/销售/汽车或报告/销售/摩托车等的类型的对象的新请求。当高速缓存识别这些子分组并为它们中的每个建立对象分组时,当摩托车销售部门请求示出它是销售部门的子分组时,该过程可接着被重复,接着自行车销售部门等等。当已知的无效请求来到链接到这些分组中的一个的高速缓存时,或者如果相关对象确定因子在客户端请求中被识别时(例如,在解析该请求中发现邮送到摩托车销售部门销售/摩托车的商业报告),高速缓存确定来无效摩托车销售部门分组中的所有高速缓存的对象。
[506]在此方式中,当高速缓存认识到对被应用服务的数据的改变已经发生或将要发生(或者由于高速缓存认识到被高速缓存接收的请求的内容将触发在应用的改变或者由于一些外部改变的发生)时,上述技术启用高速缓存来快速并简单的识别通过分组过程哪个对象需要无效。以此方式,高速缓存可以无效由于应用或数据库状态中的改变而不再新鲜的大量动态产生的对象。
[507]使用智能统计引擎也可增强高速缓存成功存储和服务其高速缓冲存储器动态产生内容的能力,为了在一段时间内确定对象的设置,该智能统计引擎检查请求模式和响应话务量,该对象的设置将提供最大高速缓存利益。该引擎或者可以集成到自身的高速缓存设备中,或者作为启发式运行在单独的计算机中,以选择对象的一些子集,用于进一步探测以确定用于动态存储的适宜性。
i.对象确定因子的进一步使用
[508]如以上描述的,对象确定因子可为指示在源服务器中的改变是否已经发生或将要发生的任何数据结构,该改变为对存储在对象确定因子与之关联的高速缓存中的先前被对象的组。对象确定因子可基于嵌入到请求中的预先定义的字符串值建立。例如,当请求带有特定USERID来到时,该USERID可被链接在高速缓存存储器中的对象的组,每次从该特定USERID送来邮寄或其他请求时该对象的组被无效。用于对象确定因子的可能候选也可包括使用服务器的服务标识符,该服务器是最初服务该对象的。该服务标识符包括服务IP地址、TCP端口和出现在HTTP请求中的服务标识符。
[509]另一个可能的对象确定因子出现在请求统一资源定位器(“URL”)中。在高速缓存静态对象例子中,请求的URL通常足以唯一的识别对象。然而,用于动态产生内容的请求,出现在URL中的信息可能不足以识别高速缓存对象。高速缓存必需因此在请求中检查其他信息,以发现包括在HTTP头、cookie头在其他常用HTTP头中的对象确定因子。高速缓存可另外在客户端请求中的多个其他位置中查找相关参数信息的子集,包括但不限于:在URL查询串中,在POST体中,在cookie头中,或者在任何其它请求或响应头中。
[510]解析用于对象确定因子的URL的问题是URL和其他头可包括除了与高速缓存的决定相关的信息之外的很多信息。因此,高速缓存必需能够解析大量信息,以能够识别合适的对象确定因子。另外,在头中的数据经常被任意的排序,这意味着数据放置在HTTP头中没有标准的方式,因此简单的比较常常不足以定位在这样的串中的相关对象确定因子。
[511]如果没有预先配置的策略使特定对象确定因子与存储在高速缓存中的相关对象或对象的组匹配,则在另一个实施例中,高速缓存可仍然作出这样的决定。例如,高速缓存可检查并解析请求的各个方面以发现是否任何其他对象确定因子在这样的请求中被找到并用于链接这样的请求到存储在应该被无效的高速缓冲存储器中的特定对象。可选的,也可启用高速缓存检查用于某些对象确定因子的请求,该对象确定因子是高速缓存基于某些预先定义的启发式确定可有目的的链接到特定对象或对象的组。例如,当请求到达高速缓存用于更新与特定USERID相关联的日历时,可建立实施例以识别USERID等于更新日历请求的USERID的所有高速缓存的对象,以及用于任何一个特定日子的包括用户的日历的(对象)将需要被无效。
[512]高速缓存也可假定对象确定因子作为name=value或者相似对的组以非特定顺序中出现在URL词干(Stem)中、在URL中提供的查询中、在POST体中或在Cookie头中。在实施例中,假定查询被格式化为name=value对的列表。用户可以因此配置哪个参数名称是重要的。每个高速缓存的对象使用第一个它的访问URL键入。URL可看起来像/site/application/special/file.ext?p1=v1&p2=v2&p3=v3。/site/application/special/file.ext部分是URL词干。p1=v1&p2=v2&p3=v3部分是URL查询并包括参数-值对。这些参数-值对也可出现在POST体中或者Cookie头中。
[513]在一个实施例中,用户或管理员建立该P1和P2将为无效的参数或对象确定因子。高速缓存其后将自动分组拥有匹配的p1和p2值的对象。实施该分组的一种方法是将p1和p2映射到在数据库表中的主要关键字,即,在表中唯一的可以识别的对象,该高速缓存为了确定无效状态将知道怎样引用该对象。为了更新这些数据库表中的内容,为了反映存储在高速缓存中的数据不再有效的事实,高速缓存将为p1和p2指明新值并且当高速缓存识别这个新值时,下一时间将服务这个内容,高速缓存将知道无效存储在它的存储器中的被链接的对象。当高速缓存遇到这样的请求时,当见到更新请求则高速缓存知道必须无效具有匹配的p1和p2值的组——因为高速缓冲知道在源端的数据将改变,因此影响涉及到这些p1和p2对象确定因子的所有对象。
[514]为了解决更复杂的情况,其中管理员没有预先配置的嵌入到请求中作为对象确定因子的特定参数,高速缓存可部署用户配置策略以从请求中提取相关对象确定因子从而帮助识别何时无效对象的分组。接着使用确定因子串以便定位存储在高速缓存中的对象的组以及无效这样的对象。可使用这些对象确定因子来配置高速缓存以产生重要的参数值的列表。如果输入的写请求已经匹配用于这些重要参数的值,则连接到这些参数名称的对象将被无效。可选的,用户可指定策略架构动作,该动作可从请求中提取对象确定因子串。对象确定因子串从写请求中提取,并且带有匹配的确定因子串的所有对象被无效。在该可选方法中,请求到达高速缓存,高速缓存做出请求串是否匹配无效策略的决定。无效策略指定其中的内容组将被无效的对象。
[515]可选的,高速缓存可使用可被呈现在客户端请求中的任何其他用户信息。如上所述的,验证和授权的集成允许高速缓存访问用户信息。如果高速缓存的对象的相关分组被链接到用户或用户的组,USERID或者GROUPID可为确定因子之一。虽然用户信息常常是重要的对象确定因子,但是用户信息常常不能被呈现在HTTP请求中。在进一步的实施例中,动态高速缓冲方面可与系统和方法相结合,该系统和方法用于将带有各种其他网络元件与高速缓存集成,该元件包括执行特定种类验证、访问控制与核查(AAA)下部构造的能力。因此,根据由应用产生的数据的安全级别被应用到改为从高速缓存服务的数据上。此技术允许应用来高速缓存敏感的、访问控制信息,该访问控制信息不能以其他方式被高速缓存。
[516]该方法允许高速缓存识别用户,该用户在HTTP请求中不包括可确认的用户信息,但该用户可通过在集成高速缓存专利中描述的AAA方法识别。这样的方法启用高速缓存来通过检查可从AAA处理中共享的授权状态信息以识别相关用户到特定请求。在进一步的实施例中,集成启用安全策略的应用到存储在高速缓存中的信息以禁止非授权用户访问存储在高速缓存上的信息。
[517]该方法也提出由这样的事实所引起的挑战,即动态产生数据的重要的部分需要客户端请求在高速缓存响应来自于客户端的相关请求之前被验证和授权的这样的数据。高速缓存必需有由验证用户授权请求的能力,以便应用可以高速缓存访问控制对象,并通过集成带有验证和授权信息与这样的动态高速缓存技术,而获得安全性。如果对象为用户或用户组定制,则USERID或者GROUPID将是对象确定因子之一。因此根据由应用产生的数据的安全级别也被应用到高速缓存的信息。这个技术允许应用来高速缓存敏感的、存储控制信息,该信息不能以其它方式被高速缓存。
[518]最后,其他信息像日子的时间、在发端数据库的状态等可从请求中解析并用作对象确定因子来确定是否存储在高速缓存中的对象仍然有效。高速缓存可以通过在对象分组中配置合适的终止行为来管理这种情形,对象被配置从而对这样的外部变化敏感。
[519]为了进一步提出呈现在请求必须通过高速缓存解析和拦截的动态内容事实面前的挑战,根据实施例的动态缓存能够限定哪个参数一定是用于高速缓存的相关对象确定因子。以此方式,用于从高速缓存服务对象而非转发这样的请求到可应用的应用服务器的成功的比率被增强。通过示例,从客户端查询的请求可包括城市和状态参数。然而,可配置高速缓存满足应用的需求,其中高速缓存正存储内容以识别响应可被提供给从客户端来的请求,该查询示出该来自于所有客户端的没有考虑到城市值的请求。为了这个目的,城市参数不是相关的,并且高速缓存可以识别此事实。可选的实施例包括配置高速缓存以便如果只有城市参数匹配而无论状态参数指明什么,服务可从高速缓存响应。
[520]总之,高速缓存实施普通的参数化对象匹配。在此方式中,配置高速缓存以识别在请求中的信息的子集,该子集作为对象确定因子是有用的,并且该子集被链接到特定的对象,以便当这样的对象确定因子被识别时,高速缓存可以使用在评价对象或对象的组保持最新并可以从高速缓存被服务中该确定因子的存在(或相反这样的确定因子的缺乏)。该高速缓存维护表,该表在请求进入时查询,以检查配置参数从而确定是否被请求的数据保持最新,并且也允许高速缓存匹配相关数据到存储在高速缓存存储器中的固有对象。
j.具体化数字(Incarnation Number)
[521]在又一个实施例中,高速缓存可使用具体化数字无效对象组。由于初始时状态的改变,在高速缓存需要同时改变对象每个组的状态的情况下,具体化数字为实现此无效提供了简单的技术。尽管识别每个对象并改变每个的状态是确定存储在高速缓存中的数据的新旧程度的没有效率的方法,使用具体化数字使得利用更加简单和有效的方法来无效对象组。本实施例描述了每个对象怎样指向代表组的数据结构,并且因此服务器仅仅需要发送改变用于组的数据结构中的状态的命令。当用于高速缓存的对象的随后请求从客户端到达时,高速缓存必须首先指出状态是否已经改变。为了做这个,高速缓存查询数据结构以指出用于组的状态是否已经改变。
[522]为了有效地实施数据结构,高速缓存必须能够确定是否查询状态改变。因此,高速缓存必须可以决定是否已经在组中看到状态改变,或者没有。这就是具体化数字有益之处。高速缓存将动态产生对象关联到内容组中。每个这样的内容组可通过hash表查找过程使用包括在数据结构中的特定的索引值或者“具体化数字”而被呈现。之后,无论任何时候高速缓存接收高速缓存识别引起状态改变的客户端请求,客户端解析相关参数的客户端请求,基于识别的对象确定因子执行hash查找,并增加在数据结构中的索引或具体化数字。每次当存储在指定的分组中的对象被客户端请求时,高速缓存在对象上执行hash算法,并将其与用户内容分组的数据结构中的初始存储值相比较。如果存储的值与为该对象由高速缓存计算的数字相等,则高速缓存知道内容仍然保持最新,并且可被提供给请求者。如果高速缓存探测到为这样的对象计算的当前具体化数字和数据结构中用于这样的内容分组所存储的数字间存在差异,高速缓存知道被存储的对象不再是最新的。高速缓存接着无效被存储的对象,并向应用服务器发送该请求。当响应返回高速缓存时,设备将在高速缓冲存储器中存储新的响应,并再次将该响应链接到新的数据结构。之后,每次高速缓存在该分组中对象的请求,高速缓存可做出比较并假定没有对数据结构作出进一步的改变,高速缓存可服务最新的存储对象。
[523]通过以此方式使用对象的组的无效,高速缓存可以非常快速的无效-并且无论被无效的对象的数量是多少,花费的时间是常量。通过该更快速更有效率的无效的处理,该技术启用高速缓存来更有效的控制动态产生对象。由于这样的数据中的迅速改变,该方法允许位于应用前的高速缓存设备更加积极的存储和服务动态产生对象而不用服务无效或失时效的内容。该实施例启用高速缓存来服务经常或不可预知的改变以提供高速缓存的性能的数据。该高速缓存也可使用用户命令并且也可通过检验和分组各种web话务量来无效存储在高速缓冲存储器中的对象以及对象组。
2.连接池
[524]在一个实施例中,网络设备1250(此处也成为接口单元1250)减轻服务器30大量的处理负载,引起处理负载的原因是通过打开一个或多个与服务器的连接来重复打开和关闭到客户端的连接并保持这些连接从而使得客户端通过Internet可以进行重复的数据访问。该技术此处称为“连接池”。
[525]为了完整,下面关于图30简单的描述连接池的操作。当客户端10请求访问在接口单元1250管理的服务群组中的一个服务器时,图30中的处理开始。如在步骤4302中所示的,在接口单元1250和请求客户端之间的连接被打开,并且接口单元1250接收客户端请求以访问服务器。如步骤4304所示的,接口单元1250确定被请求的服务器的标识。在一个实施例中,这是通过检查由客户端请求指定的目的网络地址实现的。在另一个实施例中,这是通过检查由客户端请求指定的网络地址和路径名实现的。
[526]如在步骤4306中所示的,在确定客户端请求将被定向的服务器30的标识之后,接口单元1250确定是否到服务器的空闲连接(即,没有不使用的一个)已经打开。如果打开,处理在步骤4310重新开始。如果没有,如在步骤4308中所示的,接口单元1250向服务器打开连接。如在步骤4310中所示的,接口单元1250接着翻译客户端请求并传递该请求到服务器,并且以下将结合图31更全面的描述。如在步骤4312中所示的,在服务器处理之后,接口单元从服务器接收响应。如在步骤4314中所示的并且下面将进一步描述的,服务器响应被翻译并传输到请求客户端。最后,如在步骤4316中所示的,接口单元1250关闭与客户端的连接。然而,接口单元1250和服务器之间的连接没有断开。通过与服务器维持打开连接,并根据需要打开和关闭与客户端的连接,接口单元1250解决了服务器30几乎所有的与服务Internet上客户端相关联的连接负载问题。
[527]就像以下将进一步详细描述的,一些实施例涉及到步骤4316,此处接口单元1250关闭与客户端10的连接。存在多种情况导致接口单元1250关闭与客户端的连接。例如,客户端可开始FIN(完成)命令或RST(复位)命令。在这两个情况中,接口单元1250等待直到其失去本身和客户端之间的连接之前接收到这些命令中的一个。当客户端不使用或结束该连接但是一段时间内不向接口单元1250传递该信息时,发生无效率的连接池。由于接口单元1250为了重新使用用于另一个客户端的连接而正等待来自客户端的命令,该连接不能成功地连接。
[528]为了下面更详细的描述,即使在接收对请求的服务器响应之后,超文本传输协议(HTTP)1.1(默认)以及HTTP 1.0(带有连接:Keep-Alive Technique(保持激活技术))启用客户端和/或接口单元1250以保持与服务器的连接打开。客户端和/或接口单元1250可接着通过相同的连接立即或者大量时间(或者“思考时间”)之后发出其他请求。当客户端的人类操作者正决定浏览器上的下一个连接的点击以及类似时,客户端处于“思考时间”。即使服务器不处理通过连接的任何请求,这可导致服务器保持连接。此处,服务器管理员可能被迫通过设置保持激活超时时间而监视服务器上的太多的同时的连接,在该暂时休息时间之后已经被空置的或处于“思考时间”的连接被关闭。一个实施例允许当客户端10处于“思考”中时,通过客户端10’使用到服务器的连接。当然,如果当客户端10正使用服务器连接时客户端10’做出请求,则客户端10’必须使用到服务器的不同的连接。然而,当非常小数量的连接被超过并移到通常实例中时,将实现一个实例的有效连接池。一般情况是当为‘n’个客户端连接可为统计复用到‘m’个服务器连接,此处‘n’大于‘m’。
[529]如在步骤4310和4314中所示的(图30),图31是示出翻译客户端和服务器请求的一个实施例的操作的流程图。在一个实施例中,消息话务量是以TCP/IP包的形式的本领域公知的协议组。TCP/IP协议组支持许多应用,例如Telnet、文件传输协议(FTP)、e-mail以及HTTP。该实施例以HTTP协议的术语描述。然而在阅读完该说明书之后,该概念可同样适用于其他TCP/IP应用,这对于本领域的技术人员是显而易见的。
[530]每个TCP包包括TCP头和IP头。IP头包括32位源IP地址和32位目标IP地址。TCP头包括16位源端口号和16位目的端口号。源IP地址和端口号,共同指向源网络地址,唯一的识别包的源接口。同样,目的IP地址和端口号,一起指向目的网络地址,唯一的识别包的目的接口。包的源和目的网络地址唯一识别连接。TCP头也包括32位序列号以及32位确认号。
[531]包的TCP部分称为TCP段。TCP段包括TCP头和体。TCP段的体部分包括HTTP头和消息。有两个机制用于确定消息长度,包括基于块传输编码的一个和基于内容长度的另一个。在HTTP头中找到内容长度头文件。如果内容长度头的域存在,它的字节值代表消息体的长度。可选的,如果块传输编码头出现在HTTP头中,并且示出“块”传输编码已经被应用,则消息的长度通过块编码限定。为了将消息作为一连串块传输,每一块带有包含在块尺寸域中的自身的指示器,块编码修改消息体。
[532]作为以下将详细描述的,一个实施例使用内容长度参数和/或块传输编码头,通过避免客户端处于“思考时间”的情形而增加在服务器和客户端之间连接池的效率。没有此实施例,接口单元1250或者在重用用于一个客户端的链接之前等待来自另一个客户端的命令,或者当连接已经空闲太长的时间时连接被中止。
[533]以上提到的32位序列号识别在从发送TCP到接收TCP的数据串中的字节,数据的第一个字节在TCP段中表示。由于被交换的字节是被编号的,因此确认号包括确认的发送者希望接收的下一个序列号。这就是因此序列号加上最后一个成功接收的数据的字节之一。校验和覆盖TCP段,即,TCP头和响应数据(或体)。这是强制域,必须被发送者计算和存储,并且接着被接收者验证。
[534]为了从客户端成功的路由入站包到目的服务器,或者从服务器路由出站包到客户端,接口单元1250使用公知的“网络地址翻译”过程。网络地址翻译为本领域所公知,并且通过Internet标准(草案)RFC 1631指定,可在URLhttp://WWW.safety.net/RFC1631.txt中找到。
[535]然而,为了无缝的结合客户端和服务器连接,在共有的美国专利申请No.09/188709中详细描述了新的翻译技术,该申请1998年10月10日申请,题目为“因特网客户端-服务器多路复用器”,此处成为“连接复用”。根据该技术,通过在TCP协议层修改包的序列号和确认号来翻译该包。该技术显著的优点在于不需要应用层交互。
[536]现在看图31,如在步骤4402中所示的,翻译包的网络地址。在入站包的例子中(即,从客户端接收包),包的源网络地址被改变到接口单元1250的输出端口的地址,并且目的网络地址被改变到目的服务器的地址。在出站包的实例中(即,从服务器接收的包),源网络地址从服务器的地址被改变到接口单元1250的输出端口,并且目的地址从接口单元1250的地址被改变到请求客户端的地址。包的序列号和确认号也被翻译,如步骤404和406中所示并在下面进一步详细描述。最后,如在步骤4408中所示,重新计算包的校验和以说明这些翻译。
[537]如以上所提及的,实施例特别涉及用于通过内容-长度参数和/或块传输编码头来快速池化网络客户端-服务器连接的设备、方法和计算机程序产品以增加服务器和客户端之间的有效的连接池。效率中的增长其结果可以在客户端处于“思考时间”时避免占用连接。在一个实施例中,使用内容长度参数确定消息的长度。在另一个实施例中,使用块传输编码确定消息的长度。接着,两个实施例将分别结合图32和33加以描述。
[538]图32示出了被称为TCP段4500的TCP包的TCP部分。TCP段4500包括TCP头4502和体4504。体4504在其它信息中包括HTTP头和消息。内容长度参数4506在HTTP头中找到。实施例怎样使用内容长度参数4506提供更有效率的连接池将在下面结合图35和36加以描述。
[539]图33示出了被称为TCP段4600的TCP包的TCP部分。如上所述,如果块传输编码头出现在HTTP头中,并且示出“块”传输编码已经被应用,则消息的长度通过块编码被限定。为了作为块序列传输消息,每个块带有包含在块尺寸域中的自身的指示符,块编码修改消息的体。TCP段4600包括TCP头(未示)以及体。除了其它信息之外,体还包括HTTP头4602A-4602C以及消息。HTTP头4602A-4602C由七个块尺寸域4606A-4606G组成;以及六个块消息数据4604A-4604F。
[540]如图33所示,块尺寸域4606A-4606G被连接到一起。块尺寸域4606A示出在块消息数据4604A中的消息的长度,块尺寸域4606C示出在块消息数据4604C中的消息的长度,依此类推。最后的块尺寸域4606G总是包括长度值零,指示没有消息数据跟随。这指示所有的消息已经被发往客户端。实施例怎样使用块尺寸域4606A-4606G来提供更有效率的连接池,下面将结合图37和38加以描述。值得重点指出的是图33中的TCP段4600仅仅用于说明。
[541]在详细描述实施例怎样使用内容长度参数来增加连接池的效率之前,连接池在美国专利申请NO.09/188709中首先讨论完整性,该专利在1998年11月10日申请,题目为“因特网客户端-服务器多路复用器”。图34是示出连接池的消息流程图。图34示出了将两个客户端C1和C2连接到服务器S的接口单元1250。两个客户端C1和C2可包括此处讨论的任何客户端10,并且服务器S可包括此处讨论的任何服务器30。首先,如流程4702所示的,接口单元1250使用客户端C1提供的网络地址1打开与客户端C1的网络连接。由于TCP/IP使用多阶段握手打开连接,所以流程线4702所示为两路流程。
[542]如通过流程线704所示的,一旦连接被打开,接口单元1250从客户端C1接收GET请求,指出/sales/forecast.html的路径名。由于在接口单元1250和服务器S之间没有空闲连接打开,接口单元1250打开与服务器S的连接。如流程线4706所示的,接口单元1250将该请求映射到网络地址2,该网络地址2指服务器S。如流程线4708所示的,接口单元1250也向该服务器传送GET请求。如流程线4710所示的,服务器S以被请求的web页面来响应。如流程线4712所示的,接口单元1250向客户端C1转发该web页面。最后,如流程线4714所示的,关闭在客户端C1和接口单元1250间的连接。根据TCP/IP协议,关闭网络连接可包括多阶段过程。因此流程线4714示为双向的。值得重点指出的是,接口单元1250不关闭与服务器S的连接,而是保持其打开以调节进一步的数据流。
[543]接着,如流程线4716所示的,使用由客户端C2提供的网络地址1打开接口单元1250和客户端C2间的连接,接着,如流程线4718所示的,接口单元1250从客户端C2接收GET请求,指定web页面/sales/forecast.html。由于在接口单元1250和服务器S之间的空闲连接已经打开,则不需要接口单元1250负担带有打开的进一步连接的处理负载的服务器S。接口单元1250仅仅使用空闲打开的连接。如流程线4720所示的,接口单元1250将GET请求映射到服务器S,传输它,并转发到服务器S。如流程线4722所示的,接口单元从服务器S接收响应,并如流程线4724所示,向客户端C2转发该响应。最后,如流程线4726所示的,接口单元1250关闭与客户端C2的连接。再一次的,接口单元1250不关闭与服务器S的连接。代替的,接口单元1250保持该连接打开以调节进一步的数据流。
[544]如上所讨论的,如流程线4724所示的,有许多的情况导致接口单元1250关闭与客户端C2的连接。例如,客户端可开始FIN(完成)命令,这发生在一旦客户端已经获取到所有被请求的数据(或消息)时。客户端也可开始RST(复位)命令。除了关闭接口单元1250和客户端之间的连接之外,RST命令导致执行许多的内务操作以保持服务器端连接情况正常。更具体地,TCP协议保证RST命令将有正确的SEQ(序列)号,以便服务器将接收TCP段;然而,RST命令不能保证有正确的ACK(确认)号。为了维护这种情形,接口单元1250跟踪服务器发送的数据的字节以及客户端确认的字节。如果客户端仍然没有确认通过服务器的所有的数据,接口单元1250计算该未确认的字节,并向服务器发送ACK。另外,服务器端PCB可被放置于超时队列中,以允许任何未决的服务器数据全部传输完。
[545]另外,虽然没有在图34中示出,服务器也可关闭在其自身和接口单元1250间的连接。服务器将向接口单元1250发送FIN命令。在此例子中,在服务器和接口单元1250之间的连接以及在接口单元1250和客户端之间的连接将被关闭。
[546]另一个方面是通过最小化服务器关闭连接的机会,最大化来自服务器的连接处理的卸载。有三个例子:
(1)使用协议版本HTTP/1.1。在该实例中,不需要明确的Keep-Alive(保持激活)头部。通过缺省值,服务器保持连接打开;直到客户端关闭连接。实例通过重新使用服务器端连接来卸载服务器。由于直到客户端关闭连接,当客户端完成连接但在一段时间内没有向接口单元1250转播该消息时,发生连接池的无效率。由于接口单元1250正等待来自客户端的命令以便重新使用用于其他客户端的连接,该连接不需要被连接。
(2)使用协议版本HTTP/1.0,并且客户端提供“Connection:Keep-Alive”(“连接:保持激活”)头。在该实例中,服务器保持连接打开;直到客户端关闭该连接。实例通过重新使用服务器端连接来卸载服务器。如使用协议版本HTTP/1.1,当客户端完成连接但在一段时间内没有向接口单元1250转播该消息时,发生连接池的无效率。
(3)使用协议版本HTTP/1.0,并且客户端不提供“Connection:Keep-Alive”(“连接:保持激活”)头。在该实例中,服务器在完全完成一个GET请求后正常关闭连接。如果服务器在每次请求后,关闭连接,这就使得接口单元1250没有重新使用服务器端连接的机会。由于这个原因,因特网的许多仍然使用没有“连接:保持激活”的HTTP/1.0。在该说明书中新的技术用于允许重用服务器端连接,重要的例子在共有的美国专利申请No.09/188709中详细描述,该申请1998年10月10日申请,题目为“因特网客户端-服务器多路复用器”。接口单元1250检查GET包以探测该情况。当探测到这种情况时,接口单元1250向GET包中插入“连接:保持激活”。由于该操作对客户端不可见,接口单元1250必须跟踪在服务器端连接上的“字节增加”的数量。由于序列号是在第一字节中,则“字节增加”不影响GET包中的序列号。然而,接口单元1250必须随后向从客户端到服务器的包的序号增加“字节增加”。与之相反,服务器将确定附加字节,但是接口单元1250在向客户端发确认时必须减去它们--客户端不知道这些字节增加。
[547]如上所提出的,通过操作序列号和确认号来实现连接多路复用。由接口单元1250接收的段的序列号和确认号被修改和映射到接收者所希望的值。对于客户端,数据看来是来自于服务器并且反之亦然。例如,如果“流入”指出被接口单元1250接收的段,并且“流出”指出相应的出站段,序列号和确认号以下列的方式被改变:
流出序列号=流入序列号-流入开始序列号+流出开始序列号
流出确认号=流入确认号-流入开始确认号+流出开始确认号
[548]为了处理用于HTTP/1.0包的“连接:保持激活”的附加值,接口单元1250跟踪连接的合适一半上的“字节增加”-在此例中为服务器端。序列号和确认号以下列的方式被改变:
流出序列号=流入序列号-流入开始序列号+流出开始序列号+流出字节增加
流出确认号=流入确认号-流入开始确认号+流出开始确认号-流入字节增加
[549]当包括用于提供更多有效率的连接池的实施例的内容长度参数技术在下面结合附图35和36(涉及内容长度参数)和图37和38(涉及块尺寸域)被描述时,使用这些等式获得翻译的特定实施例。
[550]图35详细的描述由实施例结合内容长度参数技术执行的确认号和序列号的翻译的流程图。在图35中的用于每个流程的标记形式为T:S,A(L),其中T表示TCP段类型,S为序列号,A为确认号,并且L为内容长度参数。内容长度参数描述了在消息中的数据的字节的数量。
[551]流程4802A-4802C提供打开客户端C1和接口单元1250间连接的一个方法。每个流程代表TCP段。在TCP段4802A中,设置在TCP头中的SYN标志,指示来自客户端C1的新连接请求。客户端C1已经建立了开始序列号为2000和确认号为2000。如流程4802B所示,接口单元1250响应以SYN ACK段,指定开始序列号为4000,并增加确认号到2001。本领域所公知的,在网络内的每个实体(例如,客户端,服务器,接口单元)设置自身唯一的序列号和/或确认号。如流程4802所示,客户端C1以ACK端响应,指定序列号为2001并且增加确认号为4001。如流程4804所示,客户端C1接着发出指定49字节长度的GET段。
[552]如流程806A所示,假设接口单元1250确定没有与服务器S空闲的打开连接存在,并因此向服务器S发送SYN段,指出开始序列号1950。如在4806B中所示,服务器S响应SYN ACK段,指定开始序列号6000并将确认号增加到1951。如流程8060所示,接口单元1250响应以ACK段。如流程线4808所示,在根据以上描述的翻译等式修改序列号和确认号后,接口单元1250接着从客户端C向服务器S转发GET段。
[553]如流程4810所示,服务器S响应以被请求的数据,指定序列号为6001,确认号为2000以及内容长度参数为999。如流程线4812A所示,接口单元1250接收RESP段,翻译序列号和确认号,并向客户端C1转发RESP段。
[554]在该点,接口单元1250接收客户端C2的请求以打开连接。如上,流程4816A-4816C提供打开客户端C2和接口单元1250间连接的一个方法。再一次的,每个流程表示TCP段。在TCP段4816A中,设置TCP头中的SYN标志,指示来自客户端C2的新的连接请求。客户端C2已经建立了开始序列号999,以及确认号为999。如流程4816B所示,接口单元1250响应以SYN ACK段,指定开始序列号为4999,并将确认号增加到1000。如流程4816C所示,客户端C2响应以ACK段,指定序列号为1000并将确认号增加到5000。如流程4818所示,客户端C2接着发送GET段,指定50字节的长度。
[555]假设在该点接口单元1250没有到服务器S的可用连接。如果客户端C1已经完成连接或正处于“思考时间”,则目标是重用到服务器S的先前用于客户端C1的相同的连接。接口单元1250使用内容长度参数以确定客户端C1已经接收了所有被请求的数据,而不是等待C1来开始FIN(完成)命令或RST(复位)命令以释放连接。此处,在流程4812B,接口单元1250从客户端C1接收确认,客户端C1事实上已经接收了所有的被请求数据。这向接口单元1250指示即使在客户端C1发出FIN或RST之前由于一些原因被暂停,客户端C1也可完成连接。如流程812C所示,接口单元1250修改确认号和序列号并向服务器S转发该RESP ACK段。
[556]如流程线4820所示,使用与客户端C1使用的相同的连接,在根据以上描述的翻译等式修改序列号和确认号之后,接口单元1250接着从客户端C2向服务器S转发GET段。如流程822所示,服务器S响应以被请求的数据,指定序列号为7000,确认号为2050以及内容长度参数为500。
[557]如流程线4824A所示,接口单元1250接收RESP段,翻译序列号和确认号,并向客户端C2转发RESP段。此处,在流程4824B,接口单元1250从客户端C2获得确认,客户端C2事实上已经接收了所有的被请求数据。如流程4824C所示,接口单元1250修改序列号和确认号,并向服务器S转发RESP ACK段。
[558]如流程4826A-4826D所示,一旦接口单元1250从客户端C2接收FIN或RST命令,在客户端C2和接口单元1250间的连接接着被关闭或断开。与之相同,如流程4814A-4814D所示,一旦接口单元1250从客户端C1接收FIN或RST命令,在客户端C1和接口单元1250间的连接接着被关闭或断开。值得重点指出的是,然而,接口单元1250保持与服务器S的连接。需要重点指出的,结合图36描述的事件的序列仅仅用于说明。
[559]图36示出了根据实施例在客户端和服务器之间使用内容长度参数以增加连接池化的效率的操作的流程图。接口单元1250保持与多个服务器的连接,并且基于在客户端请求中指明的路径名路由客户端请求到这些服务器。如步骤4902所示,首先,接口单元1250打开与服务器的连接。如步骤4904所示,接着响应于客户端C1的请求,接口单元1250打开到客户端C1的连接并从客户端C1以使用路径名接收请求来获取数据。
[560]如步骤4906所示,接口单元1250接着选择寄载由路径名指定内容的服务器。在替代实施例中,接口单元1250查询其它预定策略以选择合适的服务器,例如服务器的负载和服务器的状态。接口单元1250管理和保持服务器和所连接服务群组的数据库。在其它事务中,该数据库中的信息包括当前激活的策略和规则,允许接口单元1250将输入的包定向到正确的服务器。依赖于期望的网络条件和服务,这些策略和规则可被非常快的改变。
[561]如步骤4908所示,接口单元1250接着翻译请求并向选择的服务器传输该翻译的请求。如步骤4910所示,接口单元1250从服务器S接收响应。如步骤4912所示,接口单元1250接着翻译响应并向客户端C1传输该翻译的响应。
[562]假设为了说明目的,在该点接口单元1250从客户端C2接收请求以获取数据。如步骤4914所示,接口单元1250,响应客户端C2的请求,打开到客户端C2的连接,并从客户端C2接收请求以使用路径名获取数据。如步骤4916所示,接口单元1250接着选择寄载由路径名指定内容的服务器。
[563]在步骤4918,接口单元1250确定客户端C2是否已经选择了与客户端C1相同的服务器。如果到步骤4918的结果是否定的,则接口单元1250以足以满足客户端C2的请求的方式继续进行(对该实施例这是不重要的)。在该点,在图36中的流程结束。如步骤920中所示,可替代的,如果步骤4918的结果是肯定的,则接口单元1250确定是否有任何打开的到选择的服务器的连接。
[564]如果步骤4920的结果是肯定的,则接口单元1250以需要满足客户端C2的请求的方式继续进行(对该实施例这是不重要的)。在该点,图9中的流程结束。如在步骤4922中所示,可替代的,如果步骤4920的结果是否定的,则接口单元1250使用内容长度参数确定客户端C1接收到了客户端C1请求的所有数据。需要重点指出的是,为了确定客户端C1已经完成连接或处于“思考时间”内,接口单元1250不等待客户端C1发送FIN或RST命令。由于与接口单元1250在重新使用用于另一个客户端的连接之前,等待客户端关闭连接相比,接口单元1250可更快速的使用每个连接的事实,允许更有效率的连接池。
[565]在步骤4924,接口单元1250接着翻译请求,并使用与客户端C1所用相同的连接向被选择的服务器传输被翻译的请求。如步骤4926所示,接口单元1250从服务器S接收响应。如步骤4928所示,接口单元1250接着翻译该响应并向客户端C2上传输该被翻译的响应。如步骤4930所示,接口单元1250使用内容长度参数来确定客户端C2接收了所有客户端C2请求的数据。
[566]接着,接口单元1250在步骤4932关闭或断开于客户端C2的连接。最后,在步骤4934,接口单元1250关闭或者断开与客户端C1的连接,并且在图36中的流程结束。就像以上结合图35所描述的,结合图36的事件序列仅仅用于说明。
[567]图37示出了当结合块尺寸域技术时,实施例执行确认号和序列号的翻译的详细流程图。在图37中的每个流程的标记的形式是T:S,A(L),其中T表示TCP段类型,S为序列号,A为确认号,并且L为块尺寸域。块尺寸域的总值描述了TCP段中的数据字节的数量。
[568]为了简单,假设在到客户端C1和客户端C2二者的连接已经建立。客户端C1接着发送GET段,指定49字节的长度,如流程4002所示。接口单元1250确定和服务器S没有空闲打开的连接,并且因此打开与服务器S的连接(在图37中没有示出)。如流程线4004所示,根据以上描述的翻译等式修改序里号和确认号之后,接口单元1250接着从客户端C1向服务器S转发GET段。
[569]为了说明目的,假设在响应段中的数据的总体内容数据长度为999。进一步假设,数据将被传输到两个300的数据块和一个399的数据块中。注意,这只是用于说明目的,而非限制。因此,如流程4008A所示,服务器S首先用被请求数据(或消息)的块响应,指定序列号6001,确认号为2000,以及块尺寸域为300。如流程线4006A所示,接口单元1250接收RESP段,翻译序列号和确认号,并向客户端C1转发RESP段。如流程线4006B所示,客户端C1向接口单元1250确认数据的接收。如流程线4008B所示,接口单元1250向服务器S回馈传输该确认。
[570]如流程4012A所示,服务器S接着用被请求数据的第二个块响应,指定序列号6301,确认号为2001,以及块尺寸域为300。如流程线4010A所示,接口单元1250接收RESP段,翻译序列号和确认号,并向客户端C1转发RESP段。如流程线4010B所示,客户端C1向接口单元1250确认数据的接收。如流程线4012B所示,接口单元1250将该确认回馈传递到服务器S上。
[571]如流程4016A所示,服务器S接着用被请求数据的第三个块响应,指定序列号为6601,确认号为2002,以及块尺寸域为399。如流程线4014A所示,接口单元1250接收RESP段,翻译序列号和确认号,并向客户端C1转发RESP段。如流程线4014B所示,客户端C1向接口单元1250确认数据的接收。如流程线4016B所示,接口单元1250将该确认回馈传递到服务器S上。
[572]如流程4020所示,最后,服务器S用零数据的最后一块(由为零的块尺寸域来指示)响应,指出序列号为7000,确认号为2003,以及块尺寸域为0。如流程线4018所示,接口单元1250接收RESP段,翻译序列号和确认号,并向客户端C1转发给RESP段。这向接口单元1250和客户端C1示指示所有被请求的数据已经被传输。
[573]如流程4022所示,在该点,客户端C2接着发送GET段,指明长度为50字节。假设在该点接口单元1250没有到服务器S的可用连接。如果客户端C1完成了连接或者处于“思考时间”,则目标是重用到服务器S的相同连接,该连接先前用于客户端C1。接口单元使用等于零的块尺寸域以确定所有被请求的数据已经被客户端C1接收,而不是等待客户端C1开始FIN(完成)命令或RST(复位)命令来释放连接。这向接口单元1250示出了,即使客户端C1在发送FIN或RST命令之前由于一些原因被暂停了,客户端C1被完成该连接。如流程4024所示,接口单元1250修改序列号和确认号并向服务器S转发GET段。
[574]为了示出的目的,假定在响应段中的数据总的内容数据长度是500。进一步假定数据将被传输到一个300数据块和一个200的数据块中。注意这只是仅仅用于说明目的,而不是限定。因此,如流程线1028A所示,服务器S首先用被请求数据的块响应,指明序列号为7000,确认号为2050,并且块尺寸域为300。如流程线1026A所示,接口单元1250接收RESP段,翻译序列号和确认号,并且将RESP段转发给客户端C2。如流程线4026B所示,客户端C2向接口单元1250确认接收到数据。如流程线4028B所示,接口单元1250将该确认回馈传递到服务器S上。
[575]如流程4032A所示,服务器S接着用被请求数据的第二个块响应,指定为序列号7300,确认号为2051,以及块尺寸域为200。如流程线4030A所示,接口单元1250接收RESP段,翻译序列号和确认号,并向客户端C2转发RESP段。如流程线4030B所示,客户端C2向接口单元1250确认数据的接收。如流程线4032B所示,接口单元1250将该信息回馈传递到服务器S上。
[576]如流程4036所示,最后,服务器S用零数据的最后一块(由块尺寸域为零来指示)响应,指出序列号为7500,确认号为2052,以及块尺寸域为0。如流程线4034所示,接口单元1250接收RESP段,翻译序列号和确认号,并向客户端C2转发给RESP段。这向接口单元1250和客户端C2示出,所有被请求的数据已经被传输。
[577]如流程4038所示,一旦接口单元1250从客户端C2接收到FIN或RST命令,则在客户端C2和接口单元1250间的连接接着被关闭或断开。类似的,如流程4040所示,一旦接口单元1250从客户端C1接收到FIN或RST命令,则在客户端C1和接口单元1250间的连接接着被关闭或断开。然而需要重点指出的是,接口单元1250保持与服务器S的连接。同样需要重点指出的是,结合图37描述的事件的序列仅仅用于说明,不用于限制。
[578]图38示出了根据实施例使用块尺寸域的操作以增加在客户端和服务器之间的连接的池化的效率的操作的流程图。接口单元1250保持与多个服务器的连接,并且基于在客户端请求中指出的路径名路由客户端请求到这些服务器。首先,如步骤4102所示,接口单元1250打开与服务器的连接。接着,如步骤4104所示,响应与客户端C1的请求,接口单元1250打开与客户端C1的连接并从客户端C1接收请求以使用路径名获取数据。
[579]如步骤4106所示,接口单元1250接着选择寄载由路径名指明的内容的服务器。如步骤4108所示,接口单元1250接着翻译该请求并向被选择的服务器传输该被翻译的请求。如步骤4110所示,接口单元1250从服务器S接收响应。如步骤4112所示,接口单元1250接着翻译该响应,并向客户端C1传输该被翻译的响应,直到块尺寸域等于零。
[580]假设为了示出的目的,在该点,接口单元1250接收来自客户端C2的请求以打开连接。如步骤4114所示,接口单元1250,响应于客户端C2的请求,打开到客户端C2的连接并从客户端C2接收请求,以便使用路径名获取数据。如步骤4116所示,接口单元1250接着选择寄载由路径名指定内容的服务器。
[581]在步骤4118,接口单元1250确定客户端C2是否已经选择了与客户端C1相同的服务器。如果步骤4118的结果是否定的,则接口单元1250以满足客户端C2的请求的方式继续进行。在该点,图38中的流程图结束。可替代的,如步骤4120所示,如果步骤4118的结果是肯定的,则接口单元1250确定是否存在到被选择服务器的任何打开的连接。
[582]如果步骤1120的结果是肯定的,则接口单元1250以满足客户端C2的请求的方式继续进行。在该点,图38中的流程图结束。作为选择的,如步骤4120所示,如果步骤4118的结果是否定的,则接口单元1250使用在步骤4112中块尺寸域等于零的事实来确认客户端C1接收了客户端C1请求的所有消息数据。值得重点指出的是,接口单元1250不等待客户端C1发出FIN或RST命令,用于确定客户端C2已经完成连接或处于“思考时间”。
[583]在步骤4122,接口单元1250接着翻译请求,并使用客户端C1所使用的相同的连接来传输该被传输的请求到被选择的服务器。如步骤4124所示,接口单元1250从服务器S接收响应。如在步骤4126中所示,直到块尺寸域等于零,接口单元1250接着翻译该响应,并传输该被翻译的响应到客户端C2上。接口单元1250使用块尺寸域来确定客户端C2接收了客户端C2请求的所有消息数据。
[584]接着,在步骤4128中,接口单元1250关闭或断开与客户端C2的连接。最后,在步骤4130,接口单元1250关闭或断开与客户端C1的连接,并且在图38中的流程图结束。如上述结合图37所述的,结合图38描述的事件的序列仅仅用于示出的目的,并不用于限制。
[585]前述的实施例被特定描述为在接口单元内实施,例如接口单元1250,该接口单元连接到在群组中的服务器,用于从服务器上卸载连接处理开销。然而,它们也可被应用到其他类型的设备中,这些设备在客户端和服务器间的网络连接路径上。当网络话务量通过这样的设备时,它们都有机会卸载连接处理。这样的设备的一些实施例是:
-负载平衡器,在服务器群组中的一组服务器(本地的或地理上分布的)间分布客户端网络连接。
-带宽管理器,监控网络话务量和测量包流。
-防火墙,监控包并使得仅仅授权的包通过。
-路由器和交换器,也位于网络话务量的路径上。行业趋向可为在这些设备内集成附加的功能(例如负载平衡,带宽管理和防火墙功能)。
[586]实施例也可在计算机系统内实施,该计算机系统为网络间接的末端。在该实例中,可使用附加卡卸载在计算机系统内主要的处理元件。
3.集成高速缓存
[587]图39示出了根据实施例发生在设备内的事件序列的流程图5300,该设备提供集成高速缓存功能。然而,该实施例不被流程图5300提供的描述所限制。更正确的,此处提供的教导对于相关领域的技术人员是显而易见的,以及其他功能流程在本实施例的范围和精神之内。这些其他的功能流程可包括在集成高速缓存上的不同的处理、不同序列和其他变化。
[588]路程图5300的方法可在一个或多个装置中实施,这些装置可通信的耦合到数据通信网络。例如,流程图5300的方法可在设备中实施,例如上述关于图1A描述的设备1250,包括上述关于图27描述的软件结构3200。将继续参考这些示例性实施例描述流程图5300的方法。
[589]如在图39中示出的,流程图5300的方法在步骤5302开始,其中设备1250从一个客户端10接收加密包。在实施例中,设备1250被配置充当用于服务器30的代理SSL端点,解密从客户端10接收的加密包,并接着根据需要发送到那里用于进一步的处理,并基于在加密包中的地址信息最终发送到合适的资源。合适的资源可为,例如,任何服务器30或由设备1250管理的高速缓存。在步骤5304,设备1250在包上执行解密处理。
[590]在步骤5306,设备1250验证和/或授权从其接收加密包的客户端,该设备根据实施例被配置以实施AAA策略用于访问控制。
[591]在步骤5308,设备1250在解密的包上实施包处理,以减少由设备网络协议产生的连接开销的处理需求,该设备1250根据实施例被配置以执行特定类型的包处理。
[592]在步骤5310,设备1250解压缩与包相关联的请求,该设备根据实施例被配置以压缩和解压缩内容。在实施例中,请求包括web对象请求。
[593]在步骤5312,设备1250接着可以激活高速缓存功能,该设备接收用于对象的清除和/或授权的和/或解压缩和/或打包处理请求。由于在步骤5302,5304,5306,5308,5310中描述的先前的处理,高速缓存管理逻辑可基于清除和/或授权的和/或解压缩和/或打包处理请求做出是否对象已经被高速缓存或者可高速缓存的决定,并且因此比传统的高速缓存可以处理更广泛的请求队列,并比传统的方法更有效率的实施高速缓存。另外,由于高速缓存管理逻辑连同其他处理工作在内核空间内运行,它涉及到作为数据结构的相关对象,该数据结构带有涉及到这样的数据结构的同等状态,作为每个其他应用,并因此可在十分有效率的方式获得集成。
[594]如步骤5314所示,如果对象不是已经存在于高速缓存存储器中,设备1250发送请求到一个或多个服务器30上。然而,在请求被发送之前,可发生多个附加处理步骤。
[595]例如,在步骤5316,设备1250可选的执行连接处理以保证有效率的向服务器传输请求,并且在步骤5318,设备1250可选的做出负载平衡决定以保证请求被发送到最合适的服务器。同样的,在实施例中,在请求通过后端加密处理被发送到服务器之前,该请求被加密,因此提供端到端网络安全。在步骤5320,请求被发送到服务器。
[596]在步骤5322,设备1250接收服务器30之一返回的响应。如果后端加密如上所描述的被支持,设备1250解密来自服务器的响应。
[597]在步骤5324,设备1250压缩与来自服务器的响应相关联的对象。在实施例中,该对象包括web对象。
[598]在步骤5326,设备1250中的高速缓存管理逻辑以压缩形式在高速缓存中存储对象。由于处理能力,高速缓存管理逻辑可以以该方式存储被压缩的对象-一旦对象被存储在高速缓存中,可在没有执行如上描述的步骤5316,5318,5320,5322,5324,5326时,从高速缓存服务用于对象的未来的客户端请求。这通过在流程图5300中的直接连接从判断步骤5314到步骤5328的线指示。
[599]在步骤5328,在已经从服务器接收对象以后或者从高速缓存获取对象之后,设备1250在连接上执行包处理,以便更有效率的服务初始客户端的请求。在步骤5330,该响应对象接着被重加密并传送回客户端。
[600]以上描述的每个处理步骤发生在设备1250的内核/OS级。通过在内核/OS空间中的其他处理步骤中间以及与其结合而实施高速缓存,实施例可以带来附加的功能并提高速缓存的性能。
[601]根据实施例这样的集成允许高速缓存实施以执行附加功能,这些附加功能传统上超出高速缓存的操作功能。例如,实施例允许高速缓存与加密和/或被压缩的对象一起工作。
[602]通过实施例可获得附加功能的另一个实施例包括端对端被加密的HTTPS话务量的高速缓存。典型的,高速缓存仅仅存储来自服务器的未加密的HTTP响应。在一些情况中,某些高速缓存可支持从高速缓存到客户端SSL加密HTTPS的传送,但是在任何情况中,传统的高速缓存不能够高速缓存已经被服务器加密的响应,因此不能支持端到端(即服务器到客户端)的加密。典型的,当响应被服务器以HTTPS的形式加密时,高速缓存不能够解密这样的响应,并且因此不能够在它的高速缓存存储器中存储该响应。因为这个原因,传统的高速缓存不能在面对实施例中的端对端被加密的话务量中提供任何有益之处,该集成高速缓存设备用作用于SSL所加密的HTTPS话务量的两路终端端点。
[603]例如,在实施例中,集成高速缓存设备作为在服务器和设备之间的被加密的话务量的终端端点,和在设备和客户端之间的被加密的话务量的终端端点。在此种方式中,设备可以解密和高速缓存从服务器接收的SSL-加密响应,并且当向客户端服务这样的响应时,重加密这样的响应,并向请求客户端安全地传输该响应,因此启用端对端加密并因此提高了对更多的web话务量的高速缓存的适应能力。
[604]在实施例中,设备也可以在SSL虚拟专用网络(SSL VPN)中作为端点。更具体地,设备可以在专用数据通信网络中作为代理SSL端点用于任何资源,解密从客户端接收的被加密的包并接着基于在加密的包中的地址信息,向合适的目的服务器源发送。在客户端和网关之间建立的数据通信会话可被加密,网关用作本申请前述的附图中所描述的作为加密的端点。就像描述的,客户端可使用安全套接字(SSL)、IPSec或者一些其他的加密方法,以建立加密数据通信会话,通过该会话在客户端上的拦截机制直接将话务量导到网关,而使得客户端浏览器认为其直接与目的服务器或目的网络通信。在这样的实施例中,可在网关终止加密的数据通信会话,如此处所描述的也包括集成的高速缓存。在该方式中,高速缓存功能可被集成到SSL VPN功能中。
[605]网关也可执行任何对于请求可应用的AAA策略,并且因此网关将把高速缓存的对象只服务到合适的所验证的客户端,也仅允许用于授权访问特定高速缓存对象的用户的请求。这可能是因为高速缓存以这样的方式被集成:即在高速缓存见到任何特定请求之前,网关的访问控制策略被增强。因此,在不需要高速缓存本身执行验证和授权时,高速缓存的对象获得访问控制的利益。通过带有其他功能的高速缓存的集成,高速缓存本身变得更加有效率并且在控制通过现今的网络的数据的变化上更有效。实施例通过将高速缓存的功能益处引入到web话务量的更宽阔的队列,也可提高整个网络性能的效率。
[606]上述与实施例结合描述的集成模式的一些其他唯一的结果如下。一个结果是高速缓存预压缩的数据并将其传送到知道压缩的客户端的能力。另一个结果是高速缓存访问所控制的数据的能力。又一个结果是与外部高速缓存协同提供高速缓存的可量测性。由于高速缓存在网关与重定向和流量管理能力集成,所以外部高速缓存可被部署来提供高速缓存的第二层,从而显著扩展高速缓存的能力(以及益处)。通过实施例,高速缓存模块本身不用必须明确的执行高速缓存重定向策略,而生成该能力。
[607]在性能方面,如上所述通过集成高速缓存,高速缓存的处理器可从执行多个任务处理连接中解放出来,该高速缓存,在网络上作为节点,通常被要求执行,并且因此可以以它们的最高性能级别执行自身的高速缓存功能。事实上,通过启用压缩数据的高速缓存,高速缓存可以更有效率的运行,并允许用户实现更高的性能。
[608]就像在该申请中之前提及的,作为高速缓存与其他网络服务和技术结合的方式的结果产生效率,上述技术包括负载平衡技术、加密、AAA、压缩和其他类型的加速以及包处理。结果,避免通过集成的传统模式而产生的处理复制和其他无效率。通过不需要的拷贝和上下文切换引起的这种无效率,由于通过设备接收的每个对象必须拷贝到消息并接着在被相关应用处理之前进入处理器存储器而产生。该请求接着必需拷贝回引入附加的存储器拷贝的高速缓存处理的对象或包级别。相反,实施例在OS或内核级别实施集成,因此启用高速缓存在对象上操作作为数据结构,其中高速缓存具有和涉及到并处理这样的数据结构的其他应用和/或处理相等的状态,并且当所有的处理与相同的数据结构一起工作时,此处对这样的附加的存储器拷贝的需要被消除。结果是更有效率的集成。
a.在数据通信网络中具有主动验证的高速缓存
[609]由于web对象能够随着时间改变,每个潜在的可高速缓存的对象被认为具有有用的寿命或“新鲜度(freshness)”,新鲜度的概念指这样的事实:即初始产生内容的应用服务器也确定可被高速缓存服务的该对象的时间周期,该高速缓存可以存储这样的对象-高速缓存必需能够确定存储在其存储器中的对象的副本是否仍然是“新鲜”,或者高速缓存是否需要从源服务器获取对象的新副本。实施例实现保证对象的新鲜度的新方法。许多传统的高速缓存的实现试图通过从在预定表上的源取来内容而保持高速缓存的内容的新鲜。基于一个或两个下述方法,从源取来内容发生在由高速缓存管理器建立时:或者在(i)正常指定的间隔或者(ii)当内容将终止时
[610]存在与上述通常应用的方法相关联的典型的两个问题。第一,由于服务器需要向请求刷新的高速缓存提供内容(无论这样的更新发生在指定的时间间隔或者内容将终止时),不考虑这样的内容是否最终被服务到客户端,则不必需的处理负载强加在源服务器上。第二,由于高速缓存需要跟踪必须被刷新的元件以及它们必须被刷新的时间,高速缓存基于产生的额外处理导致附加的处理器负载。
[611]根据实施例的高速缓存使用新的预取得(pre-fetching)方式来解决上述问题。内容的预取得不依照之前定义的方式或刚刚前述的内容的终止前而执行。代替的,实施例仅仅当下述两个条件都满足时才执行预取得:(1)客户端已经做出对指定内容的请求,并且(2)该内容‘将终止’。
[612]该方法处理上述描述了两个问题。仅仅在这样的内容被主动访问时,主动的重新生效更可能产生对于来自源服务器的内容的更新请求。这最小化了源服务器上的‘不必需’负载的数量-如上讨论的,此处高速缓存请求最终没有传送到客户端(或者依赖于高速缓存的敏感性,只是很少的获得传输)的对象的更新,该高速缓存正无效率地使用自身资源和源服务器的资源。实施例避免无效率的使用高速缓存和服务器资源,该资源仅仅被主动访问的内容请求。由于相同的原因,该方法也减少了用于预取得的带宽,因此可比传统的方法更有效率的使用网络资源。
[613]进一步的,实施例使用包括在高速缓存对象自身中的终止信息以确定是否请求来自源服务器的对象的更新。这样的终止信息通常包括在相关对象的头中。该实施例不像许多传统的方式,因此避免了为了获取而关注任一附加信息的无效率,传统的方式需要高速缓存保持跟踪进度表用于更新的表。使用‘基于需要的’预取得技术也增强了预取得的内在益处。这个技术减少了频繁访问的对象的高速缓存未命中的数量,是由于对象恰好在终止之前很可能经历主动的重新有效。该技术也阻止了到源服务器的话务量蜂涌,当大量要求的大规模响应过期时发生话务量蜂涌。在传统的方法中,由于高速缓存内容已经终止,对于这样内容的所有请求不能得到高速缓存并且被发送回源服务器。作为对比,在一个实施例中,高速缓存存储器的内容通常仅仅在终止之前被刷新,并且因此当高速缓存正被更新时而发生高速缓存未命中的情况将更少发生。
[614]在一个实施例中,在内容被确定将终止的情况下,在终止之前,通过调整持续期间的长度,能够控制预取得的主动性,以及需要由相关对象的高速缓存触发刷新的客户端请求的数量。
b.使用“负单元”优化大的不可高速缓存的响应的处理
[615]根据实施例,高速缓认出可并且不存储大于指定尺寸的对象,用于提高对象成功率(hit radio)。高速缓存典型的有专用于存储高速缓存的对象的受限的存储器空间,并且因此超过分配的存储器空间的特定响应作为不可高速缓存和不被高速缓存所存储而最终被拒绝。对于传统的高速缓存,高速缓存试图在其高速缓存存储器中存储大的响应,并且高速缓存一旦识别到该响应超过预定的最大尺寸,则仅异常中断响应的存储。每次在每种情况中高速缓存从服务器接收用于这样的响应的请求时,传统的高速缓存将重复的试着高速缓存该大的响应,该高速缓存将需要确定超过存储器空间的对象是不可高速缓存的,因此,这是明显无效率的方法。
[616]根据实施例,高速缓存使用最优化以避免在存储这样的响应中花费精力。任何时候高速缓存探测到由于响应的尺寸该响应变得不可高速缓存时,该高速缓存在称为“负单元”的数据结构中存储关于相应请求的符号。该符号指示请求是不可高速缓存的。在预定日期中,当客户端请求相同的对象时,该请求与关于存储在数据结构中的第一请求的符号相匹配。基于匹配,高速缓存将不试图存储该响应,代替的,该请求将完全旁路高速缓存。
[617]不存在需要指定负单元保存在高速缓存中的持续时间的用户配置。事实上,用户甚至不知道该特定机制被实行。在实施例中,高速缓存使用正常的终止信息,将应用该信息高速缓存大的响应,来高速缓存关于该响应的“负信息”。
4.客户端侧加速
[618]在一个实施例中,客户端侧加速程序可执行一个或多个加速技术以加速、增强或以其他方法改进客户端与服务器的通信和/或对服务器的访问,例如访问服务器提供的应用。现在看图40A,描述有加速程序6120的客户端6205。总的来说,客户端6205在计算设备6100上操作,该计算设备6100拥有带有内核模式6202以及用户模式6202的操作系统,以及带有一个或多个层6210a-6210b的网络堆栈6210。客户端6205可包括先前讨论的任何和所有的客户端10。虽然只示出了一个客户端6205,但任何数量的客户端10可包括客户端6205。客户端6205可以已经安装和/或执行一个或多个应用6220a-6220n。在一些实施例中,一个或多个应用6220a-6220n可通过网络堆栈6210与网络通信。应用6220N之一也可包括第一程序6222,例如,可用于一些实施例中来安装和/或执行加速程序6120的程序。
[619]客户端6205的网络堆栈6210可包括任何类型和形式的软件、或硬件或其组合,用于提供与网络的连接和通信。在一个实施例中,网络堆栈6210包括用于网络协议组的软件实现。网络堆栈6210可包括一个或多个网络层,例如为本领域技术人员所公认和了解的开放式系统互联(OSI)通信模型的任何网络层。同样的,网络堆栈6210可包括协议的类型和形式,这些协议用于OSI模型的任何以下层:1)物理链路层,2)数据链路层,3)网络层,4)传输层,5)会话层,6)表示层,以及7)应用层。在一个实施例中,网络堆栈310可包括在因特网协议(IP)的网络层协议上的传输控制协议(TCP),通常称为TCP/IP。在一些实施例中,可在Ethernet协议上实施TCP/IP协议,Ethernet协议可包括IEEE广域网(WAN)或局域网(LAN)协议的任何族,例如被IEEE802.3覆盖的这些协议。在一些实施例中,网络堆栈6210包括任何类型和形式的无线协议,例如IEEE 802.11和/或移动因特网协议。
[620]考虑基于TCP/IP的网络,可使用任何基于TCP/IP的协议,包括消息应用编程接口(MAPI)(email)、文件传输协议(FTP)、超文本传输协议(HTTP)、通用因特网文件系统(CIFS)协议(文件传输)、独立计算框架(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议,以及IP语音(VoIP)协议。在另一个实施例中,网络堆栈210包括任何类型和形式的传输控制协议,诸如修改的传输控制协议,例如事务TCP(T/TCP),带有选择确认的TCP(TCP-SACK),带有大窗口的TCP(TCP-LW),拥塞预测协议,例如TCP-Vegas协议,以及TCP电子欺骗协议。在其他实施例中,任何类型和形式的用户数据报协议(UDP),例如IP上UDP,可被网络堆栈6210使用,诸如用于语音通信或实时数据通信。
[621]另外,网络堆栈6210可包括支持一个或多个层的一个或多个网络驱动器,例如TCP驱动器或网络层驱动器。网络层驱动器可被包括作为计算设备100的操作系统的一部分或者计算设备6100的任何网络接口卡或其它网络访问部件的一部分。在一些实施例中,网络堆栈6210的任何网络驱动器可被定制、修改或改调整以提供网络堆栈6210的定制或修改部分,支持此处描述的任何技术。在其他实施例中,设计并构建加速程序6120与网络堆栈6210协同操作或工作,上述网路堆栈6120由客户端205的操作系统安装或以其他方式提供。
[622]网络堆栈6210包括任何类型和形式的接口,用于接收、获得、提供或以其他方式访问涉及客户端6205的网络通信的任何信息和数据。在一个实施例中,与网络堆栈6210的接口包括应用编程接口(API)。接口也可包括任何函数调用、钩子或过滤机制,事件或回调机制、或任何类型的接口技术。网络堆栈6210通过接口可接收或提供任何类型和形式的数据结构,例如对象,涉及到网络堆栈6210的功能或操作。例如,数据结构可包括涉及到网络包或一个或多个网络包的信息和数据。在一些实施例中,数据结构包括在网络堆栈6210的协议层处理的网络包的一部分,例如传输层的网络包。在一些实施例中,数据结构6225包括内核级别数据结构,而在其他实施例中,数据结构6225包括用户模式数据结构。内核级别数据结构可包括在内核模式6202中操作的网络堆栈6210的部分获得或涉及的数据结构,或者运行在内核模式6202中的网络驱动器或其他软件,或者通过在操作系统的内核模式中运行或操作的服务、处理、任务、线程或其他可执行指令获得或接收的任何数据结构。
[623]此外,网络堆栈6210的一些部分可在内核模式6202中执行或操作,例如,数据链路或网络层,而其他部分在用户模式6203中执行或操作,例如网络堆栈6210的应用层。例如,网络堆栈的第一部分6210a可为应用6220a-6220n提供对网络堆栈6210的用户模式的访问,而网络堆栈的第二部分6210a提供对网络的访问。在一些实施例中,网络堆栈的第一部分6210a可包括网络堆栈6210的一个或多个更上层,例如任何层5-7。在其他实施例中,网络堆栈6210的第二部分6210b包括一个或多个较低的层,例如任何层1-4。网络堆栈6210第一部分6210a和第二部分6210b的每个可包括网络堆栈6210的任何部分,在任意一个或多个网络层,在用户模式6203、内核模式6202,或其组合,或在网络层的任何部分或者指向网络网络层的接口,或指向用户模式6203和内核模式6203的任何部分或者接口。
[624]本发明的加速程序6120可以包括软件、硬件或软件和硬件的任何组合。在一些实施例中,加速程序6120包括任何类型和形式的可执行指令,该可执行指令被构造并设计以执行或者提供如此处所描述的功能和操作。在一些实施例中,加速程序6120包括任何类型和形式的应用、程序、服务、处理、任务或线程。在一个实施例中,加速程序6120包括驱动器,例如被设计和构造与网络堆栈6210协同工作和连接的网络驱动器。加速程序6120的可执行指令的逻辑、功能和/或操作可执行一个或多个以下的加速技术:1)多协议压缩6238,2)传输控制协议池6224,3)传输控制协议多路复用6226,4)传输控制协议缓冲6228,以及5)通过高速缓存管理器的高速缓冲6232,下面将进一步详细的描述这些技术。另外,加速程序6120可执行由客户端6205接收和/或传输的任何通信的加密6234和/或解密。在一些实施例中,加速程序6120也可在客户端6205和另一个计算设备6100,例如服务器30之间执行隧穿。在其他实施例中,加速程序6120向服务器30提供虚拟专用网络连接。
[625]在一些实施例中,加速程序6120在网络堆栈6210的一个或多个层操作,例如传输层。在一个实施例中,加速程序6120包括过滤器驱动器、钩子机制,或任何类型和形式的合适的网络驱动器接口,连接网络堆栈的传输层,例如通过传输驱动器接口(TDI)。在一些实施例中,加速程序6120连接到第一协议层,例如传输层和另一协议层,例如在传输协议层上的任何层,例如,应用协议层。在一个实施例中,加速程序6120可包括遵守网络驱动器接口规范(NDIS)的驱动器,或NDIS驱动器。在另一个实施例中,加速程序6120可包括最小过滤器或者迷你端口驱动器。在一个实施例中,加速程序6120,或其部分,在内核模式6202中操作。在另一个实施例中,加速程序6120,或其部分,在用户模式6203中操作。在一些实施例中,加速程序6120的部分在内核模式6202操作,而加速程序6120的另一部分在用户模式6203操作。在其他实施例中,加速程序6120在用户模式6203操作,但连接到内核模式驱动器,操作系统的处理、服务、任务或部分,例如获得内核级别数据结构6225。在进一步的实施例中,加速程序6120为用户模式应用或程序,例如应用6220a-6220n。
[626]加速程序6120可以对网络堆栈6210的任何其他协议层透明的方式操作协议层或与协议层连接。例如,在一个实施例中,对于传输层之下的任何协议层透明的,例如网络层和传输层之上的任何协议层例如会话、表示或应用层协议,加速程序6120操作网络堆栈6210的传输层或与之连接。这允许网络堆栈6210的其他协议层按照需要操作并且无需由于使用加速程序6120的修改。同样的,加速程序6120可以与传输层连接,以加速通过由传输层实施的任何协议提供的任何通信,例如TCP/IP上的应用层协议。
[627]进一步的,以对任何应用6220a-6220n、客户端6205的用户以及与客户端6205通信的例如服务器的任何其他计算设备透明的方式,加速程序6120可以操作网络堆栈6210或与网络堆栈6210连接。以诸如加速程序6120在没有修改应用6220a-6220n时可以加速应用6220a-6220n的任意方式,加速程序6120可在客户端6205上安装和/或执行。在一些实施例中,客户端6205的用户或与客户端6205通信的计算设备没有意识到计算程序6120的存在、执行或操作。同样的,在一些实施例中,加速程序6120的安装、执行和/或操作对应用6220a-6220n、客户端6205的用户、例如服务器的另一个计算设备或被加速程序6120连接的协议层之上和/或之下的任何协议层透明。
[628]在一些实施例中,加速程序6120以集成方式或样式执行一个或多个加速技术6224、6226、6228、6232。在一个实施例中,加速程序6128包括任何类型和形式的机制用于在网络堆栈6210的传输协议层拦截、钩住、过滤或接收通信。通过在传输层拦截客户端6205的网络包,并且在传输层通过例如内核级别数据结构6225的数据结构连接到网络堆栈6210,加速程序120可在网络包上执行涉及传输层的加速技术,例如传输控制协议(TCP)缓冲、TCP池化以及TCP多路复用。另外,加速程序6210可在任何协议或多协议中执行压缩6225,上述协议作为传输层协议的网络包的有效载荷被携带。
[629]在一个实施例中,加速程序6120使用内核级别数据结构6225提供对一个或多个网络包的任意部分的访问,例如,网络包包括来自于客户端6205的请求或者来自服务器的响应。在一个实施例中,可通过加速程序6120使用内核级别数据结构,以执行期望的加速技术。在一个实施例中,当使用内核级别数据结构6225时,加速程序6120运行在内核模式6202中,而在另一个实施例中,当使用内核级别数据结构6225时,加速程序6120运行在用户模式6203中。在一些实施例中,内核级别数据结构可被拷贝或传递到第二内核级别数据结构,或任何期望的用户级别数据结构。虽然加速程序6120在图40A中一般的描述为操作在用户模式6203中的第一部分和操作在内核级别6202中的第二部分,但在一些实施例中,加速程序6120的任何部分可以运行在用户模式6203或内核模式6202中。在一些实施例中,加速程序6120可只在用户模式6203中操作,而在其他实施例中,加速程序6120可只在内核模式6202中操作。
[630]另外,通过在传输层拦截网络堆栈6210或通过内核级别数据结构6225获得对网络包的访问,加速程序6120可在单独的接口点或在单独的执行点或执行加速程序6120的任何可执行指令的时间,执行或应用多个加速技术。例如,在一个实施例中,在加速程序6120的功能或指令集中,可执行多个加速技术,例如通过调用一组可执行指令,该指令被构造和设计以执行加速技术。在一些实施例中,加速程序6120在一个接口点、执行地点或者一组指令中调用一个或多个应用编程接口(API)到任何程序、服务、处理、任务、线程或可执行指令,其被设计和构造以提供1)多协议压缩6238,2)传输控制协议池6224,3)传输控制协议多路复用6226,4)传输控制协议缓存6228,以及5)通过高速缓存管理器6232的高速缓存,以及在一些实施例中的加密6234。
[631]通过在加速程序6120的可执行指令中的一个地点或位置或者在网络堆栈6210的一个例如传输层的协议层执行多个加速技术,可更有效率和有效的执行这些加速技术的集成。在一个方面,可减少在处理之间的上下文切换的数量,以及减少使用的数据结构或者存储器必需的或者在其他方式中使用的数据结构的副本的数量。另外,在任何加速技术之间的同步和通信可被更有效率的执行,例如以更紧密耦合的方式,在加速程序6120的可执行指令集中。同样的,关于要执行的加速技术顺序的任何逻辑、规则、功能或操作,以及可在技术间共享或传输的数据和信息可被更有效率的执行。加速技术6120可在传输层拦截TCP包,通过内核级别的数据结构6225获得TCP包的有效载荷,以及之后以期望的顺序执行期望的加速技术。例如,网络包可首先被压缩,接着被高速缓存。在另一个实施例中,通过被缓存、被池化和的/或到服务器的TCP连接的多路复用,可通信被压缩的高速缓存数据。
[632]在一些实施例中,仍旧看图40A,可使用第一程序6222自动、静默的、透明的或以其他方式安装和/或执行加速程序6120。在一个实施例中,第一程序6222包括插件部件,例如ActiveX控件或Java控件或脚本,其由应用6220a-62220n载入并执行。例如,第一程序包括被web浏览器应用6220运行和载入的ActiveX控件,例如在存储器空间或应用6220的上下文中。在另一个实施例中,第一程序6222包括可执行指令组,该可执行指令组被例如浏览器的应用6220a-62220n载入并执行。在一个实施例中,第一程序6222包括被设计和构造的程序以安装加速程序6120。在一些实施例中,第一程序6222通过网络从另一个计算设备获得、下载、或接收加速程序6120。在另一个实施例中,第一程序6222是用于客户端6205的操作系统上安装程序或者安装程序的插件或者播放管理器,例如网络驱动器。
[633]在其他实施例中,第一程序6222可包括此处在B部分描述的任何和所有功能。在一个实施例中,第一程序6222可包括收集代理404。在另一个实施例中,第一程序可包括用于安装收集代理的程序。在另一个实施例中,第一程序6222可包括计算环境15。在一个实施例中,第一程序6222包括用于安装诸如执行环境或者虚拟执行环境的计算机环境。在一个实施例中,第一程序6222可包括如前所述的应用流客户端442。在另一个实施例中,第一程序6222可包括将在客户端10上执行的应用。
[634]在其他实施例中,第一程序6222可包括加速程序6120的功能、操作和逻辑的部分,以推动或执行此处描述的加速程序6120的任何功能、操作和逻辑,例如任何加速技术。在一些实施例中,第一程序6222用于建立连接,例如传输层连接,或与设备或服务器的通信会话,例如加密套接字协议层(SSL)通信会话。在一个实施例中,第一程序6222用于建立或推动虚拟专用网络连接和通信会话。
[635]加速程序6120或客户端6205的高速缓存管理器6232如图40A所描述的可包括软件、硬件和软件和硬件的任何组合,以提供对任何形式和类型的内容的高速缓存访问、控制和管理,例如由服务器30服务的对象或动态产生对象。被高速缓存管理器6232处理和存储的数据、对象或内容可包括任何格式的数据,例如标记语言或通过任何协议的通信。在一些实施例中,高速缓存管理器6232复制存储在其他地方的原始数据或先前计算、产生或传输的数据,其中相对于读高速缓冲存储器元件,需要更长的访问时间以取得、计算或以其他方式得到。一旦数据被存储在高速缓冲存储元件中,通过访问高速缓存的副本而不是重新获得或重新计算原始数据而可做出未来的使用,因此而减少了访问时间。在一些实施例中,高速缓冲存储器元件可包括客户端6205的存储器中的数据对象。在其他实施例中,高速缓冲存储器元件可包括比客户端6205以其他方式使用的存储器有更快访问时间的存储器。在另一个实施例中,高速缓冲存储器元件可包括客户端6205的任何类型和形式的存储元件,例如硬盘的一部分。在又一个实施例中,高速缓存管理器6232可使用存储器、或用于高速缓存数据、对象和其他内容的处理单元的任何部分和组合。
[636]此外,高速缓存管理器6232可包括任何逻辑、功能、规则或操作以执行此处描述的技术的任意实施例。例如,基于无效时间周期的终止,或者从客户端6205a-6205n或者服务器接收到命令,高速缓存管理器6232包括用于无效对象的逻辑或功能。在一些实施例中,高速缓存管理器6232可作为程序、服务、处理或任务操作执行在内核空间6202中,并且在其他实施例中,在用户空间6203中。在一个实施例中,高速缓存管理器6232的第一部分在用户空间6203中执行,而第二部分在内核空间6202中执行。在一些实施例中,高速缓存管理器6232可包括任何类型的通用处理器(GPP),或任何其他类型的集成电路,例如现场可编程门阵列(FPGA),可编程逻辑设备(PLD),或者专用集成电路(ASIC)。
[637]加速程序6120或客户端6205的加密引擎6234包括任何逻辑、商业规则、功能或操作,用于控制任何安全相关协议的处理,例如SSL或TLS,或任何与其相关的功能。例如,加密引擎6234加密或解密与客户端6205通信的网络包,或其任何部分。加密引擎6234也可代表客户端6205建立或设立SSL或TLS连接。同样的,加密引擎6234提供SSL处理的卸载和加速。在一个实施例中,加密引擎6234使用隧道协议提供客户端6205和例如服务器的另一个计算设备之间的虚拟专用网络。
[638]现在仍看图40A,加速程序6120或客户端6205的多协议压缩引擎6238包括任何逻辑、商业规则、功能或操作,用于压缩网络包的一个或多个协议,例如被客户端6205的网络堆栈6210使用的任何协议。例如,多协议压缩6238可包括压缩和解压缩效用,包括Gzip压缩和解压缩,微分压缩和解压缩,或用于压缩和解压缩通过网络传输的数据的任何其他私人拥有或公共可用的效用。在一个实施例中,多协议压缩引擎6238双向压缩在客户端6205和例如服务器的另一个计算设备之间的任何基于TCP/IP的协议,包括消息应用编程接口(MAPI)(email)、文件传输协议(FTP),、超文本传输协议(HTTP)、通用因特网文件系统(CIFS)协议(文件传输)、独立计算结构(ICA)协议、远程桌面协议(RDP)、无线应用协议(WAP)、移动IP协议,以及IP上的语音(Voice Over Protocol)(VoIP)协议。在其它实施例中,多协议压缩引擎238提供基于超文本标记语言(HTML)的协议的压缩,并且在一些实施例中,提供任何标记语言的压缩,例如可扩展标记语言(XML)。同样的,多协议压缩引擎3238通过桌面客户端,例如MicosoftOutlook和非web瘦客户端,例如,由企业应用像Oracle,SAP和Siebel,甚至例如便携式计算机的移动客户端启动的任何客户端,来加速用户访问应用的性能。
[639]如下述将进一步详细描述的,加速程序6120也执行缓冲、池化和多路复用的传输协议层加速技术。同样,加速程序6120包括任意类型和形式的可执行指令,该指令具有来执行此处描述的任何这些技术的逻辑、规则、功能和操作。加速程序120在网络堆栈210的传输层拦截、控制和管理应用6220a-6220n通过网络堆栈6210做出的任何传输层应用编程接口(API)调用。加速程序6120以透明的方式响应客户端6205的任何请求,以便客户端6205像希望的那样从网络堆栈6210的传输协议层接收响应。例如,在一个实施例中,加速程序6120拦截在客户端6205的网络堆栈6210中的请求,以与诸如服务器的另一个计算设备建立传输层连接,并可使用由加速程序6120建立的一个或多个传输层连接的池来响应请求。在另一个实施例中,加速程序6120通过建立的、被第二应用6220b使用的传输层连接多路传输来自第一应用6220a的请求。
[640]在一些实施例中,加速程序6120包括在网络传输之前在客户端6205缓冲或保持客户端6205通信的机制。例如,从网络,如从服务器,接收的通信被客户端耗用的速度少于在网络上被客户端6205传输的通信产生的速度。同样的,客户端6205可以更大的速度发送更多的请求到服务器30,该速度大于客户端6205可消耗和处理的来自这样的请求的响应。加速程序6120可拦截通信,并且确定是否消耗的速度和/或客户端6205的产生的速度低于预定阈值,例如由用户、客户端6205或另一个计算设备配置的阈值。如果确定的速度低于期望的阈值,加速程序6120向客户端的存储器元件中存储拦截的通信,直到客户端6205的性能增加消耗和/或产生的速度,使其等于或高于预定或期望的阈值。在该点,加速程序6120在网络上传输客户端的通信。同样的,基于客户端6205的通信的消耗和/或产生性能,提供客户端侧机制以减缓客户端6205的通信。
[641]在图40A中描述的应用6220a-6220n可为任何类型和/或形式的应用,例如任何类型和/或形式的web浏览器、基于web的客户端、客户端-服务器应用、瘦客户端计算客户端、ActiveX控件或者Java程序、或其他类型和/或形式的可执行指令,该可执行指令可以在客户端6205上执行或通过网络6204通信。应用6220a-6220n可使用任何类型的协议,并且它可为,例如,HTTP客户端、FTP客户端、Oscar客户端或Telnet客户端。在一些实施例中,应用6220a-6220n使用远程显示或表示级协议。在一个实施例中,应用6220a-6220n是ICA客户端,由Florida,FortLauderdale有限公司的CitriX Systems开发。在其它实施例中,应用6220a-6220n包括远程桌面(RDP)客户端,由Washington,Redmond的Microsoft公司开发。在其他实施例中,应用6220a-6220n包括任何类型的涉及到VoIP通信的软件,例如软IP电话。在进一步的实施例中,应用6220a-6220n包括涉及到实时数据通信的任何应用,例如用于流式传输视频和/或音频的应用。
[642]图40B示出了设备1250的示例性体系结构,该体系结构与图27描述的设备的体系结构相类似。总的来说,设备1250包括硬件层6206和被分为用户空间6203和内核空间6202的软件层。硬件层6206提供硬件元件,在内核空间6202和用户空间6203中的程序和服务在该硬件元件上被执行。硬件层6206也提供结构和元件,这些结构和元件允许在内核空间6202和用户空间6203内的程序和服务既在内部又在外部与设备1250通信数据。软件层包括程序、服务、处理、任务、线程和其他可执行指令以向设备1250提供逻辑、功能和操作。
[643]设备1250包括应用加速确定机制6275以及客户端侧加速程序6120。应用加速确定机制6275包括软件、硬件或软件和硬件的任何组合。在一些实施例中,应用加速确定机制6275包括任何类型和形式的可执行指令,例如拥有逻辑、功能、规则的程序、服务、处理、任务或线程,或者用于确定在客户端6205和/或服务器30上执行的应用6220a-6220n是否可被加速或在客户端6205和服务器30间的访问或通信可被加速的操作。在一个实施例中,应用加速确定机制6275使用数据库以确定是否应用6220a-6220n可被加速。例如,数据库可将应用6220a-6220n与可加速应用6220a-6220n的一个或多个加速技术相关联,该数据库可进一步的基于客户端6205和/或服务器30的用户、类型、形式、位置、处理能力和其他特征。在一些实施例中,应用加速确定机制6275使用在存储器中的查询表、文件、数据结构或对象,包括识别是否通过名称、类型或种类可由加速技术加速应用6220a-6220n的信息。在其他实施例中,设备1250和/或应用加速确定机制6275包括配置机制,例如用户接口、图形、命令行或其他以接收用户输入来识别、指定或配置是否可加速应用6220a-6220n或访问服务器30。
[644]在一些实施例中,应用加速确定机制6275从服务器30请求信息,该信息识别是否应用6220a-6220n可被加速,并且在进一步的实施例中,通过何种加速技术以及用于何种类型和形式的客户端6205。在又一个实施例中,应用加速确定机制6275包括历史信息数据库,关于在客户端6205和服务器30之间的应用6220a-6220n的性能,并带有或不带有一个或多个客户端侧加速技术,以提供比较和启发式信息的数据库,该信息关于应用6220a-6220n使用任何客户端侧加速技术在何处被加速,或可以被加速。例如,设备1250可以从客户端6205获取涉及到应用6220a-6220n的性能的网络相关性能信息。同样的,基于网络6204的变换操作和性能特征或受其影响,可调整应用6220a-6220n是否能够被加速的决定。
[645]在一个方面,应用6220a-6220n或者不可以被加速,或者虽然可以加速但该加速没有效率,或非常小。在一个实施例中,应用6220a-6220n的类型和形式不能使用协议或不能使用合适的方式与加速技术通信。在另一个实施例中,应用6220a-6220n通信的协议或方式可允许执行加速技术,但基于客户端6205、设备1250或服务器30的任何可操作的或性能特征,加速技术将没有效率或者只能提供非常小的加速。同样的,基于是否应用6220a-6220n能够被加速或者是否加速将符合性能提高所期望的预定阈值,设备加速确定机制6275可决定应用6220a-6220n不期望被加速。
[646]在另一个方面,设备6250在设备1250的存储器元件中存储客户端侧加速程序6120,例如由设备的硬件层6206提供的存储器。在一个实施例中,设备1250动态的通过应用加速确定机制6275决定将被客户端6205使用的或者正使用的应用6220a-6220n可被在客户端6205上正执行的加速程序6120加速,并且从设备1250的存储器向客户端6205传输或者以其他方式通信加速程序6120。在另一个实施例中,设备1250决定在客户端6205和服务器30之间的通信可被在客户端6205上正执行的加速程序6120加速,并向客户端6205传递加速程序6120。在一些实施例中,设备1250从另一个计算设备6100,例如服务器30,接收、下载或获得加速程序6120。
[647]在一些实施例中,加速程序6120从设备1250的策略引擎3236接收、下载或获得策略信息。在其他实施例中,加速程序6120执行和操作策略引擎,或者独立于设备1250的策略引擎,或者与之关联。在其他实施例中,包引擎3240,或其部分,可在客户端6205上被操作,例如加速程序6120的部分。同样的,如上描述的,加速程序6120可在客户端6205上根据包处理定时器3242操作。在一个实施例中,加速程序6120在执行中的一个点可执行集成的加速技术,并响应由包处理定时器3242提供的粒度时间间隔。
[648]在一些实施例中,健康监控程序3216可检查和确定在任何客户端6205上的任何客户端侧加速程序6120的状态、错误或历史,上述客户端6205与设备1250通信,或设备1250向客户端6205传递加速程序6120。在一些实施例中,健康监控程序3216,或其部分在客户端6205上执行。
[649]现在看图41A,描述了方法6300的实施例,该方法由设备1250动态提供加速程序6120,并自动通过客户端6205安装和执行加速程序6120。总的来说,在步骤6310,设备1250从客户端6205拦截请求以与服务器建立通信会话。在步骤6315,设备1250向客户端6205传输加速程序6120,用于客户端6205自动安装和执行。在步骤6320,一旦接收到加速程序6120,客户端6205自动执行或施行加速程序6120的静默(silent)安装。在步骤6325,一旦完成加速程序6120的安装,客户端6205在网络堆栈6210中自动执行加速程序6120,以拦截客户端6205和服务器30之间的通信。在步骤6330,加速程序6120执行任意的多个加速技术,并可加密和/或解密通信。
[650]在进一步的细节中,在步骤6310,设备1250可拦截或以其他任何合适的方法和机制从客户端6205接收请求,以与服务器30建立通信会话。在一个实施例中,设备1250的包引擎6240从客户端6205拦截通信。在其他实施例中,设备1250与客户端6205例如与加速程序6120,建立第一传输层连接,以及代表客户端6205与服务器6205建立第二传输层连接。同样的,设备1250可接收、拦截或以其他方式获得传输到服务器30的任何客户端的通信。在一些实施例中,设备1250拦截用于客户端6205的请求,以与服务器30建立传输层连接。在其他实施例中,设备1250拦截请求用于通过传输层连接之上的任何协议层建立通信会话,例如HTTP的应用层协议。使用在客户端6205的网络堆栈6210的任何协议层建立通信会话的请求,可实行该方法的实施例。
[651]在步骤6315,设备1250向客户端6205传输加速程序6120。设备1250可在建立由客户端6205请求的通信会话之前、之中或之后的任何点传输加速程序6120。在一个实施例中,设备1250响应于拦截客户端请求向客户端6205传输加速程序6120。在另一个实施例中,设备1250向服务器30转发请求,并向客户端6205传输加速程序6120。在一些实施例中,设备1250与服务器30建立通信会话,并且一旦通信会话建立,设备1250传输加速程序6120。在又一个实施例中,设备1250执行客户端6205或客户端6205的用户的验证和/或授权,并且如果被验证的用户或客户端6205被授权,则设备1250向客户端6205传输加速程序6120。在一个实施例中,设备1250向服务器30转发客户端的请求,用于验证和/或授权,并且如果服务器30验证和/或授权客户端的请求,设备1250向客户端6205传输加速程序6120。
[652]在一些实施例中,设备1250传输来自设备1250的存储器的加速程序。在其他实施例中,设备从服务器30请求加速程序6120,并向客户端6205转发接收的加速程序1620。在另一个实施例中,服务器30向客户端6205传输加速程序6120。在一个实施例中,设备1250向客户端6205传输统一资源定位器(URL),用于客户端6205获得、下载或接收加速程序。在一些实施例中,URL识别在设备1250的存储器中的加速程序6120的定位,而在其他实施例中,URL识别在服务器30上的加速程序6120,例如提供加速程序6120用于下载的web服务器。在一个实施例中,加速程序6120被存储在客户端6205上,并且设备1250向客户端6205传输键值,例如加密或许可键值,用于客户端6205安装和使用存储在客户端6205上的加速程序6120。在一些实施例中,设备1250向客户端6205传输将被用于在客户端6205上安装和执行加速程序6120的任何文件、配置、数据或其他信息。
[653]在一个实施例中,加速程序6120被设计和构建以便由客户端6205自动安装和执行。加速程序6120可包括引起加速程序6120被客户端6205的操作系统登记和识别的任何文件、著录项、配置、数据或指令,上述操作系统可与任何类型或形式的操作系统一致。在一个实施例中,例如服务器或设备的另一个计算设备,向客户端6205传输加速程序,并且客户端6205自动安装和执行加速程序6120。在一个实施例中,加速程序6120被设计和构建为即插即用(PnP)设备,以被加入运行的计算设备6100中。在一些实施例中,加速程序6120为自安装可执行程序,例如包括安装程序程序和加速程序6120的可执行程序。在其他实施例中,加速程序6120可包括多个文件,例如安装包或安装下载,例如需要在客户端6205的操作系统中登记和安装加速程序6120的文件。例如,加速程序6120包括包括.inf文件和.sys文件。.inf文件在操作系统的Microsoft Windows族中提供Windows Setup,该.inf文件带有建立设备需要的信息,例如用于设备的有效逻辑配置的列表,以及与设备相关联的驱动器文件名称。在一些实施例中,.inf文件可包括自动运行.inf文件,该自动运行.inf文件为配置文件,告诉或通知操作系统哪个可执行程序开始,以及涉及到开始可执行程序的任何配置信息。在一个实施例中,.sys文件为驱动器文件,包括加速程序6120或其部分。
[654]在步骤6320,客户端6205自动安装加速程序6120。加速程序6120可以与客户端6205的操作系统相一致的任何合适的方式被安装。在一个实施例中,一旦接收到加速程序6120,客户端6205安装加速程序6120。在一些实施例中,客户端6205自动施行或执行加速程序6120的静默安装。在一个实施例中,静默安装的执行对用户或者客户端6205的应用透明。在其他实施例中,加速程序6120的静默安装不需要重新启动或重新开始客户端6205。在另一个实施例中,静默安装不需要通过用户交互来开始和/或完成安装。在其他实施例中,当客户端6205正运行并对网络堆栈6210的网络层、会话层和/或应用层透明时,加速程序6120的静默安装发生。在一些实施例中,加速程序6120是由客户端6205执行的自安装可执行程序。在其他实施例中,客户端6205使用即插即用管理器安装加速程序6120。在一个实施例中,客户端6205包括安装管理器,其接收并安装加速程序6120。在另一个实施例中被设备1250传输的加速程序6120也包括安装加速程序6120的安装程序。
[655]在另一个实施例中,加速程序6120通过静默安装被自动安装。在一个实施例中,静默安装包括不用用户参与的安装。在另一个实施例中,静默安装包括不需要或没有用户的交互以开始或完成安装的安装。在一些实施例中,安装是静默的从而安装过程不显示关于安装的状态或处理的信息。在一个实施例中,安装是静默的从而其对于对用户透明。在其他实施例中,安装的静默是由于加速程序6120的安装不需要客户端6205的重新启动或重新开始。在另一个实施例中,安装是静默的从而在客户端6205的操作期间安装无缝发生,在上述操作期间,没有客户端操作的中断或干扰。同样的,通过不需要重启以及不向用户显示任何安装相关信息,加速程序6120可以对客户端6205的用户或应用透明的方式安装。
[656]为了阻止或避免客户端6205的重新启动或重新开始,在一些实施例中,当操作系统正运行时,客户端6205,例如客户端6205的操作系统,有用于即插即用设备的即插即用管理器以安装和配置驱动器,例如在加速程序6120的一个实施例中的网络驱动器。在一个实施例中,基于加速程序6120的安装包的配置,不指示即插即用管理器重新启动或重新开始客户端6205。在另一个实施例中,.inf文件不包括重新启动或重新开始计算机的指令。在一个实施例中,加速程序6120可作为并行部件被实施,而不代替共享的、使用中的动态链接库(DLL)。在其他特定实施例中,对于加速程序6120的网络驱动器,加速程序6120使用INetCfgPnpReconfigCallback网络驱动器API,以便用户不需要重新启动操作系统使得配置改变在驱动器中生效。另外,加速程序6120可拥有通知对象,该通报对象在它的INetCfgComponentControl的ApplyPngChange方法的实施中调用SendPnpReconfig API,以便向拥有对象的网络部件的驱动器发送配置信息。SendPnpReconfig API提供带有向驱动器发送数据的机制的通知对象,并且在一些实施例中,该通知对象用于避免在配置改变产生效用之前请求用户重新启动操作系统。
[657]在步骤6325,一旦自动的、静态的,透明的或以其他方式完成加速程序6120的安装,加速程序120在客户端6205自动执行。在一些实施例中,安装加速程序6120的安装程序开始或执行加速程序6120。在一些实施例中,用于加速程序6120的安装程序作出系统调用以在客户端6205的存储器中装载或执行加速程序120。在一个实施例中,加速程序6120的安装包括开始加速程序6120的指令、命令或指示。在一个实施例中,加速程序6120包括自动运行配置,例如自动运行.inf文件,通知客户端6205自动运行加速程序6120。在其他实施例中,客户端6205的即插即用管理器或者操作系统一旦安装则自动执行加速程序6120。在一个实施例中,加速程序6120包括被客户端6205开始的服务、处理、线程或任务。在一些实施例中,加速程序6120是被配置为自动开始的操作系统的服务。在一个实施例中,加速程序6120包括装载在客户端的操作系统的网络堆栈的存储器中的网络驱动器。
[658]在另一个实施例中,加速程序6120包括装载到客户端6205的存储器中的网络驱动器。在一些实施例中,加速程序6120被装载到分配给网络堆栈6210的存储器中。在一些实例中,加速程序6120在存储器区域或空间内被装载或执行,这使得加速程序6120访问网络堆栈的协议层,例如传输层。在其他实例中,加速程序在存储器内被装载或执行,使得加速程序6120访问内核级别数据结构6225。在其他实施例中,加速程序6120被装载到应用6220a-6220n的存储器中。在另一个实施例中,加速程序6120独立地在它自身的存储器空间或上下文中执行。在一个实施例中,加速程序6120运行在应用6220a-6220n的存储器空间或上下文中。在一些实施例中,加速程序6120被装载到用户模式存储器,或分配到用户模式6203的存储器,而在其他实施例中,加速程序6120被装载到内核模式存储器中,或分配到内核模式6202的存储器。
[659]在一些实施例中,加速程序6120被装载到存储器中并且/或对于客户端的用户、客户端6205的应用、设备1250或者服务器30透明的在客户端6205上执行。在其他实施例中,加速程序6120执行以与网络堆栈6210的传输层接口,并且对于传输层上的任何协议层,例如会话或应用层,以及传输层之下的任何协议层,例如网络层,透明执行。在一个实施例中,加速程序6120对于客户端6205的任何传输层连接或传输层本身透明执行。
[660]在步骤6330,所装载、开始或以其他方式执行的加速程序6120执行加速程序6120的任意多个加速技术,例如由以下提供的任意技术:1)多协议压缩6238,2)传输控制协议池6224,3)传输控制协议多路复用6226,4)传输控制协议缓冲器6228,以及5)通过高速缓冲管理器6232的高速缓存。加速程序6220也可执行在客户端6205和服务器30之间通信的任何加密和/或解密。在一个实施例中,加速程序6120执行多协议压缩。在另一个实施例中,加速程序6120执行传输控制协议池化,并在进一步的实施例中,加速程序6120通过被池化的传输层连接执行多路复用。在一个实施例中,加速程序6120执行传输控制协议缓存。在一些实施例中,加速程序6120执行高速缓存。在其他实施例中,加速程序6120执行高速缓冲和压缩。在一个实施例中,加速程序6120执行带有传输层池化和多路复用的高速缓存。在另一个实施例中,加速程序6120执行带有传输层池化和多路复用的多协议压缩。在另一个实施例中,加速程序6120执行带有TCP缓存的高速缓存和/或压缩,并且在进一步的实施例中,带有TCP池化和多路复用。
[661]同样,客户端侧加速程序6120由设备1250动态提供,并且在客户端6205上以静默的方式或者对客户端6205的用户或应用透明的方式自动安装和执行,以执行一个或多个客户端侧加速技术以便在客户端6205和服务器30之间通信。加速程序6120可对于网络堆栈的任何协议层透明并且对于客户端的用户、客户端的应用、设备或服务器透明的执行这些加速技术。
[662]在另一个方面,设备1250可决定被客户端请求访问的应用是否可被加速,并且如果应用可被加速则向客户端6205提供加速程序6120。现在看图41B,描述了方法的另一个实施例。一旦请求建立连接或通信会话以及请求访问服务器上的应用,可实施该方法。对方法6350总的来说,在步骤6355,设备1250拦截来自于客户端6205的、请求存储服务器30上的应用6220a-6220n的请求。在步骤6260,设备1250决定应用6220是否可以被加速。在步骤6365,如果应用6220不能被加速,则应用在步骤6267向服务器转发该请求。在步骤6265,如果应用6226可被加速,则设备1250决定加速程序6120是否被安装在客户端6205上或者已经在先前被传递到客户端6205。如果加速程序6120仍然没有提供给客户端6205,则该方法6350在以上描述的方法6300的步骤6315继续以传输、安装和执行加速程序。如果加速程序6120已经被安装并且正在客户端6205上执行,则设备1250,在步骤6375,向客户端6205上的加速程序6120发送消息以加速应用6220。在方法6250的步骤6330,加速程序6120在通信上执行多个用于应用6220的加速技术,并且可以加密和/或解密这样的通信。
[663]在进一步的细节中,在步骤6355,设备1250可通过任何合适的方法和机制拦截来自客户端6205的请求,以访问服务器30提供的应用。在一个实施例中,设备1250的包引擎6240拦截来自客户端6205的通信。在其他实施例中,设备1250建立与客户端6205的第一传输层连接,例如,与加速程序6120,并且代表客户端6205建立与服务器6205的第二传输层连接。同样,设备1250可接收、拦截或以其他方式获得传输到服务器30的任何客户端的通信。在一些实施例中,设备1250拦截用于客户端6205的请求以便通过建立的与服务器30的传输层连接访问应用6220。在其他实施例中,设备6205拦截请求以便通过在传输层连接之上的任何协议层,例如HTTP的应用层协议,建立通信会话。在一个实施例中,设备6205拦截来自客户端205的请求以便通过例如ICA或RDP的远程显示协议显示并提供来自服务器30的应用6220。
[664]在步骤6360,设备1250确定被客户端6205请求的应用6220是否可被加速。在一些实施例中,设备1250识别、抽取或以其他方式处理来自通过名称、类型或种类识别应用的所拦截的客户端的应用标识符。在一个实施例中,应用加速确定机制6275被设备1250使用来确定应用6220是否可被加速。在一些实施例中,应用加速确定机制6275在数据库、查询表或在存储器中数据的其他结构化源(例如数据结构或对象)中执行查询或查找,以便确定应用6220是否可被加速。在另一个实施例中,设备1250向服务器30发送例如请求的通信,以便确定应用6220是否可被加速。
[665]在其他实施例中,设备1250拥有性能日志或历史,以确定是否应用6220已经被加速,并且是否加速已经提高了应用6220的性能和操作。同样,如果这样的加速符合提高应用6220的性能或操作的预定阈值,设备1250可决定该应用6220可被加速。在又一个实施例中,基于网络6204、客户端6205或服务器30的当前操作和性能,设备1250提供启发式规则。在一个实施例中,如果客户端6205有特定性能和操作特征或者能力,例如,特定的速度处理器或者最小数量的存储器,则应用6220可被决定可以被加速。在一些实施例中,基于配置策略或规则,例如在设备1250的策略管理器中,应用6220可以被决定能够被加速。例如,在远程用户与带有特定类型的客户端6205之间传递的应用6220可被加速,该客户端访问特定类型应用220和/或服务器30。在其他实施例中,基于用户或客户端的验证和授权,应用6220可被决定能够被加速。在又一个实施例中,应用6220可被决定不期望被加速。例如,应用6220是不经常使用的类型。
[666]在步骤6365,如果应用6220被决定不能被加速或以其他方式不期望向客户端6205上的应用6220施加加速技术,则设备1250在步骤6368向服务器30转发拦截的客户端请求,并且不向客户端6205传输或提供加速程序6120。在一个实施例中,设备1250可执行或提供应用6220的基于设备的加速。在其他实施例中,设备1250不执行设备1250上的应用6220的加速。在又一个实施例中,如果设备1250确定应用6220不能或不期望被加速,则设备1250可执行一些加速技术和不是用于应用6220的其它。
[667]在步骤6365,如果应用6220被确定可以被加速或者以其他方式期望向客户端6205上的应用施加加速技术,则设备1250确定是否加速程序6120已经提供给客户端6205。在一个实施例中,设备1250确定是否加速程序6120已经安装在客户端6205上或者正在客户端6205上执行。在一些实施例中,设备1250向客户端6205上的加速程序6120发送通信以确定是否加速程序6120正运行在客户端6205上。在其他实施例中,设备1250检查日志文件或历史文件以确定是否加速程序6120已经被传输到客户端6205。在另一个实施例中,设备1250使用设备1250或者客户端6205的健康监控程序6216检查以确定是否加速程序6120正在客户端6205上执行。
[668]如果设备1250确定加速程序6120没有在客户端6205上被传输、安装和/或执行,则设备1250将根据结合图41A描述的方法6300的步骤提供加速程序6120。例如,设备1250向客户端6205传输加速程序6120,客户端6205一旦接收则自动安装和执行。在一个实施例中,一旦执行方法6300的实施例的合适的步骤,设备1250可在步骤6275向加速程序传递消息,以便向应用6220施加一个或多个加速技术。在其他实施例中,如果加速程序6120已经被安装和执行,则在步骤6375设备1250向加速程序6120传递消息以便向应用6220施加一个或多个加速技术。
[669]在一些实施例中,加速程序6120向已经被识别的应用6120执行加速程序6120可用的任何加速技术。在其他实施例中,设备1250向加速程序6120指示为应用6220实施哪个加速技术。在一个实施例中,在每个会话的基础上,加速程序6120可向应用6120施加期望的加速技术。即,从设备1250到加速程序6120的消息仅仅通知加速程序6120为该实例或应用6220的会话执行加速技术。在其他实施例中,一旦加速程序6120接收来自设备1250的消息以便为识别的应用6220施加加速技术,则加速程序6120为应用6220的任何实例或会话应用加速技术,或者直到客户端6205重新启动或重新开始,或者设备6205重新启动或重新开始。
[670]在一个实施例中,在步骤6375来自设备1250的消息不是应用专用的。例如,消息通知加速程序6120以执行用于客户端6205的任何应用的一个或多个加速技术。在一些实施例中,发送到客户端6205的消息通知加速程序6120停止使用用于应用6220或者用于所有应用6220a-6220n的任意一个或多个加速技术。在另一个实施例中,设备1250向加速程序6120传递消息以便忽略特定应用6220。在又一个实施例中,设备1250向加速程序6120传递消息以便向加速程序6120提供配置数据或信息,例如对加速技术或新的加速技术应用的更新。
[671]在步骤6330,加速程序6120为应用6220执行任意多个加速技术,例如以下提供的技术:1)多协议压缩技术6238,2)传输控制协议池6224,3)传输控制协议多路复用6226,4)传输控制协议缓冲6228,以及5)通过高速缓存管理器的高速缓冲6232。加速程序6120也可执行在客户端605和服务器之间的应用6220的通信的任何加密和/或解密。在一个实施例中,加速程序6120执行应用相关数据的多协议压缩。在另一个实施例中,加速程序6120执行传输控制协议池,并且在进一步的实施例中,加速程序6120通过池化的传输层连接执行多路复用。在一个实施例中,加速程序6120执行传输控制协议缓冲。在一些实施例中,加速程序6120执行高速缓存。在其他实施例中,加速程序6120执行高速缓存和压缩。在一个实施例中,加速程序6120执行带有传输层池化的高速缓存,并且在进一步的实施例中也带有多路复用。在另一个实施例中,加速程序6120执行带有TCP缓冲的多协议压缩,并且在进一步的实施例中,带有传输层池化并且,在又一实施例中,也带有多路复用。在另一个实施例中,加速程序6120执行带有压缩的高速缓存,并且在进一步的实施例中,带有TCP池化,并且在又一实施例中,带有多路复用。
[672]同样,设备1250动态确定是否加速应用或应用是否可被加速,并传递到客户端侧加速程序6120以在客户端6205上执行用于应用6220的任意一个或多个加速技术。另外,在一些实施例中,多个加速程序6120可通过设备被动态传递到客户端6205,并且由客户端6205自动安装和执行。例如,依照用于到服务器6205的每个连接的技术和方法,或者与应用6220的每个通信会话,可提供加速程序。同样,客户端6205可自动安装和执行多个加速程序6120以便为每个服务器630或每个应用6220a-6220n处理和执行加速。
[673]现在看图41C,描述了以集成方式执行多个加速技术的方法6380的实施例。总的来说,在步骤6280,加速程序6120通过传输层连接在传输层拦截客户端6205和服务器30之间的通信网络包。在步骤6390,加速程序6120通过内核级别数据结构,例如通过到客户端6205的网络堆栈6210的API提供的数据结构,在传输层访问网络包。在步骤6395,加速程序6120使用内核级别数据结构在接口点或在加速程序6120的执行点以集成方式执行多个加速技术。
[674]在进一步的细节中,在步骤6385,加速程序6120通过任何合适的方法和机制经传输层连接拦截在客户端6205和服务器30之间通信的网络包。在一个实施例中,加速程序6120通过客户端拦截请求的网络包或涉及到请求的网络包,或者其响应,以在客户端6205和服务器30之间建立传输层连接。在另一个实施例中,加速程序6120拦截请求的网络包或涉及到请求的网络包,或者其响应,以便通过客户端6205和服务器30之间的传输层连接访问或使用应用6220。在一个实施例中,加速程序6120在传输协议层经传输驱动器接口或者以其他方式在网络堆栈6210的传输协议层处连接的网络驱动器拦截网络包。在另一个实施例中,加速程序6120在传输协议层,或网络堆栈6210的任何其他协议层通过网络驱动器接口规范(NDIS)驱动器、或者迷你端口驱动器、或者迷你过滤器驱动器拦截网络包。在一些实施例中,加速程序120在传输层通过钩子或过滤机制拦截网络包。
[675]在步骤6390,加速程序6120访问或以其他方式获得在传输层通过内核级别数据结构6225拦截的网络包的信息和数据。通过使用内核级别的数据结构6225,加速程序6120可获得关于有效负荷或在传输层被网络包携带或传输的一个或多个协议的信息和数据。在一些实施例中,使用内核级别数据结构来表示在传输层和/或其上的网络堆栈的层处的网络包来启用加速程序6120在传输层执行或操作多个加速技术,该加速技术用于被传输层网络包携带的协议层。在一个实施例中,使用单个的内核级别数据结构6225禁止或避免拷贝和存储器定位以及上下文切换在网络堆栈6210的多个协议层使用多个数据结构。在一个实施例中,加速程序6120向第二数据结构拷贝内核级别数据结构6225,该第二数据结构可包括另一个内核级别数据结构或用户级别数据结构。
[676]在步骤6395,加速程序6120在单独的接口点或在程序6210的特定区域中或在可执行指令集中或在程序6210的一个执行点,执行、或操作多个加速技术。加速技术6120执行加速程序6120的多个加速技术的任意个,例如以下提供的任意技术:1)多协议压缩技术6238,2)传输控制协议池6224,3)传输控制协议多路复用6226,4)传输控制协议缓冲6228,以及5)通过高速缓存管理器的高速缓冲6232。在加速程序6120的加速技术执行中的相同点,加速程序6120也可执行在客户端6205和服务器30之间的应用6220的通信的任意加密和/或解密。
[677]在一个实施例中,加速程序6120在可执行指令集中,例如功能调用或一个地点或位置,执行任何期望的彼此并发的多个加速技术。例如,加速程序6120通过内核级别数据结构获得被拦截的网络包,并接着执行指令,该指令代表彼此间并发的加速技术的逻辑、功能、规则或操作。同样,网络包的信息和数据可通过内核级别数据结构6225一次抽取或获得,并作为用于代表加速技术的加速程序6120的任何指令的输入、参数、自变量和条件而使用。虽然网络包携带更高级别的协议数据和信息,但在一些实施例中的加速程序6120在执行期间的一个点或一个时间处理网络包和更高级别的协议数据和信息。另外,加速程序6120可以集成方式以期望的顺序执行多个加速技术中的每一个,例如向高速缓存管理器6232中存储的压缩数据,或者从高速缓存获取的压缩/或未压缩数据。
[678]在一个实施例中,加速程序6120执行彼此间并发的多协议压缩和高速缓存。在另一个实施例中,加速程序6120通过池化的传输层连接执行彼此间并发的操作,上述操作涉及到传输控制协议池化和多路复用。在一个实施例中,加速程序6120在压缩和高速缓存或者TCP池化和/或多路复用之后执行传输控制协议高速缓存。在一些实施例中,加速程序6120执行高速缓存。在一个实施例中,加速程序6120执行与传输层池化和多路复用并发的高速缓存。在另一个实施例中,加速程序6120在传输层池化和多路复用之后执行多协议压缩。在另一个实施例中,加速程序6120在TCP缓冲之后执行高速缓存和/或压缩,并在进一步的实施例中,在TCP池化和多路复用之后。
[679]虽然通常描述加速程序与执行加速技术并发,但是并发执行也可包括不涉及加速但在每个加速技术之间被集成和执行的其他逻辑、功能和操作。当用于加速技术的可执行指令和其他操作或功能在单独的接口点或在加速程序的执行点被执行,加速程序仍然获得带有这样的集成的操作和性能的效率。另外,用于在传输层携带或其上的协议层的加速技术在某一时间,在传输层的某一位置被处理。同样,由于网络包在网络堆栈6210的这些更高级别中,或者在网络堆栈6210的稍后点遍历和获得处理,则用于这些更高级别的协议的加速技术不需要再被应用。
[680]在其他方面,第一程序6222和加速程序6120(或者在该实施例中也称为第二程序)可被使用。在一个实施例中,可使用第一程序6222和第二程序6120来促进并建立与服务器30的虚拟专用网络连接,例如通过设备1250,通过该连接可应用客户端侧加速技术。在另一个实施例中,使用第一程序6222来安装和执行第二程序,或加速程序6120。
[681]现在看图42A,描述了用于实现该方面的方法6400的实施例。总的来说,在步骤6402,客户端6205登记进入并与设备6205建立通信会话。在步骤6404,设备1250发送第一程序6222到客户端6205。在步骤6406,客户端6205安装和执行第一程序6222,接着安装和执行加速程序6120,即第二程序。在步骤6407,客户端6205通过建立的加密数据通信会话与专用网络上的资源通信并对其访问。在步骤6410,客户端6205从设备1250登出并停止与设备1250的通信会话。
[682]在方法6400的步骤6402,客户端6205执行登入过程并通过网络6204与设备1250建立加密数据通信会话。在一个实施例中,加密数据通信会话用作隧道以桥接从客户端6205到任何服务器30的话务量,服务器30驻留在专用数据通信网络中的设备1250后。在实施例中,客户端6205使用web浏览器,例如Microsoft Internet 
Figure A200780021971D01691
或者Netcape 
Figure A200780021971D01692
登入并使用安全套接层(SSL)或其他加密方法,例如IPSec,以及传输层安全(TLS)与设备1250建立数据通信会话。在另一个实施例中,可使用协议,例如安全套接字层(HTTPS)上的超文本传输协议,来开始被加密的数据通信会话。
[683]在步骤6404,响应于登入和加密的数据通信会话的建立,设备1250向客户端6205通过网络6204发送第一程序。设计并构建第一程序,或以其他方式配置第一程序,以便作为隧道端点,用于通过加密数据通信会话的通信。在一个实施例中,第一程序包括插件应用,该插件应用被客户端6204的浏览器自动安装和执行。例如,第一程序可包括ActiveX控件,其作为插件提供将被Mirosoft Internet 
Figure A200780021971D01693
web浏览器执行。在另一个实施例中,第一程序可包括Java小程序(applet),其作为插件提供被Netscape 
Figure A200780021971D01694
 web浏览器或在网络环境之上工作的另一个控件或设计部件执行。
[684]在步骤406,客户端安装和执行第一程序6222,其中执行第一程序包括在客户端6205上安装第二程序。在一个实施例中,第一程序6222被自动安装和执行,例如使用以上结合方法6300和图41A讨论的任何技术。在一些实施例中,第一程序6222从设备1250获得、下载或接收第二程序或加速程序6120。在另一个实施例中,第一程序6222包括用于第二程序的安装程序或安装管理器,例如自动安装和执行第二程序的加速程序6120,例如通过对客户端6205的用户、客户端6205的应用6220、设备1250或服务器30静默安装或透明安装的方式。
[685]在一个实施例中,第二程序被配置,部分地,以便从运行在客户端6205上的应用6220拦截通信,上述客户端6205预定网络6204上的资源,并且为了通过加密的数据通信会话将拦截的通信提供给第一程序6222用于发送到设备1250。第二程序也可被配置以提供内部网网络名称解析服务以及可选的分解网络话务量。通过分解话务量,实施例可以确定什么话务量被引导向第一程序6222的SSL隧道或加密隧道以及什么话务量被允许,或者在客户端6205的正常、日常事务或典型操作中,允许沿着网络堆栈6210的传输层的处理。在实施例中,第二程序包括动态拦截器(例如,过滤器设备驱动器),该拦截器作为“钩子”插入到客户端6205的操作系统中。例如,第二程序可包括过滤器设备驱动器,该过滤器设备驱动器连接到客户端操作系统的传输层堆栈,例如Microsoft 
Figure A200780021971D01695
操作系统的传输层堆栈。
[686]在步骤6408,一旦第一和第二程序已经被安装,则运行在客户端6205的应用通过已经建立的加密数据通信会话在专用数据通信网络6204上可与资源通信并访问资源,例如应用和数据。关于图42B下面将更详细的讨论通信发生的方式。注意,在一个实施例中,如上描述的第一程序和第二程序的功能被单独的控件或程序部件执行,客户端6205自动安装和执行上述控件或程序部件,例如加速程序6120。除了提供虚拟专用网络连接和通信之外,第一程序6222和/或例如加速程序6120的第二程序在客户端的通信之上通过虚拟专用网络连接可执行此处描述的任何加速技术,该网络连接例如到设备1250的被加密的隧道或桥接器。
[687]在步骤6410,客户端6205执行登出过程,从网络6204断开,客户端终止与设备1250的加密的数据通信会话。在一个实施例中,在登出时,第一程序6222自动清除对客户端6205的操作系统所作的修改,以将操作系统返回到安装第一程序6222和/或第二程序之前的状态。在一个实施例中,第一程序6222和/或第二程序也包括卸载器或卸载指令,以便从客户端6205的操作系统中移除第一和第二程序,或者以非侵入模式从客户端6205上的其它操作移除第一和第二程序到客户端6205的继续的操作。在又一个实施例中,在提供的任何通信连接或会话期间,第一程序6222和/或加速程序6120移除被客户端6205的应用使用的任何文件,例如临时文件或cookies(曲奇)。
[688]图42B描述了另一个方法6450的实施例,通过该实施例客户端6205与在专用数据通信网络6204上的资源通信,或访问该资源。例如,方法6450代表可实施方法6400的步骤6408的方法。总的来说,在步骤6452,通过第一程序和/或第二程序,客户端6205做出新的连接或解析域名,例如TCP/IP域名解析。在步骤6454,执行第二程序。在步骤6456,第二程序拦截从客户端6205到专用网络的通信,并将该通信再路由或发送到第一程序6222。在步骤6458,第一程序6222通过建立的通信加密会话终止或代理该连接,隔离有效负载并封装用于传送的有效负载。在步骤6460,第一程序6222通过预先建立的加密通信会话向专用网络中的设备1250通过公共网络发送拦截的通信。在步骤6462,设备1250解密从第一程序接收的通信,并向例如服务器30的合适的目标资源转发该解密的通信。在步骤6464,目标资源处理解密的通信,并且在步骤6464,目标资源向设备1250发送响应通信(如果有的话)。在步骤6468,设备1250加密响应通信并通过预先建立的加密通信会话经由公共网络向客户端6205的第一程序6222发送加密通信。在步骤6470,第一程序6222解密响应通信并通过第二程序向合适的客户端应用转发解密的通信。
[689]在步骤6452,客户端6205的应用6220获得新的连接或通过客户端6205的网络堆栈6210的传输协议层解析域名。在一个实施例中,应用6220可请求建立在客户端6205和服务器30之间的传输层连接,或者在客户端6205和设备1250之间。在另一个实施例中,应用220或客户端6205可请求访问服务器30提供的应用6220。例如,通过传输代表服务器30上执行的应用6220的输出的ICA或RDP的远程显示协议,服务器30可为基于服务的计算或瘦客户计算提供。在另一个实施例中,客户端6205可请求访问服务器30的资源,例如文件或目录,或者电子邮件服务。在一些实施例中,客户端6205可在公共网络40上,并且服务器30在专用网络40’上。在其他实施例中,客户端6205和服务器30可在不同的专用网络上。
[690]在步骤6454,在任何传输层功能被开始之前,第二程序自动或以其他方式执行一个或多个功能。在一些实施例中,第二程序是或以其他方式包括加速程序6120。在一个实施例中,第二程序拦截或接收步骤6452的客户端请求。在一些实施例中,客户端6205的应用6220对网络堆栈6210做出API调用,上述网络堆栈6210被第二程序拦截。在网络堆栈6210的传输层处理任何API调用之前,第二程序被钩入或以其他方式接口到网络堆栈6210,以便在用于传输的通信经由传输层连接传输或处理之前,执行逻辑、规则、功能或操作。
[691]在步骤6456,第二程序拦截来自客户端205的通信,例如通过客户端6205上的任何应用6220a-6220n,应用6220a-6220n被预定用于网络40’上的资源,并且第二程序重路由应用6220a-6220n到第一程序6222,在一个实施例中客户端6205包括ActiveX控件插件、Java applet(小应用程序)或其他工作在网络环境中的控件或程序部件。第二程序可从提供拦截的通信的网络包或包中访问、读取或以其他方式获得目的信息,以确定通信是为网络预定的,例如在设备1250后的专用网络40’。例如,第二程序从网络包中抽取或拦截目的IP地址和/或端口。一旦确定拦截的信息是网络40’预定的,第二程序通过任何合适的接口方法和机制,例如通过任何内部处理通信接口或API调用,向第一程序6222传递拦截的通信。在一个实施例中,拦截的通信保持不变被发送到第一程序6222,或者在其他实施例中,在发送到第一程序622之前,拦截的通信被第二程序预先处理。例如,第二程序可从拦截的通信清除有效负载或者向第一程序6222转发有效负载。
[692]在步骤6458,第一程序6222终止或代理每个被拦截的通信,并且第一程序6222通过已建立的加密数据通信会话为传输准备拦截的通信。在一个实施例中,第一程序6222通过已建立的加密数据通信会话分离有效负载并封装该有效负载用于分发。在另一个实施例中,第一程序6222当从第二程序接收到拦截的通信时,封装它。在一些实施例中,有效负载是TCP有效负载并例如通过设备1250,在客户端6205和服务器30之间被封装入新的TCP连接。
[693]在步骤6460,第一程序6222通过预先建立的加密数据通信会话,在网络6204上向设备1250发送拦截的通信。在一些实施例中,第一程序6222加密拦截的通信并向设备1250发送该解密的拦截的通信。在一个实施例中,依照SSL协议实施加密。在另一个实施例中,加密基于TLS。第一程序6222或加速程序6120可使用任何类型和形式的加密和/或解密。
[694]在步骤6462,设备1250作为终止第一程序6222发送的连接的代理。设备1250解密从第一程序6222接收的通信,并通过第二连接将解密的通信转发到合适的目标资源,上述第二连接是设备1250与网络40’上的目标资源已经建立的连接。在一个实施例中,依照SSL协议或其他可应用的加密和解密协议可实施解密。在一些实施例中,设备1250在转发到目标资源的通信之上执行一个或多个加速技术,例如下述的一个或多个提供的技术:由1)多协议压缩6238,2)传输控制协议池6224,3)传输控制协议多路6226,4)传输控制协议缓冲6228,以及5)通过高速缓存管理器的高速缓冲6232。
[695]在步骤6464,目标资源处理解密通信。在一个实施例中,解密通信是建立连接或通信会话的请求。在另一个实施例中,解密通信是开始或访问代表客户端6205的应用6220的请求。在其他实施例中,解密通信是对于web页面的请求,例如从web服务器30接收web页面的HTTP请求。
[696]在步骤6466,如果解密通信包括存在响应的请求,则目标资源向设备1250发出响应通信。在一些实施例中,响应包括如客户端6204请求的建立连接或通信会话的确认。在其他实施例中,响应包括错误消息。在一个实施例中,响应包括验证请求或挑战响应机制。在一些实施例中,响应包括将被客户端6205使用的加速程序6120。在另一个实施例中,响应包括HTML,例如将被客户端6205显示的web页面。在其他实施例中,响应包括对象,例如动态产生对象。
[697]在步骤6468,设备通过预先建立的加密数据通信会话在网络40上向第一程序6220发送响应通信。在一个实施例中,设备1250加密响应通信并向第一程序6222发送加密的响应通信。在一些实施例中,依照SSL协议或其他可应用的加密和解密协议实施加密。另外,设备1250在与客户端6205通信之上可执行任何加速技术,例如多协议压缩6238’、高速缓存6232’或TCP缓冲6228’。
[698]在步骤6470,第一程序6222解密响应通信并通过第二程序向相应的应用6222转发该通信。第一程序6222可使用任何合适的接口方法和机制以便向第二程序通信,例如通过任何类型和形式的内部处理通信机制或API调用。第二程序可通客户端6205的网络堆栈6210向应用6220提供响应通信。同样,应用6220在没有对应用6220作任何改变或修改时透明地接收响应通信。
[699]依照另一个实施例,在步骤6458在通过网络40发送通信之前,客户端6205执行拦截的通信的附加处理。由于实施例在解密数据之前,提供在客户端作为终止连接的代理的VPN解决方法,所以可更有效率的执行附加处理。为了启用客户端应用使用它们选择的任何IP地址并在运行时间动态改变这些地址,上述的处理可包括拦截通信的域名服务(DNS)名称解析。这样附加的处理使得实施例可以更有效的与其他技术结合,例如全局服务负载平衡,以便在分布的网关或服务器中获得更大的可用性和更大的有效性。附加的连接处理也可启用关于拦截的通信的细节日志和统计数据的保持。
[700]在另一个实施例中,设备1250终止从客户端6205上的第一程序接收的通信,并进一步处理包括在此处的一个或多个请求,而非像步骤6462所示的向网络40’上的目的地转发该通信。此进一步的处理可包括后端加密,其中在向网络40’上的合适目的地分发之前,通信被设备1250重加密,因此提供端对端网络安全。该目的地其后将适当的解密话务量和响应。更进一步的,这样的处理允许设备1250在高速缓存之外服务响应,而不需要请求目的服务器附加的工作,允许设备1250执行本地网络负载平衡、在通信上的全局服务负载平衡和/或压缩以提高网络40的效率和响应。
[701]依照以上描述的方法,在客户端205和网络40之间建立基于加密的数据通信会话的VPN。例如,在实施例中,通过HTTPS建立安全VPN。其后,通过该加密数据通信会话,从客户端6205到网络40的所有通信通过第一程序被路由到设备1250以及与之反向。值得注意的是,虽然使用HTTPS可建立加密数据通信会话,但是通过加密数据通信会话传输的通信不需要是HTTPS包数据或者甚至HTTP包数据。例如,通信也可包括传输控制协议/用户数据报协议(TCP/UDP)或因特网控制消息协议(ICMP)包数据,但是这些实例不是用于限定的。另外,虽然引用图42B描述的方法描述了在客户端6205上的应用和网络40上的资源之间的请求-响应类型通信,加密的通信不需要是基于请求-响应的。而是,通信可为任何类型。因此,任何可建立连接或通信会话的客户端应用,例如UDP会话,可发送和接收加密的通信。
[702]在另一个方面,加速程序6120可从客户端动态旁路任何的中间设备而与服务器30连接或通信。例如,客户端6205可通过一个或多个中间设备,例如设备1250与服务器连接。由于一个原因或另一个,中间设备可不再被客户端6205用于与服务器30通信,例如,设备1250可被列入维持或者可处在重新启动或重新开始的过程中。加速程序6120确定中间设备不可用并自动与服务器30建立不同的连接或通信会话。这可对于客户端6205的用户或应用透明发生,以便连接和/或通信会话不显示已经改变或以其他方式已经被干扰。
[703]现在看图43,描述了用于自动旁路中间设备的方法6500的实施例。总的来说,在步骤6505,加速程序6120通过例如设备1250的中间设备在客户端6205和服务器30之间建立传输层连接。在步骤6510,加速程序6120确定中间设备对于客户端6205到服务器30的通信是不可用的,上述通信通过建立的传输层连接。在步骤6515,加速程序6210在客户端6205上拦截从客户端6205到服务器30的通信。在步骤6520,加速程序6120在客户端6205和服务器30之间建立第二传输层连接,并作为结果,旁路中间设备确定对于客户端到服务器30的通信不可用。在步骤6525,加速程序6120通过第二传输层连接向服务器30传输客户端6205的拦截的通信。
[704]在进一步的细节中,在步骤6505,加速程序120通过中间设备在客户端6205和服务器30之间建立传输层连接。在一个实施例中,中间设备包括设备6205。在其他实施例中,中间设备包括下述之一:高速缓存器、服务器、网关、防火墙、桥接器、路由器、切换器、网络集线器、代理或作为或提供任何这些类型或形式的中间设备的功能和操作的任何软件应用或程序。在一个实施例中,中间设备可在服务器30上操作。在一些实施例中,通过相同类型和形式或不同类型和形式的多个中间设备建立传输层连接。在另一个实施例中,传输层连接包括传输层连接的池的连接,该池连接或者作为客户端6205被建立或者在设备1250被建立。
[705]在步骤6510,加速程序120确定中间设备对于客户端6205到服务器30的通信是不可用到的或者以其他方式不可使用,上述通信通过建立的传输层连接。加速程序6210可通过任何合适的方法和/或机制确定中间设备的状态或可用性。在一个实施例中,通过接收错误消息或到中间设备的传输相关联的失败答复,加速程序6120确定中间设备不可用。例如,当通过已建立的传输层连接从客户端6205传输通信时,加速程序6120可接收失败的传输层通信响应。在另一个实施例中,加速程序6120可以预定的频率向中间设备传输查验(ping)命令,以便监控中间设备的状态和有效性。如果加速程序6120没有从中间设备接收答复,或者在一些实施例中,接收延迟的答复或带有比需要的等待时间更长的答复,加速程序6120可确定中间设备对于客户端6205是不可用或不能使用的。在其他实施例中,服务器30、设备1250或中间设备可向客户端6205发送消息,或提供识别中间设备消息的加速程序6120对于客户端6205是不可用或不能使用的。在一些实施例中,建立的传输层连接被干扰或被中断,或在其他实施例中,被关闭。
[706]在步骤6515,加速程序6120拦截从客户端6205到服务器30的通信,该通信经由中间设备通过已建立的传输层连接被预定传输。加速程序6120可在网络堆栈6210的任何点和任何协议层拦截通信。在一个实施例中,在建立的传输层连接上传输之前,加速程序6120在传输协议层拦截通信。例如,在一些实施例中,加速程序6120包括拥有传输驱动器接口或以其他方式接口到传输协议层的网络驱动器。其他实施例可包括第一程序6222和如结合图42A-42B描述的作为第二程序的加速程序6120,其中或者第一程序6222或者加速程序6120拦截通信。
[707]在步骤6520,为了旁路在步骤6510中被确定对于客户端6205是不可用或不能使用的中间设备,加速程序6120为客户端6205建立到服务器30的第二传输层连接。在一个实施例中,当客户端6205和服务器在客户端6205和服务器30之间可路由的相同的网络6205上或不同的网络上时,加速程序6120建立直接到服务器30的第二传输层连接。在另一个实施例中,加速程序6120建立带有第二中间设备的第二传输层连接,例如第二设备1250’。在一些实施例中,加速程序6120请求设备1250与服务器1250建立另一个传输层连接。在一个实施例中,设备1250使用传输层连接的池的第二传输层连接到服务器30。在另一个实施例中,加速程序6120请求服务器30建立第二传输层连接。在一些实施例中,加速程序6120与服务器30使用来自由加速程序6120建立的传输层连接的池的第二传输层连接。
[708]在一个实施例中,加速程序120在步骤6520对客户端6205的用户或应用6220透明的建立第二传输层连接,或者在一些实施例中,对于传输层之上或之下的任何协议层透明。在一些方面,一旦在步骤6510确定中间设备对于客户端6205不可用或不应该被客户端6205使用,则用于客户端6205的第二传输层连接被自动建立。在其他实施例中,一旦不能向服务器30传输拦截的通信,例如第一试图传输通信,第二传输层连接被自动建立。在一些实施例中,一旦一个或多个通信的重试传输失败,或一旦用尽预定数量的重试,则第二层连接被自动建立。在另一个实施例中,一旦确定中间设备延迟传输的速度或网络包的接收,引起等待或其他方式以不期望的方式影响传输层连接的使用,则建立第二传输层连接。在一个实施例中,加速程序6120执行负载平衡并建立旁路中间设备的第二传输层连接,以便卸载到客户端6205和/或第二中间设备的中间设备的任何处理或操作。
[709]在步骤6525,加速程序6120通过第二传输层连接向服务器30传输拦截的客户端6205的通信。在一个实施例中,加速程序6120直接向服务器30传输拦截的通信。在其他实施例中,加速程序6120通过第二中间设备,例如第二设备1250,传输拦截的通信。通过使用第二传输层连接,加速程序6120旁路中间设备并继续与服务器30的客户端6205的应用6220的操作。在一个实施例中,好象应用6220一直使用先前的或第一建立的传输层连接,客户端6205的应用6220继续操作并继续与服务器30通信。同样,加速程序6120阻止、避免或避开任何通信中断、干扰、等待、延迟或其他可操作或性能问题,如果中间设备没有被加速程序6120旁路,则可发生这些问题。在另一个方面,即使对于从中间设备访问存在问题或干扰中间设备访问中存在问题,该技术向客户端6205自动提供服务器30或远程访问应用的持续的访问。
[710]此外,可使用以上描述的重定向和旁路技术执行客户端6205上的负载平衡和话务量管理,以访问一个或多个服务器30,服务器30向客户端6205提供应用6220a-6220n或其他内容和功能。例如,在一个实施例中,带有增长的传输层连接,以及降低的响应、性能或其他操作的速度,客户端使用的访问服务器的中间设备或设备可被超载。一旦确定中间设备或设备正降低性能,加速程序6120可将客户端重定向到另一个中间设备或设备,或服务器,以便旁路在客户端到服务器的端对端连接中的任何性能瓶颈。
[711]在其他方面,客户端侧加速技术可被关联到客户端的网络堆栈的传输协议层或在其上执行。加速程序6120可包括执行下述任何一个或多个技术的可执行指令:1)传输控制协议(TCP)缓冲6228,2)TCP连接池6224,3)TCP路复用6226。在一些实施例中,当加速程序6120透明的处理在客户端的网络堆栈的传输协议层拦截的通信时,加速程序6120可控制并管理客户端的TCP连接,以及在该连接之上客户端6205的应用6220a-6220n的使用和传输。图44示出了实现TCP缓冲技术的方法6600的实施例,而图45A-45B示出了TCP连接池化技术的实施例,图46,47和48描述多路复用技术。
[712]总的来说,图44描述的方法6600的实施例中,在步骤6605,加速程序6120拦截从客户端6205到服务器30的通信,例如客户端205访问服务器30的请求。在步骤610,加速程序6120确定在接收的服务器响应的消耗速度和客户端传输的产生速度之间的差是否下降到预定阈值以下。如果在步骤6615产生和消耗速度之间的差没有下降到对预定阈值之下,加速程序6120在步骤6617向服务器转发该通信。如果在步骤6615,速度差低于预定阈值,则在步骤6620,加速程序6120在客户端6205的存储器中存储通信。在步骤6625,加速程序6120确定是否速度差已经变得高于预定阈值了,并且如果高于则向服务器30转发存储的通信。否则,加速程序6120在客户端6205的存储器中保持通信,直到在步骤6625改变的速度差高于预定阈值的时间点。例如,如果客户端6205正以高于客户端6205可消耗产生的响应的速度向服务器30传输请求,加速程序6120保持进一步的传输直到速度差已经改变的将来的时间点。
[713]在进一步的细节中,在步骤6605,加速程序拦截从客户端6205到服务器30的通信。加速程序6120可在任何点和网络的任何协议层拦截通信。在一个实施例中,在已建立的传输层连接上传输之前,加速程序6120在传输协议层拦截通信。例如,在一些实施例中,加速程序6120包括拥有传输驱动器接口或以其他方式接口到传输协议层的网络驱动器。其他实施例可包括第一程序6222和如结合图42A-42B描述的作为第二程序的加速程序6120,其中第一程序6222或者加速程序6120拦截通信。在一个实施例中,通信包括客户端6205对服务器30使用或访问资源的请求,例如应用6220。
[714]在步骤6610,加速程序6120确定是否消耗的速度和/或客户端6205的产生的速度的差值低于预定阈值。在一个实施例中,加速程序6120计算并追踪由客户端6205传输到服务器30传输的请求的数量,并且在另一个实施例中,加速程序6120计算并追踪客户端6205从服务器30接收的响应的数量。在一些实施例中,客户端6205追踪传输的响应和在每个应用6220的基础上接收的请求。该响应和请求可在网络堆栈6210的任何协议层被追踪。在一个实施例中,从提交点到传输层或者到客户端6205和服务器30之间的传输层连接,计算和追踪被客户端6205或应用6220传输的请求的数量。同样的,在另一个实施例中,从到达传输层的接收点或者从客户端6205和服务器30之间的传输层连接,和/或响应提供给网络堆栈6210的传输层之上的例如应用层的协议层的点,计算并追踪被客户端6205或应用6220接收的来自服务器30的响应的数量。
[715]在一些实施例中,加速程序6120访问、检查、或者以其他方式获得信息和数据,这些信息和数据是关于接收和发送由加速程序6120在客户端6205和服务器30之间建立的传输层连接的TCP缓冲器。例如,加速程序6120可决定任何TCP/IP缓冲器的缺省和最大尺寸,以及缓冲器现在被使用的部分,以决定从客户端6205到服务器30网络包的发送和接收之间的速度差。在其他实施例中,加速程序6120使用任何类型和形式的拥塞算法,以确定是否存在由于从客户端6502到服务器30的网络包的消耗和产生的差引起的拥塞。在另一个实施例中,例如通过网络驱动器或者TCP服务提供者,加速程序6120与传输层连接,或者从传输层连接使用的拥塞算法获得信息或数据。例如,在一个实施例中,加速程序6120决定关于连接使用的拥塞窗口的信息和数据。
[716]通过加速程序6120的任何合适的方法和机制可配置、指定、定义或识别预定阈值。在一个实施例中,可将阈值指定为在客户端6205和/或应用6220的产生速度和消耗速度之间的百分比、相对值、绝对值或其它。通过任何时间周期以任何粒度,用于消耗和/或产生的速度可分别被消耗的接收和产生的传输的数量所标识。在一些实施例中,可指定阈值作为在客户端6205和/或应用6220的产生速度和消耗速度之间的数量差,并且在一些实施例中,作为一段时间的数量差。例如,可指定阈值为客户端6205已经产生的请求多于客户端消耗的请求的时间点。在另一个实例中,可以指定阈值为当每一时间段客户端6205产生对服务器的请求多于在相同时间段内客户端6205消耗的请求时的时间点。
[717]在步骤6615,如果在客户端6205和/或应用6220的产生和消耗速度差不低于预定阈值,则在步骤6617加速程序6120向服务器6260转发该通信。在一些实施例中,加速程序为通信执行任意的加速技术。例如,可通过池化的多路技术传输层连接向服务器转发通信,另外,可压缩该通信。在其他实施例中,客户端6205可向为客户端6205提供到服务器30连接的设备1250转发通信。
[718]在步骤6615,如果客户端6205和/或应用6220的产生和消耗的速度差低于预定阈值,则在步骤6620,加速程序6120在客户端6205的存储器中存储通信。在一些实施例中,存储器可为客户端6205的内核模式6202的存储器,然而,在其他实施例中,存储器可在客户端6205的用户模式6202中。在一个实施例中,加速程序6120可通过高速缓存管理器6232在高速缓存中存储通信。在其他实施例中,加速程序6120可使用对象、数据结构或其他可被加速程序6120访问的数据元件来缓冲、保持或其它方式存储拦截的通信。在一个实施例中,拦截的通信可以压缩模式存储在存储器中。在另一个实施例中,加速程序6120向第一程序6222发送拦截的通信以便在存储器中存储或保持,在稍后的时间点用于传输。
[719]在步骤6625,加速程序6120确定何时向服务器30传输存储的通信。在一个实施例中,一旦加速程序6120在步骤6617向服务器30转发存储的通信,加速程序6120执行步骤6610和6615以确定客户端6205的产生和消耗之间的速度差是否高于阈值。在一些实施例中,加速程序6120以规则的或预定的频率或在轮流检测或事件的基础上,比较产生和消耗速度的差,并且当该差高于预定阈值时,加速程序6120向服务器30转发该通信。在其他实施例中,加速程序6120设置或配置定时器以便确定访问拦截的通信的时间长度。一旦定时器终止,加速程序6120向服务器30传输存储的通信。在另一个实施例中,在存储拦截的通信之后,加速程序6120检查客户端6102消耗的服务器响应的数量。如果消耗的响应的数量大于预定值,则加速程序6120释放来自存储器缓冲器或存储器的拦截的通信,并将该用于传输的通信提交给服务器30。
[720]如果在步骤6625,加速程序6120确定产生或消耗的速度没有以合适的方式改变,则加速程序6120在存储器中保持或维持拦截的通信,直到到达合适的时间点。在一个实施例中,即使产生和/或消耗的速度没有改变,加速程序6120仍然在步骤6617向服务器转发通信。例如,在等待产生和/或消耗速度改变和速度不改变的期间,加速程序6120向服务器30转发该通信。
[721]虽然通常结合拦截的通信或请求讨论TCP缓冲技术,但可并发的、接近同时的或同步的实施方法6600的实施例,用于客户端6205到服务器的多个拦截的通信。另外,在另一个实施例中,可在客户端上关于从客户端到多个服务器30的通信来实施方法6600。例如,方法6600的第一个实例可在客户端6205和第一服务器30’之间实施,并且方法6600的第二个实例可在客户端6205和第二服务器30”之间实施。进一步的,在一些实施例中,使用每个应用单独的产生和消耗速度,可实施方法6600用于第一应用6200a也可用于第二应用6200b。在其他实施例中,也可实施方法6600用于第一应用6200a但不用于第二应用6200n。
[722]根据另一个方面,客户端侧加速程序6120减少了服务器30和/或设备1250的处理负载,这些处理负载是由于重复的打开和关闭客户端连接而引起的,其时客户端通过打开一个或多个与每个服务器的连接并维持这些连接以便通过客户端6205到服务器的连接获得重复的数据访问。该技术此处通常被称为“连接池化”。现在看图45A,方法6700总的来说,在步骤6702,加速程序6120拦截访问服务器的应用的请求,并且在步骤6704,确定与请求关联的服务器的标识。在步骤6706,加速程序6120确定加速程序6120是否已经拥有到服务器30的应用6220的空闲的已建立的传输层连接。如果不存在到服务器30的应用6220的空闲的传输层连接,加速程序6220在步骤6708建立到服务器30的由客户端6205使用的传输层连接。在步骤6706,如果存在应用6220可用的传输层连接,在步骤6710,加速程序6120通过可用传输层连接翻译对于传输或通信的应用请求。
[723]进一步,在步骤6712,加速程序6120接收来自服务器30的请求的响应,并且在步骤6714将响应译成对应用6220的响应。在步骤6716,加速程序6120可维持或保持被客户端6205的任意应用6220a-6220n使用的传输层连接打开。通过维持客户端6205上的与服务器30的打开的传输层连接,并通过按照需要打开和关闭与应用的连接,加速程序6120释放通过网络40,例如因特网,与服务客户端6205相关联的TCP连接负载问题的服务器。在步骤6718,如果确定客户端6205的一个或多个应用6220不再使用连接访问服务器30,则在一些点的加速程序6120关闭传输层连接。
[724]在进一步的细节中,在步骤6702,加速程序6120通过客户端6205的任何应用6220a-6220n拦截访问服务器30的请求。在一些实施例中,在通过传输层连接建立或传输请求之前,在传输协议层拦截该请求。在其他实施例中,在传输层之上的任何协议层或在传输层连接拦截请求。在一个实施例中,应用6220的请求是打开或建立与服务器30的传输层连接的请求。在一些实施例中,响应于该请求,加速程序6120建立客户端6205的应用6220a-6220n使用的传输层连接的池的第一传输层连接。在另一个实施例中,应用请求是通过客户端6205的已建立的传输层连接访问服务器的请求。
[725]在步骤6704,加速程序6120通过任何合适的方法和机制从请求确定服务器30的标识。在一些实施例中,服务器30的域名或因特网协议地址被识别或以其他方式被请求的内容引用,例如请求的文本串可识别服务器30的域名。在一个实施例中,服务器30的标识被TCP包的头信息确定,例如目标因特网协议地址和端口号。在另一个实施例中,服务器30与应用6220相关联,并且加速程序6120在数据库或其他结构化信息存储中查找或寻找相关信息。
[726]在步骤6706,加速程序6120确定是否存在应用6220可用的或者以其他方式空闲的传输层连接。在一个实施例中,加速程序6120可以还没有建立的与服务器30的传输层连接,并且同样的,没有应用6220可用的传输层连接。在另一个实施例中,加速程序6120可拥有先前建立的与服务器30的传输层连接,但确定另一个应用6220当前正使用该连接。如下面将进一步详细讨论的,基于被服务器30接收的用于应用6220的消息的长度,例如对请求的响应,加速程序6120确定是否已建立的传输层连接对于另一个应用是可用的,或者可被应用6220a-6220n共享,和/或加速程序6120确定在服务器30和应用6220之间的通信现在是否是空闲的。
[727]在步骤6708,如果加速程序6120确定传输层连接对于应用6220不可用,则加速程序6120与服务器30建立传输层连接。在一些实施例中,在步骤6708建立的传输层连接是与服务器30的第一传输层连接,并且在另一个实施例中,传输层连接是到服务器30的多个传输层连接的第二传输层连接。在又一个实施中,加速程序6120等待已经建立的传输层连接变得可用或者空闲以向服务器30传送应用请求。例如,加速程序6120可决定第一应用6220a通过建立的连接即刻完成了与服务器30的交流。
[728]在步骤6710,加速程序6120翻译将通过传输层连接传输到服务器6106的应用请求。在一些实施例中,加速程序6120使用用于传输层连接的一个端口号,用于客户端6205的所有应用6220a-6220n共享连接。在一些例子中,加速程序6120基于应用跟踪请求和用于对应用上请求的未完成的响应。同样,加速程序6120识别哪个应用620通过到服务器30的传输层连接在任何给定时间点传输并接收网络包。在一个实施例中,每次只有一个应用6220在传输层连接上发送和接收,并且因此加速程序6220知道哪个应用6220正使用该连接。在一些实施例中,加速程序6120将请求与应用6220的处理id关联。在其他实施例中,加速程序6120提供端口号,并将之与应用6220关联,并修改将被传输到应用的指定端口号的TCP网络包中的端口号。在另一个实施例中,应用6220提供端口号并且加速程序6120改变或以其他方式提供TCP网络包中的相应的端口号。
[729]在步骤6712,加速程序6120接收对来自服务器30的应用的请求的响应。在一个实施例中,服务器30不响应该请求。在另一个实施例中,服务器30使用错误或失败消息响应。在一些实施例中,服务器30使用多个响应做出响应。在其他实施例中,服务器使用包括多个网络包或多个TCP段的响应做出响应。在另一个实施例中,服务器30使用一个或多个网络包响应,上述网络包识别与应用6220相关联的或指定到应用6220的源端口号。在一个实施例中,服务器30使用一个或多个网络包响应,上述网络包识别传输层连接的源端口号并被用于客户端6205的多个应用。
[730]在步骤6714,加速程序6120以响应应用6220的方式翻译或以其他方式处理来自服务器30的响应。在一个实施例中,加速程序6120使用应用6220的端口号来代替接收到的网络包的或包的源端口号。在另一个实施例中,加速程序6120通过追踪机制确定应用6220正使用传输层连接,并且通过网络堆栈6210向应用6220传输响应。在一个实施例中,响应不被修改并通过在连接的传输层之上的网络堆栈6210的任何协议被传输用于处理。在一些实施例中,在处理响应和向应用6220转发响应之前,加速程序6120等待被接收的响应的多个部分,例如TCP段。在一个实施例中,加速程序6120向第一程序6222传递响应,第一程序6222与应用6220接口并向其提供响应。
[731]在步骤6716,加速程序6120维持或保持在从客户端6205到服务器30的一个或多个传输层连接池中的传输层连接的打开。在一个实施例中,加速程序6120或网络堆栈6210的传输层驱动器包括保持有效机制,当连接是空闲时,例如当没有数据传输的地方,该机制周期性的探测连接的另一端。为了接收响应以确定虽然连接可能是空闲但是连接仍然活动,保持有效机制可发送此消息。保持有效消息和相应的响应可包括任何类型和形式的格式、命令、指示或通信。同样,在一些实施例中,加速程序6120通过传输层驱动器向传输层连接传输保持活动消息或引起其传输。在一些实施例中,加速程序6120设置用于保持有效消息的频率,并且在其他实施例中,基于使用连接的应用6220a-6220n的行为或活动,改变保持有效的消息的频率。
[732]在一些实施例中,加速程序6120拦截通过传输层连接接收的任何RST和/或FIN命令,即TCP/IP命令以重新设置和/或终止TCP连接。在一个实施例中,加速程序6120忽略、不采取行动、或者以其他方式撤销、删除或者清除所拦截的RST和/或FIN命令。在另一个实施例中,加速程序6120拦截并接收RST和/或FIN命令但向连接的另一端发送消息,以便保持或维持连接打开。在其他实施例中,响应于由于处理RST和/或FIN命令而关闭已建立的传输层连接,加速程序6120建立新的传输层连接。
[733]在其他实施例中,加速程序6120在客户端6205的所拦截的通信中插入指令、命令或指示,以便指示服务器30保持连接打开或不关闭连接,除非客户端6205发送命令要求关闭。例如,在一个实施例中,加速程序6120拦截HTTP协议的GET请求的通信,例如协议版本1.0,并向服务器30的通信中插入保持有效(keep-alive)头,例如“Connection:Keep-Alive”。在其他实施例中,GET请求或其他HTTP命令可包括保持有效头。在这些实施例中,加速程序6120可拦截通信并检查保持有效头,接着向服务器30转发该通信。在一些实施例中,使用HTTP的1.1版本或更高版本,从而保持活动机制是隐含的,以便服务器30保持连接打开直到客户端6205请求关闭该连接。在其他实施例中,加速程序6120保持到服务器30的传输层连接打开,直到客户端6205被重新启动或重新开始,网络40变得不可用或者客户端6205从网络40断开,或者服务器30被重新启动或重新开始。
[734]在步骤6718,加速程序6120可在任何需要的时间点关闭客户端6205和服务器30之间的任意一个或多个传输层连接。在一些实施例中,一旦在客户端6205上使用连接的一个或多个应用6220a-6220n终止,加速程序6120关闭传输层连接。在其他实施例中,一旦用于使用连接的应用6220a-6220n的超时期满,则加速程序6120关闭传输层连接。例如,加速程序6120可配置、设置或提供定时器以便在预定的时间周期终止,并且如果在该时间周期内连接为空闲或保持空闲,则加速程序6120关闭连接。在一些实施例中,服务器30可被重新启动、重新开始或连接被干扰或中断并且加速程序6120关闭连接。在一些实施例中,一旦完成向服务器30发送请求并从服务器30接收了所有的响应数据,则加速程序6120传输RST和/或FIN命令或引起其被传输,以便关闭连接。在其他实施例中,一旦重新启动或重新开始客户端6205,断开网络40连接或网络40不可用,或重新开始或重新启动服务器30,则关闭传输层连接或传输层连接池。
[735]在一些实施例中,当加速程序6120确定只有第一传输层连接需要由客户端6205的一个或多个应用6220a-6220n共享到服务器30的连接时,则到服务器30的第一传输层连接保持打开,而到服务器30的第二传输层连接被关闭。在其他实施例中,加速程序6120保持到任何服务器30的传输层连接的池,并基于增加的请求、通信或被客户端6205上的应用6220a-6220n使用的传输层连接使用,建立第二或多个到给定服务器30的连接。
[736]虽然通常讨论方法6700的实施例涉及从客户端6205到服务器30的一个或多个传输层连接的池,但是加速程序6120可并发的、接近同时的或同步的建立在客户端和多个服务器30中的每个之间的传输层连接池。同样,第一应用6220a和第二应用6220b可正使用到服务器30a的一个或多个传输层连接的第一池,并且第三应用6220c和第四应用6220d可正使用到服务器30b的一个或多个传输层连接的第二池。另外,方法6700的实施例的每个步骤可在不同的实例中以及不同的频率被执行。在一些实施例中,可使用加速程序6120的多个实例出力到每个服务器30的一个或多个传输层连接的每个池。
[737]现在看图45B,描述了加速程序6120的流程图,提供被两个应用6220a和6220b使用的传输层连接,该传输层连接在一个实施例中到服务器30,或者在另一个实施例中到设备1250。如通过步骤6752描述的,使用应用6220提供的网络地址1,在客户端6205上的加速程序6120打开在客户端6205和服务器30或设备1250之间的第一传输层连接。由于TCP/IP协议对打开的连接应用多阶段握手,则示出的步骤6752为两路步骤。
[738]如步骤6754所示,一旦建立传输层连接,加速程序6120从应用6220a拦截GET请求,应用6220a指定/sales/forecast.html的路径名。由于在加速程序6120和服务器30或设备6205之间没有空闲的传输层连接被打开,所以加速程序6120打开传输层连接。在一个实施例中,如步骤6756所示,加速程序6120将应用6220a的请求映射到指定服务器30的网络地址2的第二网络地址。例如,加速程序120执行网络地址翻译,以便修改到应用6220a请求的服务器30’的目的IP地址和/或目的端口,或者控制或响应到请求的另一个服务器30”的目的IP地址和/或目的端口。在另一个实施例中,当接收到请求,或应用6220s产生请求时,加速程序6120向服务器30或设备1250发送请求。
[739]如步骤6758所示,加速程序6120也可向服务器30或设备1250传递GET请求。在一个实施例中,设备1250向服务器30转发请求,并且在进一步的实施例中,设备1250通过在设备1250和服务器30之间的池化的或池化并多路复用的传输层连接来转发请求。如步骤6760所示,在一些实施例中,服务器30响应以被请求的web页面。如步骤6762所示,加速程序6120向应用6220a转发web页面。在一个实施例中,如步骤6764所示,在加速程序6120和服务器30或设备1250之间的传输层连接被关闭。在其他实施例中,加速程序6120拦截关闭请求,并忽略遗留传输层连接打开的该请求。根据TCP/IP协议,关闭网络连接可包括多阶段处理。因此,步骤6764的流程线被示为双向的。在其他实施例中,根据池化方面的技术,为第一应用6220建立并被其使用的传输层连接保持打开或者以其他方式维持以提供来自相同的应用6220a或不同应用,例如第二应用6220b的进一步的数据步骤。
[740]在步骤6766,加速程序6120拦截从第二应用6220a到服务器30的请求。如果存在空闲的传输层连接向第二应用6220b开放并被其使用,例如在步骤6756建立的用于第一应用6220a的传输层连接,则加速程序6120使用该先前建立的传输层连接。同样,在步骤6766,第二传输层连接不需要被打开。相反,加速程序6120建立到服务器30或设备1250的第二传输层连接。在步骤6768,加速程序从第二应用6220b拦截请求,例如请求web页面/sales/forecast.html,并在步骤6770向服务器30或设备1250传输该请求。由于在加速程序6120和服务器6120之间的空闲连接已经打开,则不需要加速程序6120负担带有处理负载的服务器6120来打开进一步连接。在步骤6772,加速程序6120从服务器30拦截或接收响应,例如从传输层连接通过设备1250,并向第二应用6220b转发响应。在步骤6776,加速程序120从第二应用6220b拦截关闭请求,并且在一些实施例中,关闭连接,而在其他实施例中,忽略该请求,并使得连接保持满足来自第一应用6220a、第二应用6220b或者客户端6205的又一应用6220c-6220n的进一步的数据请求。
[741]在步骤6776,存在多种情况导致加速程序6120关闭与服务器30或应用1250的连结。例如,一旦确定客户端6205已经找到了用于应用6220a和6220b的所有的请求数据,或者一旦停止、关闭或退出应用6220a和6220b,则客户端6205或加速程序6120可开始FIN(完成)命令。在一些实施例中,在相似的条件下,客户端6205或加速程序6120也可开始RST(复位)命令。除了关闭在加速程序6120和服务器30或设备1250之间的连接之外,RST命令导致许多的内务处理操作被执行,以便保持服务器侧连接处于良好的顺序。特别的,TCP协议保证RST命令拥有正确的SEQ(序列)号,以便服务器将接受段。然而,RST命令不能保证拥有准确的ACK(确认)号。为了考虑这种请求,加速程序6120跟踪由服务器30或设备1250发送的数据的字节,以及被客户端6205确认的字节。如果客户端6205仍然没有被服务器30确认所有的数据,加速程序6120计算未确认的字节,并向服务器6205发送ACK。
[742]另外,虽然没有在图45B中示出,服务器30或设备1250可关闭自身和客户端6205之间的连接。服务器30或设备1250将向客户端6205发送FIN命令。在响应中,在一些实施例中,加速程序6120关闭连接,并且在进一步的实施例中,与服务器30或设备1250重建另一个连接。
[743]此外,虽然图45A的方法6700的实施例和图45B的流程图的实例通常讨论为池化被多个应用使用的一个或多个传输层连接,但是池化技术可被应用于单独的应用6220,该应用6220请求或开始多个传输层连接并通过这些连接请求。例如,在一个HTTP协议实施例中,可建立传输层连接用于来自应用的每个HTTP请求。使用该技术,在没有打开和关闭用于每一请求的传输层连接时,一个或多个传输层连接池可被应用220使用。
[744]在另一方面,可通过相同的或共享的传输层连接使用用于多路复用应用请求的技术,例如通过结合图45A-45B描述的池化技术而建立的传输层连接。在一些实施例中,并且通过检查是否已经从服务器30完全接收对应用请求的响应的内容,可确认已建立的传输层连接的可用性,以及通过连接可多路复用来自多个应用的请求。如下将被进一步讨论的,在一个实施例中,使用响应的内容长度参数,并且在另一个实施例中,使用响应的块传输编码头以检查是否已经接收了响应的全部数据。在一个方面,检查是否已经接收了响应的全部数据,以便确定池化的连接是否现在是空闲的用于应用使用,和/或是否建立到服务器的连接池的另一个传输层连接,例如在图45描述的方法6700的步骤6706和6708。在另一个实施例中,检查用于响应的内容长度的技术被用作通过相同的传输层连接对多个应用中的请求多路复用的技术。
[745]现在看图46,描述了通过从客户端6205到服务器30的单一的传输层连接对请求多路复用的方法6800的实施例。总的来说,在步骤6805,加速程序6120在客户端6205和服务器30之间建立传输层连接。在步骤6810,加速程序6120拦截到服务器30的第一应用6220a的第一请求。在步骤6815,加速程序6120确定是否传输层连接正被另一个应用使用,或者处于空闲。在步骤6817,如果传输层连接可被应用6220a使用,则接着在步骤6820,加速程序6120向服务器传输请求。否则,在步骤6817,如果传输层连接不能被应用6220a使用,则接着加速程序6120在步骤6819或者等待一段时间并返回步骤6815,或者建立被应用6220使用的第二传输层连接。在步骤6825,加速程序6120从服务器接收对应用请求的响应。在步骤6830,加速程序6120通过第二应用6220b拦截第二请求,并在步骤6815继续,以便确定是否传输层连接可被第二应用6220b使用。在一些实施例中,在步骤6825接收第一请求的响应之前,或者在接收所有的响应数据之前,在步骤6830,加速程序6120拦截第二应用6220b的请求。如此处进一步讨论的,在一些实施例中,加速程序6120使用内容长度检查技术来确定何时传输层连接何时空闲或者何时应用已经接收了对请求的响应的所有数据。
[746]在进一步的细节中,在步骤6805,加速程序6120在客户端6205和服务器30之间建立传输层连接。在一些实施例中,加速程序6120与设备1250或中间设备或通过设备1250或中间设备建立传输层连接。在一个实施例中,加速程序6120建立传输层连接,作为到服务器30的传输层连接的池。同样,在一些实施例中,传输层连接可包括到服务器30的第二或第三传输层连接。在其他实施例中,加速程序6120可像以前讨论的通过第一程序6222建立传输层连接。在一些实施例中,响应于客户端6205的第一应用6220a的请求,加速程序6120建立传输层连接。
[747]在步骤6810,加速程序6120拦截第一应用6220a访问服务器30的第一请求。在一些实施例中,在通过传输层连接建立或传输请求之前,该请求在传输层被拦截。在其他实施例中,请求在传输层或传输层连接之上的任何协议层被拦截。在一些实施例中,请求被第一程序6222拦截。在一个实施例中,应用6220a的请求是打开或建立与服务器30的传输层连接的请求。在另一个实施例中,应用请求是通过已建立的传输层连接或通过设备1250访问服务器的请求。
[748]在步骤6815,加速程序120确定传输层连接是否空闲或可被第一应用6220a使用,或者传输第一应用6220a的第一请求。在一些实施例中,加速程序6120从一个或多个传输层连接的池确定池中的哪个传输层连接是空闲的或者可被第一应用6220a使用。在一个实施例中,由于加速程序6120响应于请求或即刻在请求之前建立传输层连接,加速程序6120确定传输层连接是空闲的。在一些实施例中,加速程序6120可能还没有从应用6220接收到任何请求,并认可该请求为将被加速程序6120截获和处理的第一请求。在另一个实施例中,加速程序6120跟踪用于任何在传输层连接上传输的请求的未完成的响应的数量,并且如果没有未完成的响应,则加速程序6120识别传输层连接可被第一应用6220a使用。在又一个实施例中,加速程序6120识别传输层连接当前空闲。例如,加速程序6120可开始对到服务器的请求保持有效,以便保持连接打开。在一些实施例中,当最后的事务已经结束,但服务器30和/或客户端6205还没有传输RST和/或FIN命令时,传输层连接空闲。
[749]在一些实施例中,加速程序6120可检查响应的内容长度以便确定是否从服务器30到第一应用6202a的第一请求完成与否,加速程序6120是否已经接收了响应的所有数据。如上所提及的,在实施例中的这些技术也可用于确定建立用于池化技术的另一个连接。关于该技术,将被图47和48用于在一个实施例描述响应的内容长度参数检查,或另一个实施例中响应的分度传输编码头的检查以确定是否响应的所有数据已经被接收。图47描述了称为TCP段6900的TCP包的TCP部分。TCP段6900包括TCP头6902和体6904。在一个实施例中,体6904包括其他数据和信息、HTTP头和消息,其中TCP包携带HTTP的应用层协议。在一些实施例中,内容长度参数6906位于HTTP头中,或在其中发现或在其中被引用。在一个实施例中,加速程序6120使用内容长度参数6906以便确定用于响应的所有数据是否被接收。
[750]图48描述了TCP包的TCP段的另一个实施例。在传输层连接上使用HTTP协议的一些实施例中,块传输编码头可被呈现并指示块传输编码已被应用到TCP段或包。同样,在该实施例中,消息的长度被分段编码定义。为了将消息转换为一系列段,每个块在块尺寸域中具有自身的长度指示器,块编码修改消息的体。TCP段7600包括TCP头(未示出)和体。体包括,在其他信息中,HTTP头7602A-7602C以及信息。HTTP头7602A-7602C包括七个块尺寸域7606A-7601C,以及六个块消息数据7604A-7604F。
[751]如图48所示,块尺寸域7606A-7606G被链接到一起,或以其他方式被引用或关联。块尺寸域7606A在块消息数据7604A中指示消息的长度,并且块尺寸域7606C在块消息数据7604C中指示消息的长度,以下类似。最后的块尺寸域7606G包括长度值零,指示后面没有块或任何消息。在另一个实施例中,加速程序6120通过块尺寸域确定客户端6205是否已经接收了响应的所有数据。
[752]虽然图47和48一般性的描述了用于检查用于对请求的响应的所有数据是否已经被接收,但是服务器30或设备1250可使用这些技术向客户端6205发送异步消息或与之通讯。另外,虽然这些技术总的结合图47和48被描述为用于HTTP协议,但是这些技术可用于任何协议层上的任何协议,这些协议层提供将被客户端605传输或接收的数据的长度的指示。同样,在一些实施例中,加速程序6120访问、抽取、检查、分析或以其他方式处理包括在任何协议层的网络包的任何部分,以确定与客户端和服务器或设备之间的请求、响应或通信相关联的所有数据是否已经被接收。在又一个实施例中,加速程序6120追踪在客户端6205和服务器30之间传输、接收和确认的字节的数量,以便确定在客户端6205和服务器30之间对于应用6220是否有字节未完成。
[753]通过使用以上描述的内容长度技术,加速程序6120可重新使用到服务器30先前使用的或被客户端6205的任何其他应用6220a-6220n在处理中使用的相同传输层连接。在步骤6817,加速程序6120确定是否传输层连接可用于传输第一请求,如果可以在步骤6820向服务器30传输请求。否则,在步骤6819,加速程序6120可等待直到所有用于应用的未完成的请求的数据被接收。例如,加速程序6120可设置定时器例如到短的时间段并继续到步骤6815。在一些实施例中,加速程序6120响应于客户端6205的网络堆栈6210的包处理定时器来检查所有的数据是否已经被接收。在另一个实施例中,在步骤6819,加速程序6120建立另一个传输层连接以便传输第一应用6220a的第一请求。
[754]在步骤6820,加速程序6120可追踪哪个应用6220正有在连接上的未完成的请求或响应,或者正使用连接。例如,一次只有一个应用6220可在连接上传输请求或接收响应。同样,加速程序6120知道哪个应用6220正使用连接。在一些实施例中,加速程序6120使用用于传输层连接通信的一个端口号,上述传输层连接通信用于共享连接的客户端6205的所有应用6220a-6220n。在一些例子中,基于应用,加速程序6120追踪请求和在应用上对于请求的未完成的响应。在一些实施例中,加速程序6120将应用6220的处理id与请求关联。在又一个实施例中,加速程序6120传输在相同的网络包、包、TCP段或者段中的第一应用6220a的请求以及第二应用6220b的请求。在其他实施例中,通过相同的传输层连接作为一个或多个TCP段窗口的一系列TCP段的部分,加速程序6120传输应用6220a-6220n的多个请求。
[755]在其他实施例中,加速程序6120使用端口编号机制和/或方案来跟踪和识别接收的哪个响应或消息用于哪个应用6220a-6220n。在其他实施例中,加速程序6120为应用6220提供端口号并与将端口号与应用6220关联,并且修改TCP网络包中的端口号,该TCP网络包将被传输到应用的指定端口号。在另一个实施例中,应用6220提供端口号,加速程序6120依照TCP网络包改变或提供端口号。同样,在一些实施例中,加速程序6120可交织来自客户端6205的多个应用6220a-6220n的请求,使得应用6220a-6220n可同时使用传输层连接。
[756]在步骤6825,加速程序6120从服务器30接收到第一应用6220a的第一请求的响应,例如通过设备6205,并向第一应用6220a提供响应。在一些实施例中,加速程序6120通过网络堆栈6210向第一应用6220a提供响应,例如通过连接的传输层之上的协议层允许或开始响应的处理。在另一个实施例中,第一程序6222向第一应用6220a提供响应。在其他实施例中,加速程序6120可通过中间处理通信机制或例如API的接口向第一应用6220a提供应用。在一些实施例中,加速程序6120仅接收响应的一部分,例如图48中描述的在多块消息中的第一块。
[757]在步骤6830,加速程序6120拦截第二应用6220b的请求以便访问服务器30。在一些实施例中,加速程序6120在步骤6825之前拦截第二应用6220b的请求。在其他实施例中,加速程序6120在步骤6825接收响应期间拦截第二应用6220b的请求。在另一个实施例中,在客户端6205或加速程序6120接收用于第一应用6220a的第一请求的响应的所有数据之前,加速程序6120拦截第二应用6220b的请求。一旦拦截第二应用6220b的请求,在一个实施例中,加速程序6120继续步骤6815,以便确定是否通过传输层连接多路复用第二请求,或者是否建立另一个传输层连接,例如在连接池中的另一个连接。在其他实施例中,加速程序6120通过与第一应用6220a相同的连接传输第二应用6220b的请求,而第一应用6220a有未完成的响应或者没有接收对第一请求的响应的所有数据。在另一个实施例中,在第一应用6220a已经接收到响应之后,并且在产生与第一应用6220a相关的任何已产生的RST和/或FIN之前,加速程序6120传输第二应用6220b的请求。
[758]虽然对加速程序6120一般性的讨论结合客户端侧实施和加速技术的执行,但是加速程序6120与设备1250接口并与之协同工作,设备1250也实施并执行设备侧加速技术。在一个实施例中,客户端侧加速程序6120和设备1250可彼此协同工作以便在客户端6205和服务器30之间的通信之上执行多个加速技术。在一些实施例中,客户端侧加速技术120和设备1250二者都提供TCP池化和多路复用,例如在客户端6205和服务器30之间提供级联或端对端池化以及多路复用机制。例如,加速程序6120可向设备1250提供第一池化的传输层连接,随后向服务器30提供第二池化的传输层连接。在另一个实施例中,加速程序6120可通过客户端6205上的第一池化传输层连接多路复用应用请求,第一池化传输层连接依次被设备1250通过到服务器30的第二池化传输层连接多路复用。在一些实施例中,加速程序120提供对传输来自于客户端的请求的节流机制,而设备1250为从服务器30到客户端6205的传输响应提供节流机制。在另一个实施例中,加速程序6120为客户端6205执行客户端侧高速缓存,而设备1250为客户端6205和其他客户端6205提供对象的高速缓存,例如动态产生对象。
[759]在一些实施例中,除了在客户端6205和/或设备上执行加速技术之外,或与之协同,加速程序6120和设备可在客户端6205和网络40之间通过设备1250提供虚拟专用网络和通信。在另一个实施例中,加速程序6120可压缩从应用6220接收的数据,并且设备1250在接收到时则可以解压缩所压缩的数据。相反,设备1250可压缩从专用数据通信网络40’上的服务器上的应用6220传送来的数据,并且加速程序6120在接收到该数据时可解压缩该压缩数据。同样,加速程序6120和设备1250在加密数据通信或隧道会话中可作为端点,其中加速程序6120加密从应用6220传送的数据,并且在接收到该加密数据时,设备1250解密该加密数据。在类似的方式中,设备1250加密从专用数据通信网络上的应用6220传送的数据,并且在接收到该数据时,加速程序6120解密该数据。
D.计算环境的加速传送的实施例
[760]考虑上述描述的B和C部分中的结构、功能和操作,在一些实施例中,计算环境到客户端的传送可被加速。例如,可使用此处描述的实施例可从中心公司数据中心传送被应用处理的流应用和数据文件到远程用户位置,例如公司的分支机构。设备和加速程序提供用于加速从服务器到远程客户端的任何传输层有效负载的端对端加速技术,例如被流式传输的应用和数据文件。基于多个执行方法以及基于通过策略引擎应用的任何验证和授权,应用传送管理系统提供应用传送技术以便向远程用户的桌面传送计算环境。使用这些技术,远程用户可获得计算环境并对来自任何网络连接设备的服务器存储应用和数据文件进行访问。
[761]现在看图49A,描述了实现以上描述的加速和应用传送的系统和方法的实施例。总的来说,客户端10通过网络40、40’和设备1250与服务器30通信。例如,客户端可驻留在公司的远程办公室里,例如分支机构,并且服务器可驻留在公司数据中心。客户端10包括客户端代理560以及计算环境15。计算环境15可执行或操作用于访问、处理或使用数据文件的应用。计算环境15、应用和/或数据文件可通过设备1250和/或服务器30传送。在一些实施例中,客户端10也可包括加速程序4120、收集代理404,以及流客户端562。服务器30包括应用传送系统500,以及在一些实施例中,策略引擎406。
[762]在一个实施例中,应用传送系统500可驻留在服务器30上或在其上执行。在另一个实施例中,应用传送系统500可驻留在多个服务器30-30’上或在其上执行。在一些实施例中,应用传送系统500可在服务器群组内执行。在一个实施例中,执行应用传送系统500的服务器30也可存储或提供应用和数据文件。在另一个实施例中,一个或多个服务器30的第一集合可执行应用传送系统500,并且不同的服务器30’可存储或提供应用和数据文件。在一些实施例中,每个应用传送系统500、应用和数据文件可驻留或位于不同的服务器。在一个实施例中,应用传送系统500也可包括策略引擎406。在另一个实施例中,策略引擎406的执行与应用传送系统500分离。在一些实施例中,策略引擎406和应用传送系统500在同一服务器上。在其他实施例中,策略引擎406在设备1250上执行。在又一个实施例中,应用传送系统500和/或策略引擎406的任何部分可驻留、执行、存储于或分发到设备1250或多个设备。
[763]在一些实施例中,客户端代理560如上所描述的包括任何的流客户端562、收集代理404和/或加速程序6120。在一个实施例中,客户端代理560、流客户端562、收集代理404和/或加速程序6120形成或包括进可执行指令的一个单独的程序或集合中,以提供每一个的功能、逻辑和操作。在其他实施例中,流客户端562、收集代理404和加速程序6120的每个与客户端代理560分离的执行。在一个实施例中,客户端10执行客户端代理560。在另一个实施例中,客户端10执行流客户端562。在一些实施中,客户端10执行收集代理404。在一个实施例中,客户端执行加速程序6120。在一些实施例中,客户端10执行带有一个或多个流客户端562的客户端代理560、收集代理404或加速程序6120。在其他实施例中,客户端10执行流客户端562和加速程序6120。在一个实施例中,客户端10执行加速程序6120和收集代理404。
[764]在一些实施例中,客户端10从服务器30获得客户端560、流客户端562和/或收集代理404。在其他实施例中,客户端10从设备1250获得客户端560、流客户端562和/或收集代理404。在一个实施例中,任何客户端560、流客户端562和/或收集代理404可存储在设备1250上。例如,在一些实施例中,客户端560、流客户端562和/或收集代理404可被高速缓存在设备1250中。在其他实施例中,一旦设备1250确定应用可被加速,则设备1250可向客户端10传输客户端560、流客户端562、加速程序6120和/或收集代理404。在一些实施例中,客户端10可自动安装和执行任何的客户端560、流客户端562、加速程序6120和/或收集代理404。在又一个实施例中,任何的客户端560、流客户端562、加速程序6120和/或收集代理404可对客户端的用户或应用或者客户端网络堆栈的任何部分透明的执行。
[765]在一些实施例中,设备1250为客户端10建立到服务器30或网络40’的VPN或SSL VPN连接。在其他实施例中,设备1250作为代理、访问服务器或负载平衡器,以便提供对一个或多个服务器30的访问。在一个实施例中,设备1250和/或加速程序6120加速流客户端562、收集代理404和/或客户端代理560到客户端10的传送。在一个实施例中,设备1250加速到客户端10的加速程序6120的传送。在其他实施例中,设备1250和/或加速程序6120加速计算环境15、应用、和/或数据文件到客户端10的传送。在一个实施例中,客户端10拥有计算环境15,并且设备1250和/或加速程序6120加速应用和/或数据文件的传送。在一个实施例中,设备1250和/或加速程序6120加速应用的传送。在另一个实施例中,设备1250和/或加速程序6120加速数据文件的传送。在又一个实施例中,设备1250和/或加速程序6120加速计算环境15的传送,例如此处在前描述的执行环境或虚拟执行环境。
[766]在一个实施例中,设备1250使用收集代理404收集的信息以便确定是否计算环境15、应用和/或数据文件可被加速。在一些实施例中,设备1250的策略引擎包括策略引擎406。在其他实施例中,设备1250与策略引擎406通信或接口以便确定远程用户或远程客户端10的验证和/或授权,以访问来自服务器30的计算环境15、应用和/或数据文件。在另一个实施例中,设备1250与策略引擎406通信或接口,以便确定远程用户或远程客户端10的验证和/或授权,使得应用传送系统500传送一个或多个计算环境15、应用和/或数据文件。在又一个实施例中,基于远程用户或远程客户端10对策略引擎的验证和/或授权,设备1250建立VPN或SSL VPN连接。在一个实施例中,基于策略引擎406的策略,设备1250控制网络话务量和通信会话的流量。例如,基于策略引擎406,设备1250可控制对计算环境15、应用或数据文件的访问。
[767]现在看图49B,描述了向远程位置客户端的远程用户加速传送计算环境的方法的实施例。方法8000总的来说,在步骤8005,服务器30接收执行客户端10上的应用的请求。在步骤8010,服务器30向客户端10流式传输用于执行的应用。在步骤8015,设备1250和/或客户端侧加速程序6120加速到客户端10的应用的传送或传输。在步骤8020,客户端10或应用请求被应用使用的来自服务器30的数据文件。在步骤8025,服务器30和/或设备1250向客户端10传输数据文件。在步骤8030,设备1250和/或客户端侧加速程序6120加速数据文件到客户端10的传送或传输。
[768]在进一步的细节中,在步骤8005,服务器30接收请求以执行客户端10上的应用。在一些实施例中,客户端10的用户作出请求。在其他实施例中,应用、操作系统或计算环境15传输该请求。在另一个实施例中,设备1250拦截来自客户端10的请求并向服务器30转发该请求。在一个实施例中,基于用户或客户端10的验证和/或授权,设备1250向服务器30转发该请求。在另一个实施例中,基于收集代理404提供的信息,设备1250向服务器30转发该请求。在一个实施例中,请求包括通过多个执行方法中的一个方法执行应用的请求。例如,客户端10的用户可请求执行应用为从服务器流式传输的应用、本地安装和执行的应用、或服务器30上执行并向客户端10远程显示的基于服务器的应用。在一些实施例中,请求基于文件类型关联。例如,用户可选择与应用相关联的文件,该应用用于读出或访问文件。
[769]在步骤8010,响应于步骤8005的请求,服务器30向客户端10传输用于执行的应用。在一些实施例中,服务器流式传输应用到客户端10。例如,在一些实施例中,通过流式传输应用,应用不用安装而在客户端10上执行。在其他实施例中,服务器30向客户端10传输应用用于本地安装和执行。例如,使用结合C部分中的加速程序6120描述的自动安装和执行技术,在接收到应用时,客户端10可自动安装和执行应用。在另一个实施例中,服务器30代表客户端在服务器30上执行应用,并通过远程显示或表示层协议向客户端10传输显示。在又一个实施例中,设备1250向客户端10流式传输应用或者向客户端10传输用于安装和/或执行的应用。在一些实施例中,设备1250和/或服务器30传输包括应用的计算环境15。在其他实施例中,设备1250和/或服务器30响应于请求来传输计算环境15。
[770]在步骤8015,设备1250和/或加速程序6120加速用于执行的应用到客户端10的传送。在一个实施例中,设备1250执行或应用在以上C部分中描述的一个或多个加速技术。在另一个实施例中,加速程序6120执行或应用在以上C部分中描述的多个客户端侧加速程序的一个或多个。在一些实施例中,加速程序1250和设备6120共同工作或彼此协同工作,以便在客户端10和设备1250二者上执行多个加速程序。例如,加速程序6120可执行一个或多个加速技术的第一集合,而设备1250执行一个或多个加速技术的第二集合。在一个实施例中,加速程序1250和设备6120执行相同的加速技术。在另一个实施例中,加速程序1250和设备6120执行不同的加速程序。
[771]在一个实施例中,设备1250和/或加速程序6120加速在客户端10和服务器30之间通过传输层连接传输的任何有效负载。在一些实施例中,服务器30通过传输层连接流式传输作为一个或多个数据文件的应用,例如TCP/IP包的有效负载。在其他实施例中,服务器30通过应用层协议或在传输层连接之上的流协议流式传输应用。在另一个实施例中,服务器30通过传输层连接经ICA或RDP协议传输显示输出。在这些实施例的任意个中,设备1250和/或加速程序6120通过传输层包的有效负载加速应用的传送。
[772]在步骤8020,客户端10传输对于设备或计算环境15使用的数据文件的请求。在一些实施例中,对于数据文件的请求与请求一起被传输以便在步骤8005中执行应用。在一个实施例中,执行应用的请求包括对于数据文件的请求。在其他实施例中,应用或计算环境请求在执行应用或计算环境的任何功能、操作、或逻辑过程中的数据文件。例如,应用或计算环境15可请求来自服务器30的任何宏指令、脚本、配置数据、配置文件、模板或规则。在一些实施例中,应用请求作为应用的背景处理或任务的数据文件。在一个实施例中,应用或计算环境15的用户请求数据文件读取、访问或以其他方式处理带有应用或计算环境的文件。例如,用户可通过应用打开文件用于编辑,例如通过字处理应用打开文本用于编辑。在一些实施例中,用户将文件拖曳并放入计算环境的应用中以便请求数据文件。在其他实施例中,用户可通过文件和目录接口,例如在Windows操作系统中的文件浏览器,请求数据文件,放置于网络化的或远程的存储系统中,例如中心服务器的网络驱动器。
[773]在步骤8025,服务器30或设备1250向客户端10传输被请求的数据文件。在一些实施例中,服务器30或设备1250响应步骤8020的请求,向客户端10传输数据文件。在其他实施例中,在没有来自客户端10的请求时,服务器30或设备1250向客户端10传输数据文件。例如,服务器30可向客户端10“推入”数据文件的更新。在一个实施例中,服务器30向客户端10传输被请求的数据文件。在另一个实施例中,设备1250向客户端10传输被请求的数据文件。例如,在一个实施例中,设备1250拦截对于数据文件的请求,检查用于数据文件的设备1250的高速缓存,并向客户端10传输被高速缓存的数据文件。在又一个实施例中,加速程序6120在客户端10拦截数据文件请求并通过加速程序6120的高速缓存向客户端10提供数据文件。在一些实施例中,设备1250或服务器30通过流协议或流来传输数据文件。在其他实施例中,设备1250或服务器30通过任何类型和形式的高速缓存协议来传输数据文件。
[774]在步骤8030,设备1250和/或加速程序6120加速数据文件到客户端10的传送或传输。在一些实施例中,数据文件可通过任何类型和形式的协议传输,例如传输层协议之上的应用层协议。在一个实施例中,设备1250加速数据文件的传输。在另一个实施例中,加速程序6120加速数据文件的传输。在一些实施例中,设备1250与加速程序1250协同加速数据文件的传输。如此处所描述的,设备1250和/或加速程序6120可执行一个或多个在客户端10和设备30上的加速技术,以便加速数据文件的传输。在一些实施例中,设备1250和/或加速程序6120可高速缓存客户端10或设备1250上的一个或多个数据文件以供应用或计算环境15使用。
代表性实例
[775]作为示范性实施例,用户位于工作在本地机器10上的分支机构。用户可能期望使用例如MICROSOFT Word的字处理应用来编辑公司文件,二者都驻留在位于中心办公室的远程机器30上。用户可接着导航web浏览器到远程机器30寄载的公司web站点。一旦用户被远程机器30验证,远程机器30可准备并向本地机器10传输HTML页,该HTML页包括如此处在图3A和3B中描述的程序邻近窗口,在图3A和图3B中出现的图标代表本地机器10已经访问的应用程序。本地机器10的用户通过点击图标可调用应用的执行。如在图4A-4D中描述的策略引擎可接着确定本地机器10是否以及怎样访问字处理应用。使用在图20-21中描述的技术,应用程序可接着被本地安装和执行。用户可接着使用应用选来择在远程机器30上的文本用于编辑。使用此处描述的任何技术,例如TCP多路复用,设备1250可接着加速文件到本地机器10的传送。
[776]作为另一个实施例,第二用户可以位于工作在本地机器10上的分支机构。用户可能期望通过用户的公司帐户访问包含附件的电子邮件。电子邮件应用和电子邮件数据文件可驻留在中心办公室。一旦用户请求访问电子邮件应用,如图4A-4D中描述的策略引擎使用此处描述的流技术可确定流式传输到用户的电子邮件应用。策略引擎也可如此处描述的在本地机器10上安装来决定安装加速程序。使用此处描述的技术,例如动态高速缓存,应用流可被加速。一旦本地安装,用户可接着选择电子邮件和相应的附件查看。设备1250可通过使用加速技术,例如此处描述的TCP池化,加速文件的传送。设备也可高速缓存被传送到远程机器的一些或所有数据文件,以便加速稍后的请求。高速缓存可与加速程序结合在设备1250或者在本地机器10上实现。
[777]作为第三个实施例,位于分支机构的用户可能希望访问电子数据表程序(例如MICROSOFT Excel)来更新电子数据表。用户可使用本地机器10与位于中心办公室的远程机器30建立SSL连接,并如图3A和3B所描述的从程序邻近选择电子数据表应用。如图4D所描述的收集代理可接着收集关于本地机器的信息以便确定是否电子数据表应用可被流式传输到本地机器10。电子数据表应用可接着通过SSL连接被流式传输到本地机器10。SSL连接可通过此处描述的提供SSL或TCP连接池化和多路复用技术的设备1250加速。应用流也可被此处描述的提供任何动态高速缓存技术的设备1250加速。用户可接着从电子数据表应用中选择文件用于编辑。本地机器10可向远程机器传输对于文件的请求。设备1250可接着使用此处描述的压缩技术来加速文件到用户的传送。
[778]虽然上述一般性描述了加速计算环境到客户端的传送的应用传送系统和设备,但是应用传送系统和设备可以加速多个计算环境、应用和/或数据文件到客户端的传送。例如,应用传送系统和设备可加速与一种类型的操作系统相关联的第一计算环境到客户端的传送,以及与第二种类型的操作系统相关联的第二计算环境到客户端的传送。另外,应用传送系统和设备可加速计算环境、应用、和/或数据文件到多个客户端的传送。另外,虽然上述一般性描述了加速计算环境到远程客户或远程客户端的传送的应用传送系统和设备,但是应用传送系统和设备可以加速计算环境、应用和/或数据文件到任何本地、远程客户端或其他客户端的传送,例如在服务器的LAN上的客户端。
[779]此外,虽然上述一般性描述设备在客户端和应用传送系统之间,但是在一个或多个客户端和一个或多个服务器之间可使用多个设备。在一些实施例中,第一设备驻留在客户端的网络上,并且第二设备驻留在服务器网络上。在一个实施例中,第一设备和第二设备在此处描述的操作的执行中彼此通信。例如,第一设备和第二设备可通过中间节点、高性能或设备到设备通信协议来通信。应用传送系统和设备可被布置于多种类的网络环境和基础结构中。
[780]实施例可作为一个或多个计算机可读程序提供,这些计算机可读程序嵌入到一个或者多个制造产品中。产品可为软盘、硬盘、紧致磁盘、数字多用途盘、闪烁存储卡、PROM、RAM、ROM或磁带。通常,计算机可读程序可以任何编程语言实现。可使用的语言的一些实例包括C、C++、C#、或JAVA。软件程序可以作为对象代码存储在一个或多个产品中。

Claims (60)

1、一种用于加速传送计算环境到远程客户端的方法,该方法包括步骤:(a)通过服务器接收来自远程客户端的请求以执行应用,所述远程客户端和服务器通过设备通信;
(b)通过所述服务器流式传输应用到所述远程客户端用于执行;
(c)通过所述服务器传输所述远程客户端请求的数据文件用于由所述流式传输的应用访问;并且
(d)通过所述设备加速所述数据文件到所述远程客户端的传输。
2、如权利要求1所述的方法,其中,所述数据文件的格式是可被所述应用使用的格式。
3、如权利要求1所述的方法,其中,所述应用与所述数据文件的文件类型相关联。
4、如权利要求1所述的方法,包括通过所述设备加速到所述远程客户端的所述应用的流式传输。
5、如权利要求1所述的方法,包括所述设备通过执行下述加速技术之一而加速数据文件的传输或应用的流式传输的其中之一:
压缩;
传输控制协议多路复用;
传输控制协议缓冲;以及
高速缓存。
6、如权利要求1所述的方法,包括通过所述远程客户端上的加速程序加速所述远程客户端和所述服务器之间的通信。
7、如权利要求1所述的方法,包括通过所述设备建立与所述远程客户端的虚拟专用网络连接或安全套接层(SSL)连接的其中之一。
8、如权利要求1所述的方法,包括一旦客户端请求与服务器建立连接或会话的其中之一,由所述设备向所述远程客户端传输加速程序。
9、如权利要求8所述的方法,包括一旦接收到来自所述设备的加速程序,所述远程客户端自动安装和执行该加速程序。
10、如权利要求9所述的方法,包括通过远程客户端对所述应用或所述服务器的其中之一透明地执行加速程序。
11、如权利要求1所述的方法,包括通过所述设备确定所述应用能够被加速,并响应于该确定向远程客户端传输加速程序。
12、如权利要求1所述的方法,包括由加速程序在远程客户端上执行下述加速技术之一:
压缩;
传输控制协议多路复用;
传输控制协议缓冲;以及
高速缓存。
13、如权利要求1所述的方法,包括通过所述设备高速缓存所述数据文件。
14、如权利要求13所述的方法,包括通过所述设备拦截来自远程客户端用于数据文件的请求,并响应于该请求向所述远程客户端传输被高速缓存的数据文件。
15、如权利要求1所述的方法,包括由所述设备压缩从所述服务器接收的所述数据文件,并向所述远程客户端传输压缩的数据文件。
16、如权利要求1所述的方法,包括由所述设备通过被多个客户端使用的池化的传输层连接从服务器接收流式传输的应用或所述数据文件。
17、如权利要求16所述的方法,包括由所述设备通过池化的传输层连接多路复用流式传输的应用或数据文件的其中之一的传输的网络包。
18、如权利要求1所述的方法,其中所述远程客户端位于第一网络,并且所述服务器或所述设备的其中之一位于第二网络。
19、如权利要求1所述的方法,其中所述远程客户端位于分支机构,并且所述服务器或所述设备的其中之一位于数据中心。
20、一种用于加速传送计算环境到远程客户端的系统,该系统包括:
设备,用于加速在一个或多个客户端和一个或多个服务器之间的通信;
服务器,接收来自远程客户端的请求以执行应用,响应于所述请求,所述服务器将用于执行的应用通过所述设备流式传输到所述远程客户端;
其中,所述服务器传输被远程客户端请求的数据文件用于流式传输的应用所访问;并且
所述设备加速数据文件到远程客户端的传输。
21、如权利要求20所述的系统,其中数据文件的格式是可被所述应用使用的格式。
22、如权利要求21所述的系统,其中所述应用与所述数据文件的文件类型相关联。
23、如权利要求20所述的系统,其中,所述设备加速所述应用到远程客户端的流式传输。
24、如权利要求20所述的系统,包括远程客户端上的加速程序加速远程客户端和服务器之间的通信。
25、如权利要求20所述的系统,其中所述设备建立与远程客户端的虚拟专用网络连接或安全套接层(SSL)连接的其中之一。
26、如权利要求20所述的系统,其中一旦客户端请求与服务器建立连接或会话的其中之一,所述设备向远程客户端传输加速程序。
27、如权利要求26所述的系统,其中一旦接收到来自所述设备的加速程序,远程客户端自动安装和执行该加速程序。
28、如权利要求26所述的系统,其中在远程客户端上的加速程序执行下述加速技术之一:
压缩;
解压缩;
传输控制协议多路复用;
传输控制协议缓冲;以及
高速缓存。
29、如权利要求26所述的系统,其中远程客户端对应用或服务器的其中之一透明地执行加速程序。
30、如权利要求20所述的系统,其中所述设备确定应用能够被加速,并响应于该确定向远程客户端传输加速程序。
31、如权利要求20所述的系统,其中所述设备通过执行下述加速技术之一而加速数据文件的传输或应用的流式传输的其中之一:
压缩;
传输控制协议多路复用;
传输控制协议缓冲;以及
高速缓存。
32、如权利要求20所述的系统,其中所述设备包括用于高速缓存数据文件的高速缓存。
33、如权利要求32所述的系统,其中所述设备拦截用于数据文件的请求,并响应于该请求向远程客户端传输被高速缓存的数据文件。
34、如权利要求23所述的系统,其中所述设备压缩从服务器接收的数据文件,并向远程客户端传输压缩的数据文件。
35、如权利要求23所述的系统,其中所述设备通过被多个客户端使用的池化的传输层连接从服务器接收流式传输的应用或数据文件。
36、如权利要求32所述的系统,其中所述设备通过池化的传输层连接多路复用流式传输的应用或数据文件之一的传输的网络包。
37、如权利要求23所述的系统,其中远程客户端位于第一网络,并且服务器或所述设备的其中之一位于第二网络。
38、如权利要求23所述的系统,其中远程客户端位于分支机构,并且服务器或所述设备的其中之一位于数据中心。
39、一种用于通过客户端代理和设备加速传送计算环境到远程客户端的方法,该方法包括步骤:
(a)通过设备向客户端代理流式传输用于远程客户端请求执行的应用;
(b)通过所述设备传输被远程客户端请求的数据文件,该数据文件被流式传输的应用访问;并且
(c)通过客户端代理或所述设备的其中之一加速数据文件到远程客户端的传送。
40、如权利要求39所述的方法,包括由客户端代理或所述设备的其中之一加速流式传输的应用向远程客户端的传送。
41、如权利要求39所述的方法,包括由客户端代理或所述设备的其中之一通过执行下述加速技术之一而加速数据文件或流式传输的应用之一的传送:
压缩;
传输控制协议多路复用;
传输控制协议缓冲;以及
高速缓存。
42、如权利要求39所述的方法,包括通过客户端代理和所述设备建立用于远程客户端的虚拟专用网络连接或安全套接层(SSL)连接的其中之一。
43、如权利要求39所述的方法,包括通过客户端代理或所述设备的其中之一高速缓存数据文件。
44、如权利要求39所述的方法,包括通过客户端代理或所述设备的其中之一拦截来自远程客户端用于数据文件的请求,并响应于该请求提供被高速缓存的数据文件。
45、如权利要求39所述的方法,包括由所述设备压缩从服务器接收的数据文件,并向客户端代理传输该压缩的数据文件。
46、如权利要求45所述的方法,包括由客户端代理解压缩从所述设备接收的压缩的数据文件,并向在远程客户端上执行的流式传输的应用提供该数据文件。
47、如权利要求39所述的方法,包括由客户端代理通过在所述设备和服务器之间的池化的传输层连接从所述设备接收流式传输的应用或数据文件的其中之一。
48、如权利要求47所述的方法,包括由所述设备通过池化的传输层连接多路复用流式传输的应用或数据文件的其中之一的传输的网络包。
49、如权利要求39所述的方法,包括在客户端代理和所述设备之间建立的第一传输层连接和在所述设备和服务器之间建立的第二传输层连接之间传输流式传输的应用或数据文件之一。
50、一种用于通过客户端代理加速传送计算环境到远程客户端的方法,该方法包括步骤:
(a)客户端代理从服务器接收用于请求执行的流式传输的应用,远程客户端通过客户端代理与服务器通信;
(b)客户端代理请求来自服务器的被流式传输的应用所访问的数据文件;
(c)通过客户端代理加速数据文件到远程客户端的流式传输的应用的传输。
51、如权利要求50所述的方法,包括通过客户端代理加速流式传输的应用到远程客户端的传送。
52、如权利要求50所述的方法,包括通过执行下述加速技术之一客户端代理加速数据文件或流式传输的应用的其中之一的传送:
压缩;
传输控制协议多路复用;
传输控制协议缓冲;以及
高速缓存。
53、如权利要求50所述的方法,包括通过客户端代理建立到服务器的用于远程客户端的虚拟专用网络连接或安全套接层(SSL)连接的其中之一。
54、如权利要求50所述的方法,包括通过客户端代理高速缓存数据文件或流式传输的应用的一部分。
55、如权利要求54所述的方法,包括通过客户端代理拦截远程客户端对于数据文件的请求,并响应于该请求提供被高速缓存的数据文件的一部分。
56、如权利要求54所述的方法,包括通过客户端代理拦截用户对于流式传输的应用的请求,并响应于该请求提供流式传输的应用的一部分。
57、如权利要求50所述的方法,包括由客户端代理解压缩从设备或服务器之一接收的压缩的数据文件,并向在远程客户端上执行的流式传输的应用提供该数据文件。
58、如权利要求50所述的方法,包括由客户端代理通过池化的传输层连接接收流式传输的应用或数据文件的其中之一。
59、如权利要求58所述的方法,包括由客户端代理通过池化的传输层连接解复用所接收的用于流式传输的应用或数据文件的其中之一的网络包。
60、如权利要求50所述的方法,包括在客户端代理和设备之间建立的第一传输层连接和在所述设备和服务器之间建立的第二传输层连接之间接收流式传输的应用或数据文件的其中之一。
CNA2007800219712A 2006-04-12 2007-04-11 用于加速计算环境到远程用户的传送的系统和方法 Pending CN101473628A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510221918.3A CN104767834B (zh) 2006-04-12 2007-04-11 用于加速计算环境到远程用户的传送的系统和方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US74472006P 2006-04-12 2006-04-12
US60/744,720 2006-04-12

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201510221918.3A Division CN104767834B (zh) 2006-04-12 2007-04-11 用于加速计算环境到远程用户的传送的系统和方法

Publications (1)

Publication Number Publication Date
CN101473628A true CN101473628A (zh) 2009-07-01

Family

ID=38595542

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201510221918.3A Active CN104767834B (zh) 2006-04-12 2007-04-11 用于加速计算环境到远程用户的传送的系统和方法
CNA2007800219712A Pending CN101473628A (zh) 2006-04-12 2007-04-11 用于加速计算环境到远程用户的传送的系统和方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201510221918.3A Active CN104767834B (zh) 2006-04-12 2007-04-11 用于加速计算环境到远程用户的传送的系统和方法

Country Status (10)

Country Link
US (3) US8151323B2 (zh)
EP (1) EP2005712B1 (zh)
JP (1) JP2009536377A (zh)
KR (1) KR20080110894A (zh)
CN (2) CN104767834B (zh)
AU (1) AU2007238099B2 (zh)
BR (1) BRPI0709986B1 (zh)
CA (1) CA2646414A1 (zh)
IL (1) IL194567A0 (zh)
WO (1) WO2007121241A2 (zh)

Cited By (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102243643A (zh) * 2010-05-12 2011-11-16 国际商业机器公司 文件服务器、在客户机上进行显示的方法以及计算机程序
CN102420847A (zh) * 2010-10-20 2012-04-18 微软公司 在在线服务中以高可用性路由通信
CN102637137A (zh) * 2010-12-21 2012-08-15 微软公司 基于策略的应用递送
CN102752365A (zh) * 2012-05-29 2012-10-24 华为终端有限公司 信息处理的方法与装置
CN102959926A (zh) * 2010-06-30 2013-03-06 阿尔卡特朗讯 安装应用的方法
CN102968331A (zh) * 2012-11-27 2013-03-13 中标软件有限公司 一种虚拟机管理系统及其文件访问方法
CN103179104A (zh) * 2011-12-23 2013-06-26 中国移动通信集团公司 一种远程服务的访问方法、系统及其设备
CN103281369A (zh) * 2013-05-24 2013-09-04 华为技术有限公司 报文处理方法及广域网加速控制器woc
CN103412914A (zh) * 2013-08-05 2013-11-27 广州仙海网络科技有限公司 网络客户端
CN103442007A (zh) * 2013-08-29 2013-12-11 成都卫士通信息安全技术有限公司 基于虚拟桌面控制方式实现访问远端应用服务的方法
CN103582510A (zh) * 2010-12-10 2014-02-12 韦斯技术有限公司 用于利用转码服务器经由HTTP API通过客户端设备处的Web浏览器实时地访问和控制远程机器的远程桌面的方法和系统
CN104166588A (zh) * 2013-05-16 2014-11-26 腾讯科技(深圳)有限公司 阅读内容的信息处理方法及装置
CN105162831A (zh) * 2015-07-27 2015-12-16 北京京东尚科信息技术有限公司 用于实现远程虚拟桌面的移动端和服务端操作方法及装置
CN105338026A (zh) * 2014-07-24 2016-02-17 阿里巴巴集团控股有限公司 数据资源的获取方法、装置和系统
CN106506522A (zh) * 2016-11-28 2017-03-15 杭州迪普科技股份有限公司 Tcp连接的管理方法和装置
CN106528188A (zh) * 2015-09-09 2017-03-22 腾讯科技(深圳)有限公司 一种应用加速方法及装置
CN107396186A (zh) * 2017-08-11 2017-11-24 四川长虹电器股份有限公司 Linux设备WebOS系统应用管理方法
CN107835260A (zh) * 2017-12-15 2018-03-23 吉旗(成都)科技有限公司 一种文件快速传输方法
CN107908968A (zh) * 2009-11-10 2018-04-13 马克西姆综合产品公司 用于集成微控制器和外部存储系统的块加密安全
CN107949829A (zh) * 2015-08-03 2018-04-20 思杰系统有限公司 在多会话平台上虚拟化装置管理服务
CN108491174A (zh) * 2018-02-01 2018-09-04 西安万像电子科技有限公司 画面传输方法、装置及系统
CN109614244A (zh) * 2011-09-12 2019-04-12 英特尔公司 应用和web服务之间元数据驱动的合作
CN110543371A (zh) * 2019-08-29 2019-12-06 张浩天 一种远程调用接口的方法、装置、电子设备和存储介质
CN111837403A (zh) * 2018-03-12 2020-10-27 高通股份有限公司 处理用于以流传送媒体数据的交互性事件
CN111880852A (zh) * 2020-07-28 2020-11-03 平安科技(深圳)有限公司 操作系统初始化方法、系统、计算机设备及存储介质
CN112328701A (zh) * 2020-11-27 2021-02-05 广东睿住智能科技有限公司 数据同步方法、终端设备及计算机可读存储介质
CN114422365A (zh) * 2022-01-21 2022-04-29 成都飞鱼星科技股份有限公司 一种基于硬件流加速的上网行为管理方法及系统
US11546176B2 (en) * 2020-08-26 2023-01-03 Rockwell Collins, Inc. System and method for authentication and cryptographic ignition of remote devices
CN114422365B (zh) * 2022-01-21 2024-03-19 成都飞鱼星科技股份有限公司 一种基于硬件流加速的上网行为管理方法及系统

Families Citing this family (777)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7343413B2 (en) 2000-03-21 2008-03-11 F5 Networks, Inc. Method and system for optimizing a network by independently scaling control segments and data flow
US8380854B2 (en) 2000-03-21 2013-02-19 F5 Networks, Inc. Simplified method for processing multiple connections from the same client
JP4386732B2 (ja) 2002-01-08 2009-12-16 セブン ネットワークス, インコーポレイテッド モバイルネットワークの接続アーキテクチャ
US7035595B1 (en) * 2002-01-10 2006-04-25 Berkana Wireless, Inc. Configurable wireless interface
US7461262B1 (en) * 2002-03-19 2008-12-02 Cisco Technology, Inc. Methods and apparatus for providing security in a caching device
US8370420B1 (en) 2002-07-11 2013-02-05 Citrix Systems, Inc. Web-integrated display of locally stored content objects
WO2004107132A2 (en) 2003-05-28 2004-12-09 Caymas Systems, Inc. Method, system and software for state signing of internet resources
WO2004107130A2 (en) 2003-05-28 2004-12-09 Caymas Systems, Inc. Multilayer access control security system
US7760729B2 (en) 2003-05-28 2010-07-20 Citrix Systems, Inc. Policy based network address translation
US7978716B2 (en) 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US8566946B1 (en) * 2006-04-20 2013-10-22 Fireeye, Inc. Malware containment on connection
US8739274B2 (en) 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US8495305B2 (en) 2004-06-30 2013-07-23 Citrix Systems, Inc. Method and device for performing caching of dynamically generated objects in a data communication network
US7757074B2 (en) 2004-06-30 2010-07-13 Citrix Application Networking, Llc System and method for establishing a virtual private network
CN101199187A (zh) 2004-07-23 2008-06-11 茨特里克斯系统公司 用于网络节点之间通信最优化的系统和方法
US7808906B2 (en) 2004-07-23 2010-10-05 Citrix Systems, Inc. Systems and methods for communicating a lossy protocol via a lossless protocol using false acknowledgements
US7680758B2 (en) 2004-09-30 2010-03-16 Citrix Systems, Inc. Method and apparatus for isolating execution of software applications
US8171479B2 (en) 2004-09-30 2012-05-01 Citrix Systems, Inc. Method and apparatus for providing an aggregate view of enumerated system resources from various isolation layers
US8095940B2 (en) 2005-09-19 2012-01-10 Citrix Systems, Inc. Method and system for locating and accessing resources
US7810089B2 (en) 2004-12-30 2010-10-05 Citrix Systems, Inc. Systems and methods for automatic installation and execution of a client-side acceleration program
US8549149B2 (en) 2004-12-30 2013-10-01 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP multiplexing
US8700695B2 (en) 2004-12-30 2014-04-15 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP pooling
US8954595B2 (en) 2004-12-30 2015-02-10 Citrix Systems, Inc. Systems and methods for providing client-side accelerated access to remote applications via TCP buffering
US8706877B2 (en) 2004-12-30 2014-04-22 Citrix Systems, Inc. Systems and methods for providing client-side dynamic redirection to bypass an intermediary
US8255456B2 (en) 2005-12-30 2012-08-28 Citrix Systems, Inc. System and method for performing flash caching of dynamically generated objects in a data communication network
KR20070104566A (ko) 2005-01-24 2007-10-26 사이트릭스 시스템스, 인크. 네트워크에서 동적으로 발생된 객체들의 캐싱을 수행하는시스템 및 방법
US7843938B1 (en) 2005-02-25 2010-11-30 Citrix Systems, Inc. QoS optimization with compression
US8438633B1 (en) 2005-04-21 2013-05-07 Seven Networks, Inc. Flexible real-time inbox access
CN101228523B (zh) * 2005-04-25 2012-06-06 网络装置公司 用于高速缓存网络文件系统的系统和方法
US8167722B2 (en) 2005-05-11 2012-05-01 Qualcomm Atheros, Inc Distributed processing system and method
US8943304B2 (en) 2006-08-03 2015-01-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US7756826B2 (en) * 2006-06-30 2010-07-13 Citrix Systems, Inc. Method and systems for efficient delivery of previously stored content
US9621666B2 (en) 2005-05-26 2017-04-11 Citrix Systems, Inc. Systems and methods for enhanced delta compression
US9407608B2 (en) 2005-05-26 2016-08-02 Citrix Systems, Inc. Systems and methods for enhanced client side policy
US9692725B2 (en) 2005-05-26 2017-06-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
WO2006136660A1 (en) 2005-06-21 2006-12-28 Seven Networks International Oy Maintaining an ip connection in a mobile network
US20070002367A1 (en) * 2005-06-29 2007-01-04 Eric Yuan Methods and apparatuses for selectively controlling a remote device
US8370583B2 (en) 2005-08-12 2013-02-05 Silver Peak Systems, Inc. Network memory architecture for providing data based on local accessibility
US8171238B1 (en) 2007-07-05 2012-05-01 Silver Peak Systems, Inc. Identification of data stored in memory
US8095774B1 (en) 2007-07-05 2012-01-10 Silver Peak Systems, Inc. Pre-fetching data into a memory
US8392684B2 (en) 2005-08-12 2013-03-05 Silver Peak Systems, Inc. Data encryption in a network memory architecture for providing data based on local accessibility
WO2009149416A1 (en) * 2008-06-05 2009-12-10 3Tera, Inc. Automated filer technique for use in virtualized appliances and applications
US8929402B1 (en) 2005-09-29 2015-01-06 Silver Peak Systems, Inc. Systems and methods for compressing packet data by predicting subsequent data
US8489562B1 (en) 2007-11-30 2013-07-16 Silver Peak Systems, Inc. Deferred data storage
US8811431B2 (en) 2008-11-20 2014-08-19 Silver Peak Systems, Inc. Systems and methods for compressing packet data
US9455844B2 (en) * 2005-09-30 2016-09-27 Qualcomm Incorporated Distributed processing system and method
US8997246B2 (en) * 2005-10-04 2015-03-31 Disney Enterprises, Inc. System and/or method for authentication and/or authorization via a network
US8131825B2 (en) 2005-10-07 2012-03-06 Citrix Systems, Inc. Method and a system for responding locally to requests for file metadata associated with files stored remotely
EP1955526B1 (en) 2005-12-02 2010-05-05 Citrix Systems, Inc. Method and apparatus for providing authentication credentials from a proxy server to a virtualized computing environment to access a remote resource
US7924884B2 (en) 2005-12-20 2011-04-12 Citrix Systems, Inc. Performance logging using relative differentials and skip recording
US7921184B2 (en) 2005-12-30 2011-04-05 Citrix Systems, Inc. System and method for performing flash crowd caching of dynamically generated objects in a data communication network
US8301839B2 (en) 2005-12-30 2012-10-30 Citrix Systems, Inc. System and method for performing granular invalidation of cached dynamically generated objects in a data communication network
US8151323B2 (en) 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
EP2023245B1 (en) * 2006-04-26 2016-02-17 Nippon Telegraph And Telephone Corporation Load control device and its method
US9037542B2 (en) * 2006-05-03 2015-05-19 Oracle International Corporation Reducing programming complexity in client applications when interfacing with database servers operating with different programming interfaces
US8171482B1 (en) * 2006-05-09 2012-05-01 Vmware, Inc. Application environment specifications for provisioning application specific runtime environments using subsets of resources required for execution
US7702796B2 (en) * 2006-05-18 2010-04-20 International Business Machines Corporation Recovering a pool of connections
US8224975B1 (en) * 2006-05-24 2012-07-17 Avaya Inc. Web service initiation protocol for multimedia and voice communication over internet protocol
US20070280254A1 (en) * 2006-05-31 2007-12-06 Microsoft Corporation Enhanced network communication
US7778184B2 (en) * 2006-06-06 2010-08-17 Murata Kikai Kabushiki Kaisha Communication system and remote diagnosis system
US7853753B2 (en) * 2006-06-30 2010-12-14 Verint Americas Inc. Distributive network control
US8971217B2 (en) * 2006-06-30 2015-03-03 Microsoft Technology Licensing, Llc Transmitting packet-based data items
US20080018649A1 (en) * 2006-07-18 2008-01-24 Zheng Yuan Methods and apparatuses for utilizing an application on a remote device
US8755381B2 (en) 2006-08-02 2014-06-17 Silver Peak Systems, Inc. Data matching using flow based packet data storage
US8885632B2 (en) 2006-08-02 2014-11-11 Silver Peak Systems, Inc. Communications scheduler
US8392977B2 (en) * 2006-08-03 2013-03-05 Citrix Systems, Inc. Systems and methods for using a client agent to manage HTTP authentication cookies
US8572721B2 (en) 2006-08-03 2013-10-29 Citrix Systems, Inc. Methods and systems for routing packets in a VPN-client-to-VPN-client connection via an SSL/VPN network appliance
US8626946B2 (en) * 2006-08-03 2014-01-07 Citrix Systems, Inc. Systems and methods for hierarchical global load balancing
US7953889B2 (en) 2006-08-03 2011-05-31 Citrix Systems, Inc. Systems and methods for routing VPN traffic around network disruption
US8677007B2 (en) 2006-08-03 2014-03-18 Citrix Systems, Inc. Systems and methods for bypassing an appliance
US8244883B2 (en) 2006-08-03 2012-08-14 Citrix Systems, Inc. Systems and methods of for providing multi-mode transport layer compression
US8561155B2 (en) * 2006-08-03 2013-10-15 Citrix Systems, Inc. Systems and methods for using a client agent to manage HTTP authentication cookies
US7917963B2 (en) * 2006-08-09 2011-03-29 Antenna Vaultus, Inc. System for providing mobile data security
US8213393B2 (en) 2006-08-21 2012-07-03 Citrix Systems, Inc. Methods for associating an IP address to a user via an appliance
US8451806B2 (en) * 2006-08-21 2013-05-28 Citrix Sysrems, Inc. Systems and methods for pinging a user's intranet IP address
US8418243B2 (en) * 2006-08-21 2013-04-09 Citrix Systems, Inc. Systems and methods of providing an intranet internet protocol address to a client on a virtual private network
US7769869B2 (en) * 2006-08-21 2010-08-03 Citrix Systems, Inc. Systems and methods of providing server initiated connections on a virtual private network
US7743258B2 (en) * 2006-08-28 2010-06-22 Sandisk Corporation Method for interacting with a memory device in cryptographic operations
US20080072060A1 (en) * 2006-08-28 2008-03-20 Susan Cannon Memory device for cryptographic operations
KR100856409B1 (ko) * 2006-10-09 2008-09-04 삼성전자주식회사 로컬 네트워크 장치의 원격 제어 방법 및 그 장치
US8238882B2 (en) * 2006-10-19 2012-08-07 Research In Motion Limited System and method for storage of electronic mail
US8355709B2 (en) * 2006-10-23 2013-01-15 Qualcomm Incorporated Device that determines whether to launch an application locally or remotely as a webapp
US8583793B2 (en) * 2006-11-20 2013-11-12 Apple Inc. System and method for providing a hypertext transfer protocol service multiplexer
WO2008061483A1 (fr) * 2006-11-24 2008-05-29 Hangzhou H3C Technologies Co., Ltd. Procédé et appareil d'identification de contenu de données
US8935296B2 (en) * 2006-12-14 2015-01-13 Taylor Morgen Corp. Method of facilitating contact between mutually interested people
CN101206649B (zh) * 2006-12-20 2011-06-22 鸿富锦精密工业(深圳)有限公司 多任务解析系统及方法
US8918427B1 (en) * 2006-12-29 2014-12-23 Symantec Operating Corporation Virtualization of file input/output operations
FR2911026B1 (fr) * 2006-12-29 2009-04-24 Ubicmedia Soc Par Actions Simp Procede et dispositif pour controler et gerer les fichiers multimedias compresses et librement telecharges
CN101637005B (zh) 2007-01-17 2014-04-09 英特托拉斯技术公司 用于片段文件共享的方法、系统以及装置
US20080178010A1 (en) 2007-01-18 2008-07-24 Vaterlaus Robert K Cryptographic web service
US20080194233A1 (en) * 2007-02-12 2008-08-14 Bridgewater Systems Corp. Systems and methods for context-aware service subscription management
US9274811B1 (en) 2007-02-16 2016-03-01 Bladelogic, Inc. System and method for cloud provisioning and application deployment
US9442708B1 (en) * 2007-02-16 2016-09-13 Bladelogic, Inc. System and method for installing, updating and uninstalling applications
US20080201332A1 (en) * 2007-02-20 2008-08-21 Souders Steven K System and method for preloading content on the basis of user context
US7844710B2 (en) * 2007-02-27 2010-11-30 Novell, Inc. Proxy caching for directory services
US8201218B2 (en) 2007-02-28 2012-06-12 Microsoft Corporation Strategies for securely applying connection policies via a gateway
US7783757B2 (en) 2007-03-12 2010-08-24 Citrix Systems, Inc. Systems and methods of revalidating cached objects in parallel with request for object
US7619545B2 (en) 2007-03-12 2009-11-17 Citrix Systems, Inc. Systems and methods of using application and protocol specific parsing for compression
US7760642B2 (en) * 2007-03-12 2010-07-20 Citrix Systems, Inc. Systems and methods for providing quality of service precedence in TCP congestion control
US7809818B2 (en) 2007-03-12 2010-10-05 Citrix Systems, Inc. Systems and method of using HTTP head command for prefetching
US7460038B2 (en) 2007-03-12 2008-12-02 Citrix Systems, Inc. Systems and methods of clustered sharing of compression histories
US7532134B2 (en) 2007-03-12 2009-05-12 Citrix Systems, Inc. Systems and methods for sharing compression histories between multiple devices
US8504775B2 (en) 2007-03-12 2013-08-06 Citrix Systems, Inc Systems and methods of prefreshening cached objects based on user's current web page
US7720936B2 (en) 2007-03-12 2010-05-18 Citrix Systems, Inc. Systems and methods of freshening and prefreshening a DNS cache
US8255570B2 (en) 2007-03-12 2012-08-28 Citrix Systems, Inc. Systems and methods of compression history expiration and synchronization
US7706266B2 (en) 2007-03-12 2010-04-27 Citrix Systems, Inc. Systems and methods of providing proxy-based quality of service
US8103783B2 (en) 2007-03-12 2012-01-24 Citrix Systems, Inc. Systems and methods of providing security and reliability to proxy caches
US8037126B2 (en) 2007-03-12 2011-10-11 Citrix Systems, Inc. Systems and methods of dynamically checking freshness of cached objects based on link status
US7827237B2 (en) 2007-03-12 2010-11-02 Citrix Systems, Inc. Systems and methods for identifying long matches of data in a compression history
US7865585B2 (en) 2007-03-12 2011-01-04 Citrix Systems, Inc. Systems and methods for providing dynamic ad hoc proxy-cache hierarchies
US7796510B2 (en) 2007-03-12 2010-09-14 Citrix Systems, Inc. Systems and methods for providing virtual fair queueing of network traffic
US8701010B2 (en) 2007-03-12 2014-04-15 Citrix Systems, Inc. Systems and methods of using the refresh button to determine freshness policy
US7584294B2 (en) 2007-03-12 2009-09-01 Citrix Systems, Inc. Systems and methods for prefetching objects for caching using QOS
KR20080090976A (ko) * 2007-04-06 2008-10-09 엘지전자 주식회사 콘텐츠 처리 방법 및 그 단말
US8539480B2 (en) * 2007-04-09 2013-09-17 Sugarcrm Inc. Multi-instance “shadow” system and method for automated resource redundancy reduction across dynamic language applications utilizing application of dynamically generated templates
US8209669B2 (en) * 2007-04-20 2012-06-26 Sap Ag System and method for supporting software
US8756293B2 (en) * 2007-04-23 2014-06-17 Nholdings Sa Providing a user with virtual computing services
US20080270911A1 (en) * 2007-04-24 2008-10-30 Nehal Dantwala System and method to develop a custom application for a multi-function peripheral (mfp)
US9547415B2 (en) * 2007-04-30 2017-01-17 Oracle International Corporation Suite-wide navigation
US9015180B1 (en) * 2007-05-09 2015-04-21 Vmware, Inc. Repository including file identification
US8347263B1 (en) 2007-05-09 2013-01-01 Vmware, Inc. Repository including installation metadata for executable applications
US11262996B2 (en) 2007-05-09 2022-03-01 Vmware, Inc. Repository including exclusion list
US8219987B1 (en) 2007-08-24 2012-07-10 Vmware, Inc. Optimized virtual machine specification for provisioning application specific runtime environment
US8577937B1 (en) 2007-05-09 2013-11-05 Vmware, Inc. Repository including exclusion list
US7756130B1 (en) 2007-05-22 2010-07-13 At&T Mobility Ii Llc Content engine for mobile communications systems
US8805425B2 (en) 2007-06-01 2014-08-12 Seven Networks, Inc. Integrated messaging
US8407696B2 (en) * 2007-06-04 2013-03-26 International Business Machines Corporation Method for delivering, testing, and applying software patches or other changes to a conventionally installed application in virtual application containers
US7945639B2 (en) * 2007-06-27 2011-05-17 Microsoft Corporation Processing write requests with server having global knowledge
KR101275995B1 (ko) * 2007-06-29 2013-06-19 차이나 모바일 커뮤니케이션즈 코포레이션 정보 가전의 데이터 저장 시스템 및 데이터 처리 방법
US20090006537A1 (en) * 2007-06-29 2009-01-01 Microsoft Corporation Virtual Desktop Integration with Terminal Services
US8347286B2 (en) 2007-07-16 2013-01-01 International Business Machines Corporation Method, system and program product for managing download requests received to download files from a server
US9264483B2 (en) 2007-07-18 2016-02-16 Hammond Development International, Inc. Method and system for enabling a communication device to remotely execute an application
US8176409B2 (en) * 2007-07-24 2012-05-08 De Novo Software System and method for electronic publication of scientific data and analysis
US10540651B1 (en) * 2007-07-31 2020-01-21 Intuit Inc. Technique for restricting access to information
US9009327B2 (en) * 2007-08-03 2015-04-14 Citrix Systems, Inc. Systems and methods for providing IIP address stickiness in an SSL VPN session failover environment
KR100889670B1 (ko) * 2007-08-08 2009-03-19 삼성에스디에스 주식회사 모바일 디바이스상에서 tcp 기반의 서비스거부 공격의 차단 방법
US20090055835A1 (en) * 2007-08-20 2009-02-26 Telefonaktiebolaget Lm Ericsson (Publ) System and Method for Managing License Capacity in a Telecommunication Network
US8392529B2 (en) * 2007-08-27 2013-03-05 Pme Ip Australia Pty Ltd Fast file server methods and systems
US8908700B2 (en) 2007-09-07 2014-12-09 Citrix Systems, Inc. Systems and methods for bridging a WAN accelerator with a security gateway
EP2224338A3 (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
US8024771B2 (en) * 2007-09-19 2011-09-20 International Business Machines Corporation Policy-based method for configuring an access control service
US20090083422A1 (en) * 2007-09-25 2009-03-26 Network Connectivity Solutions Corp. Apparatus and method for improving network infrastructure
US7954145B2 (en) * 2007-09-27 2011-05-31 Novell, Inc. Dynamically configuring a client for virtual private network (VPN) access
US20090172715A1 (en) 2007-09-28 2009-07-02 Xcerion Ab Network operating system
KR101433859B1 (ko) * 2007-10-12 2014-08-27 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 파일 데이터 관리 방법
US7925694B2 (en) 2007-10-19 2011-04-12 Citrix Systems, Inc. Systems and methods for managing cookies via HTTP content layer
US8171483B2 (en) 2007-10-20 2012-05-01 Citrix Systems, Inc. Method and system for communicating between isolation environments
CN101849224B (zh) * 2007-10-20 2016-04-27 思杰系统有限公司 用于远程处理三维图像数据的方法和系统
US7917584B2 (en) * 2007-10-22 2011-03-29 Xcerion Aktiebolag Gesture-based collaboration
US7836018B2 (en) * 2007-10-24 2010-11-16 Emc Corporation Simultaneously accessing file objects through web services and file services
US9122397B2 (en) * 2007-10-26 2015-09-01 Emc Corporation Exposing storage resources with differing capabilities
US20090112789A1 (en) * 2007-10-31 2009-04-30 Fernando Oliveira Policy based file management
US20090112921A1 (en) * 2007-10-31 2009-04-30 Fernando Oliveira Managing files using layout storage objects
US9413825B2 (en) * 2007-10-31 2016-08-09 Emc Corporation Managing file objects in a data storage system
EP2203810A4 (en) * 2007-10-24 2014-08-13 Emc Corp FILE MANAGEMENT ON POLICY BASIS
US7840653B1 (en) * 2007-10-25 2010-11-23 United Services Automobile Association (Usaa) Enhanced throttle management system
JP4936549B2 (ja) * 2007-10-30 2012-05-23 キヤノン株式会社 サーバ装置、管理システム、管理方法、記憶媒体、プログラム
US20090112805A1 (en) * 2007-10-31 2009-04-30 Zachary Adam Garbow Method, system, and computer program product for implementing search query privacy
DE102007057248A1 (de) * 2007-11-16 2009-05-20 T-Mobile International Ag Verbindungsschicht für Datenbanken
US8307115B1 (en) * 2007-11-30 2012-11-06 Silver Peak Systems, Inc. Network memory mirroring
JP5088735B2 (ja) * 2007-12-07 2012-12-05 インターナショナル・ビジネス・マシーンズ・コーポレーション データベースへのアクセスを制御する技術
US9002828B2 (en) 2007-12-13 2015-04-07 Seven Networks, Inc. Predictive content delivery
US8661524B2 (en) * 2007-12-14 2014-02-25 Novell, Inc. Selective desktop control of virtual private networks (VPN's) in a multiuser environment
JP5507046B2 (ja) 2007-12-27 2014-05-28 株式会社インテック サービス提供システム
US8234633B2 (en) * 2008-01-09 2012-07-31 Sap Ag Incident simulation support environment and business objects associated with the incident
US8805949B2 (en) 2008-01-16 2014-08-12 Netapp, Inc. System and method for populating a cache using behavioral adaptive policies
US8291406B2 (en) * 2008-01-16 2012-10-16 Verizon Patent And Licensing Inc. Data imaging system and methods
US8756700B2 (en) 2008-01-16 2014-06-17 Verizon Patent And Licensing Inc. Custom data image building
US8566431B2 (en) * 2008-01-16 2013-10-22 Razer (Asia-Pacific) Pte. Ltd. Identification device and method for device identification
US8862657B2 (en) 2008-01-25 2014-10-14 Seven Networks, Inc. Policy based content service
CN101981887B (zh) 2008-01-26 2016-02-10 思杰系统有限公司 用于配置和细粒度策略驱动web内容检测和重写的系统和方法
US8090877B2 (en) 2008-01-26 2012-01-03 Citrix Systems, Inc. Systems and methods for fine grain policy driven cookie proxying
US8646067B2 (en) * 2008-01-26 2014-02-04 Citrix Systems, Inc. Policy driven fine grain URL encoding mechanism for SSL VPN clientless access
US20090193338A1 (en) 2008-01-28 2009-07-30 Trevor Fiatal Reducing network and battery consumption during content delivery and playback
US20090193147A1 (en) * 2008-01-30 2009-07-30 Viasat, Inc. Methods and Systems for the Use of Effective Latency to Make Dynamic Routing Decisions for Optimizing Network Applications
US8881172B2 (en) * 2008-02-04 2014-11-04 Red Hat, Inc. Configuration interface manager
US8442052B1 (en) 2008-02-20 2013-05-14 Silver Peak Systems, Inc. Forward packet recovery
US8612993B2 (en) * 2008-02-21 2013-12-17 Microsoft Corporation Identity persistence via executable scripts
US8145768B1 (en) * 2008-02-26 2012-03-27 F5 Networks, Inc. Tuning of SSL session caches based on SSL session IDS
US8683062B2 (en) 2008-02-28 2014-03-25 Microsoft Corporation Centralized publishing of network resources
US8806037B1 (en) * 2008-02-29 2014-08-12 Netapp, Inc. Remote support automation for a storage server
US9323751B2 (en) * 2008-03-05 2016-04-26 International Business Machines Corporation Controlling access to documents by parties
US7895259B2 (en) * 2008-03-26 2011-02-22 International Business Machines Corporation Method for preventing use of multiple application instances
US8560593B2 (en) * 2008-03-27 2013-10-15 Dell Software Inc. System for provisioning, allocating, and managing virtual and physical desktop computers in a network computing environment
CN101547161B (zh) * 2008-03-28 2012-09-26 阿里巴巴集团控股有限公司 文件夹传输系统、文件夹传输装置及文件夹传输方法
US8225106B2 (en) * 2008-04-02 2012-07-17 Protegrity Corporation Differential encryption utilizing trust modes
US8019629B1 (en) 2008-04-07 2011-09-13 United Services Automobile Association (Usaa) Systems and methods for automobile accident claims initiation
US20090259757A1 (en) * 2008-04-15 2009-10-15 Microsoft Corporation Securely Pushing Connection Settings to a Terminal Server Using Tickets
US20090265586A1 (en) * 2008-04-18 2009-10-22 Sun Microsystems, Inc. Method and system for installing software deliverables
US8806053B1 (en) 2008-04-29 2014-08-12 F5 Networks, Inc. Methods and systems for optimizing network traffic using preemptive acknowledgment signals
US7840656B2 (en) * 2008-04-30 2010-11-23 International Business Machines Corporation Policy control architecture for blade servers upon inserting into server chassis
JP5247245B2 (ja) 2008-05-30 2013-07-24 キヤノン株式会社 情報処理装置及びインストール方法
US20090300208A1 (en) * 2008-06-02 2009-12-03 Viasat, Inc. Methods and systems for acceleration of mesh network configurations
US8787947B2 (en) 2008-06-18 2014-07-22 Seven Networks, Inc. Application discovery on mobile devices
US7814140B2 (en) * 2008-06-19 2010-10-12 Unisys Corporation Method of monitoring and administrating distributed applications using access large information checking engine (ALICE)
US9172709B2 (en) * 2008-06-24 2015-10-27 Raytheon Company Secure network portal
US8121061B2 (en) * 2008-06-26 2012-02-21 Microsoft Corporation Efficient file management through granular opportunistic locking
US8612862B2 (en) * 2008-06-27 2013-12-17 Microsoft Corporation Integrated client for access to remote resources
US8688845B2 (en) * 2008-06-27 2014-04-01 Microsoft Corporation Remote computing session feature differentiation
US10805840B2 (en) 2008-07-03 2020-10-13 Silver Peak Systems, Inc. Data transmission via a virtual wide area network overlay
US9717021B2 (en) 2008-07-03 2017-07-25 Silver Peak Systems, Inc. Virtual network overlay
US10164861B2 (en) 2015-12-28 2018-12-25 Silver Peak Systems, Inc. Dynamic monitoring and visualization for network health characteristics
US8743683B1 (en) 2008-07-03 2014-06-03 Silver Peak Systems, Inc. Quality of service using multiple flows
US8359357B2 (en) * 2008-07-21 2013-01-22 Raytheon Company Secure E-mail messaging system
US20100029306A1 (en) * 2008-07-31 2010-02-04 Sybase, Inc. Mobile Banking with Short Message Service
US8085810B2 (en) * 2008-08-06 2011-12-27 Movik Networks Cross-layer pipelining optimizations for reduced roundtrips and improving quality of experience
US8271610B2 (en) 2008-08-28 2012-09-18 Sycamore Networks, Inc. Distributed content caching solution for a mobile wireless network
US9208104B2 (en) * 2008-08-28 2015-12-08 Citrix Systems, Inc. Content replacement and refresh policy implementation for a content distribution network
US20100057926A1 (en) * 2008-08-28 2010-03-04 Sycamore Networks, Inc. Digital custom data content injection mechanism for a content delivery network
US8060697B1 (en) * 2008-09-18 2011-11-15 Sprint Communications Company L.P. Dynamically allocated secondary browser cache
US8396819B2 (en) * 2008-09-30 2013-03-12 Lockheed Martin Corp Unique interface in service oriented architecture
US8589579B2 (en) * 2008-10-08 2013-11-19 Citrix Systems, Inc. Systems and methods for real-time endpoint application flow control with network structure component
US8909759B2 (en) 2008-10-10 2014-12-09 Seven Networks, Inc. Bandwidth measurement
US7873060B2 (en) * 2008-10-18 2011-01-18 Fortinet, Inc. Accelerating data communication using tunnels
US8707387B2 (en) * 2008-10-22 2014-04-22 Personal Capital Technology Corporation Secure network computing
US8667512B2 (en) * 2008-10-29 2014-03-04 Qualcomm Incorporated Flexible hierarchical settings registry for operating systems
US8484462B2 (en) * 2008-11-07 2013-07-09 Lockheed Martin Corporation System and method for establishing a self-realizing expandable communications network
US8380808B2 (en) * 2008-11-24 2013-02-19 Royal O'Brien Dynamic medium content streaming system
US8639813B2 (en) * 2008-11-25 2014-01-28 Citrix Systems, Inc. Systems and methods for GSLB based on SSL VPN users
US20100131617A1 (en) * 2008-11-25 2010-05-27 John Osborne Method and system for differential transmission of web page structures
US10631068B2 (en) 2008-11-26 2020-04-21 Free Stream Media Corp. Content exposure attribution based on renderings of related content across multiple devices
US9519772B2 (en) 2008-11-26 2016-12-13 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US10567823B2 (en) 2008-11-26 2020-02-18 Free Stream Media Corp. Relevant advertisement generation based on a user operating a client device communicatively coupled with a networked media device
KR101666831B1 (ko) 2008-11-26 2016-10-17 캘거리 싸이언티픽 인코포레이티드 애플리케이션 프로그램의 상태에 대한 원격 액세스를 제공하기 위한 방법 및 시스템
US8180891B1 (en) 2008-11-26 2012-05-15 Free Stream Media Corp. Discovery, access control, and communication with networked services from within a security sandbox
US10977693B2 (en) 2008-11-26 2021-04-13 Free Stream Media Corp. Association of content identifier of audio-visual data with additional data through capture infrastructure
US9986279B2 (en) 2008-11-26 2018-05-29 Free Stream Media Corp. Discovery, access control, and communication with networked services
US9386356B2 (en) 2008-11-26 2016-07-05 Free Stream Media Corp. Targeting with television audience data across multiple screens
US9154942B2 (en) 2008-11-26 2015-10-06 Free Stream Media Corp. Zero configuration communication between a browser and a networked media device
US8572251B2 (en) * 2008-11-26 2013-10-29 Microsoft Corporation Hardware acceleration for remote desktop protocol
US9026668B2 (en) 2012-05-26 2015-05-05 Free Stream Media Corp. Real-time and retargeted advertising on multiple screens of a user watching television
US10419541B2 (en) 2008-11-26 2019-09-17 Free Stream Media Corp. Remotely control devices over a network without authentication or registration
US10334324B2 (en) 2008-11-26 2019-06-25 Free Stream Media Corp. Relevant advertisement generation based on a user operating a client device communicatively coupled with a networked media device
US10880340B2 (en) 2008-11-26 2020-12-29 Free Stream Media Corp. Relevancy improvement through targeting of information based on data gathered from a networked device associated with a security sandbox of a client device
US9961388B2 (en) 2008-11-26 2018-05-01 David Harrison Exposure of public internet protocol addresses in an advertising exchange server to improve relevancy of advertisements
CN101753592B (zh) * 2008-11-28 2013-04-17 国际商业机器公司 用于数据处理的方法和系统
US8745361B2 (en) 2008-12-02 2014-06-03 Microsoft Corporation Sandboxed execution of plug-ins
US8359641B2 (en) * 2008-12-05 2013-01-22 Raytheon Company Multi-level secure information retrieval system
US20100153565A1 (en) * 2008-12-11 2010-06-17 Microsoft Corporation Connection management in line-of-business
US8145593B2 (en) * 2008-12-11 2012-03-27 Microsoft Corporation Framework for web services exposing line of business applications
US8341631B2 (en) 2009-04-10 2012-12-25 Open Invention Network Llc System and method for application isolation
US8464256B1 (en) 2009-04-10 2013-06-11 Open Invention Network, Llc System and method for hierarchical interception with isolated environments
US8752071B2 (en) * 2008-12-19 2014-06-10 International Business Machines Corporation Identifying subscriber data while processing publisher event in transaction
CN101771564B (zh) * 2008-12-31 2013-10-09 华为技术有限公司 会话上下文的处理方法、装置和系统
CN101504610A (zh) * 2009-01-10 2009-08-12 周建江 管理软件开发方法和系统
US20100186072A1 (en) * 2009-01-21 2010-07-22 Akshay Kumar Distributed secure telework
US9021598B1 (en) * 2009-01-23 2015-04-28 Sprint Communications Company L.P. Managing application events
US8209283B1 (en) * 2009-02-19 2012-06-26 Emc Corporation System and method for highly reliable data replication
US8667483B2 (en) * 2009-03-25 2014-03-04 Microsoft Corporation Device dependent on-demand compiling and deployment of mobile applications
GB0906004D0 (en) * 2009-04-07 2009-05-20 Omnifone Ltd MusicStation desktop
US9058599B1 (en) 2009-04-10 2015-06-16 Open Invention Network, Llc System and method for usage billing of hosted applications
US8555360B1 (en) * 2009-04-10 2013-10-08 Open Invention Network Llc System and method for on-line and off-line streaming application isolation
US10419504B1 (en) * 2009-04-10 2019-09-17 Open Invention Network Llc System and method for streaming application isolation
US11538078B1 (en) 2009-04-10 2022-12-27 International Business Machines Corporation System and method for usage billing of hosted applications
WO2010127266A1 (en) * 2009-05-01 2010-11-04 Citrix Systems, Inc. Systems and methods for providing a virtual appliance in an application delivery fabric
US8856783B2 (en) * 2010-10-12 2014-10-07 Citrix Systems, Inc. Allocating virtual machines according to user-specific virtual machine metrics
US8090797B2 (en) 2009-05-02 2012-01-03 Citrix Systems, Inc. Methods and systems for launching applications into existing isolation environments
US8275890B2 (en) * 2009-06-03 2012-09-25 International Business Machines Corporation Detecting an inactive client during a communication session
US8526924B1 (en) * 2009-06-10 2013-09-03 Sprint Communications Company L.P. Off-device service platform discovery
US8856869B1 (en) * 2009-06-22 2014-10-07 NexWavSec Software Inc. Enforcement of same origin policy for sensitive data
US8205035B2 (en) * 2009-06-22 2012-06-19 Citrix Systems, Inc. Systems and methods for integration between application firewall and caching
US8489685B2 (en) 2009-07-17 2013-07-16 Aryaka Networks, Inc. Application acceleration as a service system and method
EP2467778A4 (en) * 2009-08-17 2013-01-16 Virtual Computer Inc LAYERED VIRTUAL FILES SYSTEM
US9277021B2 (en) 2009-08-21 2016-03-01 Avaya Inc. Sending a user associated telecommunication address
US8090744B1 (en) * 2009-08-26 2012-01-03 Symantec Operating Corporation Method and apparatus for determining compatibility between a virtualized application and a base environment
US8572603B2 (en) * 2009-09-04 2013-10-29 Adobe Systems Incorporated Initializing an application on an electronic device
CN102025515A (zh) 2009-09-14 2011-04-20 阿里巴巴集团控股有限公司 基于文件目录的文件传输方法及其装置和系统
US10157280B2 (en) 2009-09-23 2018-12-18 F5 Networks, Inc. System and method for identifying security breach attempts of a website
US8799586B2 (en) * 2009-09-30 2014-08-05 Intel Corporation Memory mirroring and migration at home agent
US8327228B2 (en) * 2009-09-30 2012-12-04 Intel Corporation Home agent data and memory management
FR2951298B1 (fr) 2009-10-12 2016-02-05 France Etat Systeme informatique d'acces a des donnees confidentielles par au moins un boitier distant, boitier distant
US8397066B2 (en) * 2009-10-20 2013-03-12 Thomson Reuters (Markets) Llc Entitled data cache management
US9397976B2 (en) * 2009-10-30 2016-07-19 International Business Machines Corporation Tuning LDAP server and directory database
US8738711B2 (en) * 2009-11-03 2014-05-27 Oto Technologies, Llc System and method for redirecting client-side storage operations
US10721269B1 (en) 2009-11-06 2020-07-21 F5 Networks, Inc. Methods and system for returning requests with javascript for clients before passing a request to a server
US8341722B2 (en) * 2009-11-30 2012-12-25 Unisys Corporation Load balancing and failover of gateway devices
US9054913B1 (en) 2009-11-30 2015-06-09 Dell Software Inc. Network protocol proxy
FR2953611A1 (fr) * 2009-12-07 2011-06-10 Spawnapps Procede de mise a disposition d'une application-cible
CN102098271B (zh) * 2009-12-10 2015-01-07 华为技术有限公司 用户信息的获取方法、装置和系统
US9055080B2 (en) * 2009-12-14 2015-06-09 Citrix Systems, Inc. Systems and methods for service isolation
US20110145786A1 (en) * 2009-12-15 2011-06-16 Microsoft Corporation Remote commands in a shell environment
US20110145723A1 (en) * 2009-12-16 2011-06-16 Oto Technologies, Llc System and method for redirecting client-side storage operations
CN102550006A (zh) * 2010-02-12 2012-07-04 莫维克网络公司 移动网络中的无线接入网络缓存
US9350702B2 (en) * 2010-02-17 2016-05-24 Hewlett Packard Enterprise Development Lp Virtual insertion into a network
US9923995B1 (en) * 2010-02-27 2018-03-20 Sitting Man, Llc Methods, systems, and computer program products for sharing information for detecting an idle TCP connection
US8799640B2 (en) * 2010-02-27 2014-08-05 Novell, Inc. Techniques for managing a secure communication session
US8903847B2 (en) 2010-03-05 2014-12-02 International Business Machines Corporation Digital media voice tags in social networks
WO2011111009A1 (en) * 2010-03-09 2011-09-15 Happy Cloud Inc. Data streaming for interactive decision-oriented software applications
US20140032654A1 (en) * 2010-03-22 2014-01-30 Tso-Sung HUNG Information service platform providing dynamic distribution operators
US9369384B2 (en) * 2010-03-22 2016-06-14 Tso-Sung HUNG Server system connection process method preventing network congestion
US20110231476A1 (en) * 2010-03-22 2011-09-22 Hung Tso-Sung Information service platform equipped with dynamic distribution operators
EP2378739B1 (en) * 2010-04-15 2015-04-01 BlackBerry Limited Method and system for transmitting an application to a device
US8769131B2 (en) * 2010-04-16 2014-07-01 Oracle America, Inc. Cloud connector key
US8972551B1 (en) * 2010-04-27 2015-03-03 Amazon Technologies, Inc. Prioritizing service requests
US9129000B2 (en) * 2010-04-30 2015-09-08 International Business Machines Corporation Method and system for centralized control of database applications
US8719447B2 (en) * 2010-05-04 2014-05-06 Aryaka Networks, Inc. Heterogeneous service provider model through pay-for-performance based transit settlements
US8380863B2 (en) 2010-05-05 2013-02-19 Cradle Technologies Control of security application in a LAN from outside the LAN
US9356991B2 (en) 2010-05-10 2016-05-31 Litera Technology Llc Systems and methods for a bidirectional multi-function communication module
EP2572291A4 (en) * 2010-05-19 2013-12-11 Akamai Tech Inc RAND SERVER HTTP POST NEWS PROCESSING
KR101053681B1 (ko) * 2010-05-19 2011-08-02 계영티앤아이 (주) 사용자 단말 및 이의 소프트웨어 관리제어방법 및 장치
CN101820635A (zh) * 2010-05-20 2010-09-01 中兴通讯股份有限公司 一种移动通讯数据的采集方法和装置
US10318477B2 (en) * 2010-05-26 2019-06-11 Red Hat, Inc. Managing and archiving system and application log files
CN102142939B (zh) * 2010-06-12 2013-12-04 华为技术有限公司 一种前传规则的测试方法和装置
EP3734449B1 (en) 2010-06-18 2023-07-12 Sweetlabs, Inc. Systems and methods for integration of an application runtime environment into a user computing environment
US9141625B1 (en) 2010-06-22 2015-09-22 F5 Networks, Inc. Methods for preserving flow state during virtual machine migration and devices thereof
US10015286B1 (en) 2010-06-23 2018-07-03 F5 Networks, Inc. System and method for proxying HTTP single sign on across network domains
US9344432B2 (en) 2010-06-24 2016-05-17 Microsoft Technology Licensing, Llc Network layer claims based access control
US8918856B2 (en) 2010-06-24 2014-12-23 Microsoft Corporation Trusted intermediary for network layer claims-enabled access control
US8908545B1 (en) 2010-07-08 2014-12-09 F5 Networks, Inc. System and method for handling TCP performance in network access with driver initiated application tunnel
US8347100B1 (en) 2010-07-14 2013-01-01 F5 Networks, Inc. Methods for DNSSEC proxying and deployment amelioration and systems thereof
US8839346B2 (en) 2010-07-21 2014-09-16 Citrix Systems, Inc. Systems and methods for providing a smart group
WO2013015835A1 (en) 2011-07-22 2013-01-31 Seven Networks, Inc. Mobile application traffic optimization
US9043433B2 (en) 2010-07-26 2015-05-26 Seven Networks, Inc. Mobile network traffic coordination across multiple applications
US8838783B2 (en) 2010-07-26 2014-09-16 Seven Networks, Inc. Distributed caching for resource and mobile network traffic management
KR101753195B1 (ko) * 2010-07-27 2017-07-19 아주대학교산학협력단 통신 시스템에서 세션 연결 제어 장치 및 방법
US9363337B2 (en) * 2010-08-09 2016-06-07 Yahoo! Inc. Conversion tracking and context preserving systems and methods
US9083760B1 (en) * 2010-08-09 2015-07-14 F5 Networks, Inc. Dynamic cloning and reservation of detached idle connections
US10097863B2 (en) 2010-08-22 2018-10-09 Qwilt, Inc. System and method for live service content handling with content storing servers caching popular content therein
US11032583B2 (en) 2010-08-22 2021-06-08 QWLT, Inc. Method and system for improving high availability for live content
US9774670B2 (en) 2010-08-22 2017-09-26 Qwilt, Inc. Methods for detection of content servers and caching popular content therein
US10127335B2 (en) 2010-08-22 2018-11-13 Qwilt, Inc System and method of performing analytics with respect to content storing servers caching popular content
US10097428B2 (en) * 2010-08-22 2018-10-09 Qwilt, Inc. System and method for caching popular content respective of a content strong server in an asymmetrical routing topology
US8918550B2 (en) * 2010-08-27 2014-12-23 Total Phase, Inc. Real-time USB class level decoding
US8630174B1 (en) 2010-09-14 2014-01-14 F5 Networks, Inc. System and method for post shaping TCP packetization
US8886981B1 (en) 2010-09-15 2014-11-11 F5 Networks, Inc. Systems and methods for idle driven scheduling
US8804504B1 (en) 2010-09-16 2014-08-12 F5 Networks, Inc. System and method for reducing CPU load in processing PPP packets on a SSL-VPN tunneling device
US8732150B2 (en) 2010-09-23 2014-05-20 Salesforce.Com, Inc. Methods and apparatus for suppressing network feed activities using an information feed in an on-demand database service environment
US20120079393A1 (en) * 2010-09-29 2012-03-29 Microsoft Corporation Adaptable License Platform for Remote Sessions
US20120089700A1 (en) * 2010-10-10 2012-04-12 Contendo, Inc. Proxy server configured for hierarchical caching and dynamic site acceleration and custom object and associated method
US8615569B2 (en) * 2010-10-25 2013-12-24 Gregory A. Pearson, Inc. Dynamic content delivery systems and methods for providing same
US8959571B2 (en) 2010-10-29 2015-02-17 F5 Networks, Inc. Automated policy builder
US8880666B2 (en) * 2010-10-29 2014-11-04 At&T Intellectual Property I, L.P. Method, policy request router, and machine-readable hardware storage device to select a policy server based on a network condition to receive policy requests for a duration
WO2012058643A2 (en) 2010-10-29 2012-05-03 F5 Networks, Inc. System and method for on the fly protocol conversion in obtaining policy enforcement information
US9060032B2 (en) 2010-11-01 2015-06-16 Seven Networks, Inc. Selective data compression by a distributed traffic management system to reduce mobile data traffic and signaling traffic
US8843153B2 (en) 2010-11-01 2014-09-23 Seven Networks, Inc. Mobile traffic categorization and policy for network use optimization while preserving user experience
WO2012060995A2 (en) 2010-11-01 2012-05-10 Michael Luna Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
US8484314B2 (en) 2010-11-01 2013-07-09 Seven Networks, Inc. Distributed caching in a wireless network of content delivered for a mobile application over a long-held request
GB2499534B (en) 2010-11-01 2018-09-19 Seven Networks Llc Caching adapted for mobile application behavior and network conditions
GB2500327B (en) 2010-11-22 2019-11-06 Seven Networks Llc Optimization of resource polling intervals to satisfy mobile device requests
US8495108B2 (en) 2010-11-30 2013-07-23 International Business Machines Corporation Virtual node subpool management
KR20120058782A (ko) * 2010-11-30 2012-06-08 삼성전자주식회사 컨텐츠 중심 네트워킹 환경에서의 단말, 중간 노드 및 이들의 통신 방법
US20120155360A1 (en) * 2010-12-20 2012-06-21 Lockheed Martin Corporation Negative-acknowledgment oriented reliable multicast offload engine architecture
US9354852B2 (en) * 2010-12-23 2016-05-31 Microsoft Technology Licensing, Llc Satisfying application dependencies
EP2659650B1 (en) 2010-12-29 2022-06-22 Citrix Systems Inc. Systems and methods for multi-level tagging of encrypted items for additional security and efficient encrypted item determination
US9741084B2 (en) 2011-01-04 2017-08-22 Calgary Scientific Inc. Method and system for providing remote access to data for display on a mobile device
WO2012093330A1 (en) 2011-01-04 2012-07-12 Calgary Scientific, Inc. A method and system of controlling a remote controlled device in a remote controlled surgical procedure
US9325662B2 (en) 2011-01-07 2016-04-26 Seven Networks, Llc System and method for reduction of mobile network traffic used for domain name system (DNS) queries
US9258271B1 (en) * 2011-01-13 2016-02-09 Google Inc. Network address translation for virtual machines
US8874888B1 (en) 2011-01-13 2014-10-28 Google Inc. Managed boot in a cloud system
US9135037B1 (en) 2011-01-13 2015-09-15 Google Inc. Virtual network protocol
US8627467B2 (en) 2011-01-14 2014-01-07 F5 Networks, Inc. System and method for selectively storing web objects in a cache memory based on policy decisions
US9311135B2 (en) * 2011-01-18 2016-04-12 Scality, S.A. Method for generating universal objects identifiers in distributed multi-purpose storage systems
US8898742B2 (en) * 2011-10-11 2014-11-25 Paramount Pictures Corporation Systems and methods for controlling access to content distributed over a network
US9237068B2 (en) * 2011-01-30 2016-01-12 Blue Coat Systems, Inc. System and method for distributing heuristics to network intermediary devices
US8849899B1 (en) * 2011-01-30 2014-09-30 Israel L'Heureux Accelerated delivery of media content via peer caching
US8990920B2 (en) 2011-02-11 2015-03-24 Mocana Corporation Creating a virtual private network (VPN) for a single app on an internet-enabled device or system
US9537869B2 (en) 2011-02-11 2017-01-03 Blue Cedar Networks, Inc. Geographical restrictions for application usage on a mobile device
US8549656B2 (en) * 2011-02-11 2013-10-01 Mocana Corporation Securing and managing apps on a device
US9306933B2 (en) 2011-02-11 2016-04-05 Mocana Corporation Ensuring network connection security between a wrapped app and a remote server
US8893298B2 (en) 2011-02-11 2014-11-18 Mocana Corporation Network linker for secure execution of unsecured apps on a device
US9063818B1 (en) 2011-03-16 2015-06-23 Google Inc. Automated software updating based on prior activity
US8533796B1 (en) 2011-03-16 2013-09-10 Google Inc. Providing application programs with access to secured resources
US9237087B1 (en) 2011-03-16 2016-01-12 Google Inc. Virtual machine name resolution
US20120246238A1 (en) * 2011-03-21 2012-09-27 International Business Machines Corporation Asynchronous messaging tags
US9240952B2 (en) * 2011-04-02 2016-01-19 Open Invention Network, Llc System and method for communication between networked applications
JP5691062B2 (ja) * 2011-04-04 2015-04-01 株式会社日立製作所 仮想計算機の制御方法及び管理計算機
US9104475B2 (en) * 2011-04-07 2015-08-11 Qualcomm Innovation Center, Inc. Methods and apparatus for managing operations of a web browser by predicting time period of subsequent script execution activity
US9398103B2 (en) * 2011-04-15 2016-07-19 Qualcomm Incorporated Methods and apparatus for enhancing device performance through flow control
WO2012145541A2 (en) 2011-04-19 2012-10-26 Seven Networks, Inc. Social caching for device resource sharing and management
CN103493016B (zh) * 2011-04-21 2017-06-06 惠普发展公司,有限责任合伙企业 电子设备及将应用程序安装到虚拟化环境中的方法
US8880991B2 (en) 2011-04-21 2014-11-04 Qualcomm Innovation Center, Inc. Methods and apparatus for improved browsing performance by precompilation of high-priority JavaScripts in a webpage and delaying the removal of corresponding compiled code
CA2797631C (en) 2011-04-27 2013-11-19 Seven Networks, Inc. System and method for making requests on behalf of a mobile device based on atomic processes for mobile network traffic relief
GB2505585B (en) 2011-04-27 2015-08-12 Seven Networks Inc Detecting and preserving state for satisfying application requests in a distributed proxy and cache system
GB2512685B (en) * 2011-04-27 2018-11-14 Seven Networks Llc Detection and filtering of malware based on traffic observations made in a distributed mobile traffic management system
US8825842B2 (en) * 2011-04-28 2014-09-02 Facebook, Inc. Managing notifications pushed to user devices
JP5772195B2 (ja) * 2011-05-06 2015-09-02 ブラザー工業株式会社 通信装置
JP6018797B2 (ja) * 2011-05-20 2016-11-02 日本放送協会 受信機
TW201249135A (en) * 2011-05-30 2012-12-01 Wistron Corp Remote management method and remote management system
US20120311551A1 (en) * 2011-06-06 2012-12-06 International Business Machines Coporation Automation of post-linker functions in embedded applications
US8914784B2 (en) 2011-06-10 2014-12-16 International Business Machines Corporation Method and system for checking the consistency of application jar files
US9110745B2 (en) * 2011-06-17 2015-08-18 Oracle International Corporation System and method for flow control in a messaging subsystem based on message-in/out rates
WO2012177664A1 (en) * 2011-06-20 2012-12-27 Sweetlabs, Inc. Systems and methods for streamlined content download
US9246819B1 (en) 2011-06-20 2016-01-26 F5 Networks, Inc. System and method for performing message-based load balancing
KR101507919B1 (ko) 2011-07-01 2015-04-07 한국전자통신연구원 가상 데스크탑 서비스를 위한 방법 및 장치
US8984581B2 (en) 2011-07-27 2015-03-17 Seven Networks, Inc. Monitoring mobile application activities for malicious traffic on a mobile device
US9075979B1 (en) 2011-08-11 2015-07-07 Google Inc. Authentication based on proximity to mobile device
SG2014011506A (en) 2011-08-15 2014-05-29 Calgary Scient Inc Non-invasive remote access to an application program
EP2745467A4 (en) * 2011-08-15 2015-10-14 Calgary Scient Inc METHOD FOR FLOW CONTROL AND RELIABLE COMMUNICATION IN A COMMUNITY ENVIRONMENT
US9936037B2 (en) * 2011-08-17 2018-04-03 Perftech, Inc. System and method for providing redirections
US8966198B1 (en) 2011-09-01 2015-02-24 Google Inc. Providing snapshots of virtual storage devices
WO2013038320A1 (en) * 2011-09-16 2013-03-21 Strangeloop Networks, Inc. Mobile resource accelerator
US9577824B2 (en) * 2011-09-23 2017-02-21 CSC Holdings, LLC Delivering a content item from a server to a device
US9213579B2 (en) * 2011-09-28 2015-12-15 International Business Machines Corporation Software component placement on execution platforms
US8549108B2 (en) * 2011-09-29 2013-10-01 Riverbed Technology, Inc. Optimized prefetching of compound data
US9596320B2 (en) 2011-09-30 2017-03-14 Calgary Scientific Inc. Uncoupled application extensions including interactive digital surface layer for collaborative remote application sharing and annotating
US9252979B2 (en) * 2011-10-01 2016-02-02 Oracle International Corporation Transparent configuration of virtual hosts supporting multiple time zones in an enterprise platform
US9712599B2 (en) * 2011-10-03 2017-07-18 International Business Machines Corporation Application peak load processing
US8751679B2 (en) * 2011-10-07 2014-06-10 Ericsson Television Inc. HTTP adaptive streaming server with automatic rate shaping
US9280377B2 (en) * 2013-03-29 2016-03-08 Citrix Systems, Inc. Application with multiple operation modes
US9215225B2 (en) 2013-03-29 2015-12-15 Citrix Systems, Inc. Mobile device locking with context
US20140032733A1 (en) 2011-10-11 2014-01-30 Citrix Systems, Inc. Policy-Based Application Management
US20140053234A1 (en) 2011-10-11 2014-02-20 Citrix Systems, Inc. Policy-Based Application Management
US9143529B2 (en) 2011-10-11 2015-09-22 Citrix Systems, Inc. Modifying pre-existing mobile applications to implement enterprise security policies
US9130991B2 (en) 2011-10-14 2015-09-08 Silver Peak Systems, Inc. Processing data packets in performance enhancing proxy (PEP) environment
US8898244B2 (en) * 2011-10-20 2014-11-25 Allen Miglore System and method for transporting files between networked or connected systems and devices
US8195799B1 (en) * 2011-10-26 2012-06-05 SHTC Holdings LLC Smart test article optimizer
US9160778B2 (en) * 2011-10-26 2015-10-13 Nokia Solutions And Networks Oy Signaling enabling status feedback and selection by a network entity of portions of video information to be delivered via wireless transmission to a UE
US9686293B2 (en) * 2011-11-03 2017-06-20 Cyphort Inc. Systems and methods for malware detection and mitigation
US9626224B2 (en) 2011-11-03 2017-04-18 Silver Peak Systems, Inc. Optimizing available computing resources within a virtual environment
US9792430B2 (en) 2011-11-03 2017-10-17 Cyphort Inc. Systems and methods for virtualized malware detection
US9519781B2 (en) 2011-11-03 2016-12-13 Cyphort Inc. Systems and methods for virtualization and emulation assisted malware detection
WO2013072764A2 (en) 2011-11-11 2013-05-23 Calgary Scientific Inc. Session transfer and suspension in a remote access application framework
KR101850817B1 (ko) * 2011-11-17 2018-04-23 삼성전자주식회사 서로 다른 단말에 어플리케이션을 자동으로 설치하는 장치 및 방법
JP6172537B2 (ja) * 2011-11-23 2017-08-02 カルガリー サイエンティフィック インコーポレイテッド 連携リモートアプリケーション共有および会議のための方法およびシステム
EP2786262A4 (en) * 2011-12-01 2014-12-03 Huawei Tech Co Ltd SYSTEMS AND METHODS FOR CONNECTING CONNECTIONS FOR TRANSMITTING VIDEO STREAMS ON CONTENT PROVIDING NETWORKS
US8934414B2 (en) 2011-12-06 2015-01-13 Seven Networks, Inc. Cellular or WiFi mobile traffic optimization based on public or private network destination
US8958293B1 (en) 2011-12-06 2015-02-17 Google Inc. Transparent load-balancing for cloud computing services
US8868753B2 (en) 2011-12-06 2014-10-21 Seven Networks, Inc. System of redundantly clustered machines to provide failover mechanisms for mobile traffic management and network resource conservation
US9009250B2 (en) 2011-12-07 2015-04-14 Seven Networks, Inc. Flexible and dynamic integration schemas of a traffic management system with various network operators for network traffic alleviation
WO2013086447A1 (en) 2011-12-07 2013-06-13 Seven Networks, Inc. Radio-awareness of mobile device for sending server-side control signals using a wireless network optimized transport protocol
US8959425B2 (en) 2011-12-09 2015-02-17 Microsoft Corporation Inference-based extension activation
US20130159511A1 (en) 2011-12-14 2013-06-20 Seven Networks, Inc. System and method for generating a report to a network operator by distributing aggregation of data
GB2511688A (en) * 2011-12-22 2014-09-10 Hewlett Packard Development Co Enabling execution of remotely-hosted applications using application metadata and client updates
US9270766B2 (en) 2011-12-30 2016-02-23 F5 Networks, Inc. Methods for identifying network traffic characteristics to correlate and manage one or more subsequent flows and devices thereof
US8800009B1 (en) 2011-12-30 2014-08-05 Google Inc. Virtual machine service access
DE102012200042A1 (de) * 2012-01-03 2013-07-04 Airbus Operations Gmbh Serversystem, luft- oder raumfahrzeug und verfahren
WO2013103988A1 (en) 2012-01-05 2013-07-11 Seven Networks, Inc. Detection and management of user interactions with foreground applications on a mobile device in distributed caching
US9787681B2 (en) 2012-01-06 2017-10-10 Optio Labs, Inc. Systems and methods for enforcing access control policies on privileged accesses for mobile devices
US9712530B2 (en) 2012-01-06 2017-07-18 Optio Labs, Inc. Systems and methods for enforcing security in mobile computing
US9609020B2 (en) * 2012-01-06 2017-03-28 Optio Labs, Inc. Systems and methods to enforce security policies on the loading, linking, and execution of native code by mobile applications running inside of virtual machines
US9680925B2 (en) 2012-01-09 2017-06-13 At&T Intellectual Property I, L. P. Methods and apparatus to route message traffic using tiered affinity-based message routing
US9954718B1 (en) * 2012-01-11 2018-04-24 Amazon Technologies, Inc. Remote execution of applications over a dispersed network
WO2013106828A1 (en) * 2012-01-13 2013-07-18 Antecea, Inc. Server aggregated application streaming
US9679163B2 (en) 2012-01-17 2017-06-13 Microsoft Technology Licensing, Llc Installation and management of client extensions
US9397932B2 (en) * 2012-01-17 2016-07-19 Reno Acquisitions, Llc Systems and methods for routing network information
US9536105B2 (en) 2012-01-26 2017-01-03 Nokia Technologies Oy Method and apparatus for providing data access via multi-user views
US8983860B1 (en) 2012-01-30 2015-03-17 Google Inc. Advertising auction system
US9256445B2 (en) 2012-01-30 2016-02-09 Microsoft Technology Licensing, Llc Dynamic extension view with multiple levels of expansion
US9449112B2 (en) 2012-01-30 2016-09-20 Microsoft Technology Licensing, Llc Extension activation for related documents
US8843822B2 (en) 2012-01-30 2014-09-23 Microsoft Corporation Intelligent prioritization of activated extensions
US20130208729A1 (en) * 2012-02-14 2013-08-15 Neutral Tandem, Inc. d/b/a Inteliquent Systems and methods for facilitation of communications sessions amongst a plurality of networks
US10230566B1 (en) 2012-02-17 2019-03-12 F5 Networks, Inc. Methods for dynamically constructing a service principal name and devices thereof
US9172753B1 (en) 2012-02-20 2015-10-27 F5 Networks, Inc. Methods for optimizing HTTP header based authentication and devices thereof
US9231879B1 (en) 2012-02-20 2016-01-05 F5 Networks, Inc. Methods for policy-based network traffic queue management and devices thereof
US9137210B1 (en) * 2012-02-21 2015-09-15 Amazon Technologies, Inc. Remote browsing session management
US8996887B2 (en) 2012-02-24 2015-03-31 Google Inc. Log structured volume encryption for virtual machines
US9049246B2 (en) * 2012-02-28 2015-06-02 Red Hat, Inc. Reducing web page loading time
US9191285B1 (en) * 2012-03-14 2015-11-17 Domo, Inc. Automatic web service monitoring
JP6040980B2 (ja) * 2012-03-16 2016-12-07 日本電気株式会社 時系列データ処理装置、時系列データ処理方法及び時系列データ処理プログラム
US8677449B1 (en) 2012-03-19 2014-03-18 Google Inc. Exposing data to virtual machines
JPWO2013145628A1 (ja) * 2012-03-30 2015-12-10 日本電気株式会社 情報処理装置及び負荷テスト実施方法
US10198462B2 (en) * 2012-04-05 2019-02-05 Microsoft Technology Licensing, Llc Cache management
US8812695B2 (en) 2012-04-09 2014-08-19 Seven Networks, Inc. Method and system for management of a virtual network connection without heartbeat messages
US20130268656A1 (en) 2012-04-10 2013-10-10 Seven Networks, Inc. Intelligent customer service/call center services enhanced using real-time and historical mobile application and traffic-related statistics collected by a distributed caching system in a mobile network
US9338153B2 (en) * 2012-04-11 2016-05-10 Telecommunication Systems, Inc. Secure distribution of non-privileged authentication credentials
US9176720B1 (en) 2012-04-23 2015-11-03 Google Inc. Installation of third-party web applications into a container
US9195840B2 (en) 2012-04-23 2015-11-24 Google Inc. Application-specific file type generation and use
EP2853074B1 (en) 2012-04-27 2021-03-24 F5 Networks, Inc Methods for optimizing service of content requests and devices thereof
JP6022215B2 (ja) 2012-05-31 2016-11-09 任天堂株式会社 投稿情報共有システム、情報処理システム、情報処理方法、プログラムおよびコンピュータプラットフォーム
JP6159511B2 (ja) * 2012-06-01 2017-07-05 任天堂株式会社 情報処理システム、情報処理装置および情報処理方法
TWI468976B (zh) * 2012-06-05 2015-01-11 Quanta Comp Inc 動態軟體授權平台及方法
US9053302B2 (en) 2012-06-08 2015-06-09 Oracle International Corporation Obligation system for enterprise environments
US20130340086A1 (en) * 2012-06-13 2013-12-19 Nokia Corporation Method and apparatus for providing contextual data privacy
US8819663B2 (en) * 2012-06-18 2014-08-26 Lsi Corporation Acceleration of software modifications in networked devices
US9710247B2 (en) * 2012-06-26 2017-07-18 Microsoft Technology Licensing, Llc Identification of host-compatible downloadable applications
US9317709B2 (en) 2012-06-26 2016-04-19 Google Inc. System and method for detecting and integrating with native applications enabled for web-based storage
US8775631B2 (en) 2012-07-13 2014-07-08 Seven Networks, Inc. Dynamic bandwidth adjustment for browsing or streaming activity in a wireless network based on prediction of user behavior when interacting with mobile applications
US8589911B1 (en) * 2012-07-26 2013-11-19 Google Inc. Intent fulfillment
US20140032743A1 (en) * 2012-07-30 2014-01-30 James S. Hiscock Selecting equipment associated with provider entities for a client request
US8868905B2 (en) * 2012-08-07 2014-10-21 Appsense Limited Adaptive document redaction
US8892872B2 (en) * 2012-08-07 2014-11-18 Appsense Limited Secure redacted document access
WO2014027998A1 (en) * 2012-08-14 2014-02-20 Empire Technology Development Llc Updating a currently utilized device
US9363670B2 (en) 2012-08-27 2016-06-07 Optio Labs, Inc. Systems and methods for restricting access to network resources via in-location access point protocol
US8775925B2 (en) 2012-08-28 2014-07-08 Sweetlabs, Inc. Systems and methods for hosted applications
US9143498B2 (en) 2012-08-30 2015-09-22 Aerohive Networks, Inc. Internetwork authentication
US10521746B2 (en) 2012-09-07 2019-12-31 Oracle International Corporation Recovery workflow for processing subscription orders in a computing infrastructure system
US10148530B2 (en) 2012-09-07 2018-12-04 Oracle International Corporation Rule based subscription cloning
US9621435B2 (en) 2012-09-07 2017-04-11 Oracle International Corporation Declarative and extensible model for provisioning of cloud based services
US9542400B2 (en) 2012-09-07 2017-01-10 Oracle International Corporation Service archive support
US9069979B2 (en) * 2012-09-07 2015-06-30 Oracle International Corporation LDAP-based multi-tenant in-cloud identity management system
US9667470B2 (en) 2012-09-07 2017-05-30 Oracle International Corporation Failure handling in the execution flow of provisioning operations in a cloud environment
US9524190B1 (en) * 2012-09-07 2016-12-20 Veritas Technologies, LLC Systems and methods for caching data on virtualization servers
US9467355B2 (en) 2012-09-07 2016-10-11 Oracle International Corporation Service association model
US9792338B2 (en) 2012-09-07 2017-10-17 Oracle International Corporation Role assignments in a cloud infrastructure
US9253113B2 (en) 2012-09-07 2016-02-02 Oracle International Corporation Customizable model for throttling and prioritizing orders in a cloud environment
US9838370B2 (en) 2012-09-07 2017-12-05 Oracle International Corporation Business attribute driven sizing algorithms
CN102857949B (zh) * 2012-09-14 2018-11-20 中兴通讯股份有限公司 一种规划数据一致性保证的方法和装置
US20150248441A1 (en) * 2012-09-18 2015-09-03 Nec Corporation Time-series data processing device, time-series data processing method and medium for storing time-series data processing program
EP2711861A1 (en) * 2012-09-20 2014-03-26 Alcatel-Lucent Method and system of controlling changes in an operating system
US9703792B2 (en) * 2012-09-24 2017-07-11 Moxtra, Inc. Online binders
US8726343B1 (en) 2012-10-12 2014-05-13 Citrix Systems, Inc. Managing dynamic policies and settings in an orchestration framework for connected devices
US9774658B2 (en) 2012-10-12 2017-09-26 Citrix Systems, Inc. Orchestration framework for connected devices
US9516022B2 (en) 2012-10-14 2016-12-06 Getgo, Inc. Automated meeting room
US20140109176A1 (en) 2012-10-15 2014-04-17 Citrix Systems, Inc. Configuring and providing profiles that manage execution of mobile applications
US8910239B2 (en) 2012-10-15 2014-12-09 Citrix Systems, Inc. Providing virtualized private network tunnels
US9971585B2 (en) 2012-10-16 2018-05-15 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
CN104854561B (zh) 2012-10-16 2018-05-11 思杰系统有限公司 用于应用程序管理框架的应用程序封装
US9606774B2 (en) 2012-10-16 2017-03-28 Citrix Systems, Inc. Wrapping an application with field-programmable business logic
US20140108793A1 (en) 2012-10-16 2014-04-17 Citrix Systems, Inc. Controlling mobile device access to secure data
US9161258B2 (en) 2012-10-24 2015-10-13 Seven Networks, Llc Optimized and selective management of policy deployment to mobile clients in a congested network to prevent further aggravation of network congestion
RU2509425C1 (ru) * 2012-11-12 2014-03-10 Федеральное государственное казенное военное образовательное учреждение высшего профессионального образования "ВОЕННАЯ АКАДЕМИЯ СВЯЗИ имени Маршала Советского Союза С.М. Буденного" Министерства обороны Российской Федерации Способ и устройство управления потоками данных распределенной информационной системы
JP6062722B2 (ja) 2012-11-16 2017-01-18 任天堂株式会社 情報処理システム、情報処理装置、情報処理方法、およびコンピュータプログラム
CN102970294A (zh) * 2012-11-21 2013-03-13 网神信息技术(北京)股份有限公司 安全网关的病毒检测方法及装置
US9130979B2 (en) 2012-12-11 2015-09-08 Microsoft Technology Licensing, Llc Systems and methods for using virtual machines to sequence native applications into virtual packages and for reimaging virtual machines
US20140173467A1 (en) 2012-12-19 2014-06-19 Rabbit, Inc. Method and system for content sharing and discovery
US9369670B2 (en) 2012-12-19 2016-06-14 Rabbit, Inc. Audio video streaming system and method
WO2014100384A1 (en) * 2012-12-19 2014-06-26 Rabbit, Inc. Audio video streaming system and method
CN103036897A (zh) * 2012-12-20 2013-04-10 曙光云计算技术有限公司 瘦客户端与服务器端之间基于远程桌面连接的通信方法
US9307493B2 (en) 2012-12-20 2016-04-05 Seven Networks, Llc Systems and methods for application management of mobile device radio state promotion and demotion
US9736271B2 (en) 2012-12-21 2017-08-15 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism with usage-based billing
US9654579B2 (en) 2012-12-21 2017-05-16 Akamai Technologies, Inc. Scalable content delivery network request handling mechanism
US20140189127A1 (en) * 2012-12-27 2014-07-03 Anjaneya Reddy Chagam Reservation and execution image writing of native computing devices
WO2014103308A1 (ja) * 2012-12-28 2014-07-03 パナソニック株式会社 制御方法
US9773107B2 (en) 2013-01-07 2017-09-26 Optio Labs, Inc. Systems and methods for enforcing security in mobile computing
US9271238B2 (en) 2013-01-23 2016-02-23 Seven Networks, Llc Application or context aware fast dormancy
US8874761B2 (en) 2013-01-25 2014-10-28 Seven Networks, Inc. Signaling optimization in a wireless network for traffic utilizing proprietary and non-proprietary protocols
US10375155B1 (en) 2013-02-19 2019-08-06 F5 Networks, Inc. System and method for achieving hardware acceleration for asymmetric flow connections
US10142406B2 (en) 2013-03-11 2018-11-27 Amazon Technologies, Inc. Automated data center selection
US9740390B2 (en) * 2013-03-11 2017-08-22 Spikes, Inc. Dynamic clip analysis
US9148350B1 (en) 2013-03-11 2015-09-29 Amazon Technologies, Inc. Automated data synchronization
US10313345B2 (en) 2013-03-11 2019-06-04 Amazon Technologies, Inc. Application marketplace for virtual desktops
US9002982B2 (en) * 2013-03-11 2015-04-07 Amazon Technologies, Inc. Automated desktop placement
US8750123B1 (en) 2013-03-11 2014-06-10 Seven Networks, Inc. Mobile device equipped with mobile network congestion recognition to make intelligent decisions regarding connecting to an operator network
US9608958B2 (en) 2013-03-12 2017-03-28 Oracle International Corporation Lightweight directory access protocol (LDAP) join search mechanism
US20140283136A1 (en) 2013-03-13 2014-09-18 Optio Labs, Inc. Systems and methods for securing and locating computing devices
US9298455B1 (en) * 2013-03-15 2016-03-29 Instart Logic, Inc. Provisional execution of dynamic content component
US9363329B1 (en) 2013-03-15 2016-06-07 Instart Logic, Inc. Identifying correlated components of dynamic content
US9769056B2 (en) 2013-03-15 2017-09-19 Aerohive Networks, Inc. Gateway using multicast to unicast conversion
US9430578B2 (en) 2013-03-15 2016-08-30 Google Inc. System and method for anchoring third party metadata in a document
US9762679B2 (en) 2013-03-15 2017-09-12 Aerohive Networks, Inc. Providing stateless network services
US9242043B2 (en) 2013-03-15 2016-01-26 Tandem Diabetes Care, Inc. Field update of an ambulatory infusion pump system
US20140280715A1 (en) * 2013-03-15 2014-09-18 First Principles, Inc. Real time remote desktop
US8959595B2 (en) * 2013-03-15 2015-02-17 Bullaproof, Inc. Methods and systems for providing secure transactions
US9516127B2 (en) 2013-03-25 2016-12-06 Seven Networks, Llc Intelligent alarm manipulator and resource tracker
WO2014160934A1 (en) 2013-03-28 2014-10-02 Google Inc. System and method to store third-party metadata in a cloud storage system
US9985850B2 (en) 2013-03-29 2018-05-29 Citrix Systems, Inc. Providing mobile device management functionalities
US9369449B2 (en) 2013-03-29 2016-06-14 Citrix Systems, Inc. Providing an enterprise application store
US10284627B2 (en) 2013-03-29 2019-05-07 Citrix Systems, Inc. Data management for an application with multiple operation modes
US9355223B2 (en) 2013-03-29 2016-05-31 Citrix Systems, Inc. Providing a managed browser
US8849979B1 (en) 2013-03-29 2014-09-30 Citrix Systems, Inc. Providing mobile device management functionalities
US9390088B2 (en) * 2013-04-22 2016-07-12 International Business Machines Corporation Ensuring access to long-term stored electronic documents
GB2513344B (en) * 2013-04-23 2017-03-15 Gurulogic Microsystems Oy Communication system utilizing HTTP
US10216549B2 (en) 2013-06-17 2019-02-26 Seven Networks, Llc Methods and systems for providing application programming interfaces and application programming interface extensions to third party applications for optimizing and minimizing application traffic
US9401973B2 (en) * 2013-06-18 2016-07-26 Vmware, Inc. Systems and methods for transmitting data
US9253244B1 (en) * 2013-06-20 2016-02-02 Amazon Technologies, Inc. Subscription based polling for resource updates
US10686646B1 (en) 2013-06-26 2020-06-16 Amazon Technologies, Inc. Management of computing sessions
US10623243B2 (en) 2013-06-26 2020-04-14 Amazon Technologies, Inc. Management of computing sessions
US9973965B2 (en) * 2013-07-12 2018-05-15 Seven Networks, Llc Transport protocol layer optimization for managing signaling and power consumption
ES2674378T3 (es) 2013-07-19 2018-06-29 Opanga Networks, Inc. Detección de fuentes de contenido
US9065765B2 (en) 2013-07-22 2015-06-23 Seven Networks, Inc. Proxy server associated with a mobile carrier for enhancing mobile traffic management in a mobile network
US9137162B2 (en) 2013-07-23 2015-09-15 Sap Se Network traffic routing optimization
US9535794B2 (en) * 2013-07-26 2017-01-03 Globalfoundries Inc. Monitoring hierarchical container-based software systems
US9380077B2 (en) * 2013-08-08 2016-06-28 Iboss, Inc. Switching between networks
CN103458029A (zh) * 2013-09-02 2013-12-18 百度在线网络技术(北京)有限公司 通过浏览器进行加速下载的方法、系统和装置
US8910263B1 (en) 2013-09-17 2014-12-09 Iboss, Inc. Mobile device management profile distribution
US9225611B1 (en) * 2013-10-10 2015-12-29 Parallels IP Holdings GmbH Method for interception and blocking of mouse move and resize events on mobile device
US9535567B1 (en) * 2013-10-10 2017-01-03 Parallels International Gmbh Method for interception and blocking of mouse move and resize events on mobile device
US9065854B2 (en) * 2013-10-28 2015-06-23 Citrix Systems, Inc. Systems and methods for managing a guest virtual machine executing within a virtualized environment
US10187317B1 (en) 2013-11-15 2019-01-22 F5 Networks, Inc. Methods for traffic rate control and devices thereof
US10069867B2 (en) * 2013-11-29 2018-09-04 Nokia Technologies Oy Method and apparatus for determining privacy policy for devices based on brain wave information
US10225352B2 (en) * 2013-12-20 2019-03-05 Sony Corporation Work sessions
EP4250313A3 (en) 2013-12-26 2023-11-22 Tandem Diabetes Care, Inc. Integration of infusion pump with remote electronic device
WO2015100340A1 (en) 2013-12-26 2015-07-02 Tandem Diabetes Care, Inc. Safety processor for wireless control of a drug delivery device
US9749440B2 (en) 2013-12-31 2017-08-29 Sweetlabs, Inc. Systems and methods for hosted application marketplaces
KR102177924B1 (ko) * 2014-01-06 2020-11-13 에스케이플래닛 주식회사 데이터의 저장 효율성을 높이기 위한 사용자 단말기 및 사용자 단말기의 데이터 저장 방법
CN104796313B (zh) * 2014-01-20 2020-10-16 腾讯科技(深圳)有限公司 自动对话工具接入第三方的方法和装置
KR101586720B1 (ko) * 2014-01-22 2016-01-21 전자부품연구원 클라우드 스토리지 표준 관리를 위한 프런트-엔드 어플리케이션 라이브러리 설계
EP3100405A4 (en) * 2014-01-29 2017-08-30 Smart Security Systems LLC Systems and methods for protecting communications
US20150229628A1 (en) * 2014-02-10 2015-08-13 Qamal Kosim-Satyaputra System, method and architecture for providing integrated applications
JP2015158728A (ja) * 2014-02-21 2015-09-03 東芝テック株式会社 情報閲覧装置、及び、情報閲覧プログラム
US11405410B2 (en) 2014-02-24 2022-08-02 Cyphort Inc. System and method for detecting lateral movement and data exfiltration
US10095866B2 (en) 2014-02-24 2018-10-09 Cyphort Inc. System and method for threat risk scoring of security threats
US10225280B2 (en) 2014-02-24 2019-03-05 Cyphort Inc. System and method for verifying and detecting malware
US10326778B2 (en) 2014-02-24 2019-06-18 Cyphort Inc. System and method for detecting lateral movement and data exfiltration
JP2015166971A (ja) * 2014-03-04 2015-09-24 富士通株式会社 情報処理装置、情報処理システム、情報処理方法、及び、情報処理プログラム
US9703611B1 (en) 2014-03-21 2017-07-11 Amazon Technologies, Inc. Isolating resources for utilization by tenants executing in multi-tenant software containers
US10218633B2 (en) * 2014-03-28 2019-02-26 Amazon Technologies, Inc. Implementation of a service that coordinates the placement and execution of containers
US10057325B2 (en) * 2014-03-31 2018-08-21 Nuvestack, Inc. Remote desktop infrastructure
US9244801B2 (en) * 2014-03-31 2016-01-26 International Business Machines Corporation Increasing the accuracy of service quality management metrics
CN103927489B (zh) * 2014-04-22 2017-01-18 陈幼雷 一种数据可信存储的系统及其方法
US10154110B2 (en) 2014-04-22 2018-12-11 Qwilt, Inc. System and methods thereof for delivery of popular content using a multimedia broadcast multicast service
US9961131B2 (en) * 2014-04-25 2018-05-01 Microsoft Technology Licensing, Llc Enhanced reliability for client-based web services
US9848067B2 (en) * 2014-04-25 2017-12-19 Cisco Technology, Inc. Managing sequence values with added headers in computing devices
US9672353B2 (en) 2014-04-28 2017-06-06 Blue Cedar Networks, Inc. Securing and managing apps on a device using policy gates
US9483310B2 (en) 2014-04-29 2016-11-01 Bluedata Software, Inc. Associating cache memory with a work process
EP2942925B1 (en) * 2014-05-05 2016-08-24 Advanced Digital Broadcast S.A. A method and system for providing a private network
US10089098B2 (en) 2014-05-15 2018-10-02 Sweetlabs, Inc. Systems and methods for application installation platforms
US9871849B2 (en) * 2014-05-20 2018-01-16 Citrix Systems, Inc. Systems and methods for just-in-time state sharing
US20150348126A1 (en) * 2014-05-30 2015-12-03 Transilio, Inc. Personalized user engagement system using operating system notification script
US10888119B2 (en) 2014-07-10 2021-01-12 Rai Strategic Holdings, Inc. System and related methods, apparatuses, and computer program products for controlling operation of a device based on a read request
ES2556252B1 (es) * 2014-07-14 2016-12-28 Gabriel NIETO FOMBELLA Método de un cortafuegos con reglas dinámicas mediante SQL
US11838851B1 (en) 2014-07-15 2023-12-05 F5, Inc. Methods for managing L7 traffic classification and devices thereof
US9948496B1 (en) 2014-07-30 2018-04-17 Silver Peak Systems, Inc. Determining a transit appliance for data traffic to a software service
US9992619B2 (en) 2014-08-12 2018-06-05 Aerohive Networks, Inc. Network device based proximity beacon locating
US9686356B2 (en) * 2014-08-12 2017-06-20 Eingot Llc Zero-knowledge environment based social networking engine
US10122630B1 (en) 2014-08-15 2018-11-06 F5 Networks, Inc. Methods for network traffic presteering and devices thereof
US10013430B2 (en) * 2014-08-18 2018-07-03 Vmware, Inc. Remotely stored application files
US9875344B1 (en) 2014-09-05 2018-01-23 Silver Peak Systems, Inc. Dynamic monitoring and authorization of an optimization device
US9794266B2 (en) 2014-09-05 2017-10-17 Qualcomm Incorporated Using multiple credentials for access and traffic differentiation
US20160080519A1 (en) * 2014-09-11 2016-03-17 Microsoft Technology Licensing, Llc Local caching and resolution of service calls
JP2017535128A (ja) * 2014-09-24 2017-11-24 ブイ・5・システムズ・インコーポレイテッド 動的データ管理
US9769239B2 (en) * 2014-09-30 2017-09-19 Qualcomm Incorporated Systems and methods for user agent signaling request acceleration by transport accelerator
WO2016056013A1 (en) * 2014-10-07 2016-04-14 Routier Ltd. Systems and methods for http message content modification streaming
TWI565266B (zh) * 2014-10-23 2017-01-01 Tso-Sung Hung A server system that prevents network congestion, and a connection method
US9736754B2 (en) * 2014-10-30 2017-08-15 Sap Se Data distribution to portable electronic devices
US10182013B1 (en) 2014-12-01 2019-01-15 F5 Networks, Inc. Methods for managing progressive image delivery and devices thereof
JP6880549B2 (ja) * 2014-12-25 2021-06-02 株式会社リコー 情報処理システム、画像処理装置、情報処理方法、および情報処理プログラム
FR3031258B1 (fr) * 2014-12-31 2017-01-27 Bull Sas Methode de communication entre un gestionnaire d'action distant et un boitier de communication
US11615199B1 (en) * 2014-12-31 2023-03-28 Idemia Identity & Security USA LLC User authentication for digital identifications
US9998521B2 (en) 2015-01-08 2018-06-12 Instart Logic, Inc. HTML streaming
US9507581B2 (en) * 2015-01-14 2016-11-29 Dell Products Lp Systems and methods of device firmware delivery for pre-boot updates
CN104618237B (zh) * 2015-01-21 2017-12-12 网宿科技股份有限公司 一种基于tcp/udp的广域网加速系统及方法
US11895138B1 (en) 2015-02-02 2024-02-06 F5, Inc. Methods for improving web scanner accuracy and devices thereof
US20150149362A1 (en) * 2015-02-04 2015-05-28 vitaTrackr, Inc. Encryption and Distribution of Health-related Data
US20150161413A1 (en) * 2015-02-16 2015-06-11 vitaTrackr, Inc. Encryption and distribution of health-related data
US10129098B2 (en) * 2015-03-27 2018-11-13 Microsoft Technology Licensing, Llc Networked device resource enumeration
US10834065B1 (en) 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
CN104935632A (zh) * 2015-04-24 2015-09-23 网宿科技股份有限公司 一种基于cifs协议的加速方法及系统
US10325014B2 (en) 2015-04-30 2019-06-18 Workiva Inc. System and method for convergent document collaboration
US9292482B1 (en) 2015-04-30 2016-03-22 Workiva Inc. System and method for convergent document collaboration
US10505818B1 (en) 2015-05-05 2019-12-10 F5 Networks. Inc. Methods for analyzing and load balancing based on server health and devices thereof
US11350254B1 (en) 2015-05-05 2022-05-31 F5, Inc. Methods for enforcing compliance policies and devices thereof
WO2016183189A1 (en) 2015-05-11 2016-11-17 Inteliquent, Inc. Systems and methods for integration of carrier-based sms and voice functionality within api platform
CN106302571B (zh) 2015-05-14 2020-07-28 微软技术许可有限责任公司 用于对服务器连接进行维护和高速缓存的系统和方法
US11468101B2 (en) * 2015-05-29 2022-10-11 Kuni Ahi LLC Context-rich key framework implementations for global concept management
US10075450B2 (en) * 2015-05-29 2018-09-11 Rockwell Automation Technologies, Inc. One time use password for temporary privilege escalation in a role-based access control (RBAC) system
US9986040B2 (en) 2015-07-21 2018-05-29 Amadeus S.A.S. Communications management system with a separate peripherals server
US10320934B1 (en) * 2015-08-25 2019-06-11 Instart Logic, Inc. One-time cache
US11709799B2 (en) * 2015-08-29 2023-07-25 Vmware, Inc. Content or file based application virtualization using a cache
US20180295126A1 (en) * 2015-09-22 2018-10-11 Conjur, Inc. Dynamic computing resource access authorization
KR20180068975A (ko) * 2015-10-20 2018-06-22 소니 주식회사 정보 처리 시스템, 및 정보 처리 방법
US9710689B2 (en) 2015-10-30 2017-07-18 Essential Products, Inc. Fingerprint sensors for mobile devices
KR101977726B1 (ko) 2015-11-17 2019-05-14 한국전자통신연구원 가상 데스크탑 서비스 방법 및 장치
US20170161253A1 (en) * 2015-11-17 2017-06-08 Upsyte Corporation System and Method for Dynamically Integrating Web Data, Services, and Functionality Into A Web Site
US20170153951A1 (en) * 2015-11-30 2017-06-01 Microsoft Technology Licensing, Llc Incremental synchronous hierarchical system restoration
US10581819B1 (en) * 2015-12-17 2020-03-03 Ca, Inc. Network traffic scanning of encrypted data
US10419310B1 (en) * 2015-12-17 2019-09-17 8×8, Inc. Monitor device for use with endpoint devices
US11757946B1 (en) 2015-12-22 2023-09-12 F5, Inc. Methods for analyzing network traffic and enforcing network policies and devices thereof
US9584378B1 (en) * 2015-12-22 2017-02-28 International Business Machines Corporation Computer-implemented command control in information technology service environment
KR20170074328A (ko) * 2015-12-22 2017-06-30 주식회사 마크애니 티씨피 동기 패킷을 이용한 인증 시스템 및 방법 및 클라이언트 및 기록매체
EP3403388B1 (en) * 2016-01-11 2019-12-11 Telefonaktiebolaget LM Ericsson (PUBL) Synchronized connection closing
US10404698B1 (en) 2016-01-15 2019-09-03 F5 Networks, Inc. Methods for adaptive organization of web application access points in webtops and devices thereof
US10797888B1 (en) 2016-01-20 2020-10-06 F5 Networks, Inc. Methods for secured SCEP enrollment for client devices and devices thereof
US11178150B1 (en) 2016-01-20 2021-11-16 F5 Networks, Inc. Methods for enforcing access control list based on managed application and devices thereof
US9614919B1 (en) 2016-01-26 2017-04-04 Ale International Service delivery through wireless access systems
WO2017130033A1 (en) * 2016-01-26 2017-08-03 Ale International Service delivery through wireless access systems
JP2017134480A (ja) * 2016-01-26 2017-08-03 キヤノン株式会社 情報処理装置、情報処理システム、情報処理装置の制御方法、及びプログラム
CN107045508B (zh) * 2016-02-05 2020-03-03 腾讯科技(深圳)有限公司 应用程序的处理方法和装置
US10541987B2 (en) 2016-02-26 2020-01-21 Tandem Diabetes Care, Inc. Web browser-based device communication workflow
US10097606B2 (en) * 2016-03-14 2018-10-09 Amazon Technologies, Inc. Application streaming using access and execution environments
CN111752480A (zh) * 2016-03-24 2020-10-09 华为技术有限公司 一种数据写方法、数据读方法及相关设备、系统
US10021183B2 (en) * 2016-05-09 2018-07-10 Bank Of America Corporation System for tracking external data transmissions via inventory and registration
US10769145B1 (en) * 2016-05-17 2020-09-08 United Services Automobile Association (Usaa) Unified and compressed statistical analysis data
US10298582B2 (en) * 2016-05-18 2019-05-21 Salesforce.Com, Inc. Environment-differentiated named credential instances for development and deployment
US10432484B2 (en) 2016-06-13 2019-10-01 Silver Peak Systems, Inc. Aggregating select network traffic statistics
US10791088B1 (en) 2016-06-17 2020-09-29 F5 Networks, Inc. Methods for disaggregating subscribers via DHCP address translation and devices thereof
US10523635B2 (en) * 2016-06-17 2019-12-31 Assured Information Security, Inc. Filtering outbound network traffic
US10250715B2 (en) 2016-06-30 2019-04-02 Salesforce.Com, Inc. Dynamic adjustment of boxcarring of action requests from component-driven cloud applications
US10250716B2 (en) * 2016-06-30 2019-04-02 Salesforce.Com, Inc. Priority-driven boxcarring of action requests from component-driven cloud applications
US9967056B1 (en) 2016-08-19 2018-05-08 Silver Peak Systems, Inc. Forward packet recovery with constrained overhead
RU2716748C1 (ru) 2016-08-19 2020-03-16 Хуавей Текнолоджиз Ко., Лтд. Способ выравнивания нагрузки и связанное с ним устройство
US20180059990A1 (en) * 2016-08-25 2018-03-01 Microsoft Technology Licensing, Llc Storage Virtualization For Files
CN107786338B (zh) * 2016-08-25 2021-04-27 大连楼兰科技股份有限公司 动态密码校验中的共享平台
CN106411642B (zh) * 2016-09-21 2019-09-17 杭州迪普科技股份有限公司 一种报文转发路径探测的方法和装置
KR102610480B1 (ko) * 2016-09-26 2023-12-06 삼성전자 주식회사 스트리밍 서비스를 제공하는 방법 및 장치
CN106533974B (zh) * 2016-10-10 2020-04-07 网宿科技股份有限公司 应用程序的流量管理方法、系统及具有该系统的终端设备
US10025826B2 (en) 2016-10-31 2018-07-17 International Business Machines Corporation Querying in-flight streamed data from a relational database
US10127283B2 (en) 2016-10-31 2018-11-13 International Business Machines Corporation Projecting effect of in-flight streamed data on a relational database
US9836467B1 (en) 2016-10-31 2017-12-05 International Business Machines Company Altering in-flight streamed data from a relational database
US11063758B1 (en) 2016-11-01 2021-07-13 F5 Networks, Inc. Methods for facilitating cipher selection and devices thereof
US10505792B1 (en) 2016-11-02 2019-12-10 F5 Networks, Inc. Methods for facilitating network traffic analytics and devices thereof
US10379881B2 (en) * 2016-11-16 2019-08-13 Citrix Systems, Inc. Delivering an immersive remote desktop
US10362110B1 (en) * 2016-12-08 2019-07-23 Amazon Technologies, Inc. Deployment of client data compute kernels in cloud
US10970754B2 (en) * 2016-12-12 2021-04-06 Ncr Corporation Real-time service status
US10530747B2 (en) 2017-01-13 2020-01-07 Citrix Systems, Inc. Systems and methods to run user space network stack inside docker container while bypassing container Linux network stack
US10417239B2 (en) 2017-01-13 2019-09-17 International Business Machines Corporation Reducing flow delays in a data streaming application caused by lookup operations
US10860342B2 (en) * 2017-01-30 2020-12-08 Citrix Systems, Inc. Computer system providing cloud-based session prelaunch features and related methods
US10892978B2 (en) 2017-02-06 2021-01-12 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows from first packet data
US11044202B2 (en) 2017-02-06 2021-06-22 Silver Peak Systems, Inc. Multi-level learning for predicting and classifying traffic flows from first packet data
US10257082B2 (en) 2017-02-06 2019-04-09 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows
US10771394B2 (en) 2017-02-06 2020-09-08 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows on a first packet from DNS data
US11496438B1 (en) 2017-02-07 2022-11-08 F5, Inc. Methods for improved network security using asymmetric traffic delivery and devices thereof
US10791119B1 (en) 2017-03-14 2020-09-29 F5 Networks, Inc. Methods for temporal password injection and devices thereof
US10812266B1 (en) 2017-03-17 2020-10-20 F5 Networks, Inc. Methods for managing security tokens based on security violations and devices thereof
US10936593B2 (en) * 2017-03-27 2021-03-02 Liberation Distribution, Inc. Resolving a query to a database by transmitting identifiers of objects satisfying the query
US10778684B2 (en) 2017-04-07 2020-09-15 Citrix Systems, Inc. Systems and methods for securely and transparently proxying SAAS applications through a cloud-hosted or on-premise network gateway for enhanced security and visibility
US10931662B1 (en) 2017-04-10 2021-02-23 F5 Networks, Inc. Methods for ephemeral authentication screening and devices thereof
US10536466B1 (en) * 2017-04-26 2020-01-14 Branch Banking And Trust Company Risk assessment of electronic communication using time zone data
US10574680B2 (en) 2017-05-12 2020-02-25 Teachers Insurance And Annuity Association Of America Malware detection in distributed computer systems
US11343237B1 (en) 2017-05-12 2022-05-24 F5, Inc. Methods for managing a federated identity environment using security and access control data and devices thereof
US11122042B1 (en) 2017-05-12 2021-09-14 F5 Networks, Inc. Methods for dynamically managing user access control and devices thereof
US10594670B2 (en) * 2017-05-30 2020-03-17 Servicenow, Inc. Edge encryption with metadata
US10509921B2 (en) 2017-05-31 2019-12-17 Intuit Inc. System for managing transactional data
US10990291B2 (en) * 2017-06-12 2021-04-27 Dell Products, L.P. Software assist memory module hardware architecture
US11048660B2 (en) 2017-06-20 2021-06-29 Netflix, Inc. Acceleration system for facilitating processing of API calls
US10938855B1 (en) * 2017-06-23 2021-03-02 Digi International Inc. Systems and methods for automatically and securely provisioning remote computer network infrastructure
US11025724B2 (en) * 2017-07-24 2021-06-01 Facebook, Inc. Transport of control data in proxy-based network communications
WO2019027990A1 (en) * 2017-07-31 2019-02-07 Citibank, N.A. SYSTEMS AND METHODS FOR ELECTRONIC VOTING BY PROXY
US10785335B2 (en) * 2017-08-22 2020-09-22 Tracefree Corp. Secure and private web browsing system and method
US11601467B2 (en) 2017-08-24 2023-03-07 L3 Technologies, Inc. Service provider advanced threat protection
US11122083B1 (en) 2017-09-08 2021-09-14 F5 Networks, Inc. Methods for managing network connections based on DNS data and network policies and devices thereof
JP6904183B2 (ja) * 2017-09-12 2021-07-14 富士通株式会社 情報処理装置、プログラム及び情報処理方法
US10949486B2 (en) 2017-09-20 2021-03-16 Citrix Systems, Inc. Anchored match algorithm for matching with large sets of URL
US11212210B2 (en) 2017-09-21 2021-12-28 Silver Peak Systems, Inc. Selective route exporting using source type
CN117215824A (zh) * 2017-09-28 2023-12-12 北京忆芯科技有限公司 基于机器学习的读出数据错误处理
CN107689964B (zh) * 2017-09-28 2020-10-23 深圳市友华通信技术有限公司 嵌入式web服务器防重放攻击的方法
US11552987B2 (en) * 2017-09-28 2023-01-10 L3 Technologies, Inc. Systems and methods for command and control protection
US10805381B2 (en) * 2017-10-03 2020-10-13 Citrix Systems, Inc Web storage based IoT device protect mechanism
CN107770030B (zh) * 2017-10-17 2021-01-05 浙江大丰实业股份有限公司 基于vpn技术的舞台设备控制系统、控制方法及控制装置
US11550898B2 (en) 2017-10-23 2023-01-10 L3 Technologies, Inc. Browser application implementing sandbox based internet isolation
US11012555B2 (en) 2017-11-20 2021-05-18 International Business Machines Corporation Non-verbal sensitive data authentication
US10805420B2 (en) * 2017-11-29 2020-10-13 Forcepoint Llc Proxy-less wide area network acceleration
CN108304214B (zh) * 2017-12-13 2022-05-13 超聚变数字技术有限公司 一种立即数的完整性的校验方法及装置
US10691489B2 (en) 2018-01-29 2020-06-23 International Business Machines Corporation Managing the processing of streamed data in a data streaming application using query information from a relational database
US10637721B2 (en) 2018-03-12 2020-04-28 Silver Peak Systems, Inc. Detecting path break conditions while minimizing network overhead
US11658995B1 (en) 2018-03-20 2023-05-23 F5, Inc. Methods for dynamically mitigating network attacks and devices thereof
CN108665141B (zh) * 2018-04-03 2022-03-22 山东科技大学 一种从突发事件预案中自动抽取应急响应流程模型的方法
EP4290400A3 (en) * 2018-04-03 2024-03-06 Palantir Technologies Inc. Controlling access to computer resources
EP3554045A1 (en) * 2018-04-09 2019-10-16 Winn Schwartau Information security
CN108616579B (zh) * 2018-04-09 2021-06-15 深圳市腾讯网络信息技术有限公司 应用数据下载方法、服务器、存储介质和电子装置
US11070539B2 (en) * 2018-04-10 2021-07-20 ArecaBay, Inc. Network security dynamic access control and policy enforcement
US11194930B2 (en) * 2018-04-27 2021-12-07 Datatrendz, Llc Unobtrusive systems and methods for collecting, processing and securing information transmitted over a network
US11489843B2 (en) * 2018-05-16 2022-11-01 Equifax Inc. Controlling access to secured data via timed filtering of data
US10353700B1 (en) * 2018-05-21 2019-07-16 Microsoft Technology Licensing, Llc Code base sharing between standalone and web-based versions of an application via an emulated network communication channel
CN109011566A (zh) * 2018-07-23 2018-12-18 广州趣丸网络科技有限公司 一种在实时通讯群组内筛子类游戏的实现方法
US10862757B2 (en) * 2018-08-07 2020-12-08 Dell Products L.P. Isolating a redirected biometric device to a remote session
CN109582320B (zh) * 2018-08-08 2022-05-10 深圳市飞速创新技术股份有限公司 写码方法及终端设备
US10873635B2 (en) * 2018-09-24 2020-12-22 Salesforce.Com, Inc. Multi-channel session connection management mechanism
US20200099738A1 (en) * 2018-09-24 2020-03-26 Citrix Systems, Inc. Systems and methods for bridge protocol between diverse applications
US11516083B2 (en) * 2018-09-28 2022-11-29 Mastercard International Incorporated Systems, computer-readable media and computer-implemented methods for automated, dynamic capacity planning using HTTP response header fields
US11204926B2 (en) 2018-10-31 2021-12-21 International Business Machines Corporation Storing partial tuples from a streaming application in a database system
US10740085B2 (en) * 2018-11-30 2020-08-11 Target Brands, Inc. Webserver interface for deployment management tool
US11204819B2 (en) 2018-12-21 2021-12-21 Samsung Electronics Co., Ltd. System and method for offloading application functions to a device
US20220129800A1 (en) * 2019-01-30 2022-04-28 IC Manage Inc. Global File Flow Forecasting System and Methods of Operation
WO2020171838A1 (en) 2019-02-19 2020-08-27 Tandem Diabetes Care, Inc. System and method of pairing an infusion pump with a remote control device
CN109981734A (zh) * 2019-02-21 2019-07-05 广东星辉天拓互动娱乐有限公司 一种基于互联网的全球业务加速方法
US11659059B2 (en) * 2019-03-01 2023-05-23 Hewlett Packard Enterprise Development Lp Parallel sharing of hardware
CN110046143B (zh) * 2019-03-04 2023-03-28 国网辽宁省电力有限公司信息通信分公司 一种一体化数据平台的整体架构优化系统及优化方法
US11586750B2 (en) * 2019-03-21 2023-02-21 Blackberry Limited Managing access to protected data file content
US11305057B2 (en) 2019-03-26 2022-04-19 Tandem Diabetes Care, Inc. Method and system of operating an infusion pump with a remote control device
US10805652B1 (en) * 2019-03-29 2020-10-13 Amazon Technologies, Inc. Stateful server-less multi-tenant computing at the edge
US10868855B2 (en) * 2019-04-01 2020-12-15 Citrix Systems, Inc. File containerization and management
WO2020211071A1 (en) * 2019-04-19 2020-10-22 Intel Corporation Process-to-process secure data movement in network functions virtualization infrastructures
CN112035272A (zh) * 2019-06-03 2020-12-04 华为技术有限公司 进程间通信的方法、装置以及计算机设备
US11704441B2 (en) 2019-09-03 2023-07-18 Palantir Technologies Inc. Charter-based access controls for managing computer resources
US11755825B2 (en) 2019-09-12 2023-09-12 Workiva Inc. Method, system, and computing device for facilitating private drafting
US11240338B2 (en) * 2019-10-22 2022-02-01 Cisco Technology, Inc. Integrated content delivery of enhanced mobile gateway system
US11586685B2 (en) 2019-10-31 2023-02-21 Citrix Systems, Inc. Systems and methods for generating data structures from browser data to determine and initiate actions based thereon
CN114981792A (zh) * 2019-11-06 2022-08-30 法斯特利有限公司 在内容递送网络的边缘处管理共享应用程序
US11169864B2 (en) * 2019-11-21 2021-11-09 Spillbox Inc. Systems, methods and computer program products for application environment synchronization between remote devices and on-premise devices
US11231930B2 (en) * 2019-11-25 2022-01-25 Alibaba Group Holding Limited Methods and systems for fetching data for an accelerator
US11075905B2 (en) * 2019-12-09 2021-07-27 Google Llc Requesting and transmitting data for related accounts
US11822522B2 (en) * 2020-01-31 2023-11-21 EMC IP Holding Company LLC Intelligent filesystem for container images
CN111371868B (zh) * 2020-02-26 2023-02-03 北京奇艺世纪科技有限公司 关联web应用和客户端的方法、装置、设备、系统以及存储介质
CN113569245A (zh) * 2020-04-28 2021-10-29 阿里巴巴集团控股有限公司 处理装置、嵌入式系统、片上系统以及安全控制方法
US11409860B2 (en) * 2020-05-21 2022-08-09 Equalearning Corp. System and method for remote authentication
EP3923170A1 (fr) * 2020-06-10 2021-12-15 Bull SAS Système de fichiers distribués et procédé d'accès à un fichier dans un tel système
US11526825B2 (en) 2020-07-27 2022-12-13 Cygnvs Inc. Cloud-based multi-tenancy computing systems and methods for providing response control and analytics
US11443108B2 (en) 2020-08-17 2022-09-13 Workiva Inc. System and method for document management using branching
US11100281B1 (en) 2020-08-17 2021-08-24 Workiva Inc. System and method for maintaining links and revisions
US11916908B2 (en) * 2020-10-26 2024-02-27 Dell Products L.P. Method and system for performing an authentication and authorization operation on video data using a data processing unit
US11514949B2 (en) 2020-10-26 2022-11-29 Dell Products L.P. Method and system for long term stitching of video data using a data processing unit
US11599574B2 (en) 2020-10-26 2023-03-07 Dell Products L.P. Method and system for performing a compliance operation on video data using a data processing unit
US11106825B1 (en) 2020-11-10 2021-08-31 Netskope, Inc. Predetermined credential system for remote administrative operating system (OS) authorization and policy control
US11880482B2 (en) * 2020-12-10 2024-01-23 International Business Machines Corporation Secure smart containers for controlling access to data
US11397569B2 (en) * 2020-12-21 2022-07-26 Sap Se Deploying micro frontends to different clusters from a single repository
US11868464B2 (en) * 2020-12-22 2024-01-09 Sentrybay Limited Launching applications
US11610011B2 (en) * 2021-01-29 2023-03-21 Akamai Technologies, Inc. Secure transfer of data between programs executing on the same end-user device
US11100277B1 (en) 2021-02-15 2021-08-24 Workiva Inc. Systems, methods, and computer-readable media for flow-through formatting for links
US11716405B1 (en) * 2021-04-14 2023-08-01 Splunk Inc. System and method for identifying cache miss in backend application
US11354362B1 (en) 2021-05-06 2022-06-07 Workiva Inc. System and method for copying linked documents
US11514042B1 (en) * 2021-06-03 2022-11-29 Sap Se Managing multiple cache specifications within a database environment
KR102593034B1 (ko) * 2021-07-02 2023-10-23 고려대학교 산학협력단 다차원 데이터베이스를 위한 스토리지내 데이터 재구성 가속기
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization
US11477208B1 (en) * 2021-09-15 2022-10-18 Cygnvs Inc. Systems and methods for providing collaboration rooms with dynamic tenancy and role-based security
US11640495B1 (en) 2021-10-15 2023-05-02 Workiva Inc. Systems and methods for translation comments flowback
CN117336101B (zh) * 2023-11-29 2024-02-23 南京中孚信息技术有限公司 一种细粒度网络接入控制方法、系统、设备及介质

Family Cites Families (264)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US179955A (en) * 1876-07-18 Improvement in weather-boarding
US225720A (en) * 1880-03-23 Expanding drill
US229381A (en) * 1880-06-29 John clayton
US225753A (en) * 1880-03-23 Middlings-purifier
US2006016A (en) * 1934-07-31 1935-06-25 American Zinc Lead & Smelting Method of making pigmented paper
US4935870A (en) * 1986-12-15 1990-06-19 Keycom Electronic Publishing Apparatus for downloading macro programs and executing a downloaded macro program responding to activation of a single key
US5483630A (en) * 1990-07-12 1996-01-09 Hitachi, Ltd. Method and apparatus for representing motion of multiple-jointed object, computer graphic apparatus, and robot controller
CA2145921A1 (en) 1994-05-10 1995-11-11 Vijay Pochampalli Kumar Method and apparatus for executing a distributed algorithm or service on a simple network management protocol based computer network
US5485460A (en) * 1994-08-19 1996-01-16 Microsoft Corporation System and method for running multiple incompatible network protocol stacks
US5742829A (en) * 1995-03-10 1998-04-21 Microsoft Corporation Automatic software installation on heterogeneous networked client computer systems
US5805809A (en) * 1995-04-26 1998-09-08 Shiva Corporation Installable performance accelerator for maintaining a local cache storing data residing on a server computer
US5874960A (en) * 1995-07-05 1999-02-23 Microsoft Corporation Method and system for sharing applications between computer systems
US6750877B2 (en) * 1995-12-13 2004-06-15 Immersion Corporation Controlling haptic feedback for enhancing navigation in a graphical environment
US6253188B1 (en) 1996-09-20 2001-06-26 Thomson Newspapers, Inc. Automated interactive classified ad system for the internet
US5987611A (en) * 1996-12-31 1999-11-16 Zone Labs, Inc. System and methodology for managing internet access on a per application basis for client computers connected to the internet
US6052718A (en) 1997-01-07 2000-04-18 Sightpath, Inc Replica routing
US5941988A (en) 1997-01-27 1999-08-24 International Business Machines Corporation Session and transport layer proxies via TCP glue
US6026440A (en) * 1997-01-27 2000-02-15 International Business Machines Corporation Web server account manager plug-in for monitoring resources
US6021470A (en) * 1997-03-17 2000-02-01 Oracle Corporation Method and apparatus for selective data caching implemented with noncacheable and cacheable data for improved cache performance in a computer networking system
US5960170A (en) 1997-03-18 1999-09-28 Trend Micro, Inc. Event triggered iterative virus detection
US5909559A (en) * 1997-04-04 1999-06-01 Texas Instruments Incorporated Bus bridge device including data bus of first width for a first processor, memory controller, arbiter circuit and second processor having a different second data width
EP0872991B1 (en) * 1997-04-15 2006-07-26 Hewlett-Packard Company, A Delaware Corporation Method and apparatus for device interaction by format
US6088728A (en) * 1997-06-11 2000-07-11 Oracle Corporation System using session data stored in session data storage for associating and disassociating user identifiers for switching client sessions in a server
US6442549B1 (en) 1997-07-25 2002-08-27 Eric Schneider Method, product, and apparatus for processing reusable information
US6006268A (en) * 1997-07-31 1999-12-21 Cisco Technology, Inc. Method and apparatus for reducing overhead on a proxied connection
US6061796A (en) * 1997-08-26 2000-05-09 V-One Corporation Multi-access virtual private network
US5987482A (en) 1997-09-08 1999-11-16 International Business Machines Corporation Computer system and method of displaying hypertext documents with internal hypertext link definitions
US6023724A (en) * 1997-09-26 2000-02-08 3Com Corporation Apparatus and methods for use therein for an ISDN LAN modem that displays fault information to local hosts through interception of host DNS request messages
US6032260A (en) * 1997-11-13 2000-02-29 Ncr Corporation Method for issuing a new authenticated electronic ticket based on an expired authenticated ticket and distributed server architecture for using same
US6085247A (en) * 1998-06-08 2000-07-04 Microsoft Corporation Server operating system for supporting multiple client-server sessions and dynamic reconnection of users to previous sessions using different computers
US6415329B1 (en) * 1998-03-06 2002-07-02 Massachusetts Institute Of Technology Method and apparatus for improving efficiency of TCP/IP protocol over high delay-bandwidth network
US6292172B1 (en) 1998-03-20 2001-09-18 Samir B. Makhlouf System and method for controlling and integrating various media devices in a universally controlled system
US6578073B1 (en) * 1998-05-13 2003-06-10 Hewlett-Packard Development Company, L.P. Accelerated content delivery over a network using reduced size objects
US6640248B1 (en) 1998-07-10 2003-10-28 Malibu Networks, Inc. Application-aware, quality of service (QoS) sensitive, media access control (MAC) layer
US6452915B1 (en) 1998-07-10 2002-09-17 Malibu Networks, Inc. IP-flow classification in a wireless point to multi-point (PTMP) transmission system
US6151599A (en) 1998-07-17 2000-11-21 International Business Machines Corporation Web client scripting test architecture for web server-based authentication
US7197570B2 (en) * 1998-07-22 2007-03-27 Appstream Inc. System and method to send predicted application streamlets to a client device
US6687732B1 (en) * 1998-09-28 2004-02-03 Inktomi Corporation Adaptive traffic bypassing in an intercepting network driver
US8078727B2 (en) 1998-10-09 2011-12-13 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6546425B1 (en) 1998-10-09 2003-04-08 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US7136645B2 (en) 1998-10-09 2006-11-14 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US8060656B2 (en) 1998-10-09 2011-11-15 Netmotion Wireless, Inc. Method and apparatus for providing mobile and other intermittent connectivity in a computing environment
US6550012B1 (en) * 1998-12-11 2003-04-15 Network Associates, Inc. Active firewall system and methodology
US6631986B2 (en) 1998-12-16 2003-10-14 Silverbrook Research Pty Ltd Printer transport roller with internal drive motor
AUPP773898A0 (en) 1998-12-16 1999-01-21 Silverbrook Research Pty Ltd An image creation method and apparatus(CEP01)
AUPP773798A0 (en) 1998-12-16 1999-01-21 Silverbrook Research Pty Ltd An image creation method and apparatus(CEP02)
SG116487A1 (en) 1998-12-16 2005-11-28 Silverbrook Res Pty Ltd Duplex inkjet printing system.
US6522342B1 (en) * 1999-01-27 2003-02-18 Hughes Electronics Corporation Graphical tuning bar for a multi-program data stream
US9141717B2 (en) * 1999-03-22 2015-09-22 Esdr Network Solutions Llc Methods, systems, products, and devices for processing DNS friendly identifiers
US7225333B2 (en) * 1999-03-27 2007-05-29 Microsoft Corporation Secure processor architecture for use with a digital rights management (DRM) system on a computing device
US6701432B1 (en) 1999-04-01 2004-03-02 Netscreen Technologies, Inc. Firewall including local bus
US6948113B1 (en) * 1999-04-21 2005-09-20 Seagate Technology Llc Self-throttling error-correction buffer and method for a disc drive
US6505230B1 (en) 1999-05-14 2003-01-07 Pivia, Inc. Client-server independent intermediary mechanism
US6957186B1 (en) 1999-05-27 2005-10-18 Accenture Llp System method and article of manufacture for building, managing, and supporting various components of a system
US6721713B1 (en) 1999-05-27 2004-04-13 Andersen Consulting Llp Business alliance identification in a web architecture framework
US7165041B1 (en) 1999-05-27 2007-01-16 Accenture, Llp Web-based architecture sales tool
US6536037B1 (en) 1999-05-27 2003-03-18 Accenture Llp Identification of redundancies and omissions among components of a web based architecture
US6473794B1 (en) 1999-05-27 2002-10-29 Accenture Llp System for establishing plan to test components of web based framework by displaying pictorial representation and conveying indicia coded components of existing network framework
US6615166B1 (en) 1999-05-27 2003-09-02 Accenture Llp Prioritizing components of a network framework required for implementation of technology
US6519571B1 (en) 1999-05-27 2003-02-11 Accenture Llp Dynamic customer profile management
US7882247B2 (en) 1999-06-11 2011-02-01 Netmotion Wireless, Inc. Method and apparatus for providing secure connectivity in mobile and other intermittent computing environments
US7184866B2 (en) * 1999-07-30 2007-02-27 Oshkosh Truck Corporation Equipment service vehicle with remote monitoring
US6523027B1 (en) 1999-07-30 2003-02-18 Accenture Llp Interfacing servers in a Java based e-commerce architecture
US6993421B2 (en) * 1999-07-30 2006-01-31 Oshkosh Truck Corporation Equipment service vehicle with network-assisted vehicle service and repair
US6609128B1 (en) 1999-07-30 2003-08-19 Accenture Llp Codes table framework design in an E-commerce architecture
US6718535B1 (en) 1999-07-30 2004-04-06 Accenture Llp System, method and article of manufacture for an activity framework design in an e-commerce based environment
US7100195B1 (en) 1999-07-30 2006-08-29 Accenture Llp Managing user information on an e-commerce system
US6885920B2 (en) * 1999-07-30 2005-04-26 Oshkosh Truck Corporation Control system and method for electric vehicle
US6633878B1 (en) 1999-07-30 2003-10-14 Accenture Llp Initializing an ecommerce database framework
US6704873B1 (en) 1999-07-30 2004-03-09 Accenture Llp Secure gateway interconnection in an e-commerce based environment
US6601233B1 (en) 1999-07-30 2003-07-29 Accenture Llp Business components framework
US6609198B1 (en) * 1999-08-05 2003-08-19 Sun Microsystems, Inc. Log-on service providing credential level change without loss of session continuity
US6691232B1 (en) * 1999-08-05 2004-02-10 Sun Microsystems, Inc. Security architecture with environment sensitive credential sufficiency evaluation
US6697849B1 (en) * 1999-08-13 2004-02-24 Sun Microsystems, Inc. System and method for caching JavaServer Pages™ responses
US6550057B1 (en) * 1999-08-31 2003-04-15 Accenture Llp Piecemeal retrieval in an information services patterns environment
US6477580B1 (en) 1999-08-31 2002-11-05 Accenture Llp Self-described stream in a communication services patterns environment
US6370573B1 (en) 1999-08-31 2002-04-09 Accenture Llp System, method and article of manufacture for managing an environment of a development architecture framework
US6549949B1 (en) * 1999-08-31 2003-04-15 Accenture Llp Fixed format stream in a communication services patterns environment
US6640238B1 (en) 1999-08-31 2003-10-28 Accenture Llp Activity component in a presentation services patterns environment
US6289382B1 (en) 1999-08-31 2001-09-11 Andersen Consulting, Llp System, method and article of manufacture for a globally addressable interface in a communication services patterns environment
US6438594B1 (en) 1999-08-31 2002-08-20 Accenture Llp Delivering service to a client via a locally addressable interface
US6571282B1 (en) * 1999-08-31 2003-05-27 Accenture Llp Block-based communication in a communication services patterns environment
US6502213B1 (en) 1999-08-31 2002-12-31 Accenture Llp System, method, and article of manufacture for a polymorphic exception handler in environment services patterns
US6640249B1 (en) 1999-08-31 2003-10-28 Accenture Llp Presentation services patterns in a netcentric environment
US6442748B1 (en) 1999-08-31 2002-08-27 Accenture Llp System, method and article of manufacture for a persistent state and persistent object separator in an information services patterns environment
US6477665B1 (en) 1999-08-31 2002-11-05 Accenture Llp System, method, and article of manufacture for environment services patterns in a netcentic environment
US6529909B1 (en) * 1999-08-31 2003-03-04 Accenture Llp Method for translating an object attribute converter in an information services patterns environment
US6640244B1 (en) 1999-08-31 2003-10-28 Accenture Llp Request batcher in a transaction services patterns environment
US6601192B1 (en) * 1999-08-31 2003-07-29 Accenture Llp Assertion component in environment services patterns
US6539396B1 (en) * 1999-08-31 2003-03-25 Accenture Llp Multi-object identifier system and method for information service pattern environment
US6615199B1 (en) 1999-08-31 2003-09-02 Accenture, Llp Abstraction factory in a base services pattern environment
US6314452B1 (en) 1999-08-31 2001-11-06 Rtimage, Ltd. System and method for transmitting a digital image over a communication network
US6434628B1 (en) 1999-08-31 2002-08-13 Accenture Llp Common interface for handling exception interface name with additional prefix and suffix for handling exceptions in environment services patterns
US6434568B1 (en) 1999-08-31 2002-08-13 Accenture Llp Information services patterns in a netcentric environment
US6405364B1 (en) 1999-08-31 2002-06-11 Accenture Llp Building techniques in a development architecture framework
US6615253B1 (en) 1999-08-31 2003-09-02 Accenture Llp Efficient server side data retrieval for execution of client side applications
US6742015B1 (en) * 1999-08-31 2004-05-25 Accenture Llp Base services patterns in a netcentric environment
US6256773B1 (en) 1999-08-31 2001-07-03 Accenture Llp System, method and article of manufacture for configuration management in a development architecture framework
US6842906B1 (en) * 1999-08-31 2005-01-11 Accenture Llp System and method for a refreshable proxy pool in a communication services patterns environment
US6601234B1 (en) * 1999-08-31 2003-07-29 Accenture Llp Attribute dictionary in a business logic services environment
US6324647B1 (en) 1999-08-31 2001-11-27 Michel K. Bowman-Amuah System, method and article of manufacture for security management in a development architecture framework
US6529948B1 (en) * 1999-08-31 2003-03-04 Accenture Llp Multi-object fetch component
US6606660B1 (en) 1999-08-31 2003-08-12 Accenture Llp Stream-based communication in a communication services patterns environment
US6496850B1 (en) 1999-08-31 2002-12-17 Accenture Llp Clean-up of orphaned server contexts
US6578068B1 (en) * 1999-08-31 2003-06-10 Accenture Llp Load balancer in environment services patterns
US6715145B1 (en) * 1999-08-31 2004-03-30 Accenture Llp Processing pipeline in a base services pattern environment
US6636242B2 (en) 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6339832B1 (en) * 1999-08-31 2002-01-15 Accenture Llp Exception response table in environment services patterns
US6662357B1 (en) 1999-08-31 2003-12-09 Accenture Llp Managing information in an integrated development architecture framework
US7139999B2 (en) 1999-08-31 2006-11-21 Accenture Llp Development architecture framework
US6332163B1 (en) 1999-09-01 2001-12-18 Accenture, Llp Method for providing communication services over a computer network system
JP3873548B2 (ja) * 1999-10-29 2007-01-24 富士通株式会社 情報提供サービス、情報提供方法及び情報提供装置
US6449658B1 (en) 1999-11-18 2002-09-10 Quikcat.Com, Inc. Method and apparatus for accelerating data through communication networks
US20020073167A1 (en) * 1999-12-08 2002-06-13 Powell Kyle E. Internet content delivery acceleration system employing a hybrid content selection scheme
JP3546787B2 (ja) 1999-12-16 2004-07-28 インターナショナル・ビジネス・マシーンズ・コーポレーション アクセス制御システム、アクセス制御方法、及び記憶媒体
US7149222B2 (en) 1999-12-21 2006-12-12 Converged Access, Inc. Integrated access point network device
US6629081B1 (en) 1999-12-22 2003-09-30 Accenture Llp Account settlement and financing in an e-commerce environment
US7069234B1 (en) 1999-12-22 2006-06-27 Accenture Llp Initiating an agreement in an e-commerce environment
US7167844B1 (en) 1999-12-22 2007-01-23 Accenture Llp Electronic menu document creator in a virtual financial environment
US6665726B1 (en) 2000-01-06 2003-12-16 Akamai Technologies, Inc. Method and system for fault tolerant media streaming over the internet
US6820133B1 (en) * 2000-02-07 2004-11-16 Netli, Inc. System and method for high-performance delivery of web content using high-performance communications protocol between the first and second specialized intermediate nodes to optimize a measure of communications performance between the source and the destination
US6496935B1 (en) * 2000-03-02 2002-12-17 Check Point Software Technologies Ltd System, device and method for rapid packet filtering and processing
US20020065864A1 (en) * 2000-03-03 2002-05-30 Hartsell Neal D. Systems and method for resource tracking in information management environments
US20020116452A1 (en) * 2000-03-03 2002-08-22 Surgient Networks, Inc. Network connected computing system including storage system
US20020107990A1 (en) * 2000-03-03 2002-08-08 Surgient Networks, Inc. Network connected computing system including network switch
US20020049608A1 (en) * 2000-03-03 2002-04-25 Hartsell Neal D. Systems and methods for providing differentiated business services in information management environments
US20020095400A1 (en) 2000-03-03 2002-07-18 Johnson Scott C Systems and methods for managing differentiated service in information management environments
US20030236861A1 (en) 2000-03-03 2003-12-25 Johnson Scott C. Network content delivery system with peer to peer processing components
US20030236919A1 (en) 2000-03-03 2003-12-25 Johnson Scott C. Network connected computing system
US20020105972A1 (en) 2000-03-03 2002-08-08 Richter Roger K. Interprocess communications within a network node using switch fabric
US20020107903A1 (en) * 2000-11-07 2002-08-08 Richter Roger K. Methods and systems for the order serialization of information in a network processing environment
US20020049841A1 (en) 2000-03-03 2002-04-25 Johnson Scott C Systems and methods for providing differentiated service in information management environments
US20030236837A1 (en) 2000-03-03 2003-12-25 Johnson Scott C. Content delivery system providing accelerate content delivery
US20020108059A1 (en) * 2000-03-03 2002-08-08 Canion Rodney S. Network security accelerator
US20020059274A1 (en) 2000-03-03 2002-05-16 Hartsell Neal D. Systems and methods for configuration of information management systems
US20020133593A1 (en) 2000-03-03 2002-09-19 Johnson Scott C. Systems and methods for the deterministic management of information
US20030236745A1 (en) 2000-03-03 2003-12-25 Hartsell Neal D Systems and methods for billing in information management environments
US20020107989A1 (en) * 2000-03-03 2002-08-08 Johnson Scott C. Network endpoint system with accelerated data path
US20020174227A1 (en) * 2000-03-03 2002-11-21 Hartsell Neal D. Systems and methods for prioritization in information management environments
US7020719B1 (en) * 2000-03-24 2006-03-28 Netli, Inc. System and method for high-performance delivery of Internet messages by selecting first and second specialized intermediate nodes to optimize a measure of communications performance between the source and the destination
US6701514B1 (en) 2000-03-27 2004-03-02 Accenture Llp System, method, and article of manufacture for test maintenance in an automated scripting framework
US6907546B1 (en) 2000-03-27 2005-06-14 Accenture Llp Language-driven interface for an automated testing framework
US6502102B1 (en) 2000-03-27 2002-12-31 Accenture Llp System, method and article of manufacture for a table-driven automated scripting architecture
US6553377B1 (en) * 2000-03-31 2003-04-22 Network Associates, Inc. System and process for maintaining a plurality of remote security applications using a modular framework in a distributed computing environment
AU2001249821A1 (en) * 2000-04-07 2001-10-30 Broadcom Homenetworking, Inc. A transceiver method and signal therefor embodied in a carrier wave for a frame-based communications network
US20010030667A1 (en) 2000-04-10 2001-10-18 Kelts Brett R. Interactive display interface for information objects
US6981041B2 (en) * 2000-04-13 2005-12-27 Aep Networks, Inc. Apparatus and accompanying methods for providing, through a centralized server site, an integrated virtual office environment, remotely accessible via a network-connected web browser, with remote network monitoring and management capabilities
US6701345B1 (en) 2000-04-13 2004-03-02 Accenture Llp Providing a notification when a plurality of users are altering similar data in a health care solution environment
US7043563B2 (en) * 2000-04-17 2006-05-09 Circadence Corporation Method and system for redirection to arbitrary front-ends in a communication system
US6976090B2 (en) 2000-04-20 2005-12-13 Actona Technologies Ltd. Differentiated content and application delivery via internet
JP3557998B2 (ja) 2000-04-28 2004-08-25 日本電気株式会社 フラグメンテーション処理デバイスおよびこれを用いたフラグメンテーション処理装置
US6868451B1 (en) * 2000-06-20 2005-03-15 Palm Source, Inc. Data exchange between a handheld device and another computer system using an exchange manager via synchronization
US7047281B1 (en) * 2000-08-08 2006-05-16 Fineground Networks Method and system for accelerating the delivery of content in a networked environment
US20020038339A1 (en) * 2000-09-08 2002-03-28 Wei Xu Systems and methods for packet distribution
WO2002023463A1 (en) 2000-09-11 2002-03-21 David Edgar System, method, and computer program product for optimization and acceleration of data transport and processing
US7958185B2 (en) * 2000-09-18 2011-06-07 Bentley Systems, Inc. Spatial data enabled engineering, construction, and operations computer-aided design (CAD) project system, method and computer program product
US6970939B2 (en) * 2000-10-26 2005-11-29 Intel Corporation Method and apparatus for large payload distribution in a network
US8996698B1 (en) 2000-11-03 2015-03-31 Truphone Limited Cooperative network for mobile internet access
US6918113B2 (en) * 2000-11-06 2005-07-12 Endeavors Technology, Inc. Client installation and execution system for streamed applications
US6959320B2 (en) 2000-11-06 2005-10-25 Endeavors Technology, Inc. Client-side performance optimization system for streamed applications
US7043524B2 (en) * 2000-11-06 2006-05-09 Omnishift Technologies, Inc. Network caching system for streamed applications
US20020107962A1 (en) * 2000-11-07 2002-08-08 Richter Roger K. Single chassis network endpoint system with network processor for load balancing
US20020107971A1 (en) 2000-11-07 2002-08-08 Bailey Brian W. Network transport accelerator
WO2002039693A2 (en) 2000-11-07 2002-05-16 Surgient Networks, Inc. System and method for providing differentiated business services in information management
US7146644B2 (en) 2000-11-13 2006-12-05 Digital Doors, Inc. Data security system and method responsive to electronic attacks
US7140044B2 (en) 2000-11-13 2006-11-21 Digital Doors, Inc. Data security system and method for separation of user communities
US7191252B2 (en) 2000-11-13 2007-03-13 Digital Doors, Inc. Data security system and method adjunct to e-mail, browser or telecom program
US7082409B1 (en) 2000-11-22 2006-07-25 Richard Sutton Cherry Fully integrated on-line interactive purchasing club incorporating extremely rapid fulfillment
JP2002162337A (ja) * 2000-11-26 2002-06-07 Yoshikazu Nakayama 集束イオンビーム加工による走査型顕微鏡用プローブ
US7225040B2 (en) 2001-11-14 2007-05-29 Exxon Mobil Oil Corporation Method and system for reducing lead-time in the packaging industry
US20020111972A1 (en) 2000-12-15 2002-08-15 Virtual Access Networks. Inc. Virtual access
US6963981B1 (en) 2001-01-29 2005-11-08 Akamai Technologies, Inc. Method and apparatus for remote installation of an operating system over a network connection
US7353380B2 (en) * 2001-02-12 2008-04-01 Aventail, Llc, A Subsidiary Of Sonicwall, Inc. Method and apparatus for providing secure streaming data transmission facilities using unreliable protocols
US7383329B2 (en) 2001-02-13 2008-06-03 Aventail, Llc Distributed cache for state transfer operations
US7360075B2 (en) 2001-02-12 2008-04-15 Aventail Corporation, A Wholly Owned Subsidiary Of Sonicwall, Inc. Method and apparatus for providing secure streaming data transmission facilities using unreliable protocols
US20040073512A1 (en) * 2001-02-23 2004-04-15 David Maung Unique session storage design
US7310687B2 (en) * 2001-03-23 2007-12-18 Cisco Technology, Inc. Methods and systems for managing class-based condensation
US7506047B2 (en) 2001-03-30 2009-03-17 Bmc Software, Inc. Synthetic transaction monitor with replay capability
US7099273B2 (en) 2001-04-12 2006-08-29 Bytemobile, Inc. Data transport acceleration and management within a network communication system
US7277953B2 (en) * 2001-04-18 2007-10-02 Emc Corporation Integrated procedure for partitioning network data services among multiple subscribers
WO2002103521A1 (en) * 2001-06-19 2002-12-27 Cable & Wireless Internet Services, Inc. Real-time streaming media measurement system and method
US7149892B2 (en) * 2001-07-06 2006-12-12 Juniper Networks, Inc. Secure sockets layer proxy architecture
JP4222590B2 (ja) * 2001-07-18 2009-02-12 株式会社東芝 サーバ・システム、クライアント・システム、ソフトウェアストリーミング方法及びプログラム
JP2003037623A (ja) * 2001-07-23 2003-02-07 Philips Japan Ltd Mpegネットワーク上におけるダイレクトrtp伝送方法及びシステム
EP1563389A4 (en) 2001-08-01 2008-06-25 Actona Technologies Ltd VIRTUAL DATA DISTRIBUTION NETWORK
AU2002355530A1 (en) * 2001-08-03 2003-02-24 John Allen Ananian Personalized interactive digital catalog profiling
US7100054B2 (en) 2001-08-09 2006-08-29 American Power Conversion Computer network security system
DE60226983D1 (de) 2001-08-31 2008-07-17 First Hop Oy Verfahren zur optimierung der leistung in drahtlosen netzwerken unter verwendung von snmp-agenten
FI114365B (fi) * 2001-08-31 2004-09-30 First Hop Oy Menetelmä langattomien verkkojen suorituskyvyn optimoimiseksi
CA2503682A1 (en) * 2001-10-24 2003-05-15 The Fantastic Corporation Methods for multicasting content
US20060274828A1 (en) 2001-11-01 2006-12-07 A4S Security, Inc. High capacity surveillance system with fast search capability
AU2002357711A1 (en) * 2001-11-13 2003-05-26 Ems Technologies, Inc. Flow control between performance enhancing proxies over variable bandwidth split links
US7380120B1 (en) * 2001-12-12 2008-05-27 Guardian Data Storage, Llc Secured data format for access control
US20030115421A1 (en) 2001-12-13 2003-06-19 Mchenry Stephen T. Centralized bounded domain caching control system for network edge servers
US7194521B1 (en) * 2001-12-18 2007-03-20 Cisco Technology, Inc. HTTP call Recognition on a PSTN device
EP1326185A1 (en) * 2002-01-08 2003-07-09 Alcatel Offline behaviour analysis for online personalisation of value added services
US20040039594A1 (en) * 2002-01-09 2004-02-26 Innerpresence Networks, Inc. Systems and methods for dynamically generating licenses in a rights management system
US7246230B2 (en) * 2002-01-29 2007-07-17 Bea Systems, Inc. Single sign-on over the internet using public-key cryptography
US7984157B2 (en) 2002-02-26 2011-07-19 Citrix Systems, Inc. Persistent and reliable session securely traversing network components using an encapsulating protocol
US20030172138A1 (en) 2002-03-11 2003-09-11 Mccormack Jonathan I. System and method for managing two or more electronic devices
US7707287B2 (en) * 2002-03-22 2010-04-27 F5 Networks, Inc. Virtual host acceleration system
WO2003083679A1 (en) * 2002-03-25 2003-10-09 Netli, Inc. System for fast recovery from losses for reliable data communication protocols
JP4020676B2 (ja) * 2002-03-26 2007-12-12 株式会社東芝 Webシステム及びWebシステムの制御方法
WO2003083692A1 (en) 2002-03-27 2003-10-09 First Virtual Communications System and method for traversing firewalls with protocol communications
US7133905B2 (en) * 2002-04-09 2006-11-07 Akamai Technologies, Inc. Method and system for tiered distribution in a content delivery network
EP1500030A2 (en) 2002-04-10 2005-01-26 TransTech Pharma Inc. System and method for integrated computer-aided molecular discovery
JP4199677B2 (ja) * 2002-04-18 2008-12-17 アーデンス・インコーポレイテッド データをネットワーク上のコンピューターにストリームするためのシステム及び方法
US7631107B2 (en) 2002-06-11 2009-12-08 Pandya Ashish A Runtime adaptable protocol processor
US7107309B1 (en) 2002-07-03 2006-09-12 Sprint Spectrum L.P. Method and system for providing interstitial notice
US6987987B1 (en) * 2002-07-03 2006-01-17 Sprint Spectrum L.P. Method and system for providing advanced notice of cost to access web content
US7260639B2 (en) * 2002-07-09 2007-08-21 Akamai Technologies, Inc. Method and system for protecting web sites from public internet threats
US7395355B2 (en) * 2002-07-11 2008-07-01 Akamai Technologies, Inc. Method for caching and delivery of compressed content in a content delivery network
US20040015591A1 (en) * 2002-07-18 2004-01-22 Wang Frank Xiao-Dong Collective TCP control for improved wireless network performance
US6678828B1 (en) * 2002-07-22 2004-01-13 Vormetric, Inc. Secure network file access control system
US7171469B2 (en) 2002-09-16 2007-01-30 Network Appliance, Inc. Apparatus and method for storing data in a proxy cache in a network
US20040078772A1 (en) * 2002-10-16 2004-04-22 Cosine Communications, Inc. Dynamic route exchange
US8176186B2 (en) 2002-10-30 2012-05-08 Riverbed Technology, Inc. Transaction accelerator for client-server communications systems
US7120666B2 (en) * 2002-10-30 2006-10-10 Riverbed Technology, Inc. Transaction accelerator for client-server communication systems
US8069225B2 (en) 2003-04-14 2011-11-29 Riverbed Technology, Inc. Transparent client-server transaction accelerator
US7363347B2 (en) * 2002-11-07 2008-04-22 Hewlett-Packard Development Company, L.P. Method and system for reestablishing connection information on a switch connected to plural servers in a computer network
US7353533B2 (en) * 2002-12-18 2008-04-01 Novell, Inc. Administration of protection of data accessible by a mobile device
US20040148292A1 (en) * 2003-01-27 2004-07-29 Clemens Ian Kyle Method of adaptive data transmission
US7126955B2 (en) * 2003-01-29 2006-10-24 F5 Networks, Inc. Architecture for efficient utilization and optimum performance of a network
US7426543B2 (en) 2003-04-25 2008-09-16 Sap Ag Accessing data stored in multiple locations
US7681235B2 (en) 2003-05-19 2010-03-16 Radware Ltd. Dynamic network protection
US7260840B2 (en) 2003-06-06 2007-08-21 Microsoft Corporation Multi-layer based method for implementing network firewalls
WO2004114529A2 (en) 2003-06-16 2004-12-29 Mentat Inc. Pre-fetch communication systems and methods
US7739715B2 (en) 2003-06-24 2010-06-15 Microsoft Corporation Variable play speed control for media streams
US7636917B2 (en) 2003-06-30 2009-12-22 Microsoft Corporation Network load balancing with host status information
US7613822B2 (en) 2003-06-30 2009-11-03 Microsoft Corporation Network load balancing with session information
US7286476B2 (en) * 2003-08-01 2007-10-23 F5 Networks, Inc. Accelerating network performance by striping and parallelization of TCP connections
US8131739B2 (en) * 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US7353499B2 (en) * 2003-09-25 2008-04-01 Sun Microsystems, Inc. Multiple instruction dispatch tables for application program obfuscation
US7552109B2 (en) * 2003-10-15 2009-06-23 International Business Machines Corporation System, method, and service for collaborative focused crawling of documents on a network
US7058058B2 (en) * 2003-11-05 2006-06-06 Juniper Networks, Inc. Transparent optimization for transmission control protocol initial session establishment
US8572249B2 (en) * 2003-12-10 2013-10-29 Aventail Llc Network appliance for balancing load and platform services
US7827590B2 (en) 2003-12-10 2010-11-02 Aventail Llc Controlling access to a set of resources in a network
WO2005059684A2 (en) * 2003-12-10 2005-06-30 Aventail Corporation End point control
US7380039B2 (en) * 2003-12-30 2008-05-27 3Tera, Inc. Apparatus, method and system for aggregrating computing resources
US20050177866A1 (en) 2004-02-09 2005-08-11 Kirsch Steven T. Method and system for acceleration of secure socket layer transactions in a network
FI117813B (fi) 2004-03-11 2007-02-28 First Hop Oy Sovellukseen integroitu kiihdytysasiakas
US7827294B2 (en) 2004-05-06 2010-11-02 American Express Travel Related Services Company, Inc. System and method for dynamic security provisioning of computing resources
US8230095B2 (en) * 2004-05-07 2012-07-24 Wyse Technology, Inc. System and method for integrated on-demand delivery of operating system and applications
US8812613B2 (en) * 2004-06-03 2014-08-19 Maxsp Corporation Virtual application manager
US7155243B2 (en) 2004-06-15 2006-12-26 Tekelec Methods, systems, and computer program products for content-based screening of messaging service messages
US8739274B2 (en) * 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
CN101199187A (zh) * 2004-07-23 2008-06-11 茨特里克斯系统公司 用于网络节点之间通信最优化的系统和方法
JP4394541B2 (ja) * 2004-08-23 2010-01-06 日本電気株式会社 通信装置、データ通信方法およびプログラム
US7711835B2 (en) * 2004-09-30 2010-05-04 Citrix Systems, Inc. Method and apparatus for reducing disclosure of proprietary data in a networked environment
EP1832088B1 (en) 2004-12-30 2016-09-14 Citrix Systems, Inc. Systems and methods for providing client-side acceleration techniques
US7420992B1 (en) 2005-03-17 2008-09-02 Packeteer, Inc. Adaptive network traffic compression mechanism including dynamic selection of compression algorithms
US7899864B2 (en) * 2005-11-01 2011-03-01 Microsoft Corporation Multi-user terminal services accelerator
US20070130324A1 (en) * 2005-12-05 2007-06-07 Jieming Wang Method for detecting non-responsive applications in a TCP-based network
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US8151323B2 (en) 2006-04-12 2012-04-03 Citrix Systems, Inc. Systems and methods for providing levels of access and action control via an SSL VPN appliance
US8572721B2 (en) 2006-08-03 2013-10-29 Citrix Systems, Inc. Methods and systems for routing packets in a VPN-client-to-VPN-client connection via an SSL/VPN network appliance
US8694684B2 (en) * 2006-08-21 2014-04-08 Citrix Systems, Inc. Systems and methods of symmetric transport control protocol compression
US8312120B2 (en) 2006-08-22 2012-11-13 Citrix Systems, Inc. Systems and methods for providing dynamic spillover of virtual servers based on bandwidth
AU2007309183A1 (en) 2006-10-20 2008-05-02 Citrix Systems,Inc. Methods and systems for accessing remote user files associated with local resources
US8490148B2 (en) * 2007-03-12 2013-07-16 Citrix Systems, Inc Systems and methods for managing application security profiles
US7853678B2 (en) * 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring flow control of policy expressions
US7853679B2 (en) * 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring handling of undefined policy events
US8484656B2 (en) 2007-03-12 2013-07-09 Citrix Systems, Inc. Systems and methods for providing global server load balancing of heterogeneous devices
US7865589B2 (en) * 2007-03-12 2011-01-04 Citrix Systems, Inc. Systems and methods for providing structured policy expressions to represent unstructured data in a network appliance

Cited By (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107908968A (zh) * 2009-11-10 2018-04-13 马克西姆综合产品公司 用于集成微控制器和外部存储系统的块加密安全
US8417724B2 (en) 2010-05-12 2013-04-09 International Business Machines Corporation File server for extracting and displaying file list on client, method of providing display on client, and computer program executable on file server
US9031989B2 (en) 2010-05-12 2015-05-12 International Business Machines Corporation File server for extracting and displaying file list on client, method of providing display on client, and computer program executable on file server
CN102243643A (zh) * 2010-05-12 2011-11-16 国际商业机器公司 文件服务器、在客户机上进行显示的方法以及计算机程序
CN102959926A (zh) * 2010-06-30 2013-03-06 阿尔卡特朗讯 安装应用的方法
CN102959926B (zh) * 2010-06-30 2016-03-02 阿尔卡特朗讯 安装应用的方法
CN102420847A (zh) * 2010-10-20 2012-04-18 微软公司 在在线服务中以高可用性路由通信
CN102420847B (zh) * 2010-10-20 2015-06-17 微软公司 在在线服务中以高可用性路由通信
CN103582510B (zh) * 2010-12-10 2017-02-15 韦斯技术有限公司 用于利用转码服务器经由HTTP API通过客户端设备处的Web浏览器实时地访问和控制远程机器的远程桌面的方法和系统
CN103582510A (zh) * 2010-12-10 2014-02-12 韦斯技术有限公司 用于利用转码服务器经由HTTP API通过客户端设备处的Web浏览器实时地访问和控制远程机器的远程桌面的方法和系统
CN102637137A (zh) * 2010-12-21 2012-08-15 微软公司 基于策略的应用递送
CN109614244A (zh) * 2011-09-12 2019-04-12 英特尔公司 应用和web服务之间元数据驱动的合作
CN109614244B (zh) * 2011-09-12 2023-10-13 英特尔公司 应用和web服务之间元数据驱动的合作
CN103179104A (zh) * 2011-12-23 2013-06-26 中国移动通信集团公司 一种远程服务的访问方法、系统及其设备
CN103179104B (zh) * 2011-12-23 2016-04-27 中国移动通信集团公司 一种远程服务的访问方法、系统及其设备
CN102752365B (zh) * 2012-05-29 2016-07-06 华为终端有限公司 信息处理的方法与装置
CN102752365A (zh) * 2012-05-29 2012-10-24 华为终端有限公司 信息处理的方法与装置
CN102968331A (zh) * 2012-11-27 2013-03-13 中标软件有限公司 一种虚拟机管理系统及其文件访问方法
CN102968331B (zh) * 2012-11-27 2016-08-10 中标软件有限公司 一种虚拟机管理系统及其文件访问方法
CN104166588A (zh) * 2013-05-16 2014-11-26 腾讯科技(深圳)有限公司 阅读内容的信息处理方法及装置
CN103281369B (zh) * 2013-05-24 2016-03-30 华为技术有限公司 报文处理方法及广域网加速控制器woc
CN103281369A (zh) * 2013-05-24 2013-09-04 华为技术有限公司 报文处理方法及广域网加速控制器woc
CN103412914A (zh) * 2013-08-05 2013-11-27 广州仙海网络科技有限公司 网络客户端
CN103442007A (zh) * 2013-08-29 2013-12-11 成都卫士通信息安全技术有限公司 基于虚拟桌面控制方式实现访问远端应用服务的方法
CN105338026A (zh) * 2014-07-24 2016-02-17 阿里巴巴集团控股有限公司 数据资源的获取方法、装置和系统
CN105338026B (zh) * 2014-07-24 2018-10-09 阿里巴巴集团控股有限公司 数据资源的获取方法、装置和系统
CN105162831B (zh) * 2015-07-27 2018-09-18 北京京东尚科信息技术有限公司 用于实现远程虚拟桌面的移动端和服务端操作方法及装置
CN105162831A (zh) * 2015-07-27 2015-12-16 北京京东尚科信息技术有限公司 用于实现远程虚拟桌面的移动端和服务端操作方法及装置
CN107949829B (zh) * 2015-08-03 2022-05-03 思杰系统有限公司 在多会话平台上虚拟化装置管理服务
CN107949829A (zh) * 2015-08-03 2018-04-20 思杰系统有限公司 在多会话平台上虚拟化装置管理服务
CN106528188A (zh) * 2015-09-09 2017-03-22 腾讯科技(深圳)有限公司 一种应用加速方法及装置
CN106528188B (zh) * 2015-09-09 2019-08-30 腾讯科技(深圳)有限公司 一种应用加速方法及装置
CN106506522B (zh) * 2016-11-28 2019-08-06 杭州迪普科技股份有限公司 Tcp连接的管理方法和装置
CN106506522A (zh) * 2016-11-28 2017-03-15 杭州迪普科技股份有限公司 Tcp连接的管理方法和装置
CN107396186B (zh) * 2017-08-11 2019-11-08 四川长虹电器股份有限公司 Linux设备WebOS系统应用管理方法
CN107396186A (zh) * 2017-08-11 2017-11-24 四川长虹电器股份有限公司 Linux设备WebOS系统应用管理方法
CN107835260A (zh) * 2017-12-15 2018-03-23 吉旗(成都)科技有限公司 一种文件快速传输方法
CN108491174A (zh) * 2018-02-01 2018-09-04 西安万像电子科技有限公司 画面传输方法、装置及系统
CN111837403A (zh) * 2018-03-12 2020-10-27 高通股份有限公司 处理用于以流传送媒体数据的交互性事件
CN110543371A (zh) * 2019-08-29 2019-12-06 张浩天 一种远程调用接口的方法、装置、电子设备和存储介质
CN110543371B (zh) * 2019-08-29 2023-11-17 张浩天 一种远程调用接口的方法、装置、电子设备和存储介质
CN111880852A (zh) * 2020-07-28 2020-11-03 平安科技(深圳)有限公司 操作系统初始化方法、系统、计算机设备及存储介质
CN111880852B (zh) * 2020-07-28 2022-06-07 平安科技(深圳)有限公司 操作系统初始化方法、系统、计算机设备及存储介质
US11546176B2 (en) * 2020-08-26 2023-01-03 Rockwell Collins, Inc. System and method for authentication and cryptographic ignition of remote devices
CN112328701B (zh) * 2020-11-27 2023-11-10 广东睿住智能科技有限公司 数据同步方法、终端设备及计算机可读存储介质
CN112328701A (zh) * 2020-11-27 2021-02-05 广东睿住智能科技有限公司 数据同步方法、终端设备及计算机可读存储介质
CN114422365A (zh) * 2022-01-21 2022-04-29 成都飞鱼星科技股份有限公司 一种基于硬件流加速的上网行为管理方法及系统
CN114422365B (zh) * 2022-01-21 2024-03-19 成都飞鱼星科技股份有限公司 一种基于硬件流加速的上网行为管理方法及系统

Also Published As

Publication number Publication date
CN104767834A (zh) 2015-07-08
US7970923B2 (en) 2011-06-28
IL194567A0 (en) 2009-08-03
US8886822B2 (en) 2014-11-11
CA2646414A1 (en) 2007-10-25
EP2005712A2 (en) 2008-12-24
BRPI0709986A2 (pt) 2011-08-02
AU2007238099B2 (en) 2012-02-23
US20100023582A1 (en) 2010-01-28
CN104767834B (zh) 2018-09-14
US8151323B2 (en) 2012-04-03
AU2007238099A1 (en) 2007-10-25
WO2007121241A3 (en) 2007-12-13
JP2009536377A (ja) 2009-10-08
KR20080110894A (ko) 2008-12-19
US20070244987A1 (en) 2007-10-18
US20070245409A1 (en) 2007-10-18
EP2005712B1 (en) 2019-03-06
BRPI0709986B1 (pt) 2019-10-15
WO2007121241A2 (en) 2007-10-25

Similar Documents

Publication Publication Date Title
CN101473628A (zh) 用于加速计算环境到远程用户的传送的系统和方法
CN101147379B (zh) 在网络中对动态产生的对象执行缓存的系统和方法
CN102281305B (zh) 用于提供客户端加速技术的系统和方法
CN102460389B (zh) 用于将应用启动到现有的隔离环境中的系统和方法
CN105450674B (zh) 用于配置和细粒度策略驱动web内容检测和重写的系统和方法
CN102929658B (zh) 访问目录结构中文件的方法和系统
CN102577302B (zh) 用于在具有流量管理的连接中使用端点审计的系统和方法
CN101326491A (zh) 用于在应用程序的预定数量的执行方法之间选择的方法
US20020103811A1 (en) Method and apparatus for locating and exchanging clinical information
CN102656562A (zh) 用于选择桌面执行位置的方法和系统
KR20040068106A (ko) 분산 컴퓨팅 환경에서 집합화된 서비스의 공급
JP5347429B2 (ja) ユニフォームリソースロケータ書換方法及び装置
US20070299984A1 (en) Application firewall validation bypass for impromptu components
US7448032B2 (en) Method and apparatus for integration of URL into standard file systems
US9137296B2 (en) Portable data carrier as a web server
US20230353423A1 (en) Hybrid proxy anonymity system using distributed protocol to simultaneously disseminate requests and return data across several ip addresses
AU2012200921A1 (en) Systems and methods for accelerating delivery of a computing environment to a remote user
Jin et al. Implementation of an on-site web multimedia collector
Lu et al. JdWeb: A Proxy Server for Intranet/Internet Database Application Development
CA2551034A1 (en) Firewall validation bypass for impromptu components

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20090701