CN101410803B - 用于提供对计算环境的访问的方法和系统 - Google Patents

用于提供对计算环境的访问的方法和系统 Download PDF

Info

Publication number
CN101410803B
CN101410803B CN2007800104850A CN200780010485A CN101410803B CN 101410803 B CN101410803 B CN 101410803B CN 2007800104850 A CN2007800104850 A CN 2007800104850A CN 200780010485 A CN200780010485 A CN 200780010485A CN 101410803 B CN101410803 B CN 101410803B
Authority
CN
China
Prior art keywords
client computer
machine
virtual machine
computing environment
user
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.)
Active
Application number
CN2007800104850A
Other languages
English (en)
Other versions
CN101410803A (zh
Inventor
D·N·罗宾森
B·J·佩德森
R·J·克罗夫特
A·E·洛
R·J·玛扎菲利
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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=40572801&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=CN101410803(B) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Citrix Systems Inc filed Critical Citrix Systems Inc
Priority claimed from PCT/US2007/060963 external-priority patent/WO2007087558A2/en
Publication of CN101410803A publication Critical patent/CN101410803A/zh
Application granted granted Critical
Publication of CN101410803B publication Critical patent/CN101410803B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/14Display of multiple viewports
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/70Information retrieval; Database structures therefor; File system structures therefor of video data
    • G06F16/74Browsing; Visualisation therefor
    • G06F16/748Hypervideo
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1415Digital output to display device ; Cooperation and interconnection of the display device with other functional units with means for detecting differences between the image stored in the host and the images displayed on the displays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1423Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display
    • G06F3/1438Digital output to display device ; Cooperation and interconnection of the display device with other functional units controlling a plurality of local displays, e.g. CRT and flat panel display using more than one graphics controller
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • G06F3/1454Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay
    • G06F3/1462Digital output to display device ; Cooperation and interconnection of the display device with other functional units involving copying of the display data of a local workstation or window to a remote workstation or window so that an actual copy of the data is displayed simultaneously on two or more displays, e.g. teledisplay with means for detecting differences between the image stored in the host and the images displayed on the remote displays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/003Details of a display terminal, the details relating to the control arrangement of the display terminal and to the interfaces thereto
    • G09G5/006Details of the interface to the display terminal
    • 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/0227Filtering policies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • 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
    • 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/102Entity profiles
    • 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
    • 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/01Protocols
    • H04L67/08Protocols specially adapted for terminal emulation, e.g. Telnet
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/2866Architectures; Arrangements
    • H04L67/30Profiles
    • H04L67/303Terminal profiles
    • 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/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • 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
    • 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/563Data redirection of data network streams
    • 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/564Enhancement of application control based on intercepted application data
    • 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
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/59Providing operational support to end devices by off-loading in the network or by emulation, e.g. when they are unavailable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2354/00Aspects of interface with display user
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/16Use of wireless transmission of display information
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2370/00Aspects of data communication
    • G09G2370/22Detection of presence or absence of input display information or of connection or disconnection of a corresponding information source
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/06Network architectures or network communication protocols for network security for supporting key management in a packet data network
    • 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/24Negotiation of communication capabilities

Abstract

一种用于提供对计算环境的访问的方法包括从容户机接收用于列举可用计算环境的请求的步骤。访问所收集到的与可用计算环境有关的数据。所访问的表示每一可用计算环境的数据被传输到客户机。代理机器接收来自客户机的用于访问计算环境的请求,该请求包括客户机的用户的识别。识别提供所请求的计算环境的多个虚拟机的一个。识别多个执行机中的一个,所识别的执行机执行提供对所请求的硬件资源的访问的管理程序。客户机上的客户机代理通过多个虚拟通道连接到所识别的虚拟机。客户机代理接收来自虚拟机的数据并且显示所接收的数据。

Description

用于提供对计算环境的访问的方法和系统
技术领域
(1)本发明总体上涉及提供对计算环境的访问。更确切地说,本发明涉及用于在客户机系统和虚拟机之间建立连接的方法和系统。
背景技术
(2)当代计算机网络由通过通信链路与其它计算机系统通信的多个计算机系统组成。通常,这些计算机系统中有些是客户机,而另一些是服务器。服务器可以寄载有大量能够由客户机访问和执行的应用程序。当客户机启动一个应用程序时,根据该计算机网络所遵循的计算模式,该应用程序的执行可以发生在客户机或服务器上。在有些环境中,服务器运行一个虚拟机,该虚拟机执行应用程序并且将输出数据提供给客户机。
(3)信息技术部门在向支持不同的执行环境的目标机器部署资源并执行可用资源(每种资源都有不同的并且可能是冲突的安装要求)的不同子集时会面临很多难题。一种这样的难题涉及将资源交付给该资源最终在其中得到执行的环境的问题,其中大量机器拥有不同执行环境,且这些执行环境以不同类型的方式访问企业网络。第二个难题涉及在目标机上提供一个环境,该环境能够在不干扰其它可能有相互冲突的需求的资源的情况下执行某个资源,并且是在该资源可能没有被计划在其中执行的环境中执行。
(4)桌面布署策略,例如个人桌面布署或基于服务器的计算布署策略,受困于一些缺点。传统的桌面PC布署策略在管理、更新周期和支持需求上产生了严重的问题,这些问题直接导致了高昂的总成本。各个桌面PC被安装在用户的桌面上,并且任何硬件维护通常都要求IT人员来到用户的桌前。另外,PC老化得非常快,并且通常因为硬件变得陈旧和/或过时而被以某种重复的方式更换。远程访问和分布式、多办公室布署会放大这些问题。
(5)基于服务器的计算环境解决了桌面PC布置模式中的很多问题,但代价是环境灵活性更差。在典型的基于服务器的计算体系结构中,每个服务器寄载多个用户和应用,意味着一个用户或应用可能影响同一服务器所服务的其它用户感受到的性能。与瘦客户机相关联的性能问题会导致企业只将基于服务器的计算用于特定的适当应用,例如远程存取应用。将桌面PC和基于瘦客户机/服务器的计算模式组合在一起的布署策略受到同样的限制,因为仍需要管理每台PC,并且操作系统和软件也仍然需要打补钉和更新。
(6)当代计算机网络的另一个缺点是客户机可能不知道服务器上可用的应用程序和资源。事实上,客户机甚至可能不知道网络上每个可用的服务器。另外,在虚拟机向客户机提供对资源的访问的环境中,虚拟机可以被从一台服务器迁移到另一台服务器。在虚拟机向客户机提供对资源的访问的其它环境中,客户机可能不知道虚拟机提供对应用程序的访问。为了找到特定服务器上可用的应用程序,客户机的用户可能需要找到该服务器、访问该服务器并对该服务器上所存在的文件进行目录列表操作。即使这样,该列表也可能无法向用户表明哪些应用该用户有权使用。
(7)此外,一旦用户知道了服务器上的应用程序,通常该用户必须建立到那些应用的连接。有一些软件工具帮助用户建立这些连接。但是,这些工具通常要求用户是了解网络协议和域的细节的管理员以便建立连接。
(8)确保遵从各种各样的公司政策为通常企业环境的管理员带来了额外的顾虑。目标机可能满足特定资源的技术要求,但无法满足可应用于该目标机或该目标机的用户的规定。例如,政策要求用户使用具有特定配置的客户机或者通过特定类型的网络连接访问网络资源。因此,即使客户机提供了支持所请求的资源的执行的环境,政策也可能阻止所请求的访问。如果访问被拒绝,向用户提供对所请求的应用程序的访问的替代方法就有用了。
(9)通常,客户机上的用户已经使用了web浏览器和其它基于客户机的应用的组合来访问从远程位置获取的内容文件或应用。传统的过程要求将文件和/或相关的应用下载到客户机以查看和操作。但是,下载网络资源到客户机通常会产生管理上和与安全有关的难题。例如,客户机(或客户机的特定用户)可能有或没有权限访问所要求的文件或应用以处理所获取的文件。确保符合各种公司政策还为通常的企业环境的管理员带来额外的顾虑。在单个应用上评估并授权在目标机上特定应用程序的执行可能是不切实际的。
(10)为了解决这些顾虑,常规的访问控制方法会在同意访问之前向客户机要求特定的身份验证证书,并会拒绝来自不恰当的位置或设备的访问。但是,常规方法的限制通常要求访问控制决策产生或者同意或者拒绝对资源的访问。在拒绝时,这些方法无法提供任何替代访问方法。在同意时,这些方法只能提供资源的完全、完整的公开。
(11)在有些环境中,客户机的用户可以查看来自多个来源的应用-输出数据。这些来源可以包括在客户机上(浏览器中或在浏览器之外)执行的应用、在服务器上执行的应用或在执行在服务器上的虚拟机上执行的应用。将来自各个不同来源的输出数据组合到单个显示中带来了一些难题。早期进行的尝试是使基于服务器的应用直接写入本地视窗。尽管这个方法能够将来自各个不同服务器的应用输出显示在单个显示屏上,但它缺乏根据各个单独服务器上的视窗的z-轴排列在客户机上安排这些视窗的能力。因而,如果一个服务器在它的桌面顶部引入了一个新的视窗,没有相应的变化呈现给客户机上的用户。
(12)计算机用户行为和用户的计算机在其上通信的网络信道的稳定性通常是不可预测的。网络用户有时需要改变计算环境但同时却忘了或没有机会完全保存他们的工作产品或关掉他们的系统。在其它情况下,信道意外地出现故障或计算机崩溃会导致工作产品的丢失,如果会话没有被适度地恢复或结束的话。
(13)未能适度地结束对共享网络资源(包括远程访问的文档、应用以及由远程服务器直接提供或通过虚拟机间接提供的桌面)的使用会给网络应用的用户带来大量困难。很多软件应用在资源处于使用之中时会限制其它用户访问共享网络资源的能力。但是,如果用户失去了对资源的访问而没有适度地结束对该资源的连接,该资源会被视为对该用户和其它用户都不可访问。
(14)另外,当计算机用户从一个计算环境换到另一计算环境时,访问控制决策可能会变化。当用户返回已经被授权的环境时,在为未来的重连保持未经许可的会话的同时,现有的方法无法提供用户到访问控制没有变化的会话的平滑重连。
发明内容
(15)一方面,本发明解决了当前桌面布署策略的问题。一组廉价的物理机器可以被分成多个虚拟机,为每个用户产生一个虚拟PC。物理机器可以是像机架-安装服务器、刀片服务器、或独立的服务器这样的服务器。物理机器也可以是工作站,或者是工作站刀片,或者是个人计算机。基于策略的动态布署系统提供了虚拟机并将这些虚拟机与一个执行机(即一台物理机)和一个用户相关联。集中托管提供了对基于服务器的计算的易管理性,同时专用环境向桌面PC能够启用的应用程序提供灵活性和兼容性。但是,该系统的拥有总成本要低得多-因为该系统是用软件实现的,而不是取决于硬件,所以该系统的拥有总成本要低很多。
(16)另一方面,随着计算需求随着时间而增加,通过增加分配给虚拟机的硬件资源的数量可以延长硬件生命周期。另外,虚拟化的使用简化了处理多个OS映像的难度。
(17)在一个实施例中,机器被配置为运行一个或多个操作系统的多个拷贝(例如,来自Microsoft公司的不同版本/发行的WINDOWS)。用户将对计算资源的访问请求传送到布署系统,布署系统可以用一个配置策略决定如何(用哪些物理和/或虚拟资源)和在哪里(在机器群组(machinefarm)中的哪些物理机器上和在哪些虚拟机上)提供对所请求的计算资源的访问。虚拟机可以根据需要被创建,所请求的软件资源也可以在需要时被下载并安装到虚拟机中。或者,可以用大量软件和/或硬件资源预先配置好虚拟机以向用户提供一个特定的计算环境。用户请求被转发到选定的、配置好的虚拟机,并且在该虚拟机和用户的访问设备(它一般被称为“客户机”)上的远程显示客户端之间建立远程显示连接。连接在客户机上的设备(如CD-ROM驱动器、软驱、USB驱动器和其它类似设备)被连接到该虚拟机并且可以被该虚拟机远程访问,由此能够以类似于标准桌面计算机的方式使用这些设备。
(18)布署系统可以管理一个虚拟机池(一个机器群组),在需要时可以向该虚拟机池添加新的虚拟机。或者,多个软件模块(包括会话管理组件和虚拟机管理组件)可以提供管理功能。在布署系统的控制下,正在执行的虚拟机可以被从一台物理机迁移到另一台物理机以提供负载均衡或者方便硬件维护。不活动的虚拟机可以被暂停以释放物理计算资源。活动的虚拟机可以被从一台物理机迁移到另一台以将它们整合到更少数量的物理机器上,以允许未被使用的物理机器关闭从而在非高峰时段节省能源,或者释放物理资源以被重新分配给不同的目的(如处理web请求)。暂停的虚拟机可以在用户请求访问之前被恢复。这可以通过策略或偏好、或者监控用户在一段时间的行为的学习过程而手动或自动完成。
(19)在分配计算资源给虚拟机时可以考虑所请求的资源的性能需求。例如,一个财务分析包可以要求两倍于普通生产能力的应用程序(例如由位于Washington,Redmond的Microsoft公司生产的MICROSOFT OFFICE中所包括的那些)的CPU资源。提供财务分析包的虚拟机可以在确定有足够的空闲计算能力的物理机器上执行,或者现有的虚拟机可以被迁移到其它可用的物理机器上以确保在特定的物理机器上有足够的可用能力。
(20)为每个用户提供一个单独的虚拟机环境,这增强了灵活性,每个用户可以独立于其它用户运行任意版本或任意配置的操作系统,并且还允许用户运行可能是危险的或不稳定的应用,而影响到其它用户的风险很小。这对于频繁需要重新安装和更改操作系统并运行可能不稳定的应用程序的开发/测试/信息技术人员尤其有用。
(21)因为共享计算资源和CPU调度发生在虚拟机环境之外,用户能够运行计算密集的资源而没有影响其它用户的风险。虚拟机还提供了用户之间更高的安全性隔离。因为每个用户都在运行一个独立的OS拷贝,用户间边界上出现安全漏洞和病毒感染的机会比在共享OS的情况下要小得多。
(22)还为从以下情况中产生的问题提供了解决方案:在机器的基于硬件的系统中,无论是由于最初的采购决策还是由于随着时间而逐步获得的不同类型的物理机器导致硬件被混合在一起。即使最初所有的硬件都是统一的,采购额外的硬件以替代出现故障的模块并提高其能力通常也会导致机器群组中有不统一的硬件。即使所有的硬件都是从相同的供应商采购,后期采购的硬件也很有可能使用不同的芯片组和部件,并由此需要不同的驱动器。不统一的硬件已经传统上导致了维护多个版本的操作系统映像(这意味着更高的成本)的需求并限制了在机器之间移动用户的灵活性,因为操作系统映像可能是不兼容的,这也导致了更高的成本。虚拟机能够在包括异构机器的机器群组中有效地使用相同的操作系统映像。使用相同的操作系统映像有助于大幅降低管理成本。
(23)向虚拟化技术增加远程显示能力(例如,ICA、RDP或X11等表示层协议)使得虚拟化能够用于交互式计算。在一个执行机器上寄载多个虚拟机能够更好地利用可用的物理计算资源(如:空间、功率、处理功率、处理能力、RAM、带宽等),并由此降低成本。使用虚拟化还能够独立于OS版本和操作系统或虚拟机中所寄载的特定设备驱动器更新和维护硬件。另外,虚拟机通过将计算环境彼此隔离而增强了系统安全性。
(24)一方面,用于提供对计算环境的访问的方法包括从客户机系统接收列举可用计算环境的请求的步骤。获取收集到的与可用计算环境有关的数据。所获取的向客户机系统表示该客户机系统的用户可用的各个计算环境的数据被传输到客户机系统。从客户机系统接收到访问计算环境之一的请求。在该客户机系统和寄载所请求的计算环境的虚拟机之间建立连接。
(25)在一个实施例中,对于每个所存储的计算环境,都要判断该计算环境是否对该客户机系统的用户可用。在另一实施例中,传输给客户机系统的所获取的数据可以在该客户机系统被显示为图形用户界面视窗中的图标,表示该客户机系统的用户可用的计算环境。在又一实施例中,传输给客户机系统的所获取的数据可以在该客户机系统被显示为图形用户界面视窗中的图标,表示该客户机系统的用户不可用的计算环境。在又一实施例中,可以用表示层协议在该客户机系统和该虚拟机之间建立连接。
(26)在一个实施例中,从客户机系统接收用户证书。在另一实施例中,回应接收到用户证书,所获取的数据被传输到客户机系统。在又一实施例中,根据接收到的用户证书对客户机系统的用户进行验证,并且不需要该客户机系统的用户进一步的用户证书输入就可以提供对可用计算环境映像中选定的一个的访问。
(27)在一个实施例中,收集关于客户机系统的信息并且从所收集的信息产生一个数据集。在另一实施例中,根据所产生的数据集,所获取的数据被传输到客户机系统,表示该客户机系统可用的每个计算环境。在另一实施例中,根据一个策略对所产生的数据集的实施,所获取的数据被传输到客户机系统,表示该客户机系统可用的每个计算环境。
(28)在一个实施例中,web服务器从客户机系统接收到列举可用计算环境的请求。在另一实施例中,从持久性存储器中取出一个页面模板,web服务器创建一个页面描述对该客户机系统可用的计算环境映像的显示,所创建的页面被传输到该客户机系统。
(29)另一方面,在包括客户机系统和多个存储计算环境的服务器的网络中,一台服务器包括代理模块、发送器、接收器和收发器。代理模块获取所收集的与计算环境有关的数据,并对每个计算环境判断该计算环境映像是否对该客户机系统可用。发送器将所获取的数据发送到该客户机系统,向该客户机系统表示被判定为对该客户机系统可用的各个计算环境。接收器接收访问可用计算环境之一的请求。收发器在该客户机系统和提供所请求的计算环境的虚拟机之间提供连接。
(30)在一个实施例中,接收器从客户机系统接收用户证书。在另一实施例中,服务器还包括存储所收集到的数据的数据库。在又一实施例中,代理模块根据用户证书和收集到的数据对每个计算环境判断该计算环境映像是否对客户机系统可用。
(31)在一个实施例中,服务器还包括一个输出显示创建引擎,它创建表示对客户机系统可用的各个计算环境的输出显示。在另一实施例中,该输出显示创建引擎创建描述对客户机系统可用的计算环境的显示的web页面,该web页面是根据所收集的数据和web页面模板而创建的。在又一实施例中,收发器通过建立表示层协议连接而在客户机系统和提供所请求的计算环境的虚拟机之间提供连接。
(32)又一方面,使网络浏览器显示的超媒体页面具备交互性的方法包括选择客户机结点上显示的一个超链接或超媒体页面,该超链接标识所期望的计算资源。获取一个超链接配置文件,该超链接配置文件与该超链接相对应并且标识一个服务器。在客户机结点上启动一个客户机代理。该客户机代理创建到在该超链接配置文件所标识的服务器上执行的虚拟机的通信连接。该客户机代理从该虚拟机接收数据并将接收到的数据显示在客户机结点上而不需要由网络浏览器干涉。
(33)在一个实施例中,网络浏览器在成功匹配超链接配置文件中的一个条目与网络浏览器可访问的注册文件中与客户机代理相关的标识符时启动该客户机代理。在另一实施例中,向网络浏览器注册客户机代理。在又一实施例中,为通信连接上的通信采用会话协议。在又一实施例中,在通信连接创建之后,开始执行虚拟机上所标识出的应用程序。
(34)在一个实施例中,虚拟机被启动。在另一实施例中,服务器代理在虚拟机上被启动。在又一实施例中,从虚拟机接收到的数据被显示在客户机的显示视窗中。
(35)又一方面,用于使由网络浏览器显示的超媒体页面具备交互性的系统包括客户机、网络服务器和客户机代理。客户机执行浏览器应用程序,所述浏览器应用程序显示包括标识所期望的计算资源的超链接的超媒体页面。根据对所述超链接的选择,网络服务器发送一个网络配置文件到所述客户机结点,所述网络配置文件对应于所述标识出的计算资源。客户机代理在客户机上执行,所述客户机代理根据所述配置文件中的数据与提供该计算资源的虚拟机建立通信连接。管理程序发送数据到客户机代理进行显示,不受浏览器应用程序的干涉。
(36)在一个实施例中,客户机代理将从虚拟机接收到的数据显示在位于所述客户机的显示视窗中。在另一实施例中,该显示视窗位于该超媒体页面的边界内。在又一实施例中,该显示视窗位于该超媒体页面的边界之外。
(37)在一个实施例中,超链接配置文件包括与所述超链接对应的资源标识符以及与所述超链接对应的虚拟机的标识符。
(38)一方面,用于将来自根本不同的远程桌面环境的远程视窗并入本地桌面环境的系统包括与由原生操作系统提供的第一远程桌面环境相耦合的第一虚拟信道、与该第一远程桌面环境相耦合的第二虚拟信道、与由虚拟机提供的第二远程桌面环境相耦合的第三虚拟信道、与该第二远程桌面环境相耦合的第四虚拟信道、以及通过该第一、第二、第三和第四虚拟信道与这些远程桌面环境相耦合的本地代理。该第一虚拟信道传输与由第一远程桌面环境提供的远程视窗相关联的图形数据。第二虚拟信道传输与由第一远程桌面环境提供的远程视窗相关联的视窗属性数据。第三虚拟信道传输与由第二远程桌面环境所提供的远程视窗相关联的图形数据。第四虚拟信道传输与由第二远程桌面环境提供的远程视窗相关联的视窗属性数据。本地代理指示与第一远程桌面环境提供的远程视窗对应的本地桌面环境中的第一本地视窗的形成以及与第二远程桌面环境提供的远程视窗对应的本地桌面环境中的第二本地视窗的形成,第一本地视窗根据由第二虚拟信道传输的视窗属性数据显示由第一虚拟信道传输的图形数据,第二本地视窗根据由第四虚拟信道传输的视窗属性数据显示由第三虚拟信道传输的图形数据。
(39)在一个实施例中,本地代理在本地桌面环境中形成并维护一个表示视窗的可改写z-顺序的组合视窗列表。在另一实施例中,与远程视窗相关联并由第二和第四虚拟信道传输的视窗属性数据包括远程视窗的大小和z-顺序。在又一实施例中,本地操作系统形成本地桌面环境。又一方面,本地代理在第一本地视窗和第二本地视窗之一中检测属性变化,其中本地代理向第一远程桌面环境和第二远程桌面环境之一发送一个表示该属性变化的消息。
(40)另一方面,将来自不同远程桌面环境的远程视窗并入本地桌面环境的方法包括接收与由原生操作系统提供的第一远程桌面环境所提供的远程视窗相关联的图形数据,该图形数据是通过与第一远程桌面环境相耦合的第一虚拟信道接收到的。通过与第一远程桌面环境相耦合的第二虚拟信道接收到与由第一远程桌面环境提供的远程视窗相关联的视窗属性数据。通过与第二远程桌面环境相耦合的第三虚拟信道接收到与由虚拟机提供的第二远程桌面环境所提供的远程视窗相关联的图形数据。通过与第二远程桌面环境相耦合的第四虚拟信道接收与由第二远程桌面环境提供的第二远程视窗相关联的视窗属性数据。在本地桌面环境中形成根据从第二虚拟信道接收到的视窗属性数据显示从第一虚拟信道接收到的图形数据的第一视窗。在本地桌面环境中形成根据从第四虚拟信道接收到的视窗属性数据显示从第三虚拟信道接收到的图形数据的第二视窗。
(41)在一个实施例中,形成存储了视窗属性数据中的至少一些的组合视窗列表。在另一实施例中,检测第一本地视窗和第二本地视窗之一中的属性变化,并且向第一远程桌面环境和第二远程桌面环境之一发送表示所检测到的属性变化的消息。在另一实施例中,本地视窗相对于本地桌面环境呈现视窗属性数据,其显示方式基本上类似于相对于远程桌面环境呈现远程视窗的属性数据。
(42)又一方面,用于将来自远程桌面环境的远程视窗并入本地桌面环境的系统包括与由虚拟机提供的远程桌面环境相耦合的第一虚拟信道、与该远程桌面环境相耦合的第二虚拟信道、通过该第一和第二虚拟信道与该远程桌面环境相耦合的本地代理。第一虚拟信道传输与该远程桌面环境提供的远程视窗相关联的图形数据。第二虚拟信道传输与该远程桌面环境提供的远程视窗相关联的视窗属性数据。本地代理指示与该远程桌面环境提供的远程视窗相对应的本地桌面环境中本地视窗的形成,该第一本地视窗根据由第二虚拟信道传输的视窗属性数据显示由第一虚拟信道传输的图形数据。
(43)在一个实施例中,本地代理形成并维护表示本地桌面环境中相应视窗的可变z-顺序的组合视窗列表。在另一实施例中,与远程视窗相关联并由第二虚拟信道传输的视窗属性数据包括远程视窗的大小和z-顺序。在又一实施例中,本地操作系统形成本地桌面环境,本地代理周期性地轮询本地操作系统以检测本地视窗中的属性变化,其中本地代理向远程桌面环境发送表示属性变化的消息。在又一实施例中,以与远程视窗相对于远程桌面环境呈现属性数据基本上类似的方式,相应的视窗相对于本地桌面环境呈现视窗属性数据。
(44)在一个实施例中,本地桌面环境通过多个通信连接与多个远程桌面环境相耦合,通信连接包括传输与来自多个远程桌面环境的远程视窗相关联的图形和视窗属性数据到本地代理的第一和第二虚拟信道,其中本地代理形成与多个远程视窗中的每一个相对应的本地桌面环境中的相应视窗。
(45)又一方面,将来自远程桌面环境的远程视窗并入本地桌面环境的方法包括接收与虚拟机提供的远程桌面环境所提供的远程视窗相关联的图形数据,该图形数据是通过与该远程桌面环境相耦合的第一虚拟信道接收的。在本地桌面环境中形成第一视窗,其根据从第二虚拟信道接收到的视窗属性数据显示从第一虚拟信道接收到的图形数据。
(46)在一个实施例中,形成存储了视窗属性数据中的至少一些的组合视窗列表。在另一实施例中,轮询与本地桌面环境相关联的本地操作系统以检测本地视窗中的属性变化并向远程桌面环境发送表示检测到的属性变化的消息。在又一实施例中,以与远程视窗相对于远程桌面环境呈现属性数据基本类似的方式,本地视窗相对于本地桌面环境呈现视窗属性数据。
(47)一方面,用于由虚拟机执行客户机所请求的应用程序的方法包括接收一个文件的步骤,该文件包括用于访问多个应用文件和执行能够接收应用程序流的第一客户端的访问信息。响应该接收到的该文件,提取出多个应用文件的标识。根据该文件,提取出该多个应用文件的执行所需要的至少一个特征。判断客户机是否包括该至少一个特征。如果判定客户机缺乏该至少一个特征,就执行第二个客户端,第二客户端请求在包括提供了具有该至少一个特征的计算环境的虚拟机的远程机器上执行该多个应用文件。
(48)在一个实施例中,评估客户机上的操作系统。在另一实施例中,识别驻留在客户机上的应用程序的版本。在又一实施例中,判断客户机是否包括执行该多个应用文件的许可。在一些实施例中,接收收集代理,该收集代理收集与客户机有关的信息并判断该客户机是否包括该至少一个特征。
(49)另一方面,用于访问包括应用程序在内的多个文件的系统包括一个文件、第一客户端和第二客户端。该文件包括用于访问多个应用文件的访问信息。第一客户端在第一客户机上执行并且能够接收应用程序流。第一客户端接收该文件、提取出多个应用文件的标识以及该多个应用文件的执行所要求的至少一个特征,并根据该文件判断该客户机是否包括该至少一个特征。第二客户端从第一客户端接收该文件,如果第一客户端判定客户机缺乏该至少一个特征,第二客户端就请求在提供具有该至少一个特征的计算环境的虚拟机上执行该多个应用文件。
(50)在一个实施例中,第一客户端提取出该多个应用文件的执行所需要的至少一个特征的标识。在另一实施例中,该第一客户端确定该客户机是否包括执行该多个应用文件的许可。在又一实施例中,第一客户端响应一个脚本的执行而判断该客户机是否包括该至少一个特征。在又一实施例中,第一客户端接收对多个可用应用程序的列举。
(51)在一个实施例中,该虚拟机在客户机上执行。在又一实施例中,该虚拟机在一个远程机器上执行。在又一实施例中,第二客户端包括用于接收该多个应用文件在该虚拟机上执行而产生的应用程序-输出数据。在有些实施例中,该接收器通过表示层协议数据连接接收应用程序-输出数据。在又一实施例中,第二客户端包括用于在客户机上显示接收到的应用程序-输出数据的装置。
(52)在又一实施例中,用于提供对虚拟机所提供的计算环境的远程访问的方法包括接收与客户机的用户相关联的验证信息的步骤。根据所接收到的验证信息,识别出由虚拟化的操作系统所提供的并且已经与该用户相关联的计算环境。在该客户机和所识别出的计算环境之间建立连接。
(53)在一个实施例中,收集代理收集与客户机有关的信息。在另一实施例中,根据接收到的验证信息和收集到的客户机信息,识别出由虚拟机提供并且已经与该用户相关联的计算环境。在又一实施例中,根据应用于接收到的验证信息和收集到的客户机信息的规则在该客户机和识别出的计算环境之间建立连接。
(54)在一个实施例中,根据接收到的验证信息,识别出由第一虚拟机提供的第一计算环境和由第二虚拟机提供的第二计算环境,该第一和第二计算环境已经与该用户相关联。在另一实施例中,根据接收到的验证信息,识别出由在第一服务器上执行的第一虚拟机提供的第一计算环境和在第二服务器上执行的第二虚拟机提供的第二计算环境,该第一和第二计算环境已经与该用户相关联。在又一实施例中,根据规则在该客户机和识别出的计算环境之间建立连接。
(55)在一个实施例中,接收与使用第二客户机的用户相关联的验证信息,根据接收到的验证信息识别出由虚拟化的操作系统所提供并且已经与该用户相关联的计算环境,并在第二客户机和识别出的计算环境之间建立连接。在另一实施例中,在第二客户机和识别出的计算环境之间的连接建立之后,终止第一客户机和该识别出的计算环境之间的连接。在又一实施例中,在客户机和识别出的计算环境之间建立表示层协议连接。
(56)另一方面,用于提供对多个应用程序会话的远程访问的方法包括在客户机接收该客户机的用户对单个用户界面单元的选择。根据用户界面单元选择,发送与该用户相关联的验证信息。根据所发送的验证信息识别由虚拟化的操作系统所提供的并且已经与该用户相关联的计算环境。在该客户机和识别出的计算环境之间建立连接。
(57)在一个实施例中,根据接收到的验证信息和收集到的客户机信息识别由虚拟操作系统所提供的并且已经与该用户相关联的计算环境。在另一实施例中,根据应用于接收到的验证信息和收集到的客户机信息的规则在该客户机和识别出的计算环境之间建立连接。
(58)在一个实施例中,根据接收到的验证信息识别出由第一虚拟化操作系统提供的第一计算环境和由第二虚拟化操作系统提供的第二计算环境,该第一和第二计算环境已经与该用户相关联。在另一实施例中,根据接收到的验证信息识别出由在第一服务器上执行的第一虚拟化操作系统提供的第一计算环境和由在第二服务器上执行的第二虚拟化操作系统提供的第二计算环境,该第一和第二计算环境已经与该用户相关联。在又一实施例中,在该客户机和识别出的计算环境之间建立表示层协议连接。
(59)在一个实施例中,用于提供对计算环境的访问的服务器包括网络模块、数据存储和代理进程。该网络模块接收与在客户机上操作的用户相关联的验证信息。该数据存储包括与该用户相关联的、由虚拟机提供的计算环境的标识符。该代理进程根据接收到的信息连接客户机到在数据存储中所列举的识别出的计算环境。
(60)在一个实施例中,该数据存储包含与该用户相关联的第一计算环境的第一标识符和与该用户相关联的第二计算环境的第二标识符。在另一实施例中,第一计算环境在第一服务器上执行,第二计算环境在第二服务器上执行。在又一实施例中,代理进程根据规则连接客户端到识别出的计算进程。在又一实施例中,代理进程响应接收到的断开信号将客户计算机从识别出的计算环境断开。在另外的实施例中,代理进程更新与识别出的计算环境相关联的数据记录以表示客户机被从该识别出的计算环境断开。
(61)在一个实施例中,服务器包括收集代理和策略代理。收集代理收集关于客户机的信息。策略代理接收所收集到的信息并将相应于策略的应用的多个访问级别中的一个分配给接收到的信息,代理进程根据所分配的访问级别连接客户机到在数据存储中列举的识别出的计算环境。在另一实施例中策略引擎发送收集代理到客户机。在又一实施例中,收集代理通过在客户机上运行至少一个脚本而收集信息。在又一实施例中,代理进程在客户机和识别出的计算环境之间建立表示层协议连接。
(62)又一方面,用于批准对资源的访问的系统包括客户机、收集代理、策略引擎和代理服务器。客户机要求对资源的访问。收集代理收集与客户机有关的信息。策略引擎接收收集到的信息并根据策略的应用将多个访问级别中的一个分配给接收到的信息。代理服务器根据所分配的访问级别在客户机和提供所请求的资源的计算环境之间建立连接,该计算环境由虚拟机提供。
(63)在一个实施例中,收集代理在客户机上执行。在另一实施例中,策略引擎将收集代理发送到客户机。在又一实施例中,收集代理通过在客户机上运行至少一个脚本而收集信息。在又一实施例中,收集代理收集与客户机有关的信息,所述信息驻留在服务器上。
(64)在一个实施例中,策略引擎包括存储了可配置策略的数据库。在另一实施例中,策略引擎将判断收集代理所收集的信息的类型的指令发送到收集代理。
(65)在又一实施例中,用于批准对资源访问的方法包括由客户机请求访问资源的步骤。收集代理收集与客户机有关的信息。策略引擎接收所收集的信息。根据接收到的信息进行访问控制决策。根据访问控制决策在客户机和提供所请求的访问的计算环境之间建立连接,该计算环境由虚拟机提供。
(66)在一个实施例中,收集代理通过在客户端执行至少一个脚本而收集信息。在另一实施例中,策略引擎判断接收到的信息是否满足条件。在又一实施例中,通过向该条件应用策略而做出访问控制决策。
(67)在一个实施例中,根据访问控制决策决定是否在客户机和由虚拟机提供的计算环境之间建立连接。在另一实施例中,在客户机和根据访问控制决策所选择的虚拟机提供的计算环境之间建立连接。
(68)一方面,用于提供对计算环境的访问的方法包括由代理机器从客户机接收访问计算环境的请求,该请求包括客户机的用户的标识。识别出多个虚拟机之一,该识别出的虚拟机提供所请求的计算环境。识别出多个执行机器之一,该识别出的执行机器执行提供对识别出的虚拟机所要求的硬件资源的访问的管理程序。在该客户机和识别出的虚拟机之间建立连接。
(69)在一个实施例中,根据接收到的客户机用户的标识识别出多个虚拟机之一。在另一实施例中,根据识别出的虚拟机所需要的硬件资源的标识识别出多个执行机器之一。在又一实施例中,识别出的虚拟机在管理程序中被启动。在又一实施例中,使用表示层协议在客户机和识别出的虚拟机之间建立连接。
(70)另一方面,在由代理机器向客户机提供对计算环境的访问、执行机器执行提供对计算环境所需硬件资源的访问的管理程序的系统中,一种装置包括识别部件、执行部件和管理部件。识别部件与虚拟机管理部件通信并接收多个虚拟机之一的标识,该识别出的虚拟机提供所请求的计算环境。执行部件提供识别出的虚拟机。管理部件建立客户机与识别出的虚拟机之间的连接。
(71)在一个实施例中,在管理程序中执行的虚拟机服务组件与会话管理组件通信并且接收与客户机相关联的配置信息。在另一实施例中,虚拟机服务组件在识别出的虚拟机中执行。在又一实施例中,识别组件从代理机器接收多个执行机器之一的标识。在又一实施例中,包括一个收发器从客户机用户接收所请求的计算环境类型的标识并将所请求的计算环境类型的标识发送到虚拟机管理组件。
(72)在一个实施例中,虚拟机管理组件将识别出的虚拟机分配给用户。在另一实施例中,该管理组件还包括将与识别出的虚拟机相关联的互联网协议地址提供给客户机。在又一实施例中,管理组件还包括将与执行机器相关联的互联网协议地址提供给客户机。在又一实施例中,管理组件用表示层协议在客户机和虚拟机之间建立连接。
(73)又一方面,用于提供对由虚拟机提供的计算环境的授权远程访问的方法包括由客户机请求访问资源的步骤。收集代理收集与客户机有关的信息。策略引擎接收所收集的信息。策略引擎根据接收到的信息进行访问控制决策。根据接收到的信息识别出已经与该用户相关联的计算环境,识别出的计算环境由虚拟机提供。代理服务器根据访问控制决策在客户机和识别出的计算环境之间建立连接。
(74)在一个实施例中,根据接收到的信息识别第一计算环境和第二计算环境,该第一计算环境和第二计算环境已经与该用户相关联。在另一实施例中,根据接收到的信息识别第一计算环境和第二计算环境,该第一计算环境在第一服务器上执行,第二计算环境在第二服务器上执行,该第一计算环境和第二计算环境已经与该用户相关联。在又一实施例中,根据接收到的信息识别包括第一应用程序会话并且已经与该用户相关联的计算环境,识别包括第二应用程序会话并且已经与该用户相关联的第二计算环境。
(75)又一方面,用于提供对虚拟机提供的计算环境的授权远程访问的系统包括收集代理、策略引擎和代理服务器。收集代理收集与客户机有关的信息。策略引擎接收所收集的信息并请求列举与该客户机的用户相关联的计算环境,该请求包括访问控制决策。代理服务器根据访问控制决策列举与该客户机相关联的计算环境,所列举的计算环境由虚拟机提供。
(76)在一个实施例中,收集代理在客户机上执行。在另一实施例中,策略引擎将收集代理发送到客户机。在又一实施例中,策略引擎将判断收集代理所收集的信息的类型的指令发送到收集代理。在又一实施例中,策略引擎根据向收集到的信息应用策略而进行访问控制决策。
(77)在一个实施例中,代理服务器列举出第一计算环境和第二计算环境,该第一计算环境和第二计算环境已经与用户相关联。在另一实施例中,代理服务器列举出在第一服务器上执行的第一计算环境和在第二服务器上执行的第二计算环境,该第一计算环境和第二计算环境已经与用户相关联。在又一实施例中,代理服务器列举出已经与用户相关联并包括第一应用程序会话的识别出的计算环境,并且列举出已经与用户相关联并包括第二应用程序会话的第二计算环境。
(78)一方面,用于选择应用程序的执行方法的方法包括接收证书的步骤。根据接收到的证书列举出客户机可用的多个应用程序。接收执行一个列举出的应用程序的请求。根据策略从用于执行所请求的应用程序的预定数量的方法中选择一个,该预定数量的方法包括在虚拟机提供的计算环境中执行所请求的应用程序的方法。
(79)在一个实施例中,选择用于将所请求的应用程序流传输到虚拟机并在虚拟机中执行所列举的应用程序的方法。在另一实施例中,根据对与客户机用户相关联的证书的评估选择该方法。在又一实施例中,通过表示层协议将所列举出的应用程序的执行产生的应用程序-输出数据提供给客户机。
(80)在一个实施例中,提供了虚拟机以执行所请求的应用程序,该虚拟机是根据识别出的所请求的应用程序的版本而选择的。在另一实施例中,识别出一个模板,从该模块提供一个在其中执行所请求的应用程序的虚拟机,该模板是根据识别出的所请求的应用程序的版本而选择的。
(81)在一个实施例中,收集代理根据从客户机接收到的访问资源的请求收集与客户机的用户相关联的证书。在另一实施例中,根据接收到的证书对客户机进行评估。在又一实施例中,根据接收到的证书做出判断以将列举出的应用程序流传输到虚拟机。
(82)又一方面,在由代理机器向客户机提供对计算环境的访问、执行机器执行提供对该计算环境所需硬件资源的访问的管理程序的系统中,一种装置包括收发器、服务器代理、识别部件、执行部件和管理部件。收发器接收与客户机用户相关联的证书,根据接收到的证书列举该客户机的用户可用的多个资源,并接收执行所列举出的资源的请求。服务器代理根据策略从预定数量的用于执行所请求的资源的方法中选择一个,该预定数量的方法包括在由虚拟机提供的计算环境中提供对所请求的资源的访问的方法。识别部件与服务器代理和虚拟机管理部件通信并接收所请求的资源的标识以及多个虚拟机之一的标识,该识别出的虚拟机提供了计算环境。执行环境提供了该识别出的虚拟机。管理部件在客户机和识别出的虚拟机之间建立连接。
(83)在一个实施例中,该装置包括策略引擎。在另一实施例中,策略引擎向接收到的证书应用策略并做出访问控制决策。在又一实施例中,服务器代理根据访问控制决策从用于执行所请求的应用程序的预定数量的方法中选择一个。
(84)在一个实施例中,服务器代理将所请求的应用程序流传输给识别出的虚拟机以由其执行。在另一实施例中,服务器代理选择一个方法以将所请求的应用程序流传输给客户机。
(85)在一个实施例中,识别出的虚拟机通过表示层协议提供由资源在计算环境中的执行产生的资源-输出数据。在另一实施例中,识别部件根据对客户机的评估识别出虚拟机。在又一实施例中,识别部件根据对所请求的资源的评估识别出虚拟机。在又一实施例中,识别部件根据策略选择一个虚拟机。在有些实施例中,管理部件使用表示层协议在虚拟机和识别出的虚拟机之间建立连接。
附图说明
(86)从下面的详细说明和附图容易明了本发明的这些和其它方面,附图是为了说明而非限制本发明,在附图中:
图1是本发明的一个实施例的框图,在该实施例中客户机访问远程机器提供的计算资源;
图1A和图1B是描述在具有远程机器和客户机的实施例中有用的典型计算机的实施例的框图;
图2A是用于提供对资源的访问的系统的框图;
图2B是一种系统的一个实施例的框图,在该实施例中客户机能够启动用于判断该客户机的资源邻近性的应用程序的执行;
图2C是一个实施例的框图,在该实施例中客户机使用web浏览器应用程序判断它的资源邻近性;
图3A、3B和3C是在客户机和多个远程机器之间的通信系统的实施例的框图;
图3D是一种系统的一个实施例的框图,在该实施例中客户机能够从客户机上显示的资源邻近性web页面访问资源;
图3E是一种系统的一个实施例的框图,在该实施例中远程机器充当机器群组的媒体;
图4是资源邻近性应用程序的一个实施例的框图,在该实施例中客户机与远程机器之一通信;
图5是一个计算实施例的框图,在该实施例中客户机与安装了本发明的资源邻近性应用程序的远程机器通信;
图6A是在资源邻近性应用程序被执行之后客户机的显示屏的一个实施例的截屏图;
图6B是在资源邻近性应用程序被执行之后客户机的显示屏的另一实施例的截屏图;
图7A是为机器提供对应用程序的基于策略的访问的网络的一个实施例的框图;
图7B是描述策略引擎的一个更详细的实施例的框图;
图8是描述用于提供对资源的访问的过程的一个实施例的流程图;
图9是描述用于选择管理结点的过程的一个实施例的流程图;
图10是描述更新由管理结点所收集的信息的过程的一个实施例的流程图;
图11是描述包括第一和第二网络管理过程的机器群组的一个实施例的框图;
图12是描述虚拟机管理组件的一个实施例的框图;
图13是描述会话管理组件的一个实施例的框图;
图14是描述一种系统的一个实施例的框图,在该实施例中使得与客户机10相关联的一个驱动器可以为计算环境所用;
图15A是描述支持多个客户机显示设备的客户机的一个实施例的框图;
图15B是描述用于支持多个客户机显示设备的系统的一个实施例的框图;
图15C是描述提供了对多个客户机显示设备的支持的会话登录机制的一个实施例的框图;
图16A是描述用来向具有多个显示设备的客户机提供所请求的显示布局的步骤的一个实施例的流程图;
图16B是描述更改视窗消息的过程的一个实施例的流程图;
图16C是描述用来将显示布局与客户机相关联的步骤的一个实施例的流程图;
图16D是描述用来为客户机改变期望的显示布局的步骤的一个实施例的流程图;
图17描述一种系统的一个实施例的框图,在该实施例中远程机器验证客户机的用户;
图18是描述用来访问包括应用程序在内的多个文件的步骤的一个实施例的流程图;
图19是描述包括应用程序流客户端、流服务和隔离环境的客户机10的一个实施例的框图;
图20是描述由客户机用来执行应用程序的步骤的一个实施例的流程图;
图21是描述多个应用文件的一个实施例的流程图;
图22A是一个流程图,描述了用来通过对代表位于客户机上的数据文件的图形标记的选择使得能够在远程机器上透明的分布式程序执行的步骤的一个实施例;
图22B是一个流程图,描述了由远程机器用来通过对代表位于客户机上的数据文件的图形标记的选择使得能够在远程机器上透明的分布式程序执行的步骤的一个实施例;
图23是一个流程图,描述了用来通过对代表位于客户机上的数据文件的图形标记的选择使得能够在远程机器上透明的分布式程序执行的步骤的另一实施例;
图24一个流程图,描述了用来在客户机和远程机器之间沟通连接协议的步骤的一个实施例;
图25是一个流程图,描述了远程机器和客户机建立通信协议栈的一个实施例;
图26是描述客户机体系结构的一个实施例的框图;
图27是描述客户机和机器群组之间通信的一个实施例的框图;
图28描述客户机体系结构的一个实施例的框图;
图29是描述用来在web页面中显示应用程序输出的步骤的一个实施例的流程图;
图30是一个流程图,描述了用来链接到由超链接配置文件所标识的虚拟机的步骤的一个实施例;
图31是一个框图,描述了用多路器发送数据到不止一个客户机的系统体系结构的一个实施例;
图32是一个框图,描述了用多路器发送数据到不止一个客户机的系统体系结构的另一实施例;
图33是描述用来在web页面中显示应用程序输出的体系结构的一个实施例的框图;
图34是描述用来在web页面中显示应用程序输出的体系结构的另一个实施例的框图;
图35是描述用来在web页面中显示应用程序输出的体系结构的另一个实施例的框图;
图36是描述用来在web页面中显示应用程序输出的体系结构的另一个实施例的框图;
图37是描述通过虚拟信道接收视窗属性数据的客户机的一个实施例的框图;
图38是描述与多个远程机器相连的客户机的框图;
图39是用来检测并发送由服务器启动的显示变化的步骤的一个实施例的流程图;
图40是用来检测并发送由客户机启动的显示变化的步骤的一个实施例的流程图;
图41是一个流程图,描述了能够在客户机和远程机器之间进行无缝的视窗传输的一个实施例;
图42描述代理的一个实施例的框图;
图43是一个框图,描述了能够在客户机和远程计算环境之间启动无缝视窗化模式的一个实施例;
图44是一个流程图,描述了在从虚拟化操作系统和原生操作系统(native operating system)接收与远程视窗相关联的视窗属性数据和图形数据的方法中采用的步骤;
图45是根据本发明的一个实施例向客户机提供到主机服务的可靠连接的系统的框图;
图46是根据本发明的另一实施例向客户机提供到主机服务的可靠连接的系统的框图;
图47描述了根据本发明的一个实施例发生在网络上的通信;
图48描述了根据本发明的另一实施例发生在网络上的通信;
图49描述了用于根据本发明的一个实施例将多个二级协议封装在第一协议中以在通信的过程;
图50是根据本发明维护验证证书的计算机系统的一个实施例的框图;
图51是根据本发明在图5的计算机系统的一个实施例中在第一通信会话期间维护验证证书所用步骤的流程图;
图52是根据本发明在图50的计算机系统的一个实施例中在图53A的第一通信会话结束之后用来在第二通信会话期间维护验证证书所采用的步骤的流程图;
图53是根据本发明的另一实施例维护验证证书的计算机系统的一个实施例的框图;
图54是根据本发明在图53的计算机系统的一个实施例中为了在第一通信会话期间维护验证证书所采用的步骤的流程图;
图55是根据本发明在图53的第一通信会话结束之后在图53的计算机系统的一个实施例中为了在第二通信会话期间维护验证证书所采用的步骤的流程图;
图56是根据本发明在图53的第一通信会话的第二信道结束之后在图53的计算机系统的一个实施例中为了在第二通信会话期间维护验证证书所采用的步骤的流程图;
图57根据本发明的一个实施例维护验证证书并向客户机提供到主机服务的可靠连接的系统的框图;
图58是根据本发明的另一实施例维护验证证书并向客户机提供到主机服务的可靠连接的系统的框图;
图59是根据本发明的另一实施例维护验证证书并向客户机提供到主机服务的可靠连接的系统的框图;
图60是根据本发明的另一实施例维护验证证书并向客户机提供到主机服务的可靠连接的系统的框图;
图61是根据本发明的一个实施例用于向客户机提供到主机服务的可靠连接并进一步包括用于重新连接客户机到主机服务的组件的系统的框图;
图62是用于向客户机提供到主机服务的可靠连接并进一步包括用于重新连接客户机到主机服务的组件的系统的框图;
图63是还包括用于初始连接客户机到主机服务的图61的一个实施例的框图;
图64是根据本发明的一个实施例,还包括用于初始连接客户机到主机服务的组件并维护验证证书的图62的系统的框图;
图65是根据本发明的一个实施例的网络通信方法的流程图;
图66是重新连接客户机到主机服务的方法的流程图;
图67-69是根据本发明的一个实施例连接客户机到多个主机服务的方法的流程图;
图70是根据本发明的一个实施例向客户机提供到主机服务的可靠连接并重新连接客户机到主机服务的方法的流程图;
图71-72是根据本发明的一个实施例重新连接客户机到主机服务的方法的流程图;
图73是客户机软件和服务器软件的一个实施例的概念性框图;
图74是用于监控网络性能的方法的一个实施例的流程图;
图75是服务器软件的操作方法的一个实施例的流程图;
图76是由客户机产生子-度量的方法的实施例的流程图;
图77是由客户机产生子-度量的方法的一个实施例的流程图;
图78是由服务器产生子-度量的方法的一个实施例的流程图;
图79是描述联网的客户机-服务器计算系统的示意图;
图80是描述用于连接客户机到断开的应用程序会话的方法的流程图;
图81是用于连接客户机到活动的应用程序会话的方法的一个实施例的流程图;
图82是描述与多个服务器通信的客户机的一个实施例的示意图;
图83是描述在连接客户机的用户到计算环境的方法中采用的步骤的一个实施例的流程图;
图84是一个流程图,描述了在根据对图形用户界面元素的选择连接客户机的用户到计算环境的方法中所采用的步骤的一个实施例;
图85是描述能够连接客户机到应用程序会话的远程机器的一个实施例的框图;
图86是用于根据策略的实施连接客户机到应用程序会话的一个实施例的框图;
图87是描述在根据策略的实施连接客户机到应用程序会话的方法中所采用的步骤的流程图;
图88是描述用于由虚拟机提供对计算环境的访问的系统的一个实施例的框图;
图89A是描述存储设备和计算设备的一个实施例的框图;
图89B是一个流程图,描述了在通过存储设备提供对计算设备上的计算环境的访问的方法中采用的步骤的一个实施例;
图90A是描述移动计算设备的一个实施例的框图;
图90B是一个流程图,描述了在提供由移动计算设备所提供的便携计算环境的方法中所采用的步骤的一个实施例;
图91A是移动计算设备和计算设备的一个实施例的框图;
图91B是一个流程图,描述了在通过移动计算设备提供对计算设备上的计算环境的访问的方法中所采用的步骤的一个实施例;
图92A是描述移动计算设备和包括计算环境选择器的计算设备的一个实施例的框图;
图92B是一个流程图,描述了在通过移动计算设备在计算设备上建立计算环境的方法中所采用的步骤的一个实施例;
图93A是描述连接到插连站的移动计算设备的一个实施例的框图;
图93B是描述连接移动计算设备和计算设备的连接站的一个实施例的框图;
图93C是描述移动计算设备和具有接驳机制的计算设备的一个实施例的框图;
图94A是描述具有多个处理器的移动计算设备的一个实施例的框图;
图94B是一个流程图,描述了在由移动计算设备用来在多个处理器的使用之间进行切换的方法中采用的步骤的一个实施例;
图95是描述了一种系统的一个实施例的框图,该系统用于通过第一远程机器上的第二客户代理向第一客户代理提供由在第二远程机器所提供的虚拟机中执行的资源产生的输出数据的系统;
图96是描述了一种系统的一个实施例的框图,该系统用于通过第一远程机器上的第二客户代理向第一客户代理提供由在第二远程机器所提供的虚拟机中执行的资源产生的输出数据的系统;
图97是描述了一种一个实施例的框图,该系统用于由协调者机器识别、由工作者机器通过虚拟机提供对计算环境的访问。
具体实施方式
(87)现在参看图1,所示为一种环境的一个实施例的框图,在该实施例中客户机10、10′访问由远程机器30、30′、30″、30″′提供的计算资源。
(88)像30、30′、30″、30″′这样的远程机器30(以下通称为远程机器30)接受来自客户机10的用户的连接。尽管在图1所示实施例中只绘出了2台客户机10和4台远程机器30,但应该理解该系统可以为提供这些部件中的任意一个或多个。例如,在一个实施例中,该系统可以包括多个逻辑上分组的远程机器30,其中的一个或多个可用于向客户机10、10′提供对计算资源的访问。在这些实施例中,远程机器的逻辑分组可以被称为“服务器群”(server farm)或“机器群组”(machine farm),在图1A中被标示为机器群组38。在一些这样的实施例中,远程机器30在地理上可以是分散的。因而,可以用广域网(WAN)、城域网(MAN)、局域网(LAN)、存储域网络(SAN)或公共网络(如Internet)连接将逻辑上分组为机器群组38的远程机器30组互连在一起。例如,机器群组38可以包括物理上位于分散在世界上的不同地理位置的远程机器30,包括不同的大洲、大洲内不同的区域、国家、国家的不同区域、州、州内的不同区域、城市、城市的不同区域、校园、校园的不同区域、或房间。如果用局域网(LAN)连接或某种形式的直接连接来连接远程机器30,可以提高机器群组38中远程机器30之间的数据传输速度。
(89)集中服务可以提供对机器群组38的管理。在有些实施例中,一个或多个远程机器30选择一个特定的远程机器30为整个群提供管理功能。被选中的远程机器30可以被称为管理服务器、管理结点或管理进程。管理结点30可以收集并存储与多个远程机器30有关的信息,响应那些访问由远程机器30所寄载的资源的请求,并启动在客户机10和远程机器30之间的连接的建立。在其它实施例中,管理员指定一个或多个远程机器30为机器群组38提供管理功能。
(90)或者,对机器群组38的管理可以是分散的。在有些实施例中,一个或多个远程机器30包括组件、子系统和模块以支持对机器群组30的一个或多个管理服务。在其中一个这样的实施例中,一个或多个远程机器30提供对动态数据的管理功能,包括用于处理故障转移、数据复制并提高机器群组38的健壮性的技术。在另一个这样的实施例中,一个或多个远程机器30包括通信功能以使一个或多个远程机器30能够相互交互从而共享对管理任务的责任。每个远程机器30可以与持久存储器通信,在有些实施例中可以与动态存储器通信。
(91)可以在磁盘、磁盘组、独立磁盘冗余阵列(RAID)、可写光盘或能够读写数据并在存储设备断电后能够维持写入的数据的任意其它设备上物理地实现持久存储器。单个物理设备可以为多个持久存储器提供存储体,即单个物理设备可以用来为不止一个机器群组38提供持久存储器。持久存储器维护与机器群组38中各个远程机器30相关联的静态数据以及由机器群组38中所有远程机器30使用的全局数据。在一个实施例中,持久存储器可以用LDAP(轻量级目录访问协议,Lightweight Directory AccessProtocol)数据模型维护服务器数据。在其它实施例中,持久存储器将服务器数据存储在ODBC兼容的数据库中。为了本说明书起见,术语“静态数据”指不会频繁变化的数据,即只会每小时、每天、或每周变化一次的数据或者从不变化的数据。
(92)由持久存储器存储的数据可以为了可靠性目的而被物理或逻辑地复制。例如,可以用一组冗余的镜像磁盘提供物理冗余,每个磁盘提供数据的一个拷贝。在其它实施例中,可以用标准数据库技术复制数据库自身以提供数据库的多个拷贝。在另外的实施例中,可以同时使用物理和逻辑复制。
(93)如上所述,远程机器30在持久存储器中存储“静态”数据,即跨越客户机会话保持不变的数据。写入持久存储可以会占用相对较长的时间。为了将对持久存储器的访问降至最少,远程机器30可以开发由机器群组38中的所有远程机器30可访问的逻辑公共数据库(即动态存储)以访问和存储某些类型的数据。动态存储在物理上可以实现在机器群组38中的一个或多个远程机器30的本地存储器中。该本地存储器可以是随机访问存储器、磁盘、磁盘组、RAID或允许读写数据的任意其它存储器设备。
(94)通常,存储在动态存储器中的数据是在运行时通常被频繁查询或改变的数据。这种数据(以下称为运行时数据)的例子是机器群组38中各个远程机器30的当前负载级别、机器群组38中远程机器30的状态、客户机会话数据、一个远程机器30支持的虚拟机的数量、远程机器30支持的操作系统的标识以及许可信息。
(95)在一个实施例中,动态存储器包括一个或多个表,每个表存储属性-值对的记录。可以有任意数量的表,但每个表只能存储一种类型的记录。在有些实施例中这些表是由名字标识的。因而,在这个实施例中,使用相同名字打开一个表的两台远程机器30指的是相同的逻辑表。
(96)动态存储器(即所有记录表的集合)可以用多种不同的方式实现。在一个实施例中,动态存储器是集中式的;也就是说,运行时数据被存储在机器群组38中的一台远程机器30的存储器中。该服务器以类似于上述管理结点的方式运行,也就是说,当寻求对运行时数据的访问时机器群组38中的所有其它远程机器30都与充当集中式数据存储器的该服务器通信。在另一实施例中,机器群组38中的各个远程机器都保持动态数据的一个完整拷贝。这里,每个远程机器30与所有其它远程机器30通信以保持它自己的动态存储器的拷贝最新。
(97)在另一实施例中,每个远程机器30维护它自己的运行时数据并在寻求获得来自其它的远程机器的运行时数据时与所有其它远程机器30通信。因而,例如一台试图找到客户机10所请求的应用程序的远程机器30可以直接与机器群组38中的所有其它远程机器30通信以找到寄载所请求的应用程序的一个或多个服务器。
(98)对于拥有大量远程机器30的远程机器群组38,由这些实施例产生的网络流量会变得非常重。一个实施例通过将机器群组38中的一个远程机器30子集(通常为两个或三个)指定为“收集点”而减轻了繁重的网络流量。通常,收集点是收集运行时数据的服务器。每个收集点存储从机器群组38中某些其它远程机器收集到的运行时数据。机器群组38中的每个远程机器30都能够充当并因此能够被指定为收集点。在一个实施例中,每个收集点存储整个动态存储器的一个拷贝。在另一实施例中,每个收集点存储动态存储器的一部分,即它维护特定数据类型的运行时数据。可以根据一个或多个标准预先确定由一台远程机器30所存储的数据的类型。例如,远程机器30可以根据它们的启动顺序存储不同类型的数据。或者,可以由管理员用管理工具40配置远程机器30所存储的数据的类型。在这些实施例中,动态数据被分布在机器群组38中的两个或更多远程机器30上。
(99)没有被指定为收集点的远程机器知道远程机器群组38中被指定为收集点的远程机器30。没有被指定为收集点的远程机器30在发送和请求运行时数据时与一个特定的收集点通信。因此,收集点减轻了网络流量,因为机器群组38中的每个远程机器30在寻求对运行时数据的访问时只与一个收集点远程机器30通信,而不是与所有其它远程机器30通信。
(100)机器群组38可以是异构的,即远程机器30中的一个或多个可以根据一种类型的操作系统平台(如由位于Washington,Redmond的Microsoft公司生产的WINDOWS NT)运行,而其它远程机器30中的一个或多个可以根据另一类型的操作系统平台(Unix或Linux)运行。另外,异构机器群38组可以包括一个或多个根据一种类型的操作系统运行的远程机器30,而一个或多个其它远程机器30执行一种或多种类型的管理程序而不是操作系统。在这些实施例中,管理程序可以用来模拟虚拟硬件、划分物理硬件、虚拟化物理硬件并执行提供对计算环境的访问的虚拟机。管理程序可以包括由位于California,Palo Alto的VMWare公司生产的那些管理程序;其开发由Palo Alto的XenSource公司监督的开源产品Xen管理程序;由Microsoft或其它公司提供的VirtualServer或Virtual PC管理程序。
(101)在有些实施例中,管理程序在执行操作系统的机器上执行。在其中一个这样的实施例中,执行操作系统和管理程序的机器可以被称为有一个宿主操作系统(在机器上执行的操作系统)和一个客户操作系统(在由管理程序提供的计算资源划分中执行的操作系统)。在其它实施例中,管理程序直接与机器上的硬件交互,而不是在宿主操作系统上执行。在其中一个这样的实施例中,管理程序可以被称为在“裸机”(bare metal)上执行,“裸机”指包括机器的硬件。
(102)远程机器30可以是服务器、文件服务器、应用服务器、设备、网络设备、网关、应用网关、网关服务器、虚拟化服务器、布署服务器或防火墙。远程机器30可以是SSL VPN服务器。远程机器30可以是应用加速设备。对于远程机器30是应用加速设备的实施例,远程机器30可以提供包括防火墙功能、应用防火墙功能或负载均衡功能在内的功能。在有些实施例中,远程机器30包括设备,例如由San Jose,CA的CitrixApplication Networking Group公司、Mountain View,CA的Silver PeakSystems公司、San Francisco,CA的Riverbed Technology公司、Seattle,WA的F5Networks公司或Sunnyvale,CA的Juniper Networks公司生产的设备线之一。
(103)在有些实施例中,远程机器30包括远程验证拨入用户服务,称为RADIUS服务器。在其它实施例中,远程机器30可以有能力充当监控群组38中的其它机器的资源使用情况的主网络信息结点。在其它实施例中,远程机器30可以提供活跃目录。远程机器30可以被称为执行机器、中间机器、代理机器、中间代理机器、或工作者机器。
(104)在一个实施例中,机器群组38中的远程机器30可以和相关的存储系统一起被存放在高密度机架系统中,并且位于企业数据中心中。在这个实施例中,通过将机器和高性能存储系统放置在局部高性能网络上,以这种方式整合机器能够提高系统可管理性、数据安全性、系统的物理安全性。将机器和存储系统集中在一起并将它们与高级系统管理工具耦合在一起能够允许更有效地利用机器资源。
(105)客户机10也可以被称为端点、客户节点、客户或本地机器。在有些实施例中,客户机10有能力既充当寻求对资源的访问的客户机、又充当为其它客户机10提供对远程寄载的资源的访问的远程机器30。在有些实施例中,远程机器30可以请求对远程寄载的资源的访问。在其中一个这样的实施例中,该远程机器30可以被称为客户机10。
(106)在一个实施例中,客户机10直接与机器群组38中的远程机器30之一通信。在另一实施例中,客户机10执行一个应用程序以与机器群组38中的远程机器30通信。在又一实施例中,客户机10通过网关(如应用网关)与远程机器30之一通信。在有些实施例中,客户机10通过通信连接150与机器群组38中的远程机器30通信。例如,在通信连接150上,客户机10可以请求对远程机器30提供的多个不同资源(如应用程序、计算环境、虚拟机或由机器群组38中的远程机器30、30′、30″和30″′寄载或在其上执行的管理程序)的访问或执行。客户机10、10′接收到这些资源的执行结果的输出或者客户机10与远程机器30提供的应用程序或计算环境之间的交互的输出以进行显示。在另一个这样的实施例中,在通信连接150上,客户机10可以接收在机器群38中的远程机器30、30′、30″和30″′上的一个或多个虚拟机中执行的应用程序的输出。
(107)通信连接150可以是同步的或异步的,可以是LAN连接、MAN连接或WAN连接。另外,通信连接150可以是无线链路,例如红外信道或卫星频带。通信连接150可以使用像TCP/IP这样的传输层协议或任意应用层协议,例如超文本传输协议(HTTP)、可扩展标记语言(XML)、位于Ft.Lauderdale,Florida的Citrix系统公司生产的独立计算体系结构协议(ICA)或者位于Redmond,Washington的Microsoft公司生产的远程桌面协议。在一个实施例中,通信连接150使用Wi-Fi协议。在又一实施例中,通信连接150使用移动互联网协议。
(108)通信连接150可以通过多种连接提供通信功能,所述连接包括标准电话线、LAN或WAN链路(如T1、T3、56kb、X.25、SNA、DECNET)、宽带连接(ISDN、帧中继、ATM、Gigabit以太网、SONET上的以太网)以及无线连接或它们的任意组合。可以用多种通信协议建立连接,例如TCP/IP、IPX、SPX、NetBIOS、Ethernet、ARCNET、SONET、SDH、FDDI(光纤分布式数据接口)、RS232、IEEE802.11、IEEE802.11a、IEEE802.11b、IEEE802.11g、CDMA、GSM、WiMax和直接异步连接。在一个实施例中,远程机器30和客户机10通过任意类型和/或形式的网关或隧道协议进行通信,如安全套接字协议(SSL)或传输层安全协议(TLS)、或者由位于Ft.Lauderdale,Florida的Citrix Systems公司生产的Cirix网关协议。计算机系统100可以包括网络接口,网络接口包含内置网络适配器、网络接口卡、PCMCIA网卡、卡总线网络适配器、无线网络适配器、USB网络适配器、调制解调器或适合将计算机系统100连接到能够通信的任意类型网络和进行这里所描述的操作的任意其它设备。
(109)计算机系统100可以支持安装设备,例如用于接收3.5英寸/5.25英寸软盘或ZIP盘的软盘驱动器、CD-ROM驱动器、CD-R/RW驱动器DVD-ROM驱动器、网络接口卡、各种格式的磁带驱动器、USB设备、硬盘驱动器、或者适用于安装软件、程序、数据或文件(例如任意软件或其中的部分)的任意其它设备。
(110)计算机系统100还可以包括任意类型和形式的存储设备用于存储操作系统和其它相关软件,以及用于存储应用软件程序。在一个实施例中,存储设备包括一个或多个硬盘驱动器或独立磁盘冗余阵列。在其它实施例中,存储设备包括任意类型和形式的便携存储介质或设备,例如紧凑型闪存卡、微型硬盘驱动器或便携驱动器、嵌入式闪存或USB存储驱动器。便携存储设备通常有多种名字来称呼,包括但不限于指上驱动器、闪存盘、闪存驱动器、U盘、U棒、钥匙链驱动器、钥匙驱动器、移动驱动器、钢笔驱动器、拇指驱动器、拇指钥匙、跳马驱动器、USB驱动器或USB棒。或者,任意安装设备或介质也可以提供存储介质或设备。
(111)在有些实施例中,客户机10包括客户代理,它可以被实现为(例如)软件程序和/或硬件设备(如ASIC或FPGA)。带用户界面的客户代理的一个例子是web浏览器(例如由位于Redmond,Washington的Microsoft公司提供的INTERNET EXPLORER或由位于Cupertino,California的Apple Computer公司提供的SAFARI)。客户代理能够使用任意类型的协议,例如远程显示协议,并且它可以是例如HTTP客户代理、FTP客户代理、Oscar客户代理、Telnet客户代理、独立计算体系结构(ICA)客户代理(由位于FortLauderdale,Florida的Citrix Systems公司提供)或远程桌面协议(RDP)客户代理(由位于Redmond,Washington的Microsoft公司提供)。在有些实施例中,客户代理被配置用来连接到远程机器30。在有些实施例(未示出)中,客户机10包括多个客户代理,每个客户代理可以分别与一个远程机器30通信。
(112)在很多实施例中,远程机器30和客户机10可以为由位于Cupertino,California的Apple Computer公司、位于White Plains,NewYork的International Business Machines公司、位于PaloAlto,California的Hewlett-Packard公司或者位于Round Rock,TX的Dell公司生产的计算机或计算机服务器。在有些实施例中,远程机器30可以是执行管理程序(它仿真提供对计算环境的访问的虚拟机所需的硬件)的刀片服务器、服务器、工作站刀片或个人计算机。在这些实施例中,单个物理机器可以提供多个计算环境。
(113)图1A和1B示出了在那些实施例中可以用作远程机器30或客户机10的典型计算机体系结构的框图。如图1A和图1B中所示,每个计算机100包括中央处理器单元102和主存储器单元104。每个计算机100还可以包括其它可选元件,例如一个或多个输入/输出设备130a-130n(通常用附图标记130引用)和与中央处理单元102通信的高速缓冲存储器140。
(114)中央处理单元102是响应并处理从主存储器单元104取出的指令的任意逻辑电路。在很多实施例中,中央处理单元是由微处理器单元提供的,例如位于Mountain View,California的Intel公司提供的微处理器;由位于Schaumburg,Illinois的Motorola公司提供的微处理器;由位于White Plains,New York的IBM公司提供的微处理器;或者由位于Sunnyvale,California的AMD公司提供的微处理器。
(115)主存储器单元104可以是能够存储数据并允许微处理器102直接访问任意存储位置的一个或多个存储器芯片,例如静态随机访问存储器(SRAM)、Burst(脉冲串)SRAM或SynchBurst SRAM(BSRAM)、动态随机访问存储器DRAM、快速页模式DRAM(FPM DRAM)、增强DRAM(EDRAM)、扩展数据输出RAM(EDO RAM)、扩展数据输出DRAM(EDO DRAM)、脉冲串扩展数据输出DRAM(BEDO DRAM)、增强型DRAM(EDRAM)、同步DRAM(SDRAM)、JEDEC SRAM、PC100SDRAM、双数据传输率SDRAM(DDR SDRAM)、增强SRAM(ESDRAM)、同步链路DRAM(SLDRAM)、直接Rambus DRAM(DRDRAM)或铁电RAM(FRAM)。
(116)在图1A所示的实施例中,处理器102通过系统总线120(下面会更详细地说明)与主存储器104通信。图1B示出了处理器通过存储器端口直接与主存储器104通信的计算机系统的一个实施例。例如,在图1B中,主存储器104可以是DRDRAM。
(117)图1A和图1B示出了主存储器102通过次级总线直接与高速缓冲存储器140通信的实施例,次级总线有时被称为“后端”总线。在其它实施例中,主处理器102用系统总线120与高速缓冲存储器140通信。高速缓冲存储器140通常有比主存储器104更快的响应时间,并且通常由SRAM、BSRAM或EDRAM提供。
(118)在图1A所示的实施例中,处理器102通过局部系统总线120与多个不同的I/O设备130通信。多个不同的总线可以用来连接中央处理单元102到I/O设备130,包括VESA VL总线、ISA总线、EISA总线、微通道体系结构(MCA)总线、PCI总线、PCI-X总线、PCI-Express总线或NuBus。对于I/O设备是视频显示器的实施例,处理器102可以使用加速图形接口(AGP)与显示器通信。图1B描述了其中主处理器102通过HyperTransport(超传输)、快速I/O或InfiniBand直接与I/O设备130b通信的计算机系统100的一个实施例。图1B还描述了混合了局部总线和直接通信的一个实施例:处理器102用局部互连总线与I/O设备130a通信,而与I/O设备130b直接通信。
(119)在计算机系统100中可以存在大量的各种I/O设备130。输入设备包括键盘、鼠标、触控板、轨迹球、话筒和绘图板。输出设备包括视频显示器、扬声器、喷墨打印机、激光打印机和热升华打印机。I/O设备还可以为计算机系统100提供大容量存储,例如硬盘驱动器、用于接收3.5英寸、5.25英寸或ZIP盘(压缩盘)的软驱、CD-ROM驱动器、CD-R/RW驱动器、DVD-ROM驱动器、DVD-RW驱动器、DVD+RW驱动器、各种格式的磁带驱动器、USB设备(例如由位于Los Alamitos,California的TwintechIndustry公司生产的USB闪存驱动器产品线)、以及由位于Cupertino,California的Apple Computer公司生产的iPod Shuffle产品线。
(120)在有些实施例中,客户机10可以包括多个显示设备或与多个显示设备相连,这些显示设备可以是相同或不同类型和/或形式。比如,I/O设备130a-130n中的任意一个可以包括一个显示设备或任意类型和/或形式的适当硬件、软件或软硬件组合以支持、使能或提供客户机10对多个显示设备的连接和使用。例如,客户机10可以包括任意类型和/或形式的视频适配器、视频卡、驱动程序和/或与显示设备对接、通信或使用显示设备的库。在一个实施例中,视频适配器可以包括多个连接器以与多个显示设备对接。在其它实施例中,客户机10可以包括多个视频适配器,每个视频适配器与显示设备中的一个或多个相连。在有些实施例中,客户机10的操作系统的任意部分都可以被配置用于使用多个显示器。在其它实施例中,显示设备中的一个或多个可以由一个或多个其它计算设备提供,例如通过网络与客户机10相连的远程机器30。这些实施例可以包括被设计和构造用来使用其它计算机的显示设备作为客户机10的第二显示设备的任意类型的软件。本领域的技术人员将认识并领会到配置客户机10以使其拥有多个显示设备的各种不同的方式和实施例。
(121)在另外的实施例中,I/O设备130可以是系统总线120和外部通信总线(如USB总线、Apple桌面总线、RS-232串行连接、SCSI总线、FireWire总线、FireWire800总线、以太网总线、AppleTalk总线、Gigabit(千兆)以太网总线、异步传输模式总线、HIPPI总线、超级HIPPI总线、SerialPlus总线、SCI/LAMP总线、FibreChannel(光纤信道)总线、串行SCSI总线。
(122)图1A和图1B中所示类型的通用计算机通常在操作系统的控制下运行,操作系统控制对任务的调度以及对系统资源的访问。在有些实施例中,计算机在管理程序的控制下运行,管理程序将物理硬件的虚拟化视图表示为一个或多个虚拟机。操作系统可以在这些虚拟机中执行以和原生操作系统控制物理硬件类似的方式控制虚拟机。有代表性的操作系统包括:由位于Redmond,Washington的Microsoft公司生产的MICROSOFT WINDOWS操作系统系列、由位于Cupertino,California的Apple计算机公司生产的MacOS操作系统系列;由位于Armonk,New York的IBM公司生产的OS/2;以及免费的操作系统Linux,尤其是由位于SaltLake City,Utah的Caldera公司所发布的Linux。
(123)客户机10和20可以是任意个人计算机(例如,Macintosh计算机或基于由位于Mountain View,California的Intel公司生产的处理器的计算机)、基于视窗的终端、网络计算机、无线设备、信息设备、RISCPower PC、X-设备、工作站、小型机、大型机、个人数字助理、电视机顶盒、起居室媒体中心、游戏机、移动游戏设备、NetPC、瘦客户机或拥有基于视窗的桌面和用于执行小型显示图像程序的足够的持久存储器的其它计算设备。显示图像程序使用跨越通信信道发送给它的命令和数据渲染图形显示。客户机10和20所支持的面向视窗的平台可以包括但不限于WINDOWS3.x、WINDOWS95、WINDOWS98、WINDOWS NT3.51、WINDOWS NT4.0、WINDOWS2000、WINDOWS2003、WINDOWS CE、WINDOWS XP、WINDOWS Vista、MAC/OS、Java、Linux和UNIX。客户机10可以包括可视显示设备(如计算机监视器)、数据输入装置(如键盘)、用于存储下载的应用程序的持久或易失性存储器(如计算机存储器)、处理器和鼠标。小的显示图像程序的执行使得客户机10能够参与到分布式计算机系统模型中(即基于服务器的计算模型)。
(124)在其它实施例中,图1A和图1B中所示类型的通用计算机可以有与这里进一步描述的设备和实施例相一致的不同的处理器、操作系统和输入设备。计算机系统100可以是任意工作站、桌面计算机、膝上型或笔记本计算机、服务器、手持计算机、移动电话或其它便携电信设备、媒体播放设备、游戏系统或能够通信并有足够的处理器能力和存储空间完成这里所说明的操作的任意其它类型和/或形式的媒体设备。例如,计算机100可以包括由位于Cupertino,California的Apple Computer公司生产的IPOD设备系列、由位于Tokyo,Japan的Sony公司生产的PLAYSTATION2、PLAYSTATION3或PERSONAL PLAYSTATION PROTABLE(PSP)设备、由位于Kyoto,Japan的Nintendo公司生产的NINTENDO DS、NINTENDO GAMEBOY、NINTENDO GAMEBOY ADVANCED或NINTENDO REVOLUTION,或者由位于Redmond,Washington的Microsoft公司生产的XBOX或XBOX360TM
(125)对于客户机10是移动设备的实施例,移动设备可以是支持JAVA的蜂窝电话,例如由位于Schaumburg,Illinois的Motorola公司生产的蜂窝电话,由位于Kyoto,Japan的Kyocera生产的蜂窝电话,或者由位于Seoul,Korea的Samsung Electronics有限公司生产的蜂窝电话。在客户机10是移动设备的其它实施例中,它可以是在PalmOS操作系统控制下运行的个人数字助理,例如由位于Milpitas,California的palmOne公司生产的设备。在另外的实施例方案中,客户机10可以是在PocketPC操作系统控制下运行的个人数字助理,例如由位于Palo Alto,California的Hewlett-Packard公司生产的iPAQ设备,由位于Walnut,California的ViewSonic生产的设备,或者由位于New York,New York的Toshiba America公司生产的设备。在另外的实施例中,客户机10是组合的PDA/电话设备,诸如由Milpitas,California的palmOne公司生产的Treo设备。在另外的实施例中,客户机10是在PocketPC操作系统控制下运行的蜂窝电话,例如由Motorola公司生产的蜂窝电话。
(126)在有些实施例中,客户机10与远程机器30通信以确定对客户机10或客户机10的用户可用的资源列表。资源可以包括但不限于计算环境、应用程序、文档和硬件资源。在另一个这样的实施例中,远程机器30向客户机10提供与远程机器30′有关的地址信息,所述远程机器30′寄载有由资源列表所标识的资源。在又一个这样的实施例中,客户机10与远程机器30′通信以访问所标识的资源。在一个实施例中,客户机10执行资源邻近性应用程序以和远程机器30和30′通信。在有些实施例中,远程机器30中的每一个都提供标识并提供与寄载所请求的资源的远程机器30′相关联的地址信息所需的功能。
(127)现在参看图2A,其中的框图描述了用于提供对资源的访问的系统的一个实施例。简要地说,从客户机10发出列举计算资源的请求(步骤202)。在有些实施例中,该请求包括客户机10的用户的标识。对提出请求的机器的用户可用的多个资源的列表由远程机器提供(204)。客户机10发出对该列表中包括的某个特定资源的访问请求(步骤206)。
(128)仍然参看图2A,并且更详细地,所发送的请求是对客户机10可用的计算环境列表的请求。在另一实施例中,该请求是对支持客户机10请求执行的特定应用程序的计算环境列表的请求。在又一实施例中,该请求是对特定的多个硬件资源所支持的计算环境的访问请求。
(129)在有些实施例中,和该请求一起接收的还有与客户机10相关联的信息或与客户机10的用户相关联的信息。在其中一个这样的实施例中,接收与用户或客户机10的用户相关联的证书。在一个实施例中,远程机器30从客户机10接收到对可用计算资源列表的请求以及与客户机10、10′或客户机10的用户相关联的信息。在另一实施例中,远程机器30从策略引擎接收包括该信息在内的传输。在又一实施例中,远程机器30从收集代理接收包括该信息的传输。在又一实施例中,远程机器30包括接收请求和相关信息的组件。
(130)在有些实施例中,充当web服务器的远程机器30从客户机10、10′接收通信。在其中一个这样的实施例中,web服务器将该通信转发到远程机器30′。在其中一个这样的实施例中,Web服务器将该通信转发到远程机器30′上的服务。在另一个这样的实施例中,来自客户机10、10′的通信被web服务器发送到远程机器30′,可以根据客户机10的IP地址选择远程机器30。
(131)在有些实施例中,用户通过由远程机器30呈现给客户机10、10′的图形用户界面提供证书给远程机器30。在其它实施例中,具有web服务器功能的远程机器30″′提供图形用户界面给客户机10。在另外的实施例中,由远程机器30发送到客户机10、10′的收集代理从客户机10收集证书。
(132)在有些实施例中,获取收集到的与可用资源有关的数据。在一些这样的实施例中,获取收集到的与计算环境有关的数据。在有些这样的实施例,所获取的数据包括提供对计算环境之一的访问的虚拟机的指示。在其中一个这样的实施例中,所获取的数据包括该虚拟机位置的指示。在其它实施例中,所获取的与计算环境有关的数据包括支持计算环境所需的多个硬件资源的指示。在另外的实施例中,所获取的与计算环境有关的数据包括被授权访问该计算环境的用户或用户类型的指示。在另外的实施例中,根据计算环境(所述计算环境提供对应用程序的访问)的标识的请求提供所获取的数据。
(133)在有些实施例中,收集到的数据被存储在服务器上,例如远程机器30。在其它实施例中,服务器与存储所收集的数据的数据库通信。在另外的实施例中,服务器从机器群组38中的多个机器30收集数据。在其中一个这样的实施例中,数据是根据对涉及计算环境的信息的请求从至少一个服务器接收的。在另一个这样的实施例中,服务器从在机器群组38中的机器30′上执行的管理程序收集数据。在又一个这样的实施例中,服务器从驻留在虚拟机提供的客户操作系统中的管理组件收集数据,该虚拟机被启动到在机器群组38中的机器30′上执行的管理程序中。
(134)在有些实施例中,数据是由中间代理机器收集的。在其中一个这样的实施例中,代理机器维护至少一个计算环境的状态数据库并从提供对至少一个计算环境的访问的至少一个机器收集信息。在另一个这样的实施例中,代理机器从驻留在提供计算环境的虚拟机中的虚拟机器服务组件收集信息。在又一这样的实施例中,代理机器从虚拟机收集信息,所述虚拟机为提供计算环境的虚拟机提供管理功能。在又一这样的实施例中,代理机器从管理程序收集信息,在所述管理程序上执行的虚拟机器提供计算环境。在其它实施例中,代理机器包括包含代理模块的机器30。
(135)在有些实施例中,对每个可用计算环境判断该计算环境是否对客户机的用户可用。在其它实施例中,收集与客户机系统有关的数据并从收集到的信息生成数据集。在其中一个这样的实施例中,所获取的数据和根据所生成的数据集产生的向客户机系统指出其可用的各个计算环境的指示一起被传输到客户机系统。在另一这样的实施例中,根据对所生成的数据集的策略实施,所获取的数据被传输到客户机系统以向其指示其可用的各个计算环境。在又一这样的实施例中,该指示包括寻求访问计算环境的用户可用的至少一个访问方法。在又一这样的实施例中,该指示包括与计算环境相关的、可以由客户机系统的用户或以客户机系统的用户名义采取的至少一种类型的动作。
(136)提供了客户机可用的多个资源的列表(步骤204)。在一个实施例中,该列表是根据对接收到的与客户机10的用户或远程机器30相关联的信息的策略实施而提供的。在另一实施例中,该列表是根据来自用户对特定类型的计算环境的请求而提供的。在又一实施例中,该列表是根据来自用户的对提供对某种类型的应用程序的访问的计算环境的请求而提供的。在又一实施例中,该列表是根据来自用户的对由指定的多个硬件资源所支持的计算环境的请求而提供的。
(137)在有些实施例中,对客户机10的用户可用的多个计算环境的指示被传输到客户机10。在其中一个这样的实施例中,该指示是根据访问与该多个计算环境相关联的收集到的数据而生成的。在另一个这样的实施例中,所获取的数据和客户机10可用的计算环境列表一起被传输到客户机10。在有些实施例中,对每个所存储的计算环境判断该计算环境是否对客户机10可用。在一个实施例中,收集到的信息被发送给客户机10,所发送的信息在客户机10上可以显示为图形用户界面中的图标,表示该客户机系统可用的计算环境。在另一实施例中,收集到的信息被发送到客户机10,所发送的信息在客户机10上可以显示为图形用户界面中的图标,表示客户机10不可用的计算环境。
(138)在有些实施例中,可用计算环境的列表被呈现给客户机10的用户。在其它实施例中,应用程序的列表被呈现给客户机10的用户。在其中一个这样的实施例中,物理机器提供对所列举的应用程序的访问。在另一个这样的实施例中,虚拟机提供对所列举的应用程序的访问。在又一这样的实施例中,虚拟机提供对客户机10的用户可以从其访问应用程序的计算环境的访问。在另外的实施例中,标准操作系统(例如预先配置有多个应用程序的客户操作系统)的列表被提供给客户机10的用户。
(139)在有些实施例中,可用资源的列表包括与所请求的资源相关联的多个动作的列表。在其中一个这样的实施例中,该多个动作的列表使得用户能够请求执行计算环境。在另一这样的实施例中,该多个动作的列表使得用户能够请求克隆计算环境。在又一这样的实施例中,该多个动作的列表使得用户能够请求关闭计算环境。在又一这样的实施例中,该多个动作的列表使得用户能够请求重启计算环境。在一些实施例中,该多个动作的列表使得用户能够请求对计算环境的现有状态拍快照。在其它实施例中,该多个动作的列表使得用户能够请求提供计算环境的前一快照。
(140)发送对特定资源的访问的请求(步骤206)。在一个实施例中,客户机10的用户根据接收到的可用资源列表请求资源。在另一实施例中,用户独立于接收到的列表而请求资源。在有些实施例中,用户通过选择客户机代理显示在客户机10上的资源的图形化表示而请求资源。在其它实施例中,用户通过选择在web服务器或在其他远程机器30′′′上呈现给用户的资源的图形或文本表示而请求资源。
(141)在有些实施例中,用户请求与资源相关联的动作。在其中一个这样的实施例中,用户请求资源的执行。在另一个这样的实施例中,用户请求资源的终止。在另一个这样的实施例中,用户请求资源的传输,包括跨越应用流会话的传输。在又一个这样的实施例中,用户请求关闭资源。在其它实施例中,从客户机10接收执行应用程序的请求,所请求的应用程序需要其中的一个计算环境。在另外的实施例中,从客户机10接收访问文件的请求,所请求的文件需要在其中的一个计算环境中执行。
(142)仍然参看图2A,远程机器30启动资源邻居(ResourceNeighborhood-RN)应用程序并将RN应用程序的结果呈现给客户机10。远程机器30能够响应客户机10对可用资源列表的请求202而启动RN应用程序241。远程机器30将可用资源的列表提供给客户机(204)。客户机10和远程机器30′建立连接(箭头245和246)。通过这个连接,当客户机10和远程机器30′根据基于客户机的计算模式运行时,远程机器30′能够将特定应用程序的可执行代码发送到客户机10。或者,当客户机10和远程机器30′根据基于服务器的计算模式运行时,远程机器30′能够执行该特定的应用程序并将图形用户界面发送到客户机10。在有些实施例中,远程机器30′能够执行资源邻居应用程序241并将结果推送回客户机10以便当客户机10请求资源邻居应用程序时,资源邻居结果已经在客户机10上可用了。
(143)图2B示出了系统的另一实施例,其中客户机10启动资源邻居应用程序241的执行并且远程机器30将RN应用程序241的结果呈现给客户机10。客户机10启动资源邻居应用程序(例如,通过点击表示应用程序241的资源邻居图标)。作为响应,客户机10将对资源邻居应用程序的请求202发送到远程机器30。如果该应用程序在远程机器30上,远程机器30能够执行资源邻居应用程序241并将结果返回客户机10。或者,远程机器30能够向客户机10表明(箭头204)资源邻居应用程序241在另一远程机器上,在这个例子中是远程机器30′。远程机器10和远程机器30′建立连接(箭头206和210),客户机10通过此连接请求资源邻居程序241的执行。远程机器30′能够执行应用程序241并将结果(即图形用户界面,任意音频输出,等等)发送到客户机10。
(144)图2C示出了系统的另一实施例,其中客户机10(在这个例子中)通过万维网启动资源邻居应用程序241的执行。客户机10执行web浏览器应用程序280,例如由位于Moutain View,Calif的NetscapeCommunications公司生产的NETSCAPE NAVIGATOR、由位于Redmond,WashingtonR的Microsoft公司生产的INTERNET EXPLORER、或者由位于Cupertino,California的Apple Computer公司生产的SAFARI。
(145)客户机10通过web浏览器280发送访问与驻留在远程机器10上的HTML页面对应的统一资源定位符(URL)地址的请求282。在有些实施例中,由远程机器30返回给客户机10的第一个HTML页面284是寻求识别客户机10或客户机10的用户的验证页面。
(146)验证页面允许客户机10通过web浏览器280将用户证书发送到远程机器30进行验证。所发送的用户证书由远程机器30或机器群组38中的另一远程机器30进行验证。这使得安全域能够被投射到远程机器30上。例如,如果远程机器30运行由位于Redmond,Washington的Microsoft公司生产的WINDOWS NT操作系统,而验证机器运行UNIX操作系统,可以说UNIX安全域已经被投射到远程机器30上。用户证书可以用“明文”传输,或者进行加密。例如,可以通过安全套接字层(SSL)连接传输用户证书,SSL用诸如RC4算法(由位于Bedford,Massachusetts的RSA Security公司生产)等加密算法将数据加密。
(147)在有些实施例中,访问控制决策是根据接收到的与用户有关的信息做出的,而对客户机的用户可用的资源是根据访问控制决策识别出的。在其它实施例中,对接收到的与用户有关的信息应用一个策略。远程机器30可以验证从客户机10接收到的用户证书。或者,远程机器30可以将用户证书发送到另一个远程机器进行验证。在这个实施例中,验证服务器可以位于和远程机器30不同的域中。已验证的客户机10的用户证书可以被以每-会话cookie(点心文件)、以不被web浏览器280显示的字段的方式或者以web页面维护中常见的任何其它方式存储在客户机10上。在有些实施例中,与远程机器30相关联的机器群组38可以允许访客用户(即,没有分配的用户证书的用户)访问由机器群组38所寄载的资源。在这些实施例中,验证页面可以提供用于允许客户机10识别访客用户的机制,例如按钮或菜单选择。在其它这样的实施例中,远程机器30可以完全忽略验证页面。
(148)仍然参看图2C,一旦客户机10通过了远程机器30的验证,远程机器30就准备包括资源邻居视窗258(其中的图标257/257′代表客户机10能够访问的资源)的HTML页面288并将其发送到客户机10。客户机10的用户通过点击图标257请求对图标257所代表的资源的访问。
(149)图3A示出了在客户机10和多个远程机器30、30′之间的通信过程的一个实施例。在图3A所示实施例中,客户机10有与远程机器30′的活动连接372。客户机10和远程机器30′可以使用该活动连接372交换与第一个资源的状态或执行有关的信息。用户证书可以存储在客户机10上。这样的用户证书存储器可以是高速缓冲存储器或持久存储器。
(150)在这个实施例中,资源邻居应用程序(图3A中未示出)运行在客户机10上。客户机显示屏有资源邻居视窗258,其中展示了代表第二个资源的图标。客户机10的用户能够通过用鼠标双击图标257而访问该第二个资源。该请求通过连接359传递到远程机器30。远程机器30通过连接359向客户机10表示该试图获得的资源在远程机器30′上可用。客户机10通知远程机器30′建立第二个连接370。远程机器30′向客户机10要求用户证书以验证对第二个资源的访问。在成功验证之后,客户机10和远程机器30′建立第二连接370并交换与第二个资源的状态或执行有关的信息。在有些实施例中,远程机器不要求用户证书以建立第二连接370。在这些实施例中,远程机器30′可以使用由客户机10的用户为建立连接372而提供的证书来建立第二连接370。因此,客户机10和远程机器30′可以在多个连接上相互通信。
(151)图3B示出了在客户机10、主控远程机器30和服务器32、34和36之间的通信系统的一个实施例。客户机10可以和远程机器32有活动连接373。客户机10和远程机器32可以使用活动连接373交换与第一个资源的状态或执行有关的信息。用户证书可以被存储在远程机器32的高速缓冲存储器或持久存储器中。
(152)在这个实施例中,资源邻居应用程序运行在远程机器32上。远程机器32包含提供基于服务器的客户机引擎62,使远程机器32作为客户机10运行。客户机10的显示屏上有资源邻居视窗258,其中显示了分别代表第二和第三个资源的图标357、357′。客户机10的用户能够通过双击图标357访问第二个资源。请求启动第二个资源的请求通过活动连接373传递到远程机器32,远程机器32将该请求转发到主控远程机器30(箭头365)。
(153)主控远程机器30向远程机器32表示(箭头365),该试图获得的资源在服务器34上可用。远程机器32联系服务器34以建立连接366。为了验证对该应用程序的访问,服务器34从远程机器32获取客户机10的用户证书。远程机器32和服务器34建立连接(箭头366),通过这个连接,远程机器32请求对第二个资源的访问并且服务器34将结果返回给远程机器32。远程机器32将结果转发给客户机10,在那里结果被显示。因此,在客户机10和服务器34之间交换的信息“通过”远程机器32。
(154)类似地,客户机10能够通过双击图标357′启动第三个资源。启动第三个资源的请求传递到远程机器32。远程机器32将该请求转发到主控远程机器30。在这个例子中,主控远程机器30表示服务器36可以被用来访问该第三个资源。
(155)远程机器32和服务器36建立连接(箭头374),通过这个连接,远程机器32请求对第三个资源的访问并且服务器36将结果返回给远程机器32。为了允许对第三个资源的访问,服务器36可以验证从远程机器32获得的客户机10的用户的用户证书。远程机器32将结果转发到客户机10,在那里结果被显示。因此,访问第三个资源的结果通过远程机器32在客户机10和服务器36之间传递。
(156)图3C示出了在客户机10、主控远程机器30和服务器32和34之间的通信系统的另一实施例。客户机10有与服务器32的活动连接376。客户机10和服务器32能够使用该活动连接376交换与对第一个资源的访问有关的信息。客户机10能够将用户证书存储在高速缓冲存储器或持久存储器中。
(157)在这个实施例中,资源邻居应用程序在服务器32上运行,客户机10显示屏上有资源邻居视窗258,其中显示了代表第二个资源的图标257。客户机10的用户能够通过双击图标257访问该第二个资源。访问该第二个资源的请求传递到服务器32。服务器32通过返回与资源有关的信息,例如资源的名字以及客户机10访问该第二个资源所需的能力,而响应(即“回调”)客户机10。
(158)使用由服务器32提供的信息,客户机10随后通过连接377与主控远程机器30通信以确定用于访问该第二个资源的服务器。在这个例子中,该服务器是服务器34。客户机10随后建立到服务器34的连接378。服务器34请求来自客户机10的用户证书以验证客户机10的用户。客户机10通过该建立的连接378访问服务器34上的该第二个资源,并且服务器34也通过该建立的连接378将结果返回客户机10。因此,客户机10可以与多个服务器之间有多个活动连接。
(159)图3D示出了客户机10、远程机器30(在这个例子中充当Web服务器)和第二个远程机器30′之间的通信系统的一个实施例。客户机10按照上面结合图2C所描述的那样向远程机器30验证它自己。在一个实施例中,远程机器30访问输出显示模板390(例如SGML、HTML或XML文件)以用其作为基础构造资源相邻性视窗以发送给客户机10。资源邻居视窗可以显示客户机可用的资源列表。资源列表可以包括可用的应用程序或计算环境的列表。该模板可以存储在与服务器30相关联的易失性或持久性存储器中,或者存储在大容量存储器392中,例如如图3D所示的磁盘驱动器或光学设备中。
(160)在这个实施例中,模板390是包含资源邻居特定的标记的标准的SGML、HTML或XML,这些标记被动态的信息取代。标记向服务器30指示在输出显示中的什么地方插入与可用资源相对应的信息,例如图标图像。在一个特定的实施例中,资源邻居特定的标记被嵌入文件中的注释中,使文件能够与标准解释器保持兼容。在另一实施例中,资源邻居特定的标记是用作模板基础的标记语言的扩展。
(161)表1中给出了可以用在模板中的HTML标记的一些例子:
表1
 
标记 说明
ControlField fieldvalue 这个标记用来设置数据的值,所设置的数据或者由用户设置在资源邻居Web页面之间持续存在,或者用来帮助跨页面导航,例如用户名、域、密码、模板和资源。
DrawResourceNeighborhood 这个标记用来在输出显示屏上的这个位置上画出资源邻居显示。
ResourceName 这个标记被当前上下文中所发布的资源的名字代替。
WindowType 这个标记被当前上下文中所发布的资源的窗体类型代替。
WindowHeight 这个标记被当前上下文中所发布的资源的窗体高度代替。
WindowWidth 这个标记被当前上下文中所发布的资源的窗体宽度代替。
WindowScale 这个标记被当前上下文中所发布的资源的窗体比例代替。
WindowsColors 这个标记被当前上下文中所发布的资源的窗体颜色深度代替。
SoundType 这个标记被当前上下文中所发布的资源的声音设置代替。
VideoType 这个标记被当前上下文中所发布的资源的视频设置代替。
EncryptionLeve1 这个标记被当前上下文中所发布的资源的加密级别代替。
Icon 这个标记被当前上下文中所发布的资源的图标代替。
(162)可以提供其它标记来设置控制字段并提供涉及资源邻居应用程序的有条件的处理。
(163)在一个实施例中,模板是用例如位于Cambridge,Mass的Allaire公司生产的COLD FUSION或位于Redmond,Wash的Microsoft公司生产的ACTIVE SERVER PAGES动态构造的。或者,模板可以是静态的。资源邻居应用程序解析模板,如上所述替换资源邻居特定标记。不是资源邻居特定的标记被留在文件中由在客户机10上执行的浏览器程序80解析。
(164)在一个实施例中,提供了一个模板解释器对象,它接受HTML模板作为输入,解释模板中存在的资源邻居特定标记,并输出具有用适当的文本替代的所有资源邻居标记的原始模板。可以从web服务器接口向该模板解释器对象传送cookie、URL查询字符串或控制字段,以提供应该替换资源邻居特定标记的信息。
(165)在有些实施例中,web服务器从客户机10接收列举可用计算环境的请求。在其中一个这样的实施例中,web服务器执行一个应用程序来访问与计算环境有关的数据。在另一个这样的实施例中,页模板是从数据库中取出的。在又一这样的实施例中,页面是在Web服务器上创建的,它根据收集到的信息和获取的页模板描述所存储的客户机10可用的计算环境映像的显示,产生的页面被发送到客户机10,向客户机10指示它可用的每个计算环境。在有些实施例中,计算环境映像可以包括虚拟机映像、资源映像、暂停的虚拟机的截屏以及由用户或管理员选择呈现给用户的其它映像。在又一这样的实施例中,产生输出显示,它指示客户机10可用的每个计算环境并且被发送到客户机10。
(166)在有些实施例中,所产生的输出显示包括以标记语言构造出的页面,输出显示指示客户机可用的每个计算环境并且被发送到客户机系统。
(167)在另一实施例中,资源邻居应用程序允许脚本通过应用编程接口访问信息。脚本可以用(例如)VBScript或Jscipt编写。在这个实施例中,脚本语言被用来使用由应用程序根据脚本提出的查询所返回的信息动态产生输出显示。一旦生成输出显示,它就被发送到客户机10以由浏览器程序80显示。
(168)客户机10的用户能够通过点击资源邻居Web页面中显示的图标257、257′访问资源。在有些实施例中,每个图标257、257′与一个编码的URL相关联,该URL指定:资源的位置(即由哪个远程机器寄载,或者主控远程机器、网关或其它远程机器30的地址);与该资源相关联的启动命令;以及标识访问该资源的结果应该如何被显示(即在浏览器中“内嵌”的窗体中或者在单独的窗体中)的模板。在有些实施例中,该URL包括文件、或对文件的引用,该文件包含客户机创建到寄载该资源的远程机器的连接所必需的信息。这个文件可以由资源邻居应用程序动态创建。客户机10建立与被标识为寄载所请求的资源的远程机器30′的连接(箭头394)并交换与访问所请求的资源有关的信息。在有些实施例中,连接394是用位于FortLauderdale的CitrixSystems公司生产的独立计算体系结构(ICA)协议建立起来的。在其它实施例中,该连接是用由位于Redmond,Washington的Microsoft公司生产的RDP协议;X11协议;或由AT&T贝尔实验室生产的虚拟网络计算(VNC)协议建立的。因而,客户机10可以将访问资源的结果显示在与Web浏览器280独立的窗体中,或者将应用程序输出“嵌入”在web浏览器中。
(169)图3E描述了一个实施例,其中远程机器30充当机器群组38的中介并包括代理模块310、发送器312、接收器314和收发器316。
(170)代理模块310访问所收集的与资源(包括应用程序、计算环境和硬件资源)有关的信息。在有些实施例中,代理模块310访问所收集的与资源有关的数据并对每个资源确定该资源映像是否对客户机10可用。在有些实施例中,服务器还包括存储所收集的数据的数据库。在其中一个这样的实施例中,代理模块310根据所收集的数据对每个资源确定该资源映像是否为客户机10可用。在其它实施例中,代理模块310接收用户证书并根据接收到的证书和收集到的信息为每个资源确定该资源映像是否对客户机10可用。
(171)在有些实施例中,服务器还包括输出显示创建引擎,它产生提示客户机10可用的每个资源的输出显示。在其中一个这样的实施例中,输出显示创建引擎创建一个说明客户机系统可用的资源的显示的页面,该页面是根据所收集的信息和页面模板创建的。
(172)发送器312将所获取的数据发送到客户机10,向客户机10指示被确定为可为它所用的每个资源。在有些实施例中,所发送的数据可以在客户机系统上被显示为图形用户界面窗体中的图标,代表客户机系统可用的资源。在有些实施例中,所发送的数据可以在客户机系统上被显示为图形用户界面窗体中的图标,其代表客户机系统不可用的资源。接收器314接收访问其中一个可用资源的请求。在有些实施例中,接收器从客户机10接收用户证书。在其它实施例中,接收器接收通过其中一个可用资源环境(例如可用的计算环境)访问一个可用的应用程序的请求。在又一实施例中,存储所收集的信息和服务模块的数据库根据用户证书和收集到的信息为多个服务器所存储的每个资源判断该资源映像是否对客户机10可用。在又一实施例中,对资源(例如虚拟机或应用服务器)的可用性进行判断,提供对可用资源的访问。
(173)收发器316提供客户机10和提供所请求的资源的虚拟机之间的连接。在有些实施例中,收发器316提供客户机10和提供所请求的资源的虚拟机之间的连接并且建立表示层协议的连接。在其中一个这样的实施例中,收发器316建立X11或VNC连接。在另一个这样的实施例中,收发器316建立ICA连接。在又一个这样的实施例中,收发器316建立RDP连接。
(174)上述类型的中介机器可以用作图1-1B、2A-2B和3A-3D中上述远程机器30中的任意一个。
(175)图4示出了资源邻居应用程序的基于客户机的实现的程序组件的一个实施例。资源邻居应用程序416的基于客户机的实现可以用在使用基于服务器的计算模型(其中服务器执行资源邻居应用程序)或基于客户机的计算模型(其中客户机10在本地执行资源邻居应用程序)的网络中。资源邻居应用程序包括资源邻居服务(RNSVC)组件444、资源数据库组件448、资源邻居应用程序接口(RNAPI)组件452、资源邻居用户界面部件456以及本地高速缓存460。
(176)例如,远程机器30包括服务组件(RNSVC)444和资源授权高速缓存448。客户机10,它是能够支持资源邻居应用程序的基于客户机的实现的客户机10的一个代表性例子,包括应用程序接口RNAPI452、用户界面组件456以及本地高速缓存组件460。RNAPI452与用户界面组件456和本地高速缓存460通信。RNSVC444通过通信连接462与资源授权高速缓存448以及RNAPI452通信。
(177)通信连接462可以用例如ICA协议、RDP协议、X11协议、VNC协议或任意其它合适的表示层协议来建立,所述其它合适的表示层协议被设计用来使用工业标准的网络协议(例如ISDN、帧中继或异步传输模式(ATM))以及提供虚拟信道、并且是可以由应用层代码用来发出交换数据的命令的面向会话的传输连接的其它协议)在工业标准的传输协议(如TCP/IP、IPX/SPX、NetBEUI)上运行的。通信连接462还可以用支持RPC或RPC等价体(如SOAP和HTTP)的协议建立。通信连接462还可以是上述通信连接150。虚拟信道命令被设计用来和客户机的功能紧密结合在一起。ICA协议能够支持资源邻居虚拟信道。
(178)资源邻居虚拟信道协议可以包括四组命令:
(1)初始化有关的命令;
(2)被需要用户证书的拷贝的每个客户机所支持的与单一验证有关的命令;
(3)用于实现资源邻居用户接口的资源数据有关的命令;
(4)用于在远程机器上运行用户界面的资源启动回调有关的命令。
(179)资源授权高速缓存448可以是对机器群组38或一组可信域中的所有公共(即发布的)资源的已授权的用户和组信息的高速缓存。机器群组38中的每个远程机器可以在持久存储器中维护它自己的与资源有关的信息并在易失性存储器中建立资源授权高速缓存。在另一实施例中,可以将资源授权高速缓存448中所有收集到的与资源有关的信息存储在持久存储器中并且使其能够被机器群组38中的每个其它服务器可访问。资源授权高速缓存448可以用专有格式(如内存中的链表)或使用Novell的目录服务(NDS)或符合ITU(国际电信联合会)制定的X.500标准的任意目录服务来实现。资源授权高速缓存448可以实现为标准的关系型数据库。
(180)资源授权高速缓存448包括一个远程机器列表。该列表中的每个远程机器有相关的资源集合。与每个资源相关联的是与资源有关的信息,包括资源名、远程机器列表以及被授权使用该资源的客户机用户。下面的表2描述了维护在数据库中的与资源有关的信息的一个过度简化的例子。用户A和用户B是客户机10的用户,“n/a”表示所期望的应用程序被寄载但对客户机用户不可用,“-”表示该应用程序没有被寄载。
表2
 
远程机器名 电子表格 数据库 字处理软件 计算器
服务器30 用户A 用户B n/a -
服务器32 用户B n/a 用户A -
服务器34 - - - 用户A用户B
(181)表2显示:一个服务器列表:30、32和34;由服务器所寄载的应用程序(电子表格,客户数据库,字处理软件,和计算器);以及被授权使用这些应用程序的那些用户。例如,服务器30寄载电子表格程序、客户数据库和字处理软件。用户A被授权使用电子表格,用户B被授权使用客户数据库,没有用户被授权使用字处理软件。要理解也可以使用其它技术来表示谁被授权使用一个特定的应用程序。例如,存储在数据库中的用户信息可以用来表示没有被授权使用特定的应用程序的那些用户而不是被授权的那些,或者表示多个用户可以访问远程机器30上的资源,或者表示预先确定的一组用户被授权访问特定资源。尽管在表2描述的实施例中可用资源是应用程序,但类似的技术也可以用于计算环境和其它资源。
(182)为了获取存储在资源授权高速缓存448中的信息,远程机器30从机器群组38中的每个其它机器获取与那些远程机器上的资源有关的资源相关信息,包括表示哪些客户机用户和远程机器被允许访问各个特定资源的控制信息。维护在数据库中的资源相关信息在远程机器30的重启间可以保持或不保持。
(183)每个安装了资源邻居应用程序的远程机器30执行RNSVC软件444。运行在每个远程机器30上的RNSVC软件444与至少一个其它远程机器30建立通信连接(例如,命名管道),在有些实施例中是与每个其它远程机器30建立通信连接。远程机器30在通信连接上交换与资源有关的信息。在另一实施例中,RNSVC软件444通过远程注册表调用收集从机器群组38中的其它远程机器30收集与资源有关的信息(例如,服务组件444将请求与机器群组38中的其它远程机器30上所寄载的资源对应的与资源有关的信息的数据报发送到那些远程机器30)。在有些实施例中资源授权高速缓存是由系统管理员或由与远程机器30通信的程序和脚本提供的。RNSVC软件444还在资源授权高速缓存448中维护组和用户到发布的资源的关系,并在验证客户机用户时访问该信息。远程机器30的管理员可以使用用户界面配置RNSVC444。
(184)RNSVC软件444的其它功能包括实现RNAPI452所请求的服务和功能并使用资源邻居虚拟信道驱动程序(VCRN)与客户机10上的RNAPI452通信。VCRN根据所述资源邻居虚拟信道协议运行。
(185)RNAPI452是由资源邻居应用程序用来进行各种不同操作(例如,打开显示屏上的窗体、打开文件以及显示消息框)的一组软件功能或服务。RNAPI452提供用于访问运行资源邻居应用程序产生的用户界面单元(例如,图标)以及传统客户机用户界面(例如现有界面的前驱或者持续相当一段时间的现有界面)中的对象。当客户机10访问可用资源时,如果必要的话(例如,当客户机10不能在本地执行应用程序时),访问机制能够启动远程机器30上的资源。
(186)RNAPI452将所有发布的资源信息提供给用户界面组件456以显示在客户机10的屏幕12(图1)上。RNAPI452还为客户机10的用户管理机器群组38在登录证书(例如密码)的本地数据库中的登录,以支持单一验证功能。证书可以在客户机10的重启(电源开和关循环)之间保持或不保持不变。
(187)RNAPI452对本地高速缓存460中存储的资源邻居对象提供自动和手动管理。本地高速缓存460可以由客户机10的用户手动刷新,或以用户可定义的刷新周期刷新,或者由服务器在连接期间的任意时间刷新。在Windows实现中,RNAPI452能够建立远程应用文件资源关联并管理“启动”菜单和资源对象快捷方式的桌面图标。
(188)用户界面模块456与RNAPI452接口并且可以是现有的客户机用户界面(例如,远程资源管理器)的功能超集。用户界面模块456通过RNAPI452访问本地高速缓存460中存储的信息并在客户机10的显示屏12(图1)上将该信息可视地呈现给用户。所显示的信息是由客户机10的用户产生的信息以及由资源邻居应用程序获取的信息的混合。用户界面模块456还能够向用户展示该用户当前正在访问的所有资源以及所有活动的和断开的会话。
(189)在基于Windows的实施例中,用户界面模块456能够呈现多种图形组件,例如窗体和下拉菜单,以显示在显示屏12(图1)上。对这种图形用户界面组件的组合的显示通常称为“桌面”。由用户界面模块456产生的桌面可以包括显示客户机10的用户可用的资源的相邻性的资源邻居窗体。这些资源可以是机器群组38所寄载的发布的资源的过滤后的组合。用户界面模块456可以为每个机器群组38生成一个资源邻居窗体,或者在单一资源邻居窗体下合并来自不同机器群组38的资源。
(190)在顶层,资源邻居窗体为每个机器群组38包括一个文件夹。点击其中一个文件夹产生一个包含用户可用的每个所提供寄载的资源的表示(例如,图标)的窗体,例如见图6A和图6B。资源邻居窗体变成访问所发布的资源的焦点,用户界面模块456可以用来通过RNAPI452访问资源并启动应用程序。例如,客户机10的用户能够使用鼠标18(图1)选择其中一个所显示的图标并启动相关的资源。
(191)基于客户机的实现的特色是用户能够浏览资源邻居窗体中显示的对象,尽管客户机是离线的,也就是说连接462是不活动的。另外,客户机10的用户能够将应用程序对象和文件夹拖到资源邻居窗体之外并拖入桌面的其它图形组件(如其它窗体、文件夹等)中。
(192)图5展示了资源邻居应用程序的基于服务器的实现的程序组件的实施例。这些组件包括服务(RNSVC)组件544′、资源数据库组件548′、应用程序接口(RNAPI)组件552′、用户界面组件556′以及本地高速缓存560′。每个软件组件544′、548′、552′和560′都被安装在应用服务器30′上。基于服务器的实现的软件组件与图4中基于客户机的实现的软件组件对应。每个基于服务器的软件组件的功能与基于客户机的对应组件相似,但有下面将要描述的不同或附加功能。RNSVC组件544′与资源数据库548′通信并用本地过程调用与RNAPI552′通信。RNAPI552′还与用户界面模块556′和本地高速缓存560′通信。
(193)与图4中为客户机10所说明的类似,客户机10登录到网络40(图1),服务器30′开发并维护包含从机器群组38中的其它机器收集到的与资源有关的信息的数据库,并且在服务器30′和客户机20之间建立了通信连接。应用服务器30′可以通过ICA连接562′与客户机10通信。
(194)为了在基于服务器的实现中运行资源邻居应用程序,客户机10的用户连接到(服务器30′上的)一个初始桌面并从该桌面环境启动资源邻居应用程序。到该初始桌面的连接可以自动发生,例如通过客户机20的登录脚本、通过Startup(启动)组中的条目、或者通过别的集中管理的服务器特定机制。所有远程应用程序管理和启动都是通过这个初始桌面完成的。
(195)与图4中对服务器30所说明的类似,服务器30′使用用户证书判断客户机10的用户被授权访问的那些资源。资源邻居图形窗体被返回给客户机10并显示在显示屏22(图1)上。这个窗体可以包含表示在客户机20的资源邻居中的可用以及可能是不可用资源的图标。
(196)在一个实施例中,基于web的资源邻居应用程序包括管理资源的各个不同方面的一组对象。在一个实施例中,资源邻居应用程序包括“插入”web服务器的三个主要对象类:网关对象类;证书对象类;以及资源对象类。在一些具体的实施例中,对象类作为JavaBeans被提供。三个主要的对象类促进了:用户证书到服务器群组中的验证;指定用户可以访问的发布的资源的生成;与具体的发布的资源有关的详细信息的准备;以及资源应用信息到与在其上建立连接的协议相兼容的格式的转换。
(197)当对象作为JavaBeans被提供时,可以用多种不同方式访问它们。例如,它们可以被编译为COM对象并作为ActiveX组件对Web服务器可用。在另一实施例中,可以用JavaBeans的原本形式使用JavaBeans,例如当服务器使用Java Server Page(Java服务器页面)技术时。在又一实施例中,可以在Java Servlet(服务器小程序)中直接实例化并使用JavaBeans。在又一实施例中,远程机器30可以将JavaBeans作为COM对象直接实例化。
(198)证书对象类管理鉴别用户进入目标机器群组38中所必需的信息。证书对象类将所存储的用户证书传递到其它资源邻居对象。在有些实施例中,证书对象是不能被实例化的抽象类并且表示用户的证书。可以提供各种不同的类扩展以允许使用不同的验证机制,包括基于生物识别、智能卡和令牌的验证机制,例如质询-响应和基于时间的密码生成,或其它。例如,可以提供以纯文本存储了用户名、域和密码的“明文证书”扩展。
(199)网关对象类处理与目标机器群组38的通信。在一个实施例中,网关类对象被提供为不能被实例化的抽象类。特定的网关对象可以通过使用特定协议与机器群组38通信、读取所缓存的资源信息、这两种方法的组合或其它多种不同的方法而获取资源信息。
(200)如上所述,网关对象类可以缓存信息以将与目标机器群组38的通信降至最少。可以提供对网关对象的扩展以在特定协议(如HTTP)上与机器群组38通信。在一个实施例中,提供允许网关对象通过WINDOWS NT命名管道与机器群组38通信的扩展类。该网关对象提供应用编程接口钩子,它使得其它资源邻居对象能够查询应用程序信息的对象。
(201)资源对象类包含与发布的资源有关的信息并返回与机器群组所寄载的资源有关的信息以创建资源邻居web页面。资源对象类通过从由网关对象创建的对象或直接从机器群组38中的机器提取与资源有关的信息而创建代表资源的对象。资源对象充当资源的某些属性的容器,这些属性有些是可设置的有些是不可设置的,例如,资源的名字(不可设置);这个资源的客户机窗体的宽度(以像素表示)(可设置);这个资源的客户机窗体的高度(以像素表示)(可设置);当连接到该资源时使用的颜色的数量(可设置);音频带宽限制的严格程度(可设置);当连接到该资源时使用的加密级别(可设置);当连接到该资源时使用的视频级别(可设置);该资源是否应当被放置在客户机的启动菜单上(可设置);该资源是否应该被放置在客户机的桌面上(可设置);该资源所属的资源邻居文件夹的标识(可设置);该资源的说明(可设置);该资源的图形图标文件的来源(可设置);连接到该资源时应该使用的窗体的类型(不可设置);以及是否覆盖对象的缺省参数。
(202)图6A是在资源邻居应用程序已经被执行以后可以显示在客户机10、10′的屏幕12、22(图1)上的资源邻居窗体620的一个实施例的截屏。窗体120包括图形图标622。每个图标622代表由机器群组38中的其中一个机器所寄载的一个资源。每个所代表的资源都对该客户机10的用户可用。用户可以用鼠标18、28或键盘14、24选择其中的一个资源。
(203)图6B是在资源邻居应用程序已经被执行以后可以显示在客户机10、10′的屏幕12、22(图1)上的资源邻居窗体624的一个实施例的截屏。窗体624包括图形图标626、628。每个图标626、628代表由机器群组38中的其中一个机器所寄载的一个资源。由其中一个图标626所代表的每个资源可以为客户机10的用户所用。用户可以用鼠标18、28或键盘14、24选择其中的一个资源。对于基于web的资源邻居环境,图6A和6B的截屏是类似的,区别是图标622、626、628被显示在浏览器窗体中。
(204)其中一个图标628所代表的每个资源对客户机10的用户不可用,尽管这样的资源也在服务器群组中。这些资源的不可用性可以被标示在显示屏上(例如,可以在图标628画上“X”)。试图访问这样的资源会触发表示该用户未被授权访问该资源的消息。或者,这样的试图访问会调用允许客户机10的用户请求对该资源的访问的方法。
(205)在有些实施例中,资源包括计算环境。在其中一个这样的实施例中,连接是在客户机10和寄载所请求的计算环境的虚拟机之间建立的。在一个实施例中,在建立客户机系统和虚拟机之间的连接中使用表示层协议。在另一实施例中,在建立该连接中使用X11协议。在又一实施例中,在建立该连接中使用远程桌面协议(RDP)。在又一实施例中,在建立该连接中使用独立计算体系结构(I CA)协议。
(206)在有些实施例中,连接是在客户机10和寄载所请求的计算环境的物理机器(例如传统的工作站或服务器)之间建立的。在其它实施例中,连接是在客户机10和寄载所请求的计算环境的硬件划分之间建立的。
(207)在有些实施例中,根据策略引擎关于客户机是否以及如何访问资源的判断提供客户机10可用的多个资源的列表。策略引擎在做出该判断之前可以收集与该客户机有关的信息。现在参看图7A,描述了计算机网络的一个实施例,它包括客户机10、机器群组38、收集代理704、策略引擎706、策略数据库708以及资源服务器30′。在一个实施例中,该策略引擎706是一个远程机器30。尽管在图7A的实施例中只示出了一个客户机10、收集代理704、策略引擎706、机器群组38、以及资源服务器30′,但应该理解该系统可以为这些组件中的任意或每个都提供多个。
(208)简单地说,当客户机10向策略引擎706发送对资源列表的请求206时,收集代理704与客户机10通信,获取与客户机10有关的信息,并将客户机信息712发送到策略引擎706。策略引擎706通过将来自策略数据库708的一个策略应用于接收到的信息712而做出访问控制决策。
(209)更详细地说,客户机710向策略引擎706发送对资源列表的请求206。在一个实施例中,策略引擎706驻留在资源服务器30′上。在另一实施例中,策略引擎706驻留在远程机器30上。在又一实施例中,资源服务器30′从客户机10接收请求206并将该请求206发送到策略引擎706。在又一实施例中,客户机10将对资源列表的请求206发送到中介远程机器30″′(未示出),该中介远程机器30″′将该请求206发送到策略引擎706。
(210)在有些实施例中,客户机10在如上所述的网络连接上发送该请求206。在接收到该请求时,策略引擎706启动收集代理704的信息收集。收集代理704收集与客户机10有关的信息并将该信息712发送到策略引擎。
(211)在有些实施例中,收集代理704收集并在网络连接上发送信息712。在有些实施例中,收集代理704包括字节码,例如由字节码编程语言JAVA编写的应用程序。在有些实施例中,连接代理704包括至少一个脚本。在那些实施例中,收集代理704通过在客户机10上运行至少一个脚本收集信息。在有些实施例中,收集代理704包括客户机10上的Active X控件。Active X控件是实现一组接口的专用组件对象模型(COM)对象,所述接口使其看起来像控件并能够充当控件。
(212)在一个实施例中,策略引擎706将收集代理704发送到客户机10。在有些实施例中,策略引擎706在收集代理704已经将信息712发送到策略引擎706之后需要收集代理704再执行一次。在有些这样的实施例中,策略引擎706需要收集代理704再次执行是因为策略引擎706可能没有足够的信息712来判断客户机10是否能够满足特定的条件。在其它实施例中,策略引擎根据接收到的信息712需要收集代理704的多次执行。
(213)在有些实施例中,策略引擎706将判断收集代理704从客户机10收集的信息类型的指令发送到收集代理704。在那些实施例中,系统管理员可以配置从策略引擎706发送到收集代理704的指令。这对收集到的信息的类型提供了更强的控制。因为对收集到的信息类型的更强控制,这还扩充了策略引擎706能够进行访问控制决策的类型。收集代理704收集的信息712包括但不限于客户机10的机器ID、操作系统类型、操作系统补丁的存在、所安装的网卡的MAC地址、客户机设备上的数字水印、活动目录的成员、病毒扫描程序的存在、个人防火墙的存在、HTTP头、浏览器类型、设备类型、网络连接信息(例如互联网协议地址或地址范围)、远程机器30的机器ID、访问请求的日期或时间(包括针对不同时区的调整)以及授权证书。
(214)在有些实施例中,该设备类型是个人数字助理。在有些实施例中,该设备类型是蜂窝电话。在其它实施例中,该设备类型是膝上型计算机。在其它实施例中,该设备类型是桌面计算机。在其它实施例中,该设备类型是互联网电脑亭。在别的实施例中,该设备类型是游戏机。
(215)在有些实施例中,该数字水印包括数字嵌入。在有些实施例中,该水印包括插入文件中以提供与该文件有关的源信息的数字模式。在其它实施例中,该水印包括散列的数字文件以提供入侵检测。在其它实施例中,水印提供与该文件有关的版权信息。
(216)在有些实施例中,该网络连接信息与带宽容量有关。在其它实施例中,该网络连接信息与客户机10的互联网协议地址有关。在另外的实施例中,网络连接信息包括客户机10的互联网协议地址。在一个实施例中,网络连接信息包括标识客户机10向其提供了验证证书的登录代理的网络区域。
(217)在有些实施例中,授权证书包括多种类型的验证信息,包括但不限于用户名、客户机名、客户机地址、密码、个人识别码(PIN)、声音样本、一次性密码、生物统计数据、数字证书、许可证等,以及它们的组合。在接收到收集的信息712之后,策略引擎706根据接收到的信息712做出访问控制决策。
(218)现在参看图7B,所示框图描述了策略引擎706的一个实施例,包括第一组件720(包括条件数据库722和登录代理724)和第二组件730(包括策略数据库732)。第一组件720将来自条件数据库722的条件应用到接收到的与客户机10有关的信息712并判断接收到的信息712是否满足该条件。
(219)在有些实施例中,条件可以要求客户机10执行特定的操作系统以满足该条件。在其它实施例中,条件可以要求客户机10执行特定的操作系统补丁以满足该条件。在又一些实施例中,条件可以要求客户机10提供每个安装的网卡的MAC地址以满足该条件。在一些实施例中,条件可以要求客户机10表明在特定活动目录中的成员以满足该条件。在另一实施例中,条件可以要求客户机10执行病毒扫描程序以满足该条件。在其它实施例中,条件可以要求客户机10执行个人防火墙以满足该条件。在一些实施例中,条件可以要求客户机10包括特定的设备类型以满足该条件。在其它实施例中,条件可以要求客户机10建立特定类型的网络连接以满足该条件。
(220)如果接收到的信息满足条件,第一组件720就将该条件的标识符存储在数据集726中。在一个实施例中,如果接收到的信息使条件为真,该信息就满足该条件。例如,条件可以要求安装了特定的操作系统。如果客户机10有该操作系统,则该条件为真且被满足。在另一实施例中,如果接收到的信息使条件为假,则该信息满足该条件。例如,条件可以指示在客户机10上是否有间谍软件。如果客户机10不包含间谍软件,该条件为假且被满足。
(221)在有些实施例中,登录代理724驻留在策略引擎706之外。在其它实施例中,登录代理724驻留在策略引擎706上。在一个实施例中,第一组件720包括登录代理724,它启动与客户机10有关的信息收集。在有些实施例中,登录代理724还包括一个数据存储器。在这些实施例中,该数据存储器包括收集代理可以为其收集信息的条件。这个数据存储器明显不同于条件数据库722。
(222)在有些实施例中,登录代理724通过执行收集代理704启动信息收集。在其它实施例中,登录代理724通过将收集代理704发送到客户机10以在客户机10上执行而启动信息收集。在另一些实施例中,登录代理724在接收到信息712之后启动额外的信息收集。在一个实施例中,登录代理724还接收信息712。在这个实施例中,登录代理724根据接收到的信息712生成数据集726。在有些实施例中,登录代理724通过将来自数据库722的条件应用到从收集代理704接收到的信息而产生数据集726。
(223)在又一实施例中,第一组件720包括多个登录代理724。在这个实施例中,多个登录代理724中至少有一个驻留在客户机10可以从其发送资源请求710的网络域上。在这个实施例中,客户机10将资源请求710发送到特定的登录代理724。在有些实施例中,登录代理724向策略引擎706发送客户机10从其访问登录代理724的网络域。在一个实施例中,客户机10从其访问登录代理724的网络域被称作客户机10的网络区域。
(224)条件数据库722存储第一组件720应用于接收到的信息的条件。策略数据732存储第二组件730应用于接收到的数据集726的策略。在有些实施例中,条件数据库722和策略数据库732以ODBC-兼容数据库存储数据。例如,条件数据库722和策略数据库732可以为ORACLE数据库,其由位于Redwood Shores,Calif的Oracle公司生产。在其它实施例中,条件数据库722和策略数据库732可以是由位于Redmond,Wash的Microsoft公司生产的Microsoft ACCESS数据库或Microsoft SQL Server数据库。
(225)在第一组件720将接收到的信息应用到条件数据库722中的每个条件之后,第一组件将数据集726发送到第二组件730。在一个实施例中,第一组件720只发送数据集726到第二组件730。因此,在这个实施例中,第二组件730不接收到信息712,只接收所满足的条件的标识符。第二组件730接收数据集726并根据数据集726中所标识的条件通过应用来自策略数据库732的策略进行访问控制决策。
(226)在一个实施例中,策略数据库732存储应用于接收到的信息712的策略。在一个实施例中,策略数据库732中存储的策略至少部分由系统管理员提定。在另一实施例中,用户指定存储在策略数据库732中的至少一些策略。用户指定的策略被存储为优选。策略数据库732可以被存储在易失性或非易失性存储器中,或者通过多个服务器进行分布存储。
(227)使用刚才所描述的策略引擎706,根据接收到的与客户机10有关的信息进行访问控制决策。在接收到所收集的与客户机10有关的信息时,策略引擎706根据该信息生成数据集。该数据集包含接收到的信息712所满足的每个条件的标识符。策略引擎706将一个策略应用到该数据集726中的每个所标识的条件上。这个应用产生了客户机10可以访问的资源列表。在有些实施例中,该资源列表包括对资源的访问级别的列表。在其中一个这样的实施例中,列举了与该资源相关联的多个容许的动作。在另一个这样的实施例中,列举了该资源的多个执行方法。策略引擎706随后将该列表呈现给客户机10。在有些实施例中,如上结合图6A和图6B所说明的那样,策略引擎706创建用来将该列表呈现给客户机的超文本标记语言(HTML)文档。
(228)在有些实施例中,策略引擎706将该列表发送到不同的远程机器30。在其中一个这样的实施例中,该远程机器30将该列表发送到客户机10。在另一这样的实施例中,该远程机器30将额外的策略应用于该列表。在又一这样的实施例中,该远程机器是诸如应用程序网关或防火墙这样的设备。在有些这样的实施例中,策略引擎706将可应用于所请求的资源的指定级别的动作发送到充当代理服务器的远程机器30。代理服务器根据该指定级别的访问建立客户机10和提供所请求的资源的计算环境之间的连接。
(229)现在参看图8,所示流程图描述了为了提供对资源的访问所采用的步骤的一个实施例。简单地说,接收对资源的访问请求(步骤802)。识别用于提供对该资源的访问的方法(步骤804)。可以选择一个应用程序执行服务器以提供对该资源的访问(步骤806)。可以选择一个虚拟化环境来提供对该资源的访问(步骤808)。可以选择一个应用流服务提供对该资源的访问(步骤816)。如果选择了虚拟化环境提供对该资源的访问,就识别执行机器(步骤810)。选择虚拟机器(步骤812)。配置该虚拟机器(步骤814)。提供对该资源的访问(步骤818)。
(230)仍然参看图8,并且更详细地,接收对一个资源的访问请求(步骤802)。在一个实施例中,远程机器30接收该请求。在有些实施例中,远程机器30是中间代理服务器。在其它实施例中,远程机器30是网关。在另一些实施例中,远程机器30是策略引擎。在另外的实施例中,远程机器30是一个设备。
(231)在一个实施例中,远程机器30验证该用户被授权访问该资源。在又一实施例中,远程机器30接收验证对用户访问的授权的信息和该请求。
(232)在一个实施例中,远程机器30接收对一个应用程序的请求。在另一实施例中,远程机器30接收访问一个文件的请求。在又一实施例中,远程机器30接收访问一个计算环境的请求。在其中一个这样的实施例中,计算环境是桌面计算环境,客户机10可以从其执行应用程序。在另一个这样的实施例中,计算环境提供对一个或多个应用程序的访问。在有些实施例中,远程机器30接收对由多个硬件需求所支持的计算环境的访问的请求。在有些实施例中,充当布署系统的远程机器30接收来自客户机10的对资源访问的请求,例如应用程序的执行。
(233)识别用于提供对该资源的访问的方法(步骤804)。在一个实施例中,远程机器30查看数据库以识别用于提供访问的方法。在另一实施例中,远程机器30查看策略或规则数据库以识别用于提供访问的方法。在又一实施例中,远程机器30从策略引擎接收要选择的方法的标识。
(234)对于其中的资源是应用程序的实施例,策略可以允许在客户机10上执行该应用程序。在另一这样的实施例中,策略可以使客户机10能够接收包括该应用程序的文件流。在这个实施例中,该文件流可以在客户机上的独立环境中被存储和执行。在又一这样的实施例中,策略可以允许只在远程机器(例如应用服务器)上执行该应用程序,并要求远程机器将应用-输出数据发送到客户机10。在又一这样的实施例中,策略可以允许只在由虚拟机所寄载的计算环境中执行该应用程序。在这些情况的任意一种中,包括该应用程序的文件流可以被发送到远程机器。
(235)对于其中的资源是计算环境的实施例,策略可以允许该计算环境被安装在客户机10上。在另一这样的实施例中,策略可以使客户机10能够访问在远程机器30上的虚拟机中执行的该计算环境的拷贝。在又一这样的实施例中,策略可以禁止客户机10的用户访问所请求的计算环境并提供替代的计算环境。
(236)对于其中的资源是由多个硬件资源支持的计算环境的实施例,策略可以允许客户机访问在虚拟机中执行的该计算环境的拷贝,所述虚拟机又在提供对所请求的多个硬件资源的访问的管理程序上执行。在又一这样的实施例中,策略可以禁止客户机10的用户访问所请求的计算环境并提供由替代的多个硬件资源支持的计算环境。
(237)远程机器30可以选择提供对应用执行服务器的访问,应用执行服务器提供对所请求的应用程序的访问(步骤806)。应用执行服务器执行应用程序并将应用输出数据发送到客户机10。应用执行服务器可以通过表示层协议,例如X11、VNC、ICA或RDP,发送应用输出数据。
(238)回头看步骤804,远程机器30可以选择提供对能够发送所请求的应用程序到客户机10(步骤816)上执行的应用流服务的访问。下面将更详细地说明应用流服务的实施例。
(239)回头看步骤804,远程机器30可以选择通过允许访问由虚拟机提供的计算环境响应客户机的请求,该计算环境提供对所请求的资源的访问(步骤808)。该计算环境可由启动到在远程机器30′上执行的管理程序中的虚拟机提供。在其它实施例中,远程机器30决定向客户机10提供一个提供对该计算环境的访问的虚拟机。
(240)在远程机器30决定通过虚拟化环境提供对所请求的资源的访问的实施例中,远程机器30识别出提供对客户机10所请求的计算环境的访问的执行机器(步骤810)。在其中一个这样的实施例中,远程机器30识别出能够寄载该计算环境的执行机器。在另一这样的实施例中,远程机器30确定请求对所请求的计算环境的访问的用户缺少访问所请求的计算环境的授权。远程机器30可以识别出用户被授权访问的一个替代计算环境。在又一这样的实施例中,远程机器30识别出管理程序在其上提供对所请求的多个硬件的访问并且所请求的计算环境在其中可以执行的执行机器。
(241)在其它实施例中,远程机器30是能够寄载该计算环境的执行机器。在有些这样的实施例中,计算环境被安装在执行机器上。在其它这样的实施例中,执行机器上的管理程序模拟出所请求的计算环境所需的多个硬件资源,并且该计算环境在管理程序中被启动。
(242)在有些实施例中,远程机器30识别出充当能够提供对所请求的多个硬件资源支持的计算环境的访问的执行机器的远程机器30′。在其中一个这样的实施例中,远程机器30′作为一个执行机器工作,模拟所请求的多个硬件资源的管理程序在其上执行并且由管理程序支持的计算环境也在其上执行。
(243)在有些实施例中,根据负载平衡判断识别出提供能够支持特定虚拟机的硬件资源(物理的或虚拟的)的执行机器。在其中一个这样的实施例中,根据由管理服务器30维护的负载平衡信息选择执行机器。在有些实施例中,管理服务器30是单个机器。在其它实施例中,若干远程机器30可以充当管理服务器,但这些结点中只有一个被指定为管理服务器。在有些实施例中,客户机请求首先被发送到管理服务器30。在其它实施例中,远程机器30查询管理服务器30以确定合适的执行机器的身份。
(244)主网络信息服务器结点30维护远程机器30′、30″的地址表。另外,主网络信息服务器结点30从远程机器30′、30″接收表示它们的活动级别的消息,活动级别可以包括CPU负载或者包括当前由远程机器30′、30″所寄载的虚拟机的数量的标识。远程机器30′、30″的活动级别和各个远程机器30′、30″的地址一起被维护在一张表中。
(245)对于在其中使用单一管理服务器30的实施例,期望从网络上的可用远程机器30中动态选择主网络信息服务器结点30。这样,如果活动的管理服务器30出现故障,只要检测到先前的管理服务器30的故障,就可以尽快选出新的管理服务器30。在一个实施例中,管理服务器30是由远程机器30之间的选举过程选择的。
(246)在一个实施例中,任意机器(客户机10或远程机器30)可以通过向机器群组38广播请求选举数据报而在任意时间强制选举。通过将请求结点在所发送的请求选举数据报中发送的选举标准集与在每个接收结点上维护的选举标准集进行比较而确定选举结果。也就是说,来自请求结点的数据报的第一个选举标准由接收结点与它的第一接收标准进行比较。正在被比较两个标准中排名最高的获胜,具有该标准的结点赢得选举。如果两个标准持平,就顺序比较下一个标准直到平衡被打破。如果接收到请求选举数据报的远程机器30具有的选举标准比请求选举数据报中接收到的选举标准要高,接收到请求选举数据报的该远程机器30就发出它自己的请求选举数据报。如果接收到请求选举数据报的远程机器30具有的选举标准比请求选举数据报中接收到的标准低,该远程机器30就确定它不是主网络信息服务器结点并且试图确定机器群组38中的哪个远程机器30是管理服务器30。
(247)在一个实施例中,确定选举结果的标准包括:该结点是否被静态配置为主网络信息服务器结点;远程机器30是否有更高的主网络信息服务软件版本号;远程机器30是否是NT域控制器;远程机器30是否是最长的运行结点;远程机器30是否有在词法上较低的网络名。在一个实施例中,选举请求的数据报结构包括服务器版本号的无符号短字、一个无符号短字(其中的位是标识该结点是否被静态配置为主网络信息服务器结点或者是否在NT域控制器上执行的标志)和一个无符号长字(包含服务器已经运行的时间)。
(248)周期性地,管理服务器30将声明消息发送到其它远程机器30,声明它自己为管理服务器30。如果另一远程机器30相信它自己是管理服务器30,它将请求选举。这样就能检测出并删除相同协议的出问题的主网络信息服务器结点。另外,选举还将:当远程机器30重启时将由任意远程机器来请求;由主网络信息服务器结点未能确认对其确认更新消息的远程机器30来请求;由主网络信息服务器结点30未能对其响应对信息的请求的客户机10来请求;
(249)更详细地参看图9,一旦任意远程机器30(它可以被称作结点)广播请求选举的请求选举数据报(步骤920),接收请求选举数据报的远程机器30(步骤924)首先比较它自己的选举标准和请求选举数据报中的标准(步骤930)以判断接收远程机器30是否有更高的选举标准(步骤934)。如果接收数据报的远程机器30的选举标准比请求选举数据报中包含的标准要低(步骤938),接收请求选举数据报的远程机器30就退出选举过程并等待选举结果(步骤938)。
(250)如果接收请求选举数据报的远程机器30的选举标准比请求选举数据报中包含的标准要高,接收请求选举数据报的远程机器30就广播包含它自己的选举标准的它自己的请求选举数据报(步骤940)。响应第二个远程机器30对请求选举数据报的发送,另一远程机器30′用带有更高的选举标准的请求选举响应,然后第二远程机器30退出选举,具有更高标准的远程机器30′广播它自己的请求选举数据报。如果没有其它远程机器30以更高的选举标准响应,已经明确赢得主网络信息服务器结点选举的结点发送n个更多的选举请求(在一个实施例中是3个请求)(步骤956)并且随后如果没有其它远程机器30以更高的选举标准响应,已经发出n个选举请求的远程机器30就是新的管理服务器。
(251)在选举已经发生并且新的管理服务器30已经确定之后,所有远程机器30发送所有它们配置的网关地址到新的网络信息服务器结点30。这样新的管理服务器30就成为网关结点。
(252)再来参看图1,一旦选出管理服务器30,远程机器30就发送更新数据报到主网络信息服务器30,提供与发送更新数据报的各个远程机器30有关的信息。在一个实施例中,从远程机器30发送到主网络信息服务器结点30的更新数据报包括:远程机器30的名字;网络地址;集群名字;网络传输协议;用这个传输配置的远程机器30的总数量;用这个传输协议与客户机连接的可用端口的数量;同时允许的活动用户的总数量;可用用户时隙(slot)数量;服务器负载级别。在接收到更新数据报之后,主网络信息服务器结点30向发送更新数据报的远程机器30返回确认,该确认指示更新数据报已经接收到。如果发送更新数据报的远程机器30没有接收到来自主网络信息服务器结点30的确认,发送更新数据报的远程机器30就假定主网络信息服务器结点30已经出现故障并发送选举请求。
(253)更详细地参看图10,在管理服务器30的选举之后,远程机器30等待一个随机的时间周期然后向管理服务器30发送带有它最新的负载信息的数据报(步骤1000)。在一个实施例中,该延迟是4到6秒。如果管理服务器30接收(步骤1008)到来自远程机器30的更新数据报,主网络信息服务器结点30就用确认回复发送更新数据报的远程机器30(步骤1010)并将该数据转发到配置为网关结点的任意远程机器30。如果主网络信息服务器30未能接收到来自远程机器30的数据(步骤1008),主网络信息服务器30就在预定的时间后丢弃来自该远程机器30的老数据(步骤1020)。
(254)如果远程机器30在已经发出更新数据报之后没有接收到来自主网络信息服务器结点30的确认(1028),远程机器30重发该更新数据报。远程机器30将在它假定主网络信息服务器结点已经出现故障并随后发送选举请求(步骤1030)之前尝试n次重发(在一个实施例中是3次)。如果远程机器30接收到确认,随后它周期性地更新主网络信息服务器结点30,在一个实施例中是每5到60分钟。
(255)在有些实施例中,远程机器在上述活动中的参与由在管理程序中而不是操作系统中执行的虚拟机控制。图11的框图就描述了包括第一和第二网络管理进程的机器群组38的一个实施例。第一个网络管理进程1110在原生操作系统1105(例如WINDOWS NT)中执行并且访问存储了(1)数据表和(2)能让第一网络管理进程1110被动态选择为管理进程的至少一个选举标准的本地存储元件,该数据表中有所述至少两个网络管理进程的每一个的入口。第二网络管理进程1120在虚拟化操作系统1115中执行,并且访问存储了(1)数据表和(2)能让第二网络管理进程1120被动态选择为管理进程的至少一个选举标准的虚拟化存储元件,该数据表有所述至少两个网络管理进程的每一个的入口。客户机10与第一网络管理进程1110和第二网络管理进程1120中被选为管理进程的那一个通信并从管理进程接收远程机器30的地址,用它来通信。在有些实施例中,多个客户机10与主网络信息进程通信。
(256)第一网络管理进程1110在原生操作系统1105中执行。第二网络管理进程1120在虚拟化操作系统1115中执行。在一个实施例中,该至少两个网络管理进程被组织成群。在另一实施例中,该至少两个网络进程的其中一个是网关进程。在又一实施例中,网关进程是主网络管理进程。在有些实施例中,主网络管理进程是由包括下列步骤的过程选择的:(a)向该至少两个网络管理进程广播选举数据报,该选举数据报包括选举标准;和(b)根据该选举标准选择主网络管理进程。在其中一个这样的实施例中,主网络管理进程用相同的传输协议广播声明数据报以检测多个主网络管理进程。在另一个这样的实施例中,主网络管理进程是由发生在从事件组中选择的一个事件之后发生的过程选择的,所述事件组包括:系统重启,主网络管理进程未能响应发自网络管理进程的数据报,主网络管理进程未能响应来自客户机的请求,检测到至少两个主网络管理进程被用相同的传输配置,以及新的网络管理进程出现在所述网络上。
(257)在一个实施例中,如同结合图9和10所描述的那样选举管理进程。
(258)在有些实施例中,网络包括使用不同于第一网络管理进程的网络传输协议的第三网络管理进程。在其中一个这样的实施例中,第三网络管理进程包括用于不同网络传输协议的主网络管理进程。
(259)对于其中机器群组管理是分散的实施例,每个远程机器30可以包括一个提供负载管理功能的负载管理子系统(LMS)。通常,LMS管理总体的服务器和网络负载以将对客户机请求的响应时间降至最短。
(260)在有些实施例中,用于从联网的多个服务器中选择一个服务器来服务客户机请求的装置包括多个网络管理进程。在其中一个这样的实施例中,所述多个网络管理进程中的每一个都包括事件总线以及与事件总线通信的子系统。在另一个这样的实施例中,该多个网络管理进程中的第一个从客户机接收对一个计算环境的访问请求并将该客户机请求发送到该多个网络管理进程中的第二个。在又一实施例中,该多个网络管理进程中的第二个在虚拟化操作系统中执行并且包括动态存储和负载管理子系统。
(261)动态存储器将与该多个网络管理进程中的至少一些相关联的信息装入虚拟化存储元件。在有些实施例中,该动态存储器包含涉及服务器处理器负载的信息。在其它实施例中,该动态存储器包含涉及服务器输入/输出事务负载的信息。
(262)负载管理子系统(1)通过所述事件总线接收识别用于服务客户机请求的服务器的请求,(2)从所述动态存储器中获取负载信息,(3)根据所获取的负载信息从多个服务器中选择一个用于服务客户机请求,(4)通过所述事件总线发送一个包括了标识所选择的服务器的信息的消息。在有些实施例中,负载管理子系统以预定的时间间隔将运行时信息存储在动态存储器中。在其它实施例中,该装置还包括持久存储器,通过事件总线与持久存储器通信的负载管理子系统,持久存储器包含用来管理服务器负载的至少一个规则的标识。
(263)在一个实施例中,LMS是基于规则的,并且有一个管理工具可以用来更改或创建用于管理服务器负载的规则。规则是影响LMS如何处理请求的一个或多个标准。可以对具体的远程机器30使规则各不同。还可以对每个服务器基础上的具体的应用程序或计算环境使规则各不同。也就是说,一个或多个规则可以与驻留在机器群组38中的第一个远程机器30上的应用程序或计算环境的拷贝相关联,不同的规则可以与驻留在机器群组38中的第二个远程机器30上的相同应用程序或计算环境的拷贝相关联。对具体的应用程序各个不同的规则的输出可以和通用服务器规则的输出组合在一起以处理客户机请求。
(264)规则使用来自一个或多个运转计量器的输出。运转计量器可以测量服务器性能的任意方面并且其结果由规则用来帮助确定哪个远程机器30最适合服务客户机请求。例如,运转计量器可以测量:处理器负载;上下文切换;存储器使用率;页面错误;页面交换;输入/输出读或写的传输速度;执行的输入/输出操作次数或者所寄载的虚拟机数量。在一个实施例中,运转计量器由LMS用来在特定事件(例如对客户机连接的请求)发生期间测量服务器性能。在另一实施例中,运转计量器由LMS用来以预定的间隔测量服务器性能,这个间隔可以由系统管理员配置。机器群组38中的每个远程机器30上的LMS都针对每个预定周期对远程机器30评估各种性能度量并将该信息存储在动态存储器中。例如,每30秒,对服务器负载的评估可以包括查询运转计量器以获得服务器的CPU使用和存储器使用情况。该查询的结果可以和其它适用的负载因子一起用来计算这个服务器负载的负载数字。新的负载数字随后被发送到动态存储器。
(265)在一个实施例中,规则和运转计量器是查询机器群组38中的远程机器30的具体系统状况、资源和性能度量的可执行代码。有些规则接受由管理员通过管理工具输入的用户可配置参数。可以用动态链接库(“DLL”)向LMS提供规则,适用于具体服务器的规则和规则参数可以存储在持久存储器器中。也就是说,将管理员对规则的选择和以及与那些规则相关联的权重因子和适用的设置一起存储在持久存储器中。例如,有些运转计量器可以按预定的间隔测量负载;该预定间隔可以由系统管理员设置。
(266)可以用LMS用来判断哪个远程机器30处理请求的条件规则的例子包括:可以连接到远程机器30的客户机器10的数量是否是有限的;可以由远程机器30服务的客户机会话的数量是否是有限的;可以由远程机器30寄载的虚拟机的数量是否是有限的;远程机器30可用的应用程序或连接许可的数量是否是有限的;客户机10所请求的应用程序当前是否正在该远程机器30上执行;客户机在物理上是否接近服务器或者是否可以通过高带宽连接与之相连;以及客户机请求是否正在远程机器30可以服务客户机请求的时间周期内发出。
(267)可以由分组子系统300将一套规则组织在一起以形成与特定服务器或特定应用程序相关联的负载评估器。服务器负载评估器是应用于该服务器上发布的所有应用程序的负载评估器。应用程序负载评估器是封装了针对特定应用程序的规则的负载评估器。在一个实施例中,发布的应用程序的负载是服务器负载评估器和应用程序负载评估器之和。与特定服务器相关联的负载评估器可以存储在持久存储器器230中。当LMS初始化时,它查询持久存储器230以判断与是否有负载评估器与该LMS所在的远程机器30相关联。如果有,那些规则和运转计量器被装载,并且LMS开始使用负载评估器的那些单元。负载评估器的组成部分的输出被组合在一起以计算特定服务器上的负载的复合表征,每个LMS都将它的负载评估器的结果存储在动态存储器中。负载评估器中封装的每个规则可以有一个可配置权重因子。很多规则有控制LMS负载的计算方式的用户可配置参数。例如,在一个实施例中,CPU使用规则有两个参数:当处理器使用率大于X%时报告全负载;当处理器使用率低于X%时报载无负载。在一个特定的实施例中,由负载评估器报告的负载等于每个规则的负载乘以每个规则的权重的乘积之和。
(268)在另一个例子中,寄载四个应用程序的远程机器30可以有三个与之相关联的负载评估器。服务器自身和第一个应用程序可以与第一个负载评估器相关联,第二和第三个应用程序与第二个负载评估器相关联,第四个应用程序与第三个负载评估器相关联。当远程机器30启动时,它从持久存储器230读入第一、第二和第三个负载评估器。远程机器30周期性地(或者在特定事件后)计算各个负载评估器的输出并将那些值发送到动态存储器。当接收到连接请求时,用那些值确定该远程机器30是否应该服务客户机请求。
(269)例如,使用运转计量器,LMS能够获得与特定服务器30上的处理器负载有关的信息、该远程机器30上的存储器负载以及该远程机器30上的网络负载。LMS将这些结果组合在一起以获得总体的负载数字,它表示该远程机器30上的总负载。在确定总负载中,负载评估器可以对每段信息进行不同的加权。对于有一个规则与远程机器30相关联的实施例中,该规则可以使服务器30丧失服务客户机请求的资格。例如,规则可以限制一台远程机器30可以启动的客户机会话的数量。在这个实施例中,如果客户机30当前正在服务规则允许的最大数量的客户机会话,它将不会被LMS选中服务新的客户机请求,即使它的运转计量器的输出表示这是该客户机请求被发送到的最有利的远程机器30。
(270)回过去参看图8,在已经选择了执行机器之后,标识出提供所请求的计算环境的虚拟机(步骤812)。在有些实施例中,查看像规则数据库、策略数据库或脚本一类的声明策略以将请求转到虚拟机。在其它实施例中,标识出充当寄载多个虚拟机的应用服务器的远程机器30。在其中一个这样的实施例中,可以选择由该应用服务器所寄载的多个虚拟机之一并将之与客户机10相关联。在另一个这样的实施例中,可以将所选择的虚拟机的标识符发送到客户机10。
(271)在有些实施例中,会话管理组件标识出该虚拟机。在其中一个这样的实施例中,接收请求的中介机器30调用会话管理组件。在另一个这样的实施例中,中介机器在执行在它上面的终端服务会话中启动会话管理组件。在又一这样的实施例中,中介机器在执行在所标识出的执行机器上的终端服务会话中启动会话管理组件。
(272)在一个实施例中,会话管理组件提供用于标识提供对计算环境的访问的虚拟机的位置的功能。在另一实施例中,会话管理组件被提供为在服务器(例如应用服务器)上发布的一个程序模块。在又一实施例中,会话管理组件标识、启动并监控虚拟机。
(273)在有些实施例中,会话管理组件与虚拟机管理组件通信以标识出虚拟机。在其中一个这样的实施例中,虚拟机管理组件提供用于定位虚拟机的功能。在另一个这样的实施例中,虚拟机管理组件提供用于从多个可用虚拟机中给用户分配一个可用虚拟机的功能。在又一个这样的实施例中,虚拟机管理组件提供用于将共享虚拟机重新分配给多个可用虚拟机的功能。在又一实施例中,虚拟机管理组件提供对多个虚拟机中的每个虚拟机跟踪与其相关联的状态的功能。
(274)现在参看图12,所示框图说明了虚拟机管理组件1200的一个实施例。在一个实施例中,虚拟机管理组件1200提供用于访问和更新包括虚拟机目录在内的数据库的功能。在另一实施例中,虚拟机管理组件1200提供了用于使管理员或虚拟机供应系统能够添加、删除或修改包括虚拟机目录的数据库中的条目的功能。在有些实施例中,虚拟机管理组件1200包括提供管理功能的虚拟机。在其它实施例中,虚拟机管理组件1200包括提供了管理功能的虚拟机。
(275)在有些实施例中,虚拟机管理组件1200可以接收到来自供应系统或会话管理组件的请求。在其中一个这样的实施例中,供应系统在虚拟机被创建或销毁时联系虚拟机管理组件1200。在另一个这样的实施例中,当会话管理组件被调用以请求虚拟机启动时它联系虚拟机管理组件1200。在又一这样的实施例中,当会话管理组件识别出启动的虚拟机的状态变化时,它联系虚拟机管理组件1200。会话管理组件可以在一个虚拟机活动时发送消息(例如心跳消息)到虚拟机管理组件1200。如果该虚拟机可以由不止一个用户访问,虚拟机管理组件1200可以在用户已经结束了与该虚拟机的会话后将该虚拟机重新分配给该多个可用虚拟机。
(276)在有些实施例中,相同机器类型的虚拟机可以被分组为多个标准操作系统(SOE)。在其中一个这样的实施例中,SOE可以是实现特定机器类型的功能的特定配置的一组虚拟机映像,例如机器类型“C++开发者工作站”可以有一个包含安装了Visua lStudio 2003的WinXP Pro SP2映像的SOE和另一个包含安装了Visual Studio 2005的Win Vista映像的SOE。
(277)在其它实施例中,虚拟机管理组件1200可以提供用于完成与标准操作系统(SOE)有关的下列动作中的一个或多个的功能:创建SOE,更新SOE,删除SOE,发现SOE和获取SOE。在又一实施例中,虚拟机管理组件1200可以提供用于完成与虚拟机有关的下列动作中的一个或多个的功能:创建虚拟机,更新虚拟机,删除虚拟机,发现虚拟机,以及将虚拟机分配到一个SOE或从其删除。
(278)机器类型可以指的是对虚拟机提供的计算环境的非技术描述。机器类型的一些例子是“C++开发者工作站”或“秘书工作站”。很多虚拟机可以被分组到一个单独的虚拟机类型中。在一个实施例中,虚拟机管理组件1200可以提供用于完成与机器类型有关的下列动作中的一个或多个的功能:创建机器类型,更新机器类型,删除机器类型,发现机器类型和获取机器类型。
(279)在有些实施例中,虚拟机管理组件1200可以提供用于创建虚拟机的功能。在其中一个这样的实施例中,管理员或供应服务在虚拟机的数据库中创建一个新的机器类型。该机器类型被赋予一个有意义的名字,例如“HR经理工作站”。在一个实施例中,机器类型的名字是一类标准操作系统(SOE)的名字而不是具体的SOE,可以将多个SOE分配给机器类型名。在另一实施例中,机器类型可以用来发布虚拟机器的类别。
(280)在另一这样的实施例中,为机器类型创建标准操作系统(SOE)并将其分配给虚拟机器数据库中的该机器类型。在一个实施例中,SOE是具有具体的硬件和软件配置的虚拟机。可以对SOE虚拟机拍快照,并将其用作虚拟机克隆的模板。在一个实施例中,SOE虚拟机的克隆被分配给用户。
(281)在一个实施例中,管理员通过创建SOE虚拟机的快照的连锁克隆(linked clone)而克隆用户所用的SOE。可以在SOE文件夹中连续编号的子文件夹中创建连锁克隆虚拟机。SOE的连锁克隆可以被分配给虚拟机数据中的SOE。
(282)在另一实施例中,管理员通过创建新的SOE、SOE的新的连锁克隆而更新机器类型。管理员更新虚拟机器数据库的机器类型记录中的SOE指针已指向新SOE,并将旧的SOE标记为被取代。管理员可以通过创建新的虚拟机并安装软件、或者创建现有SOE的完整克隆并更新它而创建新的SOE。例如,管理员可以创建新的虚拟机并安装Microsoft Windows XPProfessional、然后安装Windows XP SP1、然后安装Microsoft Office2003,或者管理员可以对已经安装了Windows XP和Microsoft Office2003的现有的SOE进行完全克隆,并安装Windows XP SP1以实现相同的SOE。可以在新的SOE文件夹中创建新的SOE并在虚拟机数据库中创建新的SOE记录。当用户完成了被替代的SOE的连锁克隆时可以删除它们,并且在所有连锁克隆都被删除之后可以删除被替代的SOE。
(283)在有些实施例中,虚拟机可以被指定为共享虚拟机。在一个实施例中,共享虚拟机是指定由多个用户使用的虚拟机映像的一个实例。在另一个这样的实施例中,共享虚拟机是由一个用户在一段时间使用然后在不用时还回给可用虚拟机池。在又一这样的实施例中,在共享虚拟机的映像被执行时,用户可以改变该映像但一旦该虚拟机被关闭就不能保留对它的任何改变。在这个实施例中,当映像被关闭时或者用户结束会话时所有改变都被丢弃。
(284)在其它实施例中,虚拟机可以被指定为私有虚拟机。在其中一个这样的实施例中,私有虚拟机是被指定为由一个特定用户使用的虚拟机映像的一个实例。只有该用户可以被分配给该映像、启动该映像或执行该映像。在另一这样的实施例中,私有映像可以被配置为在映像被关闭时允许保持所做的改变。在又一这样的实施例中,根据用户的需求,可以配置这些改变使其按照共享映像在映像被关闭时被丢弃。
(285)在有些实施例中,会话管理组件被启动并标识虚拟机。在其中一个这样的实施例中,会话管理组件将用户标识和根据对资源的访问请求标识出的虚拟机类型发送到虚拟机管理组件1200。在另一个这样的实施例中,会话管理组件请求要启动的具体虚拟机的标识。在又一这样的实施例中,会话管理组件请求标识出的虚拟机的配置和虚拟磁盘文件的位置标识。
(286)在有些实施例中,是根据接收到的请求机器的用户标识标识虚拟机的。在其它实施例中,是根据用户对某种类型的虚拟机的请求标识虚拟机的。在其它实施例中,是根据用户对某种类型的计算环境的请求标识虚拟机的。
(287)在有些实施例中,虚拟机管理组件1200将具体虚拟机的标识发送到会话管理组件以启动它。在其中一个这样的实施例中,会话管理组件接着启动该虚拟机。在另一这样的实施例中,虚拟机管理组件启动该虚拟机。
(288)在其它实施例中,虚拟机管理组件将多个虚拟机的标识发送到会话管理组件以启动它们。在其中一个这样的实施例中,会话管理组件可以将可用虚拟机的列表呈现给用户。在另一这样的实施例中,会话管理组件接收到从可用虚拟机列表对一个虚拟机的选择,会话管理组件启动该所选的虚拟机。在其它实施例中,虚拟机管理组件将没有虚拟机对请求访问的用户可用的指示发送到会话管理组件。在又一实施例中,虚拟机管理组件1200将一个现有的、正在执行的虚拟机现在已经被分配给用户的指示发送到会话管理组件。
(289)在又一实施例中,虚拟机管理组件响应访问存储了与多个虚拟机有关的信息的数据库而将一个可用虚拟机的标识发送到会话管理组件,所述信息包括但不限于多个虚拟机的标识、与该多个虚拟机相关联的文件的位置的标识、与该多个虚拟机相关联的访问控制列表的标识以及该多个虚拟机的可用性的标识。
(290)在一个实施例中,当一个虚拟机已经被标识为要启动时,虚拟机管理组件1200根据从会话管理组件接收到的初始请求中的用户标识修改与该虚拟机相关联的访问控制列表。在另一实施例中,虚拟机管理组件1200修改访问控制列表以允许为该用户启动该虚拟机。在又一实施例中,虚拟机管理组件1200将与该虚拟机相关联的附加信息发送到会话管理组件。附加信息可以包括涉及存储与该虚拟机相关联的文件的文件夹的网络共享细节。在又一实施例中,会话管理组件使用附加信息将该文件夹映射到该虚拟机中的一个安装点,例如驱动器盘符。
(291)在有些实施例中,虚拟机映像(即构成该虚拟机的配置和数据文件)被存储在存储区域网络上。在其它实施例中,虚拟机映像被存储在网络附加存储上。在其中一个这样的实施例中,与存储区域网络通信的文件服务器使虚拟机映像可访问,好像它们位于网络附加存储上。
(292)回过去参看图8,配置标识出的虚拟机(步骤814)。简单地说,由中介机器标识出的执行机器执行模拟所请求的计算环境要求的硬件资源的管理程序。会话管理组件在该管理程序中启动配置的虚拟机。为特定的客户机10配置虚拟机。在该客户机和该虚拟机之间建立连接。
(293)现在参看图13,所示框图说明了在由中介机器向请求机器提供对计算环境的访问的系统中的会话管理组件的一个实施例。简单地说,会话管理组件1300包括标识组件1302、执行组件1304以及管理组件1306。
(294)标识组件1302与虚拟机管理组件通信并接收提供了所请求的计算环境的虚拟机的标识。在有些实施例中,标识组件1302与虚拟机管理组件1200通信。在一个实施例中,标识组件1302接收一个执行机器30′的标识以将虚拟机启动到其中。在有些实施例中,标识组件1302标识出所需管理程序在其上执行并且将虚拟机启动到其中的执行机器。在其它实施例中,标识组件1302接收该执行机器的标识。在其中一个这样的实施例中,标识组件1302从中介机器30接收该标识。
(295)在有些实施例中,标识组件1302还包括收发器。在其中一个这样的实施例中,标识组件1302中的收发器接收该请求机器的用户标识并将该用户标识发送到虚拟机管理组件。在另一个这样的实施例中,收发器接收用户所请求的计算环境类型的标识并将该标识发送到虚拟机管理组件1200。在又一这样的实施例中,收发器接收到用户所请求的虚拟机类型的标识并将所请求的虚拟机类型的标识发送到虚拟机管理组件1200。
(296)在有些实施例中,标识组件1302接收提供所请求的计算环境的虚拟机的标识,该虚拟机是根据接收到的请求机器的用户标识而选择的。在其它实施例中,标识组件1302接收提供所请求的计算环境的虚拟机的标识,该虚拟机是根据接收到的所请求的计算环境的类型的标识而选择的。在其它实施例中,标识组件1302接收提供所请求的计算环境的虚拟机的标识,该虚拟机是根据接收到的所请求的虚拟机的类型的标识而选择的。
(297)执行组件1304将虚拟机启动到管理程序中。在一个实施例中,管理程序在执行机器30′上执行。在另一实施例中,执行组件1304与标识组件通信。在又一实施例中,执行组件1304从标识组件1302接收启动虚拟机到其中的管理程序在其上执行的执行机器30′的标识。在另一实施例中,执行组件1304将虚拟机启动到模拟支持该计算环境所需的硬件资源的管理程序中。在有些实施例中,虚拟机服务组件在管理程序中执行。在其它实施例中,虚拟机服务组件于执行在管理程序中的虚拟机提供的客户操作系统中执行。在其中一个这样的实施例中,虚拟机服务组件与会话管理组件1300通信并接收与客户机10相关联的配置信息。
(298)管理组件1306建立请求机和虚拟机之间的连接并管理该连接。在一个实施例中,管理组件1306将与客户机相关联的互联网协议地址提供给请求机的用户。在另一实施例中,管理组件1306将与执行机器相关联的互联网地址提供给请求机器的用户。在又一实施例中,管理组件1306为请求机和虚拟机之间的通信提供代理。在又一实施例中,管理组件1306使用表示层协议建立请求机和虚拟机之间的连接。
(299)尽管上述是独立的功能实体,但应该理解标识组件1302、执行组件1304和管理组件1306可以被提供为单个功能单元,或者由这些组件提供的功能可以被组织在两个或更多组件中。
(300)在有些实施例中,会话管理组件1300建立并管理用户的虚拟机会话。在其中一个这样的实施例中,会话管理组件1300提供的功能包括但不限于:定位虚拟机,启动管理程序,在管理程序中启动虚拟机,连接用户到虚拟机以及管理建立的连接。在另一这样的实施例中,会话管理组件1300发布多个可用的虚拟机。在另一这样的实施例中,会话管理组件1300提供(但不限于):对客户机驱动器的列举,客户机驱动器到虚拟机上的共享文件夹的映射,对管理程序的监控,对由虚拟机提供的操作系统的监控,以及对用户的虚拟机控制面板。
(301)在一个实施例中,会话管理组件1300向用户提供虚拟机控制面板。虚拟机控制面板可以使用户能够切换到虚拟机、关闭虚拟机、重置虚拟机或暂停虚拟机。在有些实施例中,会话管理组件1300只对被授权访问虚拟机控制面板的功能的用户提供虚拟机控制面板。
(302)在有些实施例中,虚拟机服务组件在管理程序中执行。在其中一个这样的实施例中,虚拟机服务组件与会话管理组件1300通信并接收与客户机10相关联的配置信息。在另一这样的实施例中,会话管理组件1300创建到虚拟机服务组件的连接,例如TCP/IP连接,并在所创建的连接上与虚拟机服务组件通信。在又一这样的实施例中,会话管理组件1300将与客户机10相关联的信息(例如初始化参数或客户机监控几何构型(geometry)发送到虚拟机服务组件。
(303)在有些实施例中,会话管理组件1300标识包含所标识的虚拟机的映像的文件夹。在其中一个这样的实施例中,该文件夹包含构成该虚拟机的配置和数据文件。在另一这样的实施例中,会话管理组件1300在启动虚拟机之前将该文件夹安装在执行机器中。在又一这样的实施例中,会话管理组件1300将与该虚拟机相关联的定义数据文件复制到执行机器上。会话管理组件1300可以在会话完成时将定义数据文件复制回所标识的文件夹。在又一这样的实施例中,配置和数据文件被流发送到执行机器,如下所述。
(304)在其它实施例中,会话管理组件1300在虚拟机中列举与客户机10相关联的多个驱动器。在其中一个这样的实施例中,会话管理组件1300创建与该多个驱动器中的各个驱动器相关联的文件夹。在另一个这样的实施例中,会话管理组件1300将与该多个驱动器中的一个驱动器相关联的文件夹存储在包含所标识的虚拟机的安装好的文件夹中。在又一个这样的实施例中,与该驱动器相关联的所存储的文件夹的列表被提供给客户机10的用户。在有些实施例中,位于管理程序或客户操作系统中的协议栈能够通过其它技术进行驱动器映射,包括表示层协议允许的技术。
(305)现在参看图14,所示框图说明了在其中使与客户机10相关联的驱动器为计算环境可用的系统的一个实施例。简单地说,客户机10有与(1)执行机器和(2)该客户机10的用户可用的多个驱动器的连接。
(306)会话管理组件1300创建与该多个驱动器(3)中的每个驱动器相关联的文件夹。在一个实施例中,会话管理组件1300将所创建的与该多个驱动器中的一个驱动器相关联的文件夹存储在虚拟机文件夹1002中,安装好的文件夹包含与所标识的虚拟机相关联的配置和数据文件。在另一实施例中,会话管理组件1300产生存储在虚拟机文件夹1002中的共享文件夹的列表。
(307)会话管理组件1300向虚拟机服务组件通知对虚拟机文件夹1002的变化(4)。在有些实施例中,会话管理组件1300通过重新构造虚拟机文件夹1002中的共享文件夹列表而响应客户机设备中的变化。在其中一个这样的实施例中,会话管理组件1300接收与客户机10相关联的驱动器的标识的修改。在另一这样的实施例中,会话管理组件1300发送标识对虚拟机1002的变化的通知到虚拟机服务组件。
(308)对于每个与虚拟机文件夹1002中的驱动器相关联的文件夹,虚拟机服务组件将映射的客户机驱动器的指示提供给虚拟机(5)。在一个实施例中,虚拟机服务组件将映射的客户机驱动器与虚拟机上的驱动器盘符关联在一起。在另一实施例中,虚拟机服务组件监控对虚拟机文件夹1002中共享文件夹列表的变化。在有些实施例中,与驱动器相关联的所存储的文件夹的列表被提供给客户机10的用户。
(309)在有些实施例中,会话管理组件1300在虚拟机中列举与客户机10相关联的多个打印机。在其中一个这样的实施例中,会话管理组件1300访问打印机服务以获取列举该多个打印机中的一个打印机所要求的授权级别。
(310)在一个实施例中,与客户机10相关联的打印机被共享为网络打印机并且使其能够作为网络资源让虚拟机可访问。在另一实施例中,虚拟机使用TCP/IP和LPR协议产生打印机输出,并且这个输出被拦截并发送到与客户机10相关联的打印机。在又一实施例中,虚拟机发送打印机输出到由管理程序提供的虚拟化硬件资源,例如虚拟机上的COM端口。输出被捕获并发送到与客户机10相关联的打印机。在又一实施例中,管理程序可以提供对虚拟打印机或打印机端口的访问。
(311)回过去参看图8,作为配置过程的一部分,由中介机器标识出的执行机器执行模拟所请求的计算环境所需的硬件资源的管理程序。在一个实施例中,管理程序在中介机器上执行。在另一实施例中,管理程序在执行在中介机器上的终端服务会话中执行。在又一实施例中,管理程序在执行机器上执行。在又一实施例中,管理程序在执行在执行机器上的终端服务会话中执行。在有些实施例中,管理程序可以被执行在客户机10上。
(312)在一个实施例中,管理程序提供执行机器上由所请求的计算环境使用的多个硬件资源。在另一实施例中,管理程序划分执行机器上的多个硬件资源并使这些划分可以用所请求的计算环境所用。在又一实施例中,管理程序模拟执行机器上由所请求的计算环境使用的多个硬件资源。在又一实施例中,管理程序可以划分硬件资源,模拟硬件资源或提供硬件资源,或者三者都做。例如,管理程序可以模拟设备(例如图形卡、网卡和磁盘),划分CPU(的执行时间),虚拟化寄存器、存储器以及它们用来满足它们模拟的硬件上的操作的底层设备(例如RAM和网络接口卡)。
(313)在有些实施例中,会话管理组件1300执行管理程序。在其中一个这样的实施例中,会话管理组件1300以全屏模式执行管理程序。在其它实施例中,会话管理组件1300监控管理程序的执行。在其中一个这样的实施例中,当会话管理组件1300接收到在管理程序中执行的虚拟机已经结束的通知时,会话管理组件1300向虚拟机管理组件1200发送该虚拟机已经结束的通知。在另一这样的实施例中,当用户退出会话时会话管理组件1300接收到通知。
(314)在有些实施例中,管理程序提供执行机上的硬件和虚拟机提供的计算环境之间的硬件抽象层。在其中一个这样的实施例中,在执行机硬件和管理程序间没有操作系统。管理程序可以被称为在“裸机”上执行。在另一这样的实施例中,在执行机器上有操作系统执行,称为宿主操作系统,管理程序从该操作系统中执行。由虚拟机提供的计算环境可以被称为客户操作系统。
(315)在一个实施例中,管理程序在执行机上的宿主操作系统上的终端服务器会话中执行。管理程序可以模拟由虚拟机提供的计算环境所需的硬件资源。管理程序可以划分硬件并提供对划分的访问。管理程序还可以虚拟化现有的硬件,使其看起来像是硬件上的至少一个域,好像该域是访问该硬件的唯一一个域。在另一实施例中,来自计算环境或在计算环境中执行的应用程序或资源的输出被从计算环境传递到由管理程序提供的虚拟化硬件资源。在又一实施例中,管理程序将输出发送到像会话管理组件1300这样的组件。会话管理组件1300可以将接收到的输出送到用户从其访问计算环境的客户机10。在又一实施例中,管理程序将来自虚拟化硬件资源的输出重定向到一个实际的硬件资源,例如网络接口卡。
(316)在有些实施例中,管理程序提供硬件抽象层并创建可以将虚拟机启动到其中的环境,由配置和数据文件构成的虚拟机创建一个计算环境,它可以包含客户操作系统和应用程序或其它资源。在其它实施例中,管理程序提供用于发送定向到虚拟化硬件资源的数据并通过会话管理组件1300将数据重定向到请求机器的功能。在其中一个这样的实施例中,会话管理组件1300和管理程序之间的通信能够从虚拟机到请求机器传输更新,例如音频更新,与图形用户界面相关联的更新,或与串行COM端口输入/输出相关联的更新。在另一这样的实施例中,通信能够从请求机器向虚拟机发送键盘或鼠标或音频更新。在另一管理程序在终端服务器会话中执行的这样的实施例中,管理程序可以将终端服务器驱动器映射到计算环境。
(317)仍然参看图8,虚拟机被配置以让特定的客户机10访问。在有些实施例中,会话管理组件1300接收已经在管理程序中执行的虚拟机的标识。在其它实施例中,会话管理组件1300在管理程序中启动虚拟机。在一个实施例中,会话管理组件1300接收包含构成虚拟机的配置和数据文件的文件夹的标识。在另一实施例中,会话管理组件1300将标识出的文件夹安装在执行机器中。
(318)在有些实施例中,虚拟机服务组件在执行在虚拟机中的客户操作系统中执行。在其中一个这样的实施例中,虚拟机服务组件是运行在网络服务帐户中的系统服务。在另一这样的实施例中,虚拟机服务组件被配置用来在计算环境执行时自动启动执行。在又一这样的实施例中,虚拟机服务组件与会话管理组件1300通信。在其它实施例中,虚拟机服务组件在管理程序中执行。
(319)在有些实施例中,虚拟机服务组件在虚拟机中执行。在其中一个这样的实施例中,在管理程序中启动虚拟机之后,会话管理组件1300建立与虚拟机服务组件的连接,如TCP/IP连接。在另一个这样的实施例中,虚拟机服务组件建立该连接。该连接可以是组件之间的单个多路复用连接或多个独立连接。
(320)在又一个这样的实施例中,会话管理组件1300使用连接将配置信息发送到虚拟机服务组件。该配置信息可以与在客户机10上执行的表示层协议会话相关闻,来自虚拟机的输出被呈现在客户机10中。该配置信息还可以包括与显示设置和变化相关联的信息、客户机驱动器信息和验证数据。
(321)在其它实施例中,虚拟机服务组件接收与请求机器所访问的打印机相关联的信息。在其中一个这样的实施例中,虚拟机服务组件访问网络打印机服务以在虚拟机中创建与请求机器所访问的打印机相连接的打印机。
(322)在其它实施例中,虚拟机服务组件将会话状态消息发送给会话管理组件1300。在其中一个这样的实施例中,虚拟机服务组件发送心跳消息到会话管理组件1300。在另一个这样的实施例中,虚拟机服务组件将保持-活动的消息发送到会话管理组件1300以避免会话管理组件1300关闭该虚拟机。在又一个这样的实施例中,虚拟机服务组件发送消息到会话管理组件1300,该消息提供客户机10的用户已经退出、关闭或暂停与计算环境的会话的指示。虚拟机服务组件可以从验证模块接收用户活动的指示。
(323)仍然参看图8,如上所述,接收对资源的访问请求(步骤802),标识出用于提供对该资源的访问的方法(步骤804),选择虚拟化环境以提供对资源的访问(步骤808)。在有些实施例中,客户机10接收到请求,标识出用于提供访问的方法,并选择虚拟化环境以提供对资源的访问。在其中一个这样的实施例中,移动计算设备连接到称为计算设备的客户机10,客户机10标识出用于提供对计算环境的访问的方法,选出驻留在移动计算设备上的存储器中的便携计算环境并提供对该便携计算环境的访问。
(324)向前参看图89A和89B,示出了存储设备和计算设备。简单地说,存储设备存储与计算环境(例如便携计算环境)相关联的数据,计算环境在有些实施例中包括虚拟化软件、虚拟机映像和用户数据。一个计算设备连接到存储设备、执行虚拟机并根据存储设备中存储的数据提供对计算环境的访问。
(325)仍然参看图89A,更详细地,存储设备8905存储一个或多个用户的便携计算环境8920。在一个实施例中,存储设备8905可以是任意类型和形式的硬件驱动器,包括微硬盘驱动器。在另一实施例中,存储设备8905可以是任意类型和形式的便携存储设备,例如闪存驱动器或USB驱动器,或者任意类型和形式的便携存储介质,例如CD或DVD。在又一实施例中,存储设备8905包括闪存卡、存储棒、多媒体卡或安全数字卡。在有些实施例中,存储设备8905可以存储应用程序,包括字处理或办公应用程序、ICA客户端、RDP客户端、建立任意类型和形式的虚拟专有网络(VPN)或SSL VPN连接的软件、加速网络通信或应用程序交付的软件、或任意其它类型和形式的应用程序。
(326)在一个实施例中,存储设备8905可以存储虚拟机映像。在另一实施例中,存储设备8905可以包含用于发送所存储的数据到计算设备8910的发送器。在又一实施例中,存储设备8905可以包括用于访问所存储的数据、传输所存储的数据并接收数据以进行存储的收发器。在又一实施例中,存储设备8905可以包含包括用于在计算设备上执行虚拟机的应用程序的所存储的数据。
(327)在有些实施例中,存储设备8905被嵌入在移动计算设备中。在其它实施例中,存储设备8905与移动计算设备相连。在其它实施例中,存储设备8905包括可以从计算设备移除的便携存储设备。
(328)存储设备8905存储与计算环境相关联的数据。该数据包括便携计算环境8920。在一个实施例中,便携计算环境被认为是便携的,是因为它可以被轻松、方便地携带并从一个计算设备8910运输到另一个计算设备8910′。在另一实施例中,便携计算环境8920被认为是便携的,是因为该计算环境可以在任意适当的计算设备8910上被建立或执行,而只需要对计算设备8910做很小的改动甚至不做改动,或者在另一实施例中只对计算设备8910做很少的维护或管理甚至不做任何维护或管理。在又一实施例中,便携计算环境8920包括代表计算机系统100的桌面环境或其中一部分的多个文件,其中用户希望在计算设备8910上执行。在又一实施例中,便携计算环境8920可以代表用户在其下操作家用或办公桌面计算机的环境。在有些实施例中,便携计算环境8920代表用户可以访问的一个或多个应用程序。
(329)便携计算环境8920可以包括虚拟机映像8925。在一个实施例中,虚拟机映像8925包括计算环境映像,包括执行计算环境8920所需的任意信息、数据、文件、软件、应用程序和/或操作系统,包括通过虚拟化软件8921执行计算环境8920所需的文件。在另一实施例中,虚拟机映像8925包括执行提供对用户所请求的计算环境的访问的虚拟机所需要的配置和数据文件。在又一实施例中,虚拟机映像8925包括上述虚拟机映像。
(330)便携计算环境8920还可以包括用户数据8930,包括但不限于用户的任意数据、信息、文件、软件或应用。在一个实施例中,用户数据8930被存储在虚拟机映像8925中,或者作为虚拟机映像8925的一部分被存储。在另一实施例中,用户数据8930可以由存储设备8905的或计算设备8910的任意软件、程序或应用来创建、编辑或提供。
(331)便携计算环境8920可以包括虚拟化软件8921。在有些实施例中,虚拟化软件8921可以包括让用户能够访问、读和/或写虚拟化软件8921和/或虚拟机映像8925中包括或提供的任意用户数据8930的任意适当的手段或机制。在其中一个这样的实施例中,虚拟化软件8921可以跟踪、管理和同步在用存储设备8905上提供的用户数据8930建立的计算环境8920′期间对用户数据8930的访问、读和/或写。在另一个这样的实施例中,可以只通过虚拟化软件8921或建立的计算环境8920′访问用户数据8930。在又一个这样的实施例中,当存储设备8905没有与计算设备120相连接时或者当计算环境8920′不执行时,存储设备8905的任意软件、程序或应用都可以访问用户数据8930。在又一个这样的实施例中,用户数据8930可以包括在建立的计算环境8920′的会话期间创建的数据和文件。
(332)计算设备8910可以是上面结合图1A和图1B所说明的任意类型和形式的计算机系统。在一个实施例中,计算设备8910是上述客户机10。在另一实施例中,计算设备8910和存储设备8905之间的连接向客户机10的用户提供了对所请求的资源的访问。在又一实施例中,当在计算设备8910和存储设备8905之间建立连接时,计算设备8910接收对资源的访问请求。在又一实施例中,根据从存储设备8905接收到的信息标识出提供对该资源的访问的方法。
(333)在一个实施例中,计算设备8910有存储元件128。在另一实施例中,计算设备8910有网络接口118′与网络150相连。在又一实施例中,计算设备8910有用于访问存储设备8905或计算设备8910′中存储的数据的收发器。
(334)在有些实施例中,计算设备8910包括存储设备8905没有提供的运行或性能特征。在其中一个这样的实施例里,计算设备8910包含存储设备8905没有包括的元件,例如处理器或存储器。在另一个这样的实施例里,计算设备8910提供I/O设备、显示设备、安装介质、或其它外设,例如对存储设备8905不可用的键盘或打印机。在又一个这样的实施例中,计算设备8910可以提供期望由存储设备8905的用户使用的特性、资源或外设。例如,用户可能希望通过网络150上的连接访问可用的远程机器30′上提供的文件或应用。在又一个这样的实施例中,计算设备8910提供对存储设备8905或者存储设备8905的用户不可用的网络的访问,例如机器群组38。
(335)在一个实施例中,计算设备8910根据由存储设备8905提供的便携计算环境8920建立计算环境8920′。计算设备8910根据虚拟化软件8921或8921′、虚拟机映像8925和/或用户数据230建立虚拟机8925′和虚拟化层8922以执行计算环境8920′。
(336)在有些实施例中,虚拟化允许多个具有异质操作系统的虚拟机独立、并行地运行在相同的物理机器8910上。在一个实施例中,虚拟化软件8921可以包括虚拟机映像。虚拟机可以包括跨平台的X86PC模拟器,例如由bochs.sourceforge.net的BochsProject所发布的产品、或位于Palo Alto,California的VMware所生产和发布的VMware产品、或者由Softricity公司生产和发布的产品、或者由位于Herndon,Virginia的SWSoft公司生产和发布的Virtuozzo产品、或者由位于Redmond,Washington的Microsoft公司生产和发布的Microsoft VirtualPC产品。在另一实施例中,虚拟化软件8921包括由位于Palo Alto,California的AppStream公司生产和发布的AppStream产品,或者由位于Irvine,California的Stream Theory公司生产和发布的AppExpress产品。
(337)计算设备8910可以使用计算环境8920′需要的计算机系统100b的任意其它计算资源。在有些实施例中,管理程序8923提供计算环境8920′所需要的虚拟化硬件资源。在其它实施例中,管理程序8923通过虚拟化层8922提供对计算环境的执行所需的硬件资源的访问。在其中一个这样的实施例中,管理程序8923提供硬件资源。在另一个这样的实施例中,管理程序8923虚拟化硬件资源。在又一个这样的实施例中,管理程序8923划分现有的硬件资源并提供对划分后的硬件资源的访问。
(338)在有些实施例中,在虚拟化层上执行的虚拟机8925′提供对计算环境8920′的访问。在其它实施例中,会话管理组件1300执行虚拟机8925。在其它实施例中,虚拟化软件8921或8921′执行虚拟机8925。在其中一个这样的实施例中,便携计算环境8920包括用于在计算设备上虚拟化用户可访问资源(例如操作系统、桌面、应用程序以及任意硬件计算资源)的任意类型和形式的软件。在其它实施例中,虚拟机映像8925被访问以执行虚拟机8925′。在其中一个这样的实施例中,虚拟化软件8921或8921′访问该虚拟机映像。
(339)在有些实施例中,虚拟化软件8921可以包括用于虚拟化服务器的软件,例如由位于Redmond,Washington的Microsoft公司生产和发布的Microsoft Virtual Server产品,或者由linux-vserver.org上的Linux Vserver Project发布的Linux Vserver产品。在其它实施例中,虚拟化软件8921还可以包括解释器或实时编译器,例如首先由位于SantaClara,California的Sun Microsystems生产的JAVA Virtual Machine(JAVA虚拟机,JVM),或者由Microsoft公司生产的Common LanguageRuntime(CLR,通用语言运行时)解释器。
(340)在有些实施例中,计算设备8910在与存储设备8905相连之前将虚拟化软件8921′存储或安装在存储元件128中。在一个实施例中,虚拟化软件8921′不需要被安装在计算设备8910上,相反它能够从存储设备8905被执行。在另一个这样的实施例中,计算设备8910以每个连接为基础安装并执行虚拟化软件8921。在这个实施例中,计算设备8910可以在建立的计算环境8920′结束之后从存储元件128移除虚拟化软件8921。在又一个实施例中,计算设备8910在第一个连接上安装并执行虚拟化软件8921。在又一个实施例中,在有其它连接时,如果计算设备8910检测到虚拟化软件8921的变化,例如更新的版本,计算设备8910就更新虚拟化软件8921,或者安装更新版本的虚拟化软件8921。在其它实施例中,计算设备8910从存储元件128′′或者通过网络150可以访问的远程机器30获取虚拟化软件8921。
(341)在一个实施例中,虚拟化软件8921用来在计算设备8910上建立虚拟化层8922。在另一实施例中,虚拟化层8922提供将应用或硬件资源从操作系统去耦或分离的抽象层。在又一个实施例中,虚拟化层8922包括寄载或运行另一个操作系统或应用(例如虚拟机8925)的应用。
(342)在有些实施例中,管理程序8923包括虚拟化软件8921。在其它实施例中,会话管理组件1300包括虚拟化软件8921。在其它实施例中,宿主计算设备8910在存储元件128中存储虚拟化软件8921′。在其它实施例中,计算设备8910访问虚拟化软件8921′的远程拷贝。
(343)在有些实施例中,虚拟化层8922和/或虚拟机8925在计算设备8910上提供执行环境。在其中一个这样的实施例中,每个执行环境是同一执行环境的一个唯一实例,而在另一个这样的实施例中,每个执行环境可以是不同执行环境的实例。每个执行环境可以与其它执行环境隔离,或者不可由其它执行环境访问。在其它实施例中,虚拟化层8922和/或虚拟机8925提供执行上下文、空间或“沙箱”(sandbox)以隔离在同一操作系统上运行的进程和任务。
(344)在一个实施例中,虚拟化层8922与会话管理组件1300通信。在有些实施例中,会话管理组件1300是在计算设备8910的管理程序8923或操作系统和提供对客户操作系统的虚拟机抽象的一个或多个虚拟机8925之间的一层中执行的软件。在其它实施例中,如上所述,会话管理组件1300可以驻留在计算设备8910之外并与计算设备8910的管理程序8923或操作系统通信。在其它实施例中,会话管理组件1300可以从存储设备8905装载、运行或操作虚拟机映像8925以执行虚拟机8925′。在其它实施例中,会话管理组件1300和管理程序8923被合并到同一应用、软件或其它可执行指令中以提供虚拟化层8922。在其它实施例中,会话管理组件1300与计算环境8920中执行的虚拟机服务组件通信。
(345)在有些实施例中并且仍然参看图89A,计算设备8910包括装载机制8940,它可以包括软件、硬件或任意软硬件组合。在一个实施例中,装载机制8940包括自动运行配置文件。在另一实施例中,存储设备8905可以包括装载机制8940。在又一个实施例中,存储设备8905可以在自动运行文件中包括装载机制8940。在有些实施例中,存储设备8905上的装载机制8940根据存储设备8905中存储的便携计算环境8920在计算设备8910上建立计算环境8920′。在其它实施例中,计算设备8910的装载机制8940′建立计算环境8920′。在其它实施例中,存储设备8905的装载机制8940和计算设备8910的装载机制8940′共同工作以建立计算环境8920′。
(346)在一个实施例中,装载机制8940包括驱动程序,例如用于连接到和/或访问存储设备8905或其中的存储元件128的设备驱动程序或者内核态或用户态驱动程序。在另一个实施例中,装载机制8940包括任意类型和形式的可执行指令,例如用于访问存储元件128或存储设备8905的程序、库、应用程序、服务、进程、线程或任务。在又一个实施例中,装载机制8940访问存储元件128上的任意类型和形式的数据和信息以根据这里所说明的操作建立用户环境8920′。例如,在有些实施例中,装载机制8940读取存储元件128中或存储设备8905上的自动运行配置文件。在有些实施例中,装载机制8940包括宿主计算设备8910的操作系统通过其能够在连接时识别出存储设备8905的即插即用(PnP)机制,并装载驱动程序以连接到存储设备8905。
(347)在一个实施例中,装载机制8940在检测到存储设备8905和计算设备8910之间的连接时启动虚拟化软件8921和/或用户环境8920′在计算设备8910上的装载、建立和/或执行。在另一个实施例中,装载机制8940可以包括与根据便携计算环境8920在计算设备8910上建立计算环境8920′的验证和/或授权有关的任意规则、逻辑、操作和/或功能。在又一实施例中,装载机制8940可以确定计算设备8910上虚拟化软件8921′的存在和/或虚拟化软件8921和8921′之间的版本差异。在又一实施例中,装载机制8940可以在计算设备8910上存储、装载和/或执行虚拟化软件8921或8921′。在又一实施例中,装载机制8940可以在计算设备8910上存储、装载和/或执行虚拟机映像8925,因为虚拟机8925提供对计算环境8920′的访问。在又一实施例中,装载机制8940可以包括或提供任意类型和形式的用户界面,例如图形用户界面或命令行界面。
(348)在有些实施例中,虚拟化软件8921、便携计算环境8920和/或装载机制8940是根据由位于Redwood城,California的U3LLC提供的U3应用程序设计规范或USB智能驱动器设计和构造的。例如,装载机制8940可以包括U3发射台(launchpad)程序,并且虚拟化软件8921和/或便携用户环境120可以包括基于U3的应用程序。
(349)现在参看图89B,所示流程图说明了在用于通过存储设备提供对计算设备上的计算环境的访问的方法中所采用的步骤的一个实施例。简单地说,用于提供对计算环境的访问的方法包括在存储设备中存储与计算环境相关联的数据的步骤(步骤8950)。计算设备连接到存储设备(8960)。根据存储在该存储设备中的数据,在该计算设备上执行的虚拟机提供对该计算环境的访问(8970)。
(350)更详细地,存储设备8905存储与便携计算环境8920相关联的数据(步骤8950)。在一个实施例中,存储设备8905存储与该计算环境相关联的数据。在另一实施例中,存储设备8905存储虚拟机映像8925。在又一实施例中,存储设备8905存储与包括至少一个应用程序的计算环境相关联的数据。在又一实施例中,存储设备8905存储与包括一个操作系统的计算环境相关联的数据。
(351)在一个实施例中,存储设备8905存储包括操作系统在内的数据。在另一个实施例中,存储设备8905存储包括应用程序在内的数据。在又一个实施例中,存储设备8905存储用于在计算设备上执行虚拟机的应用程序。在又一个实施例中,存储设备8905存储用于在计算设备上执行虚拟机的虚拟化软件。
(352)在有些实施例中,存储设备8905可以包括用于建立存储设备8905和计算设备之间的连接的连接器。在其它实施例中,存储设备8905驻留在计算设备中,例如移动计算设备。在其中一个这样的实施例中,存储设备8905被嵌入移动计算设备中。在其它实施例中,存储设备8905包括可以从计算设备移除的便携存储设备。
(353)计算设备连接到存储设备(步骤8960)。存储设备8905可以通过任意适当的方式和/或机制连接到计算设备8910。在一个实施例中,存储设备8905通过移动计算设备连接到计算设备8910。在另一个实施例中,存储设备8905被嵌入到可与计算设备8910相连的移动计算设备中。
(354)在连接后,计算设备8910可以接收对资源的访问请求。在一个实施例中,该请求是对桌面环境的请求。在另一个实施例中,该请求是对一个或多个应用程序的请求。在又一个实施例中,该请求是对虚拟机的请求。
(355)在有些实施例中,可以做出通过虚拟化环境提供对所请求的资源的访问的决定。在其中一个这样的实施例中,该决定是按照上面结合图8所说明的那样做出的。在另一个这样的实施例中,该决定是根据从存储设备8905接收到的信息(例如需要该决定的规则)做出的。
(356)在一个实施例中,计算设备8910访问存储设备8905以访问便携计算环境8920。在另一个实施例中,计算设备8910从存储设备8905获取虚拟化软件8921以建立计算环境8920′。在又一个实施例中,计算设备8910不从存储设备8905获取虚拟化软件8921,因为计算设备8910能够访问存储元件128中的虚拟化软件8921或通过网络150访问虚拟软件8921。在又一个实施例中,计算设备8910从存储设备8905获取虚拟化软件8921的一部分。例如,存储设备8905上的虚拟化软件8921可以是更新后的版本或者已经更新了对于计算设备8910上的虚拟化软件8921′的文件。在有些实施例中,存储设备8905发送信息到计算设备8910。在其中一个这样的实施例中,存储设备8905发送信息以及对资源的访问请求。
(357)根据存储设备中存储的数据,执行在计算设备上的虚拟机提供对计算环境的访问(步骤8970)。在一个实施例中,计算设备8910从存储设备8905获取数据。在另一个实施例中,计算设备8910访问存储设备8905以获取用来执行虚拟机的虚拟机映像8925。在又一个实施例中,计算设备8910访问存储设备8905以获取标识可以为计算设备8910访问的便携计算环境8920的位置的数据或信息。例如,存储设备8905可以包括标识与虚拟机映像8925所存储的位置相关联的统一资源定位符(URL)的用户数据8930,该URL可以由计算设备8910通过网络150访问。在又一个实施例中,计算设备8910访问由用户数据8930所标识的存储元件,例如存储虚拟机映像8925的网络150上的存储元件或远程机器30。
(358)在有些实施例中,计算设备8910将存储设备8905安装为计算设备8910可以访问的存储设备,例如磁盘。在其中一个这样的实施例中,计算设备8910将存储设备安装为可移除介质。在其它实施例中,装载机制8940访问存储设备8905。
(359)计算设备8910建立用于执行或提供对计算环境8920′的访问的环境。在一个实施例中,可以在计算环境8920′中执行虚拟机提供对所请求的资源的访问。在另一个实施例中,虚拟机是所请求的资源。在又一个实施例中,虚拟机8925′执行虚拟机8925″。
(360)在一个实施例中,计算设备8910根据存储设备8905中存储的虚拟机映像8925执行虚拟机。在另一个实施例中,计算设备8910根据存储设备8905中存储的数据执行虚拟机8925′。在又一个实施例中,计算设备8910根据存储设备中存储的策略执行虚拟机。
(361)在一个实施例中,计算设备8910获取存储设备8905中存储的数据。在另一个实施例中,计算设备8910使用存储设备8905中存储的应用程序访问该数据。在又一个实施例中,计算设备8910通过执行提供对存储设备中存储的信息所标识的一个或多个应用程序的访问的操作系统提供对计算环境的访问,该操作系统和该一个或多个应用程序能够访问存储设备8905中存储的用户数据。
(362)在一个实施例中,计算设备8910安装和/或装载虚拟化软件8921以建立虚拟化层8922。在有些实施例中,虚拟化软件8921被设计和构造为便携应用,它能够在计算设备8910上执行、装载或建立虚拟化层8922而且不需要安装虚拟化软件8921。在其它实施例中,虚拟化软件8921被通过安装脚本自动安装到计算设备8910上。在其中一个这样的实施例中,虚拟化软件8921被安装而且不需要重启。在另一个这样的实施例中,虚拟化软件8921被安装,而且虚拟化层8922被相对于用户透明地建立。在其它实施例中,虚拟化层8922是用存储在计算设备8910上的或通过网络150访问到的虚拟化软件8921′建立的。
(363)在有些实施例中,计算设备8910执行管理程序8923以建立虚拟化层8922。在其它实施例中,计算设备8910上与远程机器30′上的管理程序8923′通信的管理程序8923建立虚拟化层8922。在其它实施例中,与会话管理组件1300通信的管理程序8923建立虚拟化层8922。在其中一个这样的实施例中,在虚拟化层8922建立之后,会话管理组件1300按照上面结合图8所说明的那样标识、提供和/或执行虚拟机。在其它实施例中,装载机制8940建立虚拟化层8922。在进一步的实施例中,计算设备8910建立虚拟化层8922,虚拟机服务组件在虚拟化层8922中执行。
(364)在一个实施例中,在存储设备8905连接到计算设备8910之前就已经建立了虚拟化层8922。例如,可以为另一计算环境8920′或在同一或不同的存储设备8905的前一次连接期间已经建立了虚拟化层8922。在有些实施例中,计算设备8910和/或装载机制8940建立虚拟化层8922并驱使、开始或执行会话管理组件1300和/或管理程序8923。在其它实施例中,计算设备8910和/或装载机制8940在装载或执行虚拟机8925时执行会话管理组件1300和/或管理程序8923。
(365)计算设备8910根据便携计算环境8920提供对计算环境8920′的访问(步骤8970)。在一个实施例中,计算设备8910和/或装载机制从存储设备8905访问虚拟机映像8925并在建立的虚拟化环境8922中将虚拟机映像8925执行为虚拟机8925′。在另一个实施例中,计算设备8910和/或装载机制8940在检测到网络150上的连接时用虚拟化层8922自动装载、执行或者建立计算环境8920。在又一个实施例中,计算设备8910和/或装载机制8940在检测到存储元件128中便携计算环境8920的标识或其存在时自动装载、执行或者建立计算环境8920和虚拟化层8922。
(366)在有些实施例中,用户可以通过任意类型和形式的用户界面从存储设备8905选择虚拟机映像8925以执行为虚拟机8925′。在其中一个这样的实施例中,虚拟化软件8921、虚拟化层8922、管理程序8923或装载机制8940可以显示用户界面以让用户标识虚拟机映像8925和/或根据虚拟机映像8925执行虚拟机8925′。在另一个这样的实施例中,客户机(例如ICA客户机、RDP客户机或X11客户机)在计算设备8910上执行并将该用户界面提供给用户。
(367)在有些实施例中,用户可以在使用建立的计算环境8920′的过程期间访问、读和/或写用户数据8930。在其中一个这样的实施例中,计算设备8910的用户可以访问、读用户数据8930和/或写用户数据8930到存储设备8905。在另一个这样的实施例中,计算设备8910的用户可以编辑或修改用户数据8930,或者可以在用户数据8930中创建新的数据和信息。
(368)在其它实施例中,计算设备8910的用户可以访问、读用户数据和/或将用户数据写入计算设备8910的存储元件128′。在其它实施例中,计算设备8910可以用存储设备8905上的用户数据8930同步计算设备8910上的用户数据8930。在其中一个这样的实施例中,计算设备8910使用虚拟化层8922或装载机制8940同步用户数据8930。在其它实施例中,存储设备8905可以有用于在存储设备8905和计算设备8910之间同步数据的程序或应用。
(369)在有些实施例中,存储设备8905可以在建立的计算环境8920′期间的任意时间点上从计算设备8910断开。在其它实施例中,存储设备8905可以在计算环境8920′在计算设备8910上被结束之后断开。在其它实施例中,计算环境8920′在存储设备8905从计算设备8910断开后被自动终止。在其它实施例中,计算环境8920′可以在存储设备8905从计算设备8910断开之后保持建立在计算设备8910上。在其中一个这样的实施例中,一旦计算环境8920′被建立在计算设备8910上,存储设备8905就可以被断开。
(370)在有些实施例中,存储设备8905能够访问、读用户数据8930和/或将用户数据8930写入便携计算环境8920的任意部分。在其中一个这样的实施例中,尽管没有在计算设备8910上建立或虚拟化便携计算环境8920,存储设备8905仍然能够从用户数据8930访问、读取和/或写入用户数据8930。在其它实施例中,用户可以使用建立的计算环境8920′中的第一个应用程序访问用户数据8930的文件。在其它实施例中,用户可以使用存储设备8905上的第二个应用程序以访问用户数据8930的同一文件。在其它实施例中,虚拟化软件8921或虚拟机映像8925允许访问用户数据8930,即使虚拟化软件8921或虚拟机映像8925没有执行或运行。
(371)尽管图89A和89B总的是用存储设备8905中存储的便携计算环境8920阐述的,但存储设备8905可以存储多个便携计算环境8920用于在计算设备8910上建立相应的多个计算环境8920′。在有些实施例中,计算设备8910、装载机制8940或虚拟化层8920为用户提供用户界面以从存储设备选择一个便携计算环境建立计算环境8920。例如,存储设备8905或计算设备8910可以有便携计算环境选择机制,将结合图92A和图93A对其做进一步阐述。在其它实施例中,计算设备8910、装载机制8940或虚拟化层8922根据计算设备的特征(例如操作系统类型)或根据标识用于该计算设备的便携计算环境的用户数据使用该多个便携计算环境中的一个。
(372)现在参看图90A,说明移动计算设备9005。简单地说,移动计算设备9005可以是前面结合图1A和图1B所说明的任意类型和形式的计算机系统。在一个实施例中,移动计算设备9005包括存储设备,例如结合图89A和89B所说明的存储设备8905。在另一个实施例中,移动计算设备9005与存储设备8905相连。在另一实施例中,移动计算设备9005包括可以从计算设备移除的便携存储设备。在又一实施例中,移动计算设备9005有网络接口118与网络150上的远程机器30或客户机10相连,例如计算设备8910。存储设备8905可以存储便携计算环境8920,而便携计算环境8920在有些实施例中包括虚拟化软件8921、虚拟映像8925和用户数据8930。
(373)在有些实施例中,移动计算设备9005存储与计算环境相关联的数据,执行虚拟机并根据移动计算设备9005中存储的数据提供对计算环境的访问。在其中一个这样的实施例中,移动计算设备9005包括所存储的虚拟机映像。在另一个这样的实施例中,移动计算设备9005包括用于在计算设备上执行虚拟机的应用程序。在又一个这样的实施例中,移动计算设备9005通过执行操作系统并访问由移动计算设备上存储的数据所标识的一个或多个应用而提供对计算环境的访问,该操作系统和该一个或多个应用能够访问移动计算设备上的用户数据。在其它实施例中,移动计算设备9005存储由存储设备(例如前面结合图89A和图89B所说明的存储设备8905)提供的存储中的一个或多个用户的便携计算环境8920。
(374)在一个实施例中,移动计算设备9005对所存储的数据进行解密。在另一个实施例中,移动计算设备9005阻止移动计算设备9005的用户对移动计算设备9005提供的计算环境的未经验证和未经授权的访问。
(375)现在参看图90B,所示流程图说明了在用于由移动计算设备提供计算环境的方法中所采用的步骤的一个实施例。简单地说,该方法包括在移动计算设备9005中存储与计算环境相关联的数据的步骤(步骤9020)。根据所存储的数据,在该移动计算设备上执行的虚拟机提供对该计算环境的访问(步骤9025)。
(376)更详细地说,移动计算设备9005存储与计算环境相关联的数据(步骤9020)。在一个实施例中,移动计算设备9005从与移动计算设备9005相连的存储设备接收与该计算设备相关联的数据。在另一个实施例中,移动计算设备将与计算环境相关联的数据存储在内嵌在该移动计算设备中的存储设备8905中。在又一个实施例中,移动计算设备9005存储与计算环境相关联的用户数据。在又一实施例中,移动计算设备9005存储虚拟机映像。
(377)在一个实施例中,移动计算设备9005存储与包括至少一个应用程序的计算环境相关联的数据。在另一个实施例中,移动计算设备9005存储与包括一个操作系统的计算环境相关联的数据。在又一实施例中,移动计算设备9005存储包括一个操作系统的数据。在又一实施例中,移动计算设备9005存储包括一个应用程序的数据。在有些实施例中,移动计算设备9005存储用于执行虚拟机的应用程序。在其它实施例中,移动计算设备9005存储用于执行虚拟机的虚拟化软件。
(378)在有些实施例中,对资源的访问请求可以被移动计算设备9005接收。在其中一个这样的实施例中,该请求是针对桌面环境的。在另一个这样的实施例中,该请求是针对一个或多个应用的。在又一个这样的实施例中,该请求是针对虚拟机。在又一个这样的实施例中,该请求是针对对计算环境的访问。
(379)在有些实施例中,可以决定通过虚拟化环境提供对所请求的资源的访问。在其中一个这样的实施例中,该决定是按照前面结合图8所描述的那样而做出的。在另一个这样的实施例中,该决定是根据从移动计算设备9005接收到的信息而做出的,例如需要该决定的规则。
(380)根据所存储的数据,在移动计算设备上执行的虚拟机提供对计算环境的访问(步骤9025)。在一个实施例中,移动计算设备9005中存储的一个应用程序执行以访问与该计算环境相关联的数据。在另一个实施例中,移动计算设备9005执行虚拟化软件,该虚拟化软件至少一部分存储在移动计算设备9005上。在又一个实施例中,移动计算设备9005通过执行操作系统并访问移动计算设备上存储的一个或多个应用而提供对计算环境的访问,该操作系统和该一个或多个应用能够访问移动计算设备9005中存储的用户数据。
(381)在一个实施例中,移动计算设备9005根据该移动计算设备9005中存储的数据执行虚拟机。在另一个实施例中,移动计算设备9005根据该移动计算设备9005中存储的策略执行虚拟机。在又一个实施例中,移动计算设备9005执行提供对所请求的资源或计算环境的访问的虚拟机,该虚拟机是根据移动计算设备9005中存储的虚拟机映像而被执行的。在又一个实施例中,移动计算设备9005将虚拟机的执行转移到计算设备8910。
(382)尽管图90A和90B总的是与移动计算设备9005的存储设备8905中存储的一个便携用户环境一起阐述的,但移动计算设备9005可以存储多个用于在移动计算设备9005上建立相应的多个计算环境8920′的便携计算环境8920。
(383)现在参看图91A,描述了一个移动计算设备和一个计算设备。简单地说,该移动计算设备存储与计算环境相关联的数据。该计算设备与该移动计算设备相连,执行虚拟机并根据该移动计算设备中所存储的数据提供对该计算环境的访问。在一个实施例中,在该计算设备上执行的虚拟机提供对该计算环境的访问。
(384)在一个实施例中,移动计算设备9005可以是前面结合图1A和图1B所说明的任意类型和形式的计算机系统。在另一个实施例中,移动计算设备9005包括前面结合图90A和图90B所说明的存储设备8905。在另一个实施例中,该移动计算设备可以是前面结合图90A和图90B所说明的移动计算设备9005。在有些实施例中,移动计算设备9005提供对存储设备(例如前面结合图89A和图89B所说明的存储设备8905)中提供的存储器中的一个或多个用户的便携计算环境8920的访问。
(385)在有些实施例中,移动计算设备9005和计算设备8910可以有相同的处理器或计算机体系结构,例如基于X86的处理器体系结构。在其它实施例中,移动计算设备9005可以有与计算设备8910不同的处理器或体系结构。例如,计算设备8910可以是SPARC(可缩放处理器体系结构),移动计算设备9005可以是基于ARM的体系结构。在有些实施例中,移动计算设备9005和计算设备8910可以操作使用相同位数的处理器、数据地址或总线,例如32-位或64-位的处理器或总线。在其它实施例中,移动计算设备9005和计算设备8910可以操作具有不同位的体系结构的处理器和/或数据总线。此外,移动计算设备9005和计算设备8905在一个实施例中可以操作同一操作系统,在另一个实施例中可以操作不同的操作系统。例如,移动计算设备9005可以操作PALM操作系统,而计算设备8910可以运行WINDOWS操作系统。
(386)在一个实施例中,移动计算设备9005有多个处理器。一个处理器可以有比其它处理器更高的性能特性,并且每个处理器可以共享一个或多个存储器或存储元件。例如,存储元件(例如磁盘驱动器或便携存储设备)可以包括计算环境。移动计算设备9005还可以有切换机制以根据操作条件和在该设备上执行的应用而在使用具有更高性能特征的第一处理器和使用具有较低性能特征的第二处理器之间切换。具有较低性能特征的处理器可以用来执行较低功耗的应用程序,例如日历访问和电子邮件等典型的PDA功能。当应用程序要求较高功耗时,移动计算设备9005可以自动将该应用的执行切换到更强大的处理器上。
(387)计算设备8910连接到移动计算设备,执行虚拟机并根据移动计算设备9005中存储的数据提供对计算环境的访问。在一个实施例中,计算设备8910可以将移动计算设备9005的存储设备8905安装为计算设备8910的可移除硬盘驱动器或存储元件128′。在有些实施例中,移动计算设备9005可以是计算设备8910的即插即用(PnP)设备,这样由位于Redmond,Washington的Microsoft公司生产的PnP协议就可以(例如)通过I/O设备130a-130n或网络接口118、118′而被用在移动计算设备9005和计算设备8910之间。
(388)在有些实施例中,计算设备8910包括移动计算设备9005未提供的运行或性能特征。在其中一个这样的实施例中,计算设备8910有比移动计算设备9005的处理器102和存储器122更强大的处理器102′和/或更大的存储器122′。在另一个这样的实施例中,计算设备8910提供I/O设备130b,显示设备,安装介质或其它外设,例如移动计算设备9005不可用的键盘或打印机。在又一个这样的实施例中,计算设备8910可以提供期望由移动计算设备9005的用户使用的特征、资源或外设。例如,用户可以想要访问通过跨越网络150的连接可用的远程机器30′上提供的文件或应用。在又一个这样的实施例中,计算设备8910提供对移动计算设备9005或移动计算设备9005的用户不可用的网络150上的机器(例如机器群组38中的那些机器)的访问。
(389)在一个实施例中,计算设备8910根据移动计算设备9005中提供的便携计算环境8920提供对计算环境8920′的访问。计算设备8910执行虚拟机8925′和虚拟化层8922以根据虚拟化软件8921或8921′、虚拟机映像8925或用户数据230执行计算环境8920′。在有些实施例中,计算设备包括用于访问移动计算设备9005中存储的数据的收发器。
(390)在有些实施例中,根据移动计算设备9005中存储的便携计算环境8920,移动计算设备9005上的装载机制启动在计算设备8910上的计算环境8920′的建立。在其它实施例中,计算设备8910的装载机制8940启动计算环境8920′的建立。在又一个实施例中,移动计算设备9005上的装载机制与计算设备8910的装载机制8940共同工作来建立计算环境8920′。
(391)现在参看图91B,所示流程图说明了用于通过移动计算设备提供对计算设备上的计算环境的访问的方法中所采用的步骤的一个实施例。简单地说,该方法包括在移动计算设备中存储与计算环境相关联的数据的步骤(步骤9155)。计算设备连接到移动计算设备(步骤9160)。根据移动计算设备中存储的数据,在计算设备上执行的虚拟机提供对计算环境的访问(步骤9165)。
(392)移动计算设备存储与计算环境相关联的数据(步骤9155)。在一个实施例中,移动计算设备9005可以如上结合图90A和图90B所述存储与计算环境相关联的数据。在一个实施例中,移动计算设备9005可以包括嵌入在移动计算设备9005中的存储设备,例如结合图89A到90B所说明的存储设备8905。
(393)计算设备8910通过任意适当的手段和/或机制连接到移动计算设备9005(步骤9160)。在一个实施例中,计算设备8910通过移动计算设备9005连接到存储设备,例如前面结合图89A和图89B所说明的存储设备8905。在连接时,计算设备8910可以接收对资源的访问请求。在一个实施例中,该请求是对桌面环境的访问。在另一个实施例中,该请求是针对一个或多个应用。在又一个实施例中,该请求是针对虚拟机。在有些实施例中,可以决定通过虚拟化环境提供所请求的资源的访问。在其中一个这样的实施例中,该决定是按照上面结合图8所说明的那样做出的。在另一个这样的实施例中,该决定是根据从移动计算设备9005接收到的信息而做出的,例如需要该决定的规则。
(394)在一个实施例中,计算设备8910访问移动计算设备9005以获得便携用户环境8920。在另一个实施例中,计算设备8910获得虚拟化软件8921以建立虚拟化环境8922。在又一个实施例中,计算设备8910不从移动计算设备9005获得虚拟化软件8921,因为计算设备8910可以访问存储元件128′中的虚拟化软件8921或者通过网络150访问虚拟化软件8921。在又一个实施例中,计算设备8910从移动计算设备9005获取虚拟化软件8921的一部分。例如,移动计算设备9005上的虚拟化软件8921可以是更新后的版本或者具有关于计算设备8910上的虚拟化软件8921′的更新后的文件。在有些实施例中,移动计算设备9005发送信息到计算设备8910。在其中一个这样的实施例中,移动计算设备9005利用对资源的访问请求发送该信息。
(395)在一个实施例中,计算设备8910访问移动计算设备9005以获得虚拟机映像8925。在另一个实施例中,计算设备8910访问移动计算设备9005以获得标识可以由计算设备8910访问的任意存储设备中便携用户环境8920的位置的数据或信息。例如,移动计算设备9005可以包括标识与虚拟机映像8925的存储位置相关联的统一资源定位符(URL)的用户数据8930,该URL可以由计算设备8910通过网络150访问。在又一个实施例中,计算设备8910访问由用户数据8930所标识的存储元件,例如,网络150上存储了虚拟机映像8925的存储元件。在有些实施例中,计算设备8910将移动计算设备9005安装为计算设备8910可用的存储元件,例如磁盘。例如,在一个实施例中,计算设备8910将移动计算设备9005安装为可移除介质。在一个实施例中,装载机制8940访问移动计算设备8905。
(396)在有些实施例中,计算设备8910通过执行操作系统并访问由移动计算设备上存储的数据所标识的一个或多个应用而提供对计算环境的访问。该操作系统和该一个或多个应用能够访问存储设备上的用户数据。在其它实施例中,计算设备阻止移动计算设备9005的用户对计算设备8910提供的计算环境的未经验证或未经授权的访问。在其它实施例中,计算设备8910对移动计算设备9005上存储的数据进行解密。
(397)根据移动计算设备9005中存储的数据,在计算设备890上执行的虚拟机提供对计算环境的访问(步骤9165)。在一个实施例中,计算设备8910通过执行虚拟机8925建立用于提供对计算环境8920′的访问的虚拟化环境。在另一个实施例中,可以在用户环境8920′中执行虚拟机来提供对所请求的资源的访问。在又一个实施例中,虚拟机就是所请求的资源。在有些实施例中,计算设备8910根据移动计算设备9005中存储的虚拟机映像8925执行虚拟机。在其它实施例中,计算设备8910根据移动计算设备9005中存储的数据执行虚拟机。
(398)在一个实施例中,执行移动计算设备9005中存储的应用程序来访问与计算环境相关联的数据。在另一个实施例中,计算设备8910通过访问移动计算设备9005中存储的虚拟化软件8921的至少一部分而执行虚拟化软件8921′。
(399)在一个实施例中,计算设备8910执行虚拟化软件8921以建立虚拟化层8922。在有些实施例中,虚拟化软件8921通过安装脚本被自动安装在宿主计算设备8910上。在其中一个这样的实施例中,虚拟化软件8921被安装而且不需要重启。在另一个这样的实施例中,虚拟化软件8921被安装而且虚拟化层8922也被相对于用户透明地建立起来。
(400)在有些实施例中,计算设备8910执行管理程序8923以建立虚拟化层8922。在其它实施例中,位于计算设备8910上并与远程机器30′上的管理程序8923′通信的管理程序8923建立虚拟化层8922。在另外的其它实施例中,与会话管理组件1300通信的管理程序8923建立虚拟化层8922。在其中一个这样的实施例中,在建立虚拟化层8922之后,会话管理组件1300如同前面结合图8所说明的那样在虚拟化层8922中标识、提供和/或执行虚拟机。在其它实施例中,加载机制8940建立虚拟化层8922。在一个实施例中,计算设备8910建立虚拟化层8922,虚拟机服务组件在该层中执行。
(401)在一个实施例中,在移动设备9005连接到计算设备8910之前,已经建立虚拟化层8922。例如,可能已经为另一个用户环境8920′或者在相同或不同移动计算设备9005的前一次连接期间建立起了虚拟化层8922。在有些实施例中,计算设备8910和/或加载机制8940建立虚拟化层8922并驱动、启动或执行会话管理组件1300和/或管理程序8923。在其它实施例中,计算设备8910和/或加载机制8940在加载或执行虚拟机8925时执行会话管理组件1300和/或管理程序8923。
(402)在有些实施例中,计算设备8910根据便携计算环境8920建立、执行或提供计算环境8920′。在一个实施例中,计算设备8910和/或加载机制8940访问来自移动计算设备9005的虚拟机映像8925,并将该虚拟机映像8925装载或执行为所建立的虚拟化环境8922中的虚拟机8925。在另一个实施例中,计算设备8910和/或加载机制8940在检测到网络150上的连接时用虚拟化层8922自动装载、执行或建立计算环境8920。在又一实施例中,计算设备8910和/或加载机制8940在检测到移动计算设备9005上便携计算环境8920的存在或标识时自动装载、执行或建立计算环境8920和虚拟化层8922。
(403)在有些实施例中,用户可以通过任意类型和形式的用户界面从移动计算设备9005选择虚拟机映像8925以执行为虚拟机8925。在其中一个这样的实施例中,虚拟化软件8921、虚拟化层8922、管理程序8923或加载机制8940可以显示用户界面以让用户标识虚拟机映像8925和/或根据虚拟机映像8925执行虚拟机8925。在另一个这样的实施例中,客户机(例如ICA客户机、RDP客户机或X11客户机)在计算设备8910上执行并向用户提供用户界面。
(404)在有些实施例中,用户可以在使用所建立的用户环境8920′期间访问、读和/或写用户数据8930。在其中一个这样的实施例中,用户宿主计算设备8910可以访问、读用户数据8930和/或写用户数据8930到移动计算设备9005。在另一个这样的实施例中,计算设备8910的用户可以编辑或修改用户数据8930,或者可以在用户数据8930中创建新的数据和信息。
(405)在其它实施例中,计算设备8910的用户可以访问、读计算设备8910的存储元件128′和/或向其写入用户数据。在其它实施例中,计算设备8910可以用移动计算设备8905上的用户数据8930同步计算设备8910上的用户数据8930。在其中一个这样的实施例中,计算设备8910使用虚拟化层8922或加载机制8940同步用户数据8930。在其它实施例中,移动计算设备9005可以具有用于在移动计算设备9005和计算设备8910之间同步数据(例如文件和文件夹)的程序或应用。
(406)在一个实施例中,移动计算设备9005可以从计算设备8910断开。在有些实施例中,移动计算设备9005可以在使用所建立的计算环境8920′期间的任意时间点断开。在其它实施例中,移动计算设备9005可以在计算环境8920′在计算设备8910上被终止以后断开。在其它实施例中,用户环境8920′在移动计算设备9005从计算设备8910断开之后被自动终止。在一个实施例中,计算环境8920′可以在移动计算设备9005从计算设备8910断开之后仍然保持建立在计算设备8910上。在有些实施例中,一旦计算环境8920′在计算设备8910上被建立,移动计算设备9005就可以断开。
(407)在有些实施例中,移动计算设备9005能够访问、读用户数据8930和/或将其写入便携计算环境8920的任意部分。例如,在一个实施例中,尽管便携计算环境8920没有被建立或虚拟化在计算设备8910上,移动计算设备9005仍然能够访问、读取用户数据8930和/或向其写入。在一个实施例中,用户可以使用所建立的计算环境8920′中的第一应用访问用户数据8930的文件。在另一个实施例中,用户可以使用移动计算设备9005上的第二应用访问用户数据8930的相同文件。在有些实施例中,尽管虚拟化软件8921或虚拟映像8925没有执行或运行,但虚拟化软件8921或虚拟机映像8925也允许对用户数据8930的访问。
(408)在有些实施例中,计算设备8910、加载机制8940或虚拟化层8920提供用户界面让用户从存储设备选择便携计算环境以建立计算环境8920。例如,移动计算设备9005或计算设备8910可以具有便携计算环境选择机制,下面将更详细地阐述。在其它实施例中,计算设备8910、加载机制8940或虚拟化层8922根据计算设备8910的特征(例如操作系统类型)或根据标识用于计算设备8910的便携计算环境的用户数据来使用多个便携计算环境中的一个。
(409)现在参看图92A,在一个实施例中,计算设备8910还包括计算环境选择器9250。简单地说,图92A说明了通过网络150与计算设备8910相连接的移动计算设备9005。移动计算设备9005还包括存储元件128、I/O设备或接口130以及加载机制8940。移动计算设备9005在存储元件128中存储了一个或多个便携计算环境8920a-8920n。在有些实施例中,存储元件128包括存储设备,例如前面结合图90A和图90B所说明的存储设备8905。
(410)在有些实施例中,移动计算设备9005没有用户输入I/O设备130和/或用户输出I/O设备130。在其它实施例中,移动计算设备9005从与计算设备8910的连接(例如,USB连接)获取或导出动力。在其它实施例中,移动计算设备9005是下列类型的卡:致密闪存、存储棒、多媒体卡、安全数字或智能媒体。
(411)在一个实施例中,存储元件128存储了多个计算环境和多个虚拟机映像。在另一个实施例中,存储元件128存储了提供不同操作系统或不同应用之一的多个虚拟机映像中的一个或多个,而不仅是可以为计算设备访问的至少一个虚拟机映像。在又一个这样的实施例中,存储元件128以加密格式存储与至少一个计算环境和至少一个虚拟机映像相关联的数据中的一个。
(412)在有些实施例中,移动计算设备9005存储与至少一个便携计算环境8920相关联的数据。在其中一个这样的实施例中,移动计算设备9005存储与多个便携计算环境8920a-8920n相关联的数据。在另一个这样的实施例中,便携计算环境8920a-8920n中的每一个都包括相同的虚拟化软件8921a-8921n。在又一个这样的实施例中,便携计算环境8920a-8920n包括不同的虚拟化软件8921a-8921n。
(413)在其它实施例中,便携计算环境8920a-8920n可以包括至少一个与另一个虚拟化软件8921b相同的虚拟化软件8921a。在其它实施例中,便携计算环境8920a-8920n可以包括至少一个与其它虚拟化软件8921b不同的虚拟化软件8921a。在又一个实施例中,可以有一个虚拟化软件8921的拷贝用于存储元件128中的每个虚拟机映像8925a-8925n。
(414)在一个实施例中,虚拟机映像8925a-8925n中的一个或多个提供对相同操作系统的访问或者被用在相同操作系统上。在另一个实施例中,虚拟机映像8925a-8925n中的一个或多个包括不同的操作系统或者在不同的操作系统上执行。在有些实施例中,虚拟机映像8925a-8925n共享相同的用户数据8930。在其它实施例中,虚拟机映像8925a-8925n可以各自具有用户数据8930a-8930n的不同集合。在一个实施例中,虚拟机映像8925a-8925n的其中一个可以提供对第一计算环境的访问,例如工作桌面环境。在另一实施例中,虚拟机映像8925a-8925n的其中一个可以提供对第二计算环境的访问,例如家庭桌面环境。在有些实施例中,虚拟机映像8925a-8925n可以提供对包括用户的一组一个或多个便携应用的计算环境的访问。移动计算设备9005可以存储任意期望的一组一个或多个用户环境8920a-8920n。
(415)移动计算设备9005包括用于连接移动计算设备9005到计算设备(例如计算设备8910)的连接器。在一个实施例中,该连接器可以通过下列一种方式连接到计算设备8910:无线连接、USB连接、火线连接、蓝牙连接、Wi-Fi连接、网络连接和对接连接。
(416)移动计算设备9005包括加载机制8940,用于在移动计算设备通过该连接器连接到计算设备时将至少一个计算环境从存储元件自动加载到计算设备上。在一个实施例中,加载机制8940自动将该至少一个计算环境安装到计算设备8910上。在另一个实施便中,加载机制8940自动在计算环境8910上执行该至少一个计算环境。在又一个实施例中,加载机制8940访问存储元件128中存储的至少一个虚拟机映像以执行虚拟机,该虚拟机提供对计算环境的访问。
(417)在有些实施例中,移动计算设备9005包括所提供的用户界面以让用户从多个虚拟机映像中选择一个在计算设备8910上执行。在其它实施例中,计算设备8910提供用户界面。
(418)在一个实施例中,选择机制(例如计算环境选择器9250)提供用户界面以让用户选择便携计算环境8920a-8920n中的一个以在计算设备8910上执行或建立。计算环境选择器9250可以包括软件、硬件或软硬件的任意组合。在有些实施例中,计算环境选择器9250有图形用户界面,它提供了移动计算环境9005中存储的一个或多个便携计算环境8920a-8920n的列表。在其它实施例中,计算环境选择器9250可以包括一个命令行界面。在一个实施例中,计算环境选择器9250包括存储在移动计算设备9005或计算设备8910上或由它们提供的软件。在一个实施例中,虚拟化软件8921、虚拟化层8922或便携计算环境8920包括计算环境选择器9250。在另一个实施例中,在移动计算设备9005上执行计算环境选择器9250。在有些实施例中,计算环境选择器9250包括移动计算设备9005上的硬件和软件机制以让用户选择便携计算环境8920a-8920n中的一个。例如,移动计算设备9005可以通过屏幕或可视显示单元提供带拇指轮的基于文本的用户界面以选择便携计算环境8920a-8920n。
(419)现在参看图92B,所示流程图说明了用于通过移动计算设备在计算设备上建立计算环境的方法中采用的步骤的另一个实施例。通过连接载有便携计算环境8920a-8920n的移动计算设备9005到计算设备8910,用户在计算设备8910上建立虚拟化计算环境8920′。简单地说,在步骤9255,移动计算设备9005被连接到计算设备8910,并且在步骤9260,计算设备8910检测该连接。在步骤9265,在有些实施例中,用户从存储设备中选择一个便携计算环境8920a-8920n以用在计算设备8910上。在步骤9270,存储元件128中的便携计算环境8920a-8920n被解密。在步骤9275,虚拟化软件8921被自动装载到计算设备8910上。在步骤9280,计算设备8910根据便携计算环境8920a-8920n,例如通过访问虚拟机映像8925,在虚拟化环境8922中执行虚拟机8925′。在步骤9285,计算设备8910通过虚拟化计算环境8920′控制对计算设备8910的访问。
(420)更详细地,在步骤9255,移动计算设备9005通过任意适当的装置和/或机制被连接到计算设备8910。在步骤9260,计算设备8910检测该连接。在有些实施例中,计算设备8910的操作系统检测到移动计算设备9005的连接。在其它实施例中,设备管理器检测移动计算设备9005的连接。在其它实施例中,即插即用管理器检测到移动计算设备9005的连接。在其它实施例中,计算设备8910的设备驱动程序检测到该连接。在另一个实施例中,加载机制8940′检测到移动计算设备9005的连接。
(421)在有些实施例中,在检测到连接后,计算设备8910可以自动安装、装载和执行设备驱动程序、软件、应用程序、进程、服务、线程或任务来按照结合图89A和89B、90A和90B以及91A和91B所说明的那样来执行这里所说明的操作。在其它实施例中,在检测到连接后,计算设备8910可以执行对移动计算设备9005的用户的任意类型和形式的验证和授权。
(422)在步骤9265,用户从存储元件128选择便携计算环境8920a-8920n以建立为计算设备8910上的计算环境8920′。例如,用户可以通过计算环境选择器9250标识或选择便携计算环境8920a-8920n以在计算设备8910上运行。在一个实施例中,计算设备8910显示提供了来自移动计算设备9005的便携计算环境8920a-8920n的列表的用户界面,以让用户选择而在计算设备8910上建立。在有些实施例中,计算设备8910通过移动计算设备9005的存储元件128(例如通过自运行文件)执行所标识的应用程序。在另一个实施例中,移动计算设备9005有一个可视显示单元,它显示用户界面以让用户选择便携计算环境8920a-8920n中的一个。在有些实施例中,便携计算环境8920a-8920n的其中一个被标识为缺省计算环境8920以在计算设备8910上建立。在另一个实施例中,便携计算环境8920a-8920n被按照顺序或者优选或优先级标识。在一个实施例中,移动计算设备9005包括一个便携计算环境8920。在这个实施例中,该移动计算环境8920不需要由用户选择就自动被计算设备8910使用。在另一个实施例中,尽管在移动计算设备9005上只有一个移动计算环境8920,但用户还是可以选择那一个移动计算环境8920。
(423)在步骤9270,计算设备8910可以对存储元件128上被加密的任意部分执行解密。在一个实施例中,存储元件128包括加密的文件系统。在另一个实施例中,可以对虚拟化软件8921、虚拟映像8925和/或用户数据8930或其中任意部分加密。在一个实施例中,计算设备8910通过加载机制8940′、虚拟化软件8920或任意的可执行指令集合使用密钥对存储元件128的一部分进行解密。在有些实施例中,该密钥可以是公共密钥。在其它实施例中,该密钥可以是私有密钥。在一个实施例中,解密密钥可以是基于身份的,例如基于通过计算设备8910验证的用户的身份。在另一个实施例中,用户的验证证书(例如用户ID和/或密码)可以用来生成或获取解密密钥。例如,用户的验证证书可以用来获取存储在数据库中的密钥。在另一个实施例中,计算设备8910根据对用户的验证证书执行算法以及公共密钥(例如由可信第三方提供的公共密钥)而产生私有密钥。在又一个实施例中,移动计算设备9005可以存储由计算设备8910用来验证用户和/或生成解密密钥的密钥。在有些实施例中,计算设备8910使用票据授权来获取用于对存储设备128的加密部分解密的票据。在进行这里所说明的操作中可以使用任意类型和形式的验证机制,例如基于密码的验证或生物统计验证。在一个实施例中,使用了令牌来提供双因子验证,例如由位于Bedford,MA的RSA Security公司生产的令牌。
(424)在步骤9275,计算设备8910如前面结合图89A-89B、图90A-90B和图91A-91B所说明的那样在宿主计算设备8910上提供或建立虚拟化层8922。
(425)在步骤9280,计算设备8910自动装载、执行或建立虚拟机8925a-8925n以在虚拟化层8922上提供对便携计算环境8920a-8920n的访问。在一个实施例中,计算设备8910和/或加载机制8940从存储元件128访问虚拟机映像8925a-8925n,并装载或执行虚拟机映像8925a-8925n为在所建立的虚拟化环境8922中的虚拟机8925′.在另一个实施例中,计算设备8910如前面结合图89A-89B、图90A-90B和图91A-91B所说明的那样装载、执行或建立虚拟机。
(426)在步骤9285,在有些实施例中,以安全模式建立计算环境8920′或虚拟机8925。在一个实施例中,所建立的计算环境8920′保护从计算环境8920′外部的计算设备8910的环境对计算环境8920的用户数据8930或各个部分的访问。在一个实施例中,虚拟化软件8921和/或虚拟化层8922确保虚拟机8925′的内容在运行在计算设备8910上时保持安全。在有些实施例中,虚拟化软件8921和/或虚拟化层8922确保以持久的方式使得没有任何输入或输出对计算设备8910的环境可用。例如,在一个实施例中,虚拟化软件8921和/或虚拟化层8922可以禁止宿主环境和虚拟机8925′之间的剪贴板访问。在另一个实施例中,虚拟化软件8921和/或虚拟化层8922禁止对计算设备8910的文件系统或其中的部分的访问。在其它实施例中,虚拟化软件8921和/或虚拟化层8922禁止虚拟机8925′页面调度到计算设备8910的页文件。在一个实施例中,虚拟机8925′使用移动计算设备9005上的存储元件128用于文件和数据操作。在有些实施例中,虚拟化层8922充当虚拟机8925′和宿主环境之间的防火墙。在另一个实施例中,虚拟化软件8921和/或虚拟化层8922可以提供一种配置机制(例如用户界面)以选择哪些动作可以在计算设备8910和虚拟机8925′之间执行和/或哪些数据可以在它们之间共享。
(427)尽管这种方法通常被阐述为从多个便携计算环境8920a-8920n之一建立计算环境8920′,但也可以在计算设备8910上建立多个计算环境8920′、8920″。例如,可以用来自移动计算设备9005的第一便携计算环境8920a在计算设备8910上建立第一计算环境8920′,用来自移动计算设备9005的第二便携计算环境8920b在计算设备8910上建立第二计算环境8920″。
(428)现在参看图93A-93D,所示框图说明了用于移动计算设备连接到一个或多个硬件资源的系统和方法的实施例。硬件资源可以提供对多种资源的访问,例如与移动计算设备的相应资源比具有更强大的处理能力、大小、容量或性能的处理器或存储器。图93A说明了移动计算设备9005的实施例,连接到对接站或具有处理器、存储器和其它计算资源为移动计算设备所用的设备。图93B说明了移动计算设备的实施例,通过对接机制连接到第二硬件资源以使用该第二硬件资源的处理器、存储器和/或资源。图93C说明了提供到第二硬件资源(如计算设备)的连接性以使用该第二计算资源的处理器、存储器和/或资源的对接站的一个实施例。图93D说明了按照如图93A-93C中所示环境中说明的那样提供一个或多个硬件资源给移动计算设备的方法中采用的步骤的一个实施例。在有些实施例中,可以按照结合图89A-89B、90A-90B、91A-91B和92A-92B所说明的任意系统和方法中在该硬件资源上建立便携计算环境。在其它实施例中,使用该硬件资源的处理器、存储器和/或资源访问移动计算设备的计算环境。
(429)现在参看图93A,简单的说,所示系统包括与硬件资源9302相连接的移动计算设备9005。移动计算设备9005有中央处理单元102。硬件资源9302有中央处理单元102′。在一个实施例中,硬件资源9302包括提供对该硬件资源9302的访问的对接站9310。在另一个实施例中,对接站9310包括处理器102′和存储器122′。在又一个实施例中,移动计算设备按照结合图90A-B、91A-B和92A-B所说明的那样提供移动计算设备9005的功能性。
(430)移动计算设备9005包括用于连接移动计算设备9005到硬件资源9302的连接机制9305。移动计算设备9005使用中央处理单元102完成初始工作量并在连接到硬件资源9302后使用硬件资源9302的中央处理单元102′完成后续工作量。在一个实施例中,在连接到硬件资源9302时或之后,移动计算设备9005使用连接机制9305切换到使用硬件资源9302的处理或计算能力。例如,移动计算设备9005可以在连接到对接站9310之后在硬件资源9302上执行计算环境8920。
(431)在一个实施例中,移动计算设备9005通过跨越网络150的连接连接到硬件资源9302。在另一个实施例中,移动计算设备9005通过(设计和构造用来连接到任意类型和形式的移动计算设备和/或与之对接或通信的)I/O设备机制130a-130n被对接到硬件资源9302。在一个实施例中,移动计算设备9005通过对接连接器被对接到硬件资源9302。例如,设备9005或9310的其中一个可以具有对接连接器,并且设备9005或9310的其中一个可以有相应的、设计用来接收该连接器的接口或连接机制。
(432)连接机制9305可以包括使移动计算设备9005能够访问硬件资源9302的软件、硬件或任意软硬件组合。在有些实施例中,连接机制9305包括任意类型和形式的集成电路,例如能够完成这里所说明的任意操作的现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)或专用集成电路(ASIC)。
(433)在一个实施例中,连接机制9305包括下列之一:无线连接、USB连接、火线连接、蓝牙连接、Wi-Fi连接、网络连接和对接连接。
(434)在有些实施例中,连接机制9305使得移动计算设备9005的系统或母板能够使用硬件资源9302的处理器102′和存储器122′。在其它实施例中,连接机制9305与移动计算设备9005的任意系统或数据总线通信以发送和接收指导移动计算设备9005使用硬件资源9302的资源(例如对接站9310的处理器102′和存储器122′)的信号。在有些实施例中,连接机制9305可以与硬件资源9302的系统或数据总线通信以使移动计算设备9005能够使用硬件资源9302的资源。
(435)在一个实施例中,连接机制9305可以使移动计算设备9005在连接到或对接到硬件资源时再引导、重新启动或复位。在另一个实施例中,连接机制9305可以允许实时切换以使用硬件资源9302的计算资源而不需要再引导或重新启动。在有些实施例中,连接机制9305将数据从移动计算设备9005上的存储器122发送到硬件资源9302的存储器122′。在其它实施例中,连接机制9305将进程的执行从移动计算设备9005上的处理器102转移到硬件资源9302的处理器102′。在其它实施例中,移动计算设备9005将中央处理和管理转移到硬件资源9302。在其它实施例中,连接机制9305提供了对移动计算设备9005上处理器102和/或存储器122与硬件资源9302上的处理器102′和/或存储器122′的结合使用。例如,当连接到硬件资源9302时,移动计算设备9005可以作为多处理器设备运行。
(436)在有些实施例中,移动计算设备9005和/或连接机制9305维护移动计算设备9005上处理器102和/或存储器122的状态。这样,在有些这样的实施例中,在从硬件资源9302断开之后,移动计算环境9005继续连接到硬件资源9302之前的状态。在其它这样的实施例中,连接机制9305将数据、信息和执行或控制从处理器102′和/或存储器122′转移到移动计算设备9005的处理器102和/或存储器122′。
(437)在一个实施例中,连接机制9305包括任意类型和形式的用户界面以接收与到硬件资源9302的连接、硬件资源的使用以及硬件资源之间数据和控制的转移有关的用户输入。例如,连接机制9305可以对接到硬件资源9302之后显示一个图形用户界面让用户能够设置、配置、控制和/或管理对硬件资源9302的使用。
(438)在有些实施例中,硬件资源9302使用移动计算设备9005的存储元件128提供对计算环境的访问。在其中一个这样的实施例中,硬件资源9302执行相连的移动计算设备9005的存储元件128中存储的操作系统。在另一个这样的实施例中,硬件资源9302安装相连的移动计算设备9005的存储元件128以为其访问。在又一个这样的实施例中,用户使用硬件资源9302的操作系统或计算环境,但执行移动计算设备9005的存储元件128上的应用程序并访问其上的数据。在又一个这样的实施例中,移动计算设备9005可以存储便携应用程序以在硬件资源9302中执行。
(439)在一个实施例中,硬件资源9302执行虚拟机以提供对移动计算设备9005中存储的计算环境的访问。在另一个实施例中,硬件资源9302执行虚拟机,该虚拟机提供对虚拟化计算环境的访问。在又一个实施例中,当移动计算设备9005被连接到硬件资源9302时,由用户通过硬件资源9302访问来自移动计算设备9005提供的存储位置的文件,并且当移动计算设备9005没有与硬件资源9302相连时,由用户通过移动计算设备9005访问该文件。
(440)仍然参看图93A,在一个实施例中,硬件资源9302包括对接站9310,该对接站9310包括计算机系统100。在有些实施例中,该对接站9310可以是前面结合图1A-1B所说明的任意类型和形式的计算机系统100.在其中一个这样的实施例中,如同结合图1A-1B所说明的那样,对接站9310可以包含的组件包括但不限于处理器102′、存储器122、存储元件128、网络接口118′和/或一个或多个I/O设备130a-130n′。在另一个这样的实施例中,对接站9310与显示设备124、键盘126和/或定点设备127相连。对接站9310还可以与其它硬件资源和计算外设相连或提供对它们的访问。在有些实施例中,对接站9310通过网络150提供对另一计算机系统100的资源的访问。
(441)在一个实施例中,硬件资源9302的处理器102′具有比移动计算设备9005的处理器102更高的处理器速度。在另一个实施例中,硬件资源9302的处理器102′与移动计算设备9005的处理器102有不同的处理器体系结构。在又一个实施例中,移动计算设备9005使用处理器102完成初始工作量,并在通过连接机制9305连接到硬件资源9302之后使用处理器102′完成后续工作量。在又一个实施例中,移动计算设备9005确定硬件资源9302的存储器122′相比移动计算设备9005的存储器122有更大的存储器容量并使用硬件资源9302的存储器122′完成后续工作量。
(442)在有些实施例中,移动计算设备9005在没有与硬件资源相连接时使用在第一中央处理单元上执行的第一操作系统,并在与硬件资源相连时使用在第二中央处理单元上执行的第二操作系统。在其中一个这样的实施例中,第二操作系统不同于第一操作系统。
(443)现在参看图93B,说明了硬件资源9302和移动计算设备9005的另一实施例。简单地说,移动计算设备9005跨越网络150连接到对接站9310,接着,对接站9310连接到计算设备8910。在这个实施例中,硬件资源9302包括与计算设备8910相连并与之通信的对接站9310。不是像图93A中所说明的那样提供资源(例如处理器102′和存储器122′),对接站9310通过跨越网络150′的连接提供对第二计算设备8910的资源的访问。在一个实施例中,在连接到对接站9310之后,移动计算设备9005通过跨越网络150和150′的连接使用计算设备8910的资源。
(444)现在参看图93C,说明了硬件资源9302和移动计算设备9005的另一实施例。简单地说,移动计算设备9005通过对接机制9310连接到计算设备8910。在这个实施例中,硬件资源9302包括具有对接机制9310(例如I/O设备或机制130)以对接移动计算设备9005的计算设备8910。在通过对接机制9310连接之后,移动计算设备9005使用计算设备8910的资源,例如处理器和/或存储器。在有些实施例中,硬件资源9302向移动计算设备9005提供对外围计算设备的访问。
(445)在图93A-93C所说明的实施例的任意一个中,如图前面结合图89A-89B、90A-90B、91A-91B和92A-92B更详细说明的那样,硬件资源9302可以提供移动计算设备9005的用户所期望的或者适用于移动计算设备的一个或多个应用程序的、提供了更强的功率、性能或其它运行或性能特征的资源和能力。
(446)现在参看图93D,所示流程图说明了用于向移动计算设备提供一个或多个硬件资源的方法中所采用的步骤的一个实施例。简单地说,移动计算设备使用该移动计算设备9005的第一中央处理单元完成初始工作量(步骤9355)。移动计算设备9005连接到包括第二中央处理单元的硬件资源9302(步骤9360)。移动计算设备使用硬件资源9302的第二中央处理单元完成后续工作量(步骤9365)。
(447)移动计算设备使用第一中央处理单元完成初始的工作量(步骤9355)。在一个实施例中,该移动计算设备是结合前面图1A和1B所说明的计算机100。在另一个实施例中,该移动计算设备是前面结合图90A-92B所说明的移动计算设备9005。
(448)移动计算设备9005连接到包括中央处理单元的硬件资源9302(步骤9360)。在一个实施例中,移动计算设备9005通过任意适当的装置和/或机制连接到硬件资源9302。在有些实施例中,移动计算设备9005连接或者对接到提供了一个或多个资源的对接站9310。在其中一个这样的实施例中,移动计算设备9005连接到具有处理器102′和/或存储器122′的对接站9310。在另一个这样的实施例中,移动计算设备9005连接到提供与第二计算设备8910的连接的对接站9310,该第二计算设备8910包括处理器102′。在又一个这样的实施例中,移动计算设备9005连接到或对接到宿主计算设备8910的对接机制9310。
(449)在有些实施例中,移动计算设备9005和对接站9310可以通过任意有线、无线或者其它类型和形式的连接(包括但不限于无线连接、WiFi连接、USB连接、火线连接、蓝牙连接、网络连接和对接连接)连接在一起。移动计算设备9005和对接站9310可以通过任意类型和形式的协议(例如设备、总线、通信、应用、数据或网络协议)通信。
(450)移动计算设备9005使用硬件资源9302的中央处理单元(步骤9370)。在一个实施例中,移动计算设备9005通过连接机制9305启动对硬件资源9302的处理器102′和/或存储器122′的使用。在另一个实施例中,移动计算设备9005将执行的控制和管理转移到硬件资源9302的中央处理单元。在又一个实施例中,移动计算设备9005将数据和信息转移到硬件资源9302的处理器和/或存储器。在有些实施例中,移动计算设备9005使用硬件资源9302的处理器和/或存储器作为移动计算设备9005的第二处理器和/或存储器。
(451)在一个实施例中,移动计算设备9005连接到包括下列之一的硬件资源9302:具有第二中央处理单元的第一对接站;具有第二中央处理单元的第二计算设备;和提供对具有第二中央处理单元的第三计算设备的访问的第二对接站。
(452)在有些实施例中,移动计算设备9005上的应用程序在处理器102′中执行并使用计算环境9102的存储器122′,并且显示在移动计算设备9005的可视显示单元上。在其它实施例中,在硬件资源9302的处理器上执行并使用其存储器的应用程序从移动计算设备9005的输入设备接收用户输入。在其它实施例中,在硬件资源9302的处理器上执行并使用其存储器的应用程序显示在硬件资源9302的显示设备124上,同时从移动计算设备9005的输入设备接收输入。
(453)在一个实施例中,在硬件资源9302的处理器上执行并使用其存储器的应用程序显示在移动计算环境9005的可视显示单元上,同时从硬件资源9302的输入设备(例如键盘126和定点设备17)接收输入。在有些实施例中,移动计算设备9005的计算环境执行在移动计算设备9005的处理器和存储器上,而且还使用硬件资源9302的资源,例如网络连接、打印机、显示设备、输入设备和/或任一I/O设备120.
(454)在一个实施例中,移动计算设备9005确定第二中央处理单元的处理器速度高于第一中央处理单元的处理器速度,并使用硬件资源的第二中央处理单元完全后续工作量。在另一个实施例中,移动计算设备9005确定第二中央处理单元的处理器体系结构不同于第一中央处理单元的处理器体系结构,并使用硬件资源的第二中央处理单元完成后续工作量。在又一个实施例中,移动计算设备9005标识出移动计算设备9005的存储器和硬件资源9302的第二存储器。在又一个实施例中,移动计算设备9005确定硬件资源的第二存储器的容量大于移动计算设备的第一存储器的容量并使用硬件资源的第二存储器完成后续工作量。
(455)在有些实施例中,硬件资源9302使用移动计算设备9005的一个或多个资源。在其中一个这样的实施例中,硬件资源9302访问移动计算设备9005的存储元件或存储设备,例如存储元件128。在有些实施例中,硬件资源9302安装存储元件128。在另一个这样的实施例中,硬件资源9302启动或重启或建立一个根据所安装的存储元件128上存储的计算环境的环境。在又一个这样的实施例中,硬件资源9302除了硬件资源9302的处理器和/或存储器之外还使用移动计算设备9005的处理器102和/或存储器122。
(456)在有些实施例中,硬件资源9302使用移动计算设备9005的显示设备和/或输入设备。在其它实施例中,硬件资源9302执行基于移动计算设备9005的存储元件128中存储的便携计算环境8920的计算环境8920′。在有些实施例中,便携计算环境8920可以在硬件资源9302中执行但显示在移动计算设备9005上并从其接收输入。
(457)在一个实施例中,硬件资源9302向移动计算设备9005提供对该硬件资源的外围计算设备的访问。在另一个实施例中,移动计算设备9005在没有与硬件资源9302相连时使用在移动计算设备9005上的第一中央处理单元上执行的第一操作系统,在与硬件资源9302相连时使用在硬件资源9302的第二中央处理单元上执行的第二操作系统。在又一个实施例中,第一操作系统不同于第二操作系统。在又一个实施例中,在硬件资源9302上执行的虚拟机向移动设备9005提供对第一操作系统的访问。在有些实施例中,硬件资源9302执行虚拟机以提供对移动计算设备9005中存储的计算环境的访问。在其它实施例中,移动计算设备9005提供对硬件资源9302上的计算环境的访问。在其它实施例中,当移动计算设备9005与硬件资源9302相连时用户通过硬件资源9302访问移动计算设备9005中存储的文件,并在移动计算设备9005没有与硬件资源9302相连时用户通过移动计算设备9005访问移动计算设备9005中存储的文件。
(458)在一个实施例中,移动计算设备9005使用硬件资源9302的处理器提供对移动计算设备9005上存储的计算环境的访问。在另一个实施例中,移动计算设备9005使用硬件资源9302的处理器提供对移动计算设备9005上存储的操作系统的访问。在又一个实施例中,移动计算设备9005使用硬件资源9302的处理器提供对移动计算设备9005上存储的应用程序的访问。在又一个实施例中,根据移动计算设备上存储的虚拟机映像,移动计算设备9005使用硬件资源9302的处理器在该硬件资源上执行虚拟机。在有些实施例中,移动计算设备使用硬件资源9302的处理器提供对该硬件资源上存储的计算环境的访问。
(459)现在参看图94A,所示框图说明了具有多个处理器的移动计算设备的一个实施例。简单地说,移动计算设备9005包括第一处理器102和第二处理器102′。处理器102和102′可以访问移动计算设备9005上的存储器122和/或存储元件128。移动计算设备9005包括用于在第一处理器102和第二处理器102′之间切换的切换机构9405。在有些情况下,移动计算设备9005可以具有一个用于最小功能或待机操作的功率较低的处理器102和用于正常操作或适合应用或需要更强大的处理器能力的功率较大的处理器102。在移动时,用户可以想要访问诸如电子邮件、日历和联系人信息等更像是PDA或智能手机的功能。当访问这样的应用时,移动计算设备9005可以使用功率较低的处理器102以处长电池寿命并节约电能。用户可以在任意时间想要访问具有较高处理器要求或适用性的应用。当访问这些应用时,移动计算设备9005可以使用功率较大的处理器102′。
(460)更详细地说,处理器102和处理器102′可以是相同类型和速度的处理器。在其它实施例中,处理器102和处理器102′可以是不同类型和速度的处理器。在有些实施例中,处理器102包括高于处理器102′的处理速度和/或能力。在其它实施例中,处理器102′包括高于处理器102的处理速度和/或能力。在有些实施例中,处理器102和102′是单核处理器。在其它实施例中,处理器102和102′是多核处理器。在一个实施例中,处理器102是单核处理器而处理器102′是多核处理器,如双核或四核处理器。在又一个实施例中,处理器102和102′包括相同的处理器体系结构和/或由相同的处理器制造商制造。在其它实施例中,处理器102和102′包括不同的处理器体系结构和/或由不同的处理器制造商制造。
(461)在有些实施例中,第一处理器102包括为更低的功耗、更长的电池寿命、移动或便携计算设备的性能和/或应用设计和构造的运行特征。在其中一个这样的实施例中,第一处理器102可以被称为低功率CPU。在其它实施例中,第二处理器102′包括为桌面计算环境、服务器计算环境或其它非移动计算环境的功率、性能和/或应用要求设计和构造的运行特征。在其中一个这样的实施例中,第二处理器102′可以被称为高功率CPU。在其它实施例中,处理器102提供第一级处理或处理器能力,第二处理器102′提供第二级处理或处理器能力。在其中一个这样的实施例中,第二级能力高于第一级。在另一个这样的实施例中,相比第一级,首选第二级能力。在其它实施例中,移动计算设备为适用于第一级功耗和处理能力的一个或多个应用程序使用第一处理器,为适用于第二级功耗和处理能力的一个或多个应用程序使用第二处理器。
(462)切换机构9405启用移动计算设备9005在使用第一处理器102和第二处理器102′或任意多个处理器之间切换。在有些实施例中,切换机构9405包括任意类型和形式的集成电路,例如能够完成这里所说明的操作的现场可编程门阵列(FPGA)、可编程逻辑设备(PLD)或专用集成电路(ASIC)。在有些实施例中,切换机构9405使得移动计算设备9005的系统或母板能够使用第一处理器102。在有些实施例中,切换机构9405使移动计算设备8905的系统或母板能够使用第二处理器102′。在一个实施例中,切换机构9405与移动计算设备9005的任意系统或数据总线通信以发送和/或接收指令移动计算设备9005的信号,以使用第二处理器102′而不是第一处理器102或者类似的使用第一处理器102而不是第二处理器102′。在有些实施例中,切换机构9405可以与移动计算设备9005的系统或数据总线连接和/或通信以发送和/或接收信号,以使用第一处理器102和第二处理器102′二者而不是只使用其中任意一个。
(463)在另一个实施例中,切换机构9405将数据和执行从移动计算设备9005的处理器102转移到处理器102′。在有些实施例中,切换机构9405将中央处理控制和管理从第一处理器102转移到102′,或者从第二处理器102′转移到第一处理器102。在一个实施例中,当在使用处理器102和102′之间切换时,切换机构9405可以使移动计算设备9005再引导、重新启动或复位。在另一个处理器中,切换机构9405可以完成从处理器到处理器的实时切换。
(464)在有些实施例中,切换机构9405识别出在使用一个处理器和另一个处理器之间切换的条件、事件或触发(事件)。在其它实施例中,切换机构根据用户选择切换到第一处理器和第二处理器中的一个。在其中一个这样的实施例中,切换机构9405包括用户界面,例如图形用户界面或命令行用户界面,以让用户标识、指定或配置用于在处理器之间执行切换的条件、事件或触发(事件)。例如,切换机构9405可以根据移动计算设备9005或处理器102、102′的任意运行特征在第一处理器102和第二处理器102′之间自动、手动或以其它方式切换。在其它实施例中,切换机构9405根据第一处理器和第二处理器的负载级别在处理器的使用之间切换。在其它实施例中,切换机构9405根据第一处理器102或第二处理器102′的活动级别(例如任务、进程、应用程序)在处理器的使用之间切换。在有些实施例中,切换机构9405根据功耗级别和/或电池寿命在使用第一处理器和使用第二处理器之间切换。在又一实施例中,切换机构9405根据在移动计算设备9005上激励或执行的应用程序的类型而在处理器的使用之间切换。
(465)在另一个实施例中,切换机构9405包括用户界面以让用户在处理器102、102′之间切换。例如,使用热键、击键组合或者选择任务栏中的图标,用户可以指令、命令或指示移动计算设备9005和/或切换机构9405在处理器之间切换,使用一个处理器而不使用另一个或者同时使用该多个处理器102、102′。
(466)现在参看图94B,所示流程图说明了由移动计算设备用于在多个处理器的使用之间切换的方法的一个实施例。简单地说,移动计算设备使用所设计和构造的第一处理器来提供第一级功耗和处理能力(步骤9455)。切换机构根据移动计算设备的运行特征决定切换移动计算设备到使用第二处理器,第二处理器被设计和构造用来提供第二级功耗和处理能力(步骤9460)。移动计算设备9005根据切换机构的决定使用第二处理器。
(467)更详细地说,移动计算设备9005使用第一处理器(步骤9455)。在一个实施例中,切换机构9405将第一处理器102标识为由移动计算设备9005使用的缺省处理器。在另一个实施例中,移动计算设备9005在其上的操作系统启动、重新启动或者引导时使用第一处理器102。在有些实施例中,用户选择第一处理器102为缺省处理器。在其中一个这样的实施例中,用户可能已经向切换机构9405标识第一处理器102.
(468)切换机构9405根据移动计算设备的运行特征决定切换移动计算设备9005为使用第二处理器102′,第二处理器102′被设计和构造用来提供第二级功耗和处理能力(步骤9460)。在有些实施例中,切换机构9405根据移动计算设备9005的运行条件或特征(例如操作系统、资源使用情况、存储器使用情况、功耗、负载以及进程、应用程序、服务或任务的数量)来决定切换。
(469)在一个实施例中,第二处理器的第二级功耗和处理能力包括大于第一处理器的第一级功耗和处理能力的级别。在另一个实施例中,移动计算设备为适用于第一级功耗和处理能力的一个或多个应用程序使用第一处理器,为适用于第二级功耗和处理能力的一个或多个应用程序使用第二处理器。在又一个实施例中,切换机构9405根据应用程序的执行的开始自动切换到第一处理器或第二处理器之一。
(470)在有些实施例中,切换机构9405根据下列运行特征中的一个或多个自动切换到第一处理器和第二处理器之一:第一处理器或第二处理器之一的负载级别、第一处理器或第二处理器之一的活动级别以及第一处理器或第二处理器之一的功耗级别。在其中一个这样的实施例中,切换机构9405判断第一处理器102的负载、活动或功耗级别是接近、等于或大于第一处理器102的处理能力。在另一个这样的实施例中,切换机构9405判断由用户执行的或由用户请求执行的应用程序的处理器需求是接近、等于或大于第一处理器102的处理能力。
(471)在其它实施例中,如果移动计算设备9005正在使用第二处理器102′的第二级处理能力,切换机构9405确定移动计算设备9005将以更合适的性能或运行级别、或者以用户期望的方式运行。在其它实施例中,用户选择切换到使用第二处理器102′。在其中一个这样的实施例中,用户通过用户界面指示或命令切换机构9405切换移动计算设备9005使用第二处理器102′。
(472)移动计算设备9005使用第二处理器102′(步骤9465)。在一个实施例中,移动计算设备9005使用第二处理器102′而不是第一处理器102。在另一个实施例中,移动计算设备9005除了第一处理器102之外还使用第二处理器102′。在有些实施例中,移动计算设备9005和/或切换机构9405将信息、数据、控制和/或管理转移到第二处理器102′以继续在第一处理器102上执行的操作系统、应用程序、进程、服务或任务的执行。在其它实施例中,由用户启动的新的应用程序或进程在处理器102′上执行。
(473)在有些实施例中,切换机构9405切换到使移动计算设备9005使用第一级处理能力的第一处理器102。在步骤9460,切换机构9405根据设备9005的运行条件或者特征(例如操作系统、资源使用情况、存储器使用情况、功耗、负载以及进程、应用程序、服务或任务的数量)决定切换。例如,在一个实施例中,切换机构9405判断出第二处理器102′的负载、活动性或功耗大于在移动计算设备9005的当前状态中运行它所需的处理能力。在另一个实施例中,切换机构9405判断由用户执行的或由用户请求执行的应用程序的处理器需求是接近、或等于第一处理器102的处理能力。在有些实施例中,切换机构9405判断出由用户执行的或由用户请求执行的应用程序的处理器需求小于第二处理器102′的第二级处理能力。在其它实施例中,如果移动计算设备9005正在使用第一处理器102的第一级处理能力,切换机构9405确定移动计算设备9005将以更适合的性能或运行级别或者以用户期望的方式运行。例如,移动计算设备9005将用第一处理器102以适合用户的方式运行,但还节省电池寿命或降低功耗。在又一个实施例中,用户选择切换到使用第一处理器102。例如,在一个实施例中,用户通过用户界面指示或命令切换机构9405切换移动计算设备9005到使用第一处理器102。在步骤9455,方法9450可以被再次执行以切换移动计算设备9005到使用第一处理器102。
(474)仍然参看图8,在有些实施例中,会话管理组件1300使用连接以发送与客户机10上的监视器有关的信息到虚拟机服务组件。在其中一个这样的实施例中,提供了多监视器几何支持。在另一个这样的实施例中,会话管理组件1300访问多监视器信息并使虚拟机服务组件能够在虚拟机中创建多监视器信息的版本。
(475)在一个实施例中,提供了用于虚拟化客户机的显示环境的技术,该技术是根据客户机的期望显示布局修改和控制应用程序窗体的行为和外观。该技术可以用于为单显示环境模拟或提供多显示设置。一个实施例提供了窗体处理机制以拦截到应用程序窗体的选定消息并且修改到该窗体的消息从而根据期望的显示布局将该窗体显示在客户机上。到窗体的消息提供了应用程序所使用或显示的窗体行为或外观。在一个实施例中,该窗体处理机制提供对应用程序窗体过程的钩子机制、用所设计用来拦截定窗体消息和根据客户机的期望显示布局修改所拦截的窗体消息的参数值的窗体过程代替原来的窗体过程。这样,选定的窗体消息被处理以将窗体的行为或外观提供或者转换成期望的显示布局。
(476)可以在基于服务器的计算环境(例如通过远程显示协议通信的客户机10和远程机器30之间)中实践所说明的技术和机制。可以为单一显示环境设置或配置远程机器30或者在远程机器30上的管理程序中执行的虚拟机,同时为一个或多个显示设备设置或配置客户机10。例如,可能只能为单一显示设备配置或设置WINDOWS服务器操作系统上的会话。服务器可以获取客户机的优选或期望显示布局,并且存储和客户机关联的显示布局,例如将显示布局与客户机上的远程会话关联在一起。窗体消息处理机制可以由服务器用来拦截并修改到代表客户机运行在服务器上的应用程序的窗体的选定消息。修改窗体消息是为了根据与客户机相关联的显示布局提供窗体的行为和外观。这样,由服务器传递到客户机的显示输出包括将根据客户机的显示布局而不是服务器上的会话的显示布局(例如单显示布局)显示在客户机上的显示输出。
(477)使用这里所说明的技术和机制使得用户能够访问基于服务器的计算环境中的远程可用应用程序而不管客户机的监视器布局。服务器不将单一显示与远程会话相关联,而是根据客户机的显示布局提供显示输出。此外,从客户机的角度,远程提供的应用程序将最大化到合适的显示。另外,应用程序的菜单项和其它窗体也可以被正确地显示在应用程序中而不会(例如)表现为与应用程序脱离。另外,在对显示布局进行了更改之后正在被离屏绘制的窗体的问题是通过在检测到离屏窗体时将窗体移动到可视区域而自动处理器。
(478)此外,还可以在本地计算环境中实践这些技术和机制以为只有单显示设备的客户机虚拟化、模拟或提供多监视器环境。尽管客户机可能只有单个显示设备,但可以配置或提供期望的显示布局以指定多个显示。可以使用窗体处理机制根据期望的显示布局而不是实际的监视器布局为客户机上的应用程序拦截和修改窗体消息以控制窗体的行为和外观。这样,用户可以在没有多个显示设备的情况下获得多监视器环境的功能、利益和优势。
(479)现在参看图15A,说明了环境1502的一个实施例。简单地说,在一个实施例中,客户机10可以与显示设备124相连或使用它,在另一个实施例中,客户机10可以与多个显示设备124a-124n相连或使用它们。客户机10包括显示布局1520,它包括客户机10的期望的显示配置,例如针对显示设备124的显示配置。客户机10包括存储元件1525用于存储客户机10的显示布局。客户机10还包括窗体处理机制1550。
(480)更详细地说,显示布局1520包括任意类型和/或形式的信息或数据以标识、指定或说明客户机的期望显示布局配置。在一个实施例中,显示布局1520可以包括任意格式的一个或一组文件。在另一个实施例中,显示布局1520可以包括以任意类型和/或形式存储在客户机10提供的存储设备或存储元件中的任意信息或数据。在一个附加实施例中,显示布局1520可以被提供或存储在任意适当类型和/或形式的数据库中。在更多实施例中,显示布局1520可以被通过任意对象、数据结构或应用编程接口(API)提供。显示布局1520可以包括任意图形元素、文本元素或图形和文本元素的任意组合。显示布局1520可以通过任意适当的方法和/或机制被创建、编辑、配置或提供,例如基于图形和/或文本的工具、程序或应用。在一个实施例中,可以用带有用户界面的图形工具设计、创建、编辑和配置显示布局1520。
(481)显示布局1520可以包括属性、特性、特征、值、设置、外形和其它显示配置信息1522a-1522n以定义客户机的各个显示。显示布局1520可以为期望的显示中的每一个包括显示配置1522a-1522n,物理的或虚拟的,或者别的方式。在有些实施例中,显示布局1520包括对每个显示设备124a-124n的布局、区域、位置、组织或安排的说明。在一个实施例中,显示布局1520包括标识关于每一监视器的相对位置和/或大小的可视或图形布置。在有些实施例中,每个显示1522a-1522n由一个标识符标识,例如名字或编号。另外,显示配置1522a-1522n可以包括监视器类型、屏幕刷新频率、适配器类型、适配器信息、屏幕分辨率、色彩质量、色彩方案、字体大小、背景、按钮和菜单的风格以及屏幕保护程序。
(482)另外,显示配置1522a-1522n可以包括信息或数据以标识或指定每个显示(例如与显示设备124a-124n对应的显示)的分辨率1524a-1524n和/或工作区域1526a-1526n。在一个实施例中,分辨率1524a-1524n标识出显示监视器上包含的像素数或各个色点,以水平轴上的像素数和垂直轴上的像素数表示。如同本领域的技术人员将领会到的那样,显示在显示设备124a-124n上的图像的清晰度取决于显示设备124a-124n的分辨率和大小。在另一个实施例中,工作区域1526a-1526n以像素标识显示设备124a-124n的屏幕区域的可用范围。在有些实施例中,工作区域1526a-1526n不包括用户不可用的屏幕区域范围,例如有菜单、工具栏或任务栏(例如通过WINDOWS操作系统提供的桌面上的任务栏)的屏幕区域部分。
(483)在一个实施例中,显示布局1520被配置以与显示设备124a-124n的数量以及它们可以被客户机访问的可用特性和特征相对应。在其它实施例中,显示布局1520不和与客户机相连的显示设备124a-124n的数量相匹配或对应。例如,客户机10可以有单个显示设备124,但显示布局1520可以被针对多个显示设备124a-124n而配置。一方面,显示布局1520可以被针对是物理或虚拟显示设备的显示设备124a而配置。虚拟显示设备124a被绘制在物理显示设备124a的屏幕区域之外,并且可以被以任意适当的机制和/或方法放置在可视屏幕区域之上或之外,例如切换桌面或者平移或滚动到物理显示设备124a的工作区域之外。虚拟显示设备可以包括分辨率1524a-1524n、工作区域1526a-1526n以及显示配置1522a-1522n中的任意其它数据或信息,仿佛它就是与客户机10相连或将要与之相连的物理显示设备124a-124n。
(484)在有些实施例中,虚拟显示设备的工作区域1526a-1526n与物理显示设备124a-124n的屏幕区域相关联和/或与之水平或垂直相邻。在其它实施例中,虚拟显示设备的分辨率1524a-1524n是物理显示设备124a的相同分辨率1524a-1524n,或者是物理显示设备124a所支持的分辨率1524a-1524n之一。在有些实施例中,与物理显示设备124a对应的显示1522a不需要被配置为左上监视器。在其它实施例中,显示布局1520可以包括正和/或负坐标的任意布置,并且任意显示1522a-1522n或显示设备124a-124n(虚拟的或物理的)可以被配置为以任意正和/或负坐标定位,或者位于正和/或负坐标系统的任意部分中。
(485)图15A的客户机10中所示存储元件1525可以包括任意类型和/或形式的存储设备或存储器,例如随机访问存储器、磁盘驱动器、磁盘阵列、可重写光学驱动器、共享存储器、数据库、文件、对象、数据结构,或者任意其它类型和/或形式的能够存储和访问信息或数据(例如显示布局1520)的存储设备或存储元件。在一个实施例中,存储元件1525将显示布局1520提供为可以由客户机10的任意应用程序1530访问的全局映射的数据文件。在有些实施例中,存储元件1525存储显示布局1520或它的一部分。在其它实施例中,显示布局1520可以被转换、转化、变换或修改以存储在存储元件1525中。尽管存储元件1525被显示在客户机10上,但客户机10可以访问的另一客户机10(例如服务器)也可以有用于存储显示布局1520的存储元件。
(486)在有些实施例中,客户机10执行或提供一个或多个应用程序1530。应用程序1530可以是任意类型和/或形式的软件、程序或可执行指令,例如任意类型和/或形式的web浏览器、基于web的客户机应用程序、客户机-服务器应用程序、瘦客户机计算客户机、ActiveX控件、Java小应用程序或者能够在客户机10上执行的任意其它类型和/或形式的可执行指令。在有些实施例中,应用程序1530提供一个或多个窗体1535a-1535n,在这里有时也被统称为1535。在一个实施例中,窗体1535a-1535n是一个有某种用户界面或输出的图形或文本表示并在有些情况下允许对应用程序1530输入的图形,有时是矩形。在另一实施例中,窗体1535a-1535n包括屏幕上显示信息(包括用户文档以及通信,例如警告框或对话框)的一个区域。另外,用户可以打开或关闭一个窗体,在显示屏上移动它,有时改变它的大小,翻阅它并编辑它的内容。
(487)在一个实施例中,应用程序1530的用户界面是窗体1535a-1535n。在其它实施例中,应用程序1530为它的显示和/或导航结构或框架提供顶层窗体1535a-1535n,并响应输入或其它事件提供附加窗体1535a-1535n。例如,应用程序1530可以有针对由顶层窗体1535a表示的用户界面的菜单系统和屏幕区域,并根据用户输入显示一个次级或较小的窗体1535以向用户提供输出和/或从用户接收与应用程序1530有关的输入。
(488)应用程序1530和/或应用程序的任意窗体1535a-1535n可以接收消息1540(例如窗体消息)作为输入。消息1540可以是通过任意类型和/或形式的介质的任意类型和/或形式的通信。在有些实施例中,消息1540包括到窗体1535a-1535n的通信以控制或者指导窗体1535a-1535n的行为、外观、属性。在基于WINDOWS环境的一个示范实施例中,应用程序1530是事件驱动的,并且等待操作系统或系统将输入传递给它们。系统将针对应用程序1530的所有输入传递到它的各个不同窗体1535a-1535n。每个窗体1535a-1535n有一个称为窗体过程的函数,操作系统在接收到对窗体的输入时调用它。窗体过程是接收并处理所有发送到窗体的消息的函数。一个窗体类可以有一个窗体函数,每个以该类创建的窗体都使用相同的窗体函数响应消息。窗体过程处理输入并将控制返回到系统。系统将输入以消息1540的形式传递给窗体过程,消息1540可以由操作系统或其它应用程序1530产生。消息1540可以为输入事件而产生,例如当用户击键、移动鼠标或点击滚动条这样的控件时。消息1540还可以响应由应用程序1530在操作系统或计算设备中引入的变化而被产生。应用程序1530能够生成消息以指令应用程序1530的窗体1535a-1535n完成任务或与其它应用程序中的窗体1535a-1535n通信。
(489)在基于WINDOWS的系统的示范实施例中,消息1540和参数一起被发送到窗体过程。在一个实施例中,消息1540包括一组4个参数:窗体句柄,消息标识符,以及被称为消息参数的两个值。窗体句柄标识该消息的目的窗体,并用来确定哪个窗体过程应该接收该消息。消息标识符标识消息1540的目的或功能。当窗体过程接收到消息时,它使用消息标识符来确定如何处理该消息。例如,消息1540的消息标识符WM_PAINT可以向窗体过程指示该窗体1535的客户区域已经改变并且必须重绘。在处理消息1540时,消息1540的参数可以指定由窗体过程使用的数据或数据位置。参数的意义和值取决于消息1540。消息参数可以包括整数、字符串、压缩位标志、包含额外数据的结构体的指针、或者任意类型和/或形式的数据或信息。
(490)尽管通常是在基于WINDOWS的环境的上下文中说明了消息1540,但本领域的技术人员将认识并领会到消息1540也可以是任意类型的操作系统或环境中的任意类型和/或形式的通信,以控制或者指导正在显示的或者正在被应用程序1530使用、处理或提供的窗体1540的外观、行为和属性。这样,消息1540可以是适合于可以为其实践这里所说明的操作的环境或操作系统的形式或者包含适合这样的环境或操作系统的内容。
(490’)仍然参看图15A,窗体处理机制1550(也称为窗体消息处理机制)提供用于根据客户机1505的期望显示布局1520改变、控制或指示应用程序1530的窗体1535a-1535n的外观、行为或属性的方法和机制。窗体处理机制1550可以包括应用编程接口(API)、应用程序、模块、软件组件、库、服务、进程、任务或设计用来并且能够执行或提供这里所说明的功能的、任意其它形式和/或类型的可执行指令。窗体处理机制1550可以包括软件、硬件或任意软硬件组合。在有些实施例中,应用程序1530可以被设计和构造为包括窗体处理机制1550的功能,而在一些其它实施例中,窗体处理机制1550被设计和构造为由已有的应用程序1530使用而不改变应用程序1530。
(491)在一个实施例中,窗体处理机制1550包括用于继承应用程序1530的窗体1535的窗体过程并提供代替窗体1535的初始窗体过程被调用或使用的窗体过程的机制。
(492)在一个实施例中,窗体处理机制1550使用钩子机制提供替代窗体过程。在有些实施例中,钩子机制包括使用应用编程接口(API)以期望的可执行指令或代码集代替函数、过程或API的可执行指令或代码。例如,窗体处理机制1550可以为与创建、建立或提供窗体1535有关的任意API(例如WINDOWS操作系统环境的CreateWindowA,CreateWindowW,CreateWindowExA,CreateWindowExW API)引入钩子机制。在有些实施例中,窗体过程是通过对GetWindowLong和SetWindowLong的应用编程接口(API)调用而被替换的。在其它实施例中,被替换的窗体过程被存储为伴随窗体句柄的一组任意适当的类型和/或形式,或者是对被替代的窗体过程的引用。这样,窗体处理机制1550使用的窗体过程可以调用被替换的窗体过程。例如,窗体处理机制1550可以直接将消息1540传递到原始的窗体过程进行处理。
(493)窗体处理机制1550的窗体过程可以被构造和设计为截获传递到窗体1535或者被窗体1535接收到的全部或部分消息1540。在有些实施例中,窗体过程截获所有消息1540,并且任何没有被修改的消息1540都被传递到初始的或被替换的窗体过程。在基于Microsoft WINDOWS的环境的一个实施例中,窗体处理机制1550的窗体过程截获具有下列窗体标识符之一的消息1540:1)WM_DISPLAYCHANGE,2)WM_WINDOWPOSCHANGED,3)WM_WINDOWPOSCHANGING,和4)WM_GETMAXMININFO。WM_DISPLAYCHANGE消息1540将显示设备124的分辨率1524的变化传递给窗体1535。WM_WINDOWPOSCHANGED消息1540将窗体1535的大小、位置或Z轴的放置的变化传递到窗体1535。当窗体1535的大小、位置或Z轴的放置的变化将要发生时,WM_WINDOWPOSCHANGING消息1540被传递到窗体1535。当窗体1535的大小或位置将要变化时,WM_GETMAXMININFO消息1540被传递到窗体1535。
(494)窗体处理机制1550截获消息1540并根据显示布局1520更改消息1540的返回值或参数,或者更改消息1540的返回值或参数以与显示布局1520相对应。在有些实施例中,窗体处理机制1550截获顶层窗体1535的消息1540,在其它实施例中,窗体处理机制1550截获不是顶层窗体的窗体1535的消息。在更多实施例中,窗体处理机制1550截获特定窗体1535集合的消息。例如,窗体处理机制1550可以被配置为截获一个列表、数据库、存储设备1525或任意其它类型和/或形式的存储介质中定义的消息1540。
(495)由窗体处理机制1550截获的消息1540可以具有为客户机10或远程机器30的实际显示布局设计或以之作为目标的返回值和/或参数,但参数处理机制1550改变返回值和/或参数以为期望的显示布局1520提供的显示配置1522a-1522n而设计或以之为目标。窗体处理机制1550可以用任意适当的方法和/或机制从存储元件1525读取、访问、获取或得到显示布局1520。窗体处理机制1550可以包括任意类型的逻辑、功能性、商业规则或操作以获取消息1540的值和参数并从显示布局1520的角度分析、比较或处理消息1540的值和参数,并确定对消息1540的值和参数的任意改变和修改,以显示窗体1535在显示布局1520所标识的显示器上。窗体处理机制1550根据所确定的改变修改消息1540,并将消息1540传递到窗体1535。在有些实施例中,窗体处理机制1550确定不需要修改消息1540并因此以窗体处理机制1550所拦截到的相同形式传递消息1540。在其它实施例中,消息处理机制1550用第二个消息代替消息1540。
(496)现在参看图15B,示出了网络化计算机环境的另一个实施例,其中客户机10通过一个或多个通信网络150与远程机器30通信。客户机10可以与一个或多个显示设备124a-124n相连或使用一个或多个显示设备124a-124n。客户机10包括显示布局1520,显示布局1520包括客户机10期望的显示配置,例如针对显示设备124a-124n的显示配置。客户机10还可以包括客户机代理1508。远程机器30包括提供一个或多个窗体1535a-1535n的应用程序1530、用于存储客户机10的显示布局1520的存储元件1525。远程机器30还包括服务器代理1528、会话登录机制1545以及窗体处理机制1550。
(497)环境1500可以提供基于服务器的计算环境或瘦客户机计算环境以实践这里所说明的操作。例如,应用程序1530可以是代表客户机10在远程机器30上执行的应用程序。来自应用程序1530的执行的显示布局可以通过(例如)客户机代理1508被传递到客户机10以显示在客户机上。显示输出可以通过远程显示协议而在远程机器30和客户机10之间传递。显示输出可以基于运行在远程机器30上的应用程序1530的窗体1535,但将被显示在客户机10上。下面将更详细地说明,远程机器30上的窗体处理机制1550拦截并修改运行在远程机器30上的应用程序1530的消息1540,将消息1540传递到窗体1535。这样,传递到客户机10的显示输出就反映了由窗体1535处理的、修改后的消息1540。
(498)在一个实施例中,如图15B中所示,客户机代理1508被包括在客户机10中。客户机代理1508可以被实现为软件程序和/或硬件设备,例如ASIC或FPGA。带有用户界面的客户机代理1508的一个例子是Web浏览器(例如Internet Explorer和/或Netscape Navigator浏览器)。客户机代理1508可以使用任意类型的协议,例如远程显示协议,并且客户机代理1508可以是HTTP客户机代理、FTP客户机代理、Oscar客户机代理、Telnet客户机代理、来自位于佛罗里达州劳德代尔堡市(Fort LauderdaleFlorida)的CitrixSystems公司的独立计算体系结构(ICA)客户机代理,或者来自位于华盛顿州雷蒙德市(Redmond,Washington)的Microsoft公司的远程桌面协议(RDP)客户机代理。在有些实施例中,客户机代理1508被配置为与远程机器30相连接。在有些实施例(未示出)中,客户机1508包括多个客户机代理1508,其中的每一个分别与远程机器30通信。
(499)另外,远程机器30可以包括服务器代理1528,它能够且可以被配置用来与客户机1508协同工作。例如,服务器代理1528可以是接收来自客户机代理1508的连接和请求的服务器端组件。在另一个实施例中,服务器代理1528能够并且可以被配置用来接收或建立客户机10的远程访问连接或会话。在一个实施例中,客户机代理1508和服务器代理1528可以使用协议(例如HTTP、I CA或RDP协议)在网络1504上通信。在有些实施例中,客户机代理1508和/或服务器代理1528被用来建立、重新建立、维持或提供基于服务器的计算或基于瘦客户机计算的连接或会话。在另一个实施例中,客户机代理1508和服务器代理1528建立客户机10和目标远程机器30之间的连接的通信起点和终点。
(500)在有些实施例中,远程机器30包括用于存储显示布局的存储元件1525。在一个实施例中,存储元件1525将显示布局1520提供为全局映射的数据文件,该文件可以被远程机器30的任意应用程序1530访问。在有些实施例中,显示布局1520被以提供给远程机器1530或远程机器1530接收到的相同形式存储。尽管在图15B中存储元件1525被示为在远程机器30上,但客户机10也可以包括存储元件1525′,并且在有些实施例中,客户机10将显示布局1520存储在客户机的存储元件1525′和/或远程机器的存储元件1525中。
(501)远程机器30还可以包括会话登录机制1545,它可以包括远程机器30上的任意类型和/或形式的服务、进程、任务、程序、应用或可执行指令以处理登录或会话请求。会话登录机制1545或其中的任意部分都可以通过远程机器30的操作系统被提供。在一个实施例中,会话登录机制1545包括WINDOWS登录进程winlogon,是Microsoft WINDOWS操作系统家庭的一个组件。这样,会话登录机制1545可以提供交互式登录支持,并且可以包括称被为GINA的图形标识和验证动态链接库(DLL)以及任意数量的网络供应商。会话登录机制1545可以包括任意接口(例如应用编程接口(API)或动态链接库,即DLL)以允许任意资源、应用程序、网络或网络提供者在登录过程期间收集或获取标识和验证信息。
(502)会话登录机制1545可以为操作系统和/或一个或多个资源、程序、应用、网络或网络提供者执行验证过程和密码更新操作。在一个实施例中,会话登录机制1545为操作系统提供验证服务,在另外的实施例中,还为对代表客户机10将要在远程机器30上执行的应用程序1530的访问提供验证服务,诸如在基于服务器或者瘦客户端计算模型中。另外,会话登录机制1545可以监控与远程机器30的登录或安全访问、或任意资源、应用、网络或网络提供者有关的任意鼠标和/或键盘行为。在有些实施例中,会话登录机制1545可以为远程机器30上的用户或会话建立任意初始服务、进程或任务。
(503)远程机器30可以执行或提供一个或多个应用程序1530。应用程序1530可以是任意类型和/或形式的软件、程序或可执行指令,例如任意类型和/或形式的web浏览器、基于web的客户机、客户机-服务器应用程序、瘦客户机计算客户端、ActiveX控件或Java小应用程序,或者能够在客户机10上执行或通过网络1504通信的任意其它类型和/或形式的可执行指令。应用程序1530可以使用任意类型的协议,例如,它可以是HTTP客户端,FTP客户端,Oscar客户端或Telnet客户端。在有些实施例中,应用程序1530使用远程显示或表示层协议。在其它实施例中,应用程序1530包括与VOIP(建立在IP上的语音服务)通信有关的任意类型的软件,例如软件IP电话(soft IP telephone)。在更多实施例中,应用程序1530包括与实时数据通信有关的任意应用程序,例如用于流式传输视频和/或音频的应用程序。在有些实施例中,应用程序1530提供一个或多个窗体1535a-1535n,它们有时被共同引用为1535。
(504)在有些实施例中,远程机器30或机器群组38可以正在运行一个或多个应用程序1530,例如提供瘦客户机计算的应用程序1530或远程显示应用程序。在一个实施例中,远程机器30或机器群组可以运行应用程序1530,它可以是Citrix Systems公司的Citrix Access Suite的任意部分(例如MetaFrame或Citrix Presentation Server)和/或微软公司的Windows Terminal Services中的任意一个。在一个实施例中,应用程序1530是位于Fort Lauderdale,Florida的Citrix Systems公司开发的ICA客户端。在其它实施例中,应用程序1530包括由位于Redmond,Washington的Microsoft公司开发的远程桌面(RDP)客户端。
(505)另外,远程机器30可以运行应用程序1530,它可以是提供电子邮件服务的应用服务器,例如由位于Redmond,Washington的Microsoft公司生产的Microsoft Exchange,或者web或Internet服务器,或者桌面共享服务器,或者协作服务器。在有些实施例中,任一应用程序1530可以包括任意类型的所寄载的服务或产品,例如位于Santa Barbara,California的Citrix Online Division提供的GoToMeeting,位于SantaClara,California的WebEx公司提供的WebEx,或者位于Redmond,Washington的Microsoft公司提供的Microsoft Office LiveMeeting。
(506)尽管在图15A和图15B中,窗体处理机制1550被示为包含在应用程序1530中,但窗体处理机制1550可以驻留在远程机器30、客户机10和/或应用程序1530之外的任意部分,例如,如图15C中所示。在一个实施例中,窗体处理机制1550包括运行在系统上下文或以操作系统的系统权限运行的服务、进程或任务。在有些实施例中,窗体处理机制1550可以监控传递到应用程序1530的窗体1535a-1535n的消息1540,并拦截和修改到窗体1535a-1535n的消息1540。本领域的技术人员将认识并领会到窗体处理机制1550可以包括能够完成这里所说明的操作的任意类型和/或形式的可执行代码。
(507)在图15C所示的另一实施例中,会话登录机制1545可以用来提供或使用窗体处理机制1550的任意功能。在有些实施例中,会话登录机制1545可以从存储元件1525读取、访问、获取或取得显示布局1520。在其它实施例中,会话登录机制1545通过动态链接库访问、装载或使用窗体处理机制1550的功能,例如通过网络供应商向WINDOWS操作系统的winlogon进程提供的库。在其它实施例中,会话登录机制与窗体处理机制1550接口或通信以提供这里所说明的技术。在更多的实施例中,会话登录机制1545可以在登录或用户会话(例如基于服务器的计算环境1500中的远程会话)的重新连接、重新建立和/或重新验证期间使用这里所说明的技术。
(508)另一方面,说明了根据客户机10的期望显示布局1520控制或指示应用程序1530的窗体1535的外观、行为和属性从而虚拟化客户机10的显示环境的技术。从图15A-15C中所示环境1500、1501和1502的系统和结构的角度来看,将由图3A-3D中所说明的方法解决这些操作、功能和技术。图3A说明了使用窗体处理机制1550实践一个实施例的方法300。图3B说明了结合方法300使用的窗体消息和处理的例子。图3C说明了用于在通过会话登录机制1545重新连接、重新建立或重新验证时实践一个实施例的方法350。图3D说明了用于在应用程序1530的执行期间改变客户机的显示布局1520的说明性方法360。
(509)现在参看图16A,简单地说,示出了用于提供客户机10的期望显示布局1520的方法的一个实施例。在步骤1610和步骤1615,显示布局1520被存储在存储元件1525中,并且显示布局1520被和客户机1505关联起来。在步骤1620,窗体处理机制1550从存储元件225访问显示布局1520以获得客户机10的期望显示布局信息。在步骤1625,窗体处理机制1550拦截到由应用程序1530显示在客户机10上的窗体1535的消息1540。在步骤1630,窗体处理机制1550修改消息1540以根据客户机10的期望显示布局1520在客户机10上提供窗体1535。在步骤1635,窗体1535被根据修改后的消息1540而显示在客户机10上。这样,就根据显示布局1520转换了窗体235的外观和行为,即将窗体1535的外观和行为转换成了显示布局1520。
(510)更详细地说,在方法的步骤1610,提供了客户机的期望显示布局120。在一个实施例中,显示布局120被从客户机10传递到远程机器30。例如,客户机10建立与远程机器30的连接或通信会话。在有些情况下,远程机器30向客户机10请求显示布局1520,并且客户机1505根据请求发送显示布局1520。在另一个实施例中,显示布局1520在登录或验证过程期间被通过会话登录机制1545传递,在有些实施例中是在重新登录或重新验证过程期间。在一个实施例中,显示布局1520被存储在数据库中并由客户机10或远程机器30查询以获得显示布局1520。在其它实施例中,显示布局1520可以由客户机10或远程机器30从web服务器、web站点、应用程序器、另一远程机器30′或通过Intrnet下载。在更多的实施例中,用户可以用程序、应用或工具配置显示布局1520并将显示布局1520存储在客户机10、远程机器30或另一客户机10中。
(511)在步骤1615,显示布局1520被存储在存储元件1525中,并被和客户机10相关联。在有些实施例中,远程机器30从客户机10接收显示布局1520并将其存储在存储元件1525中。在一个实施例中,远程机器30将显示布局1520存储为远程机器30上可由一个或多个应用程序1530访问的全局映射的数据文件。在另一个实施例中,远程机器30将显示布局1520存储到该远程机器30可以访问的另一客户机10,例如通过网络1504。在有些实施例中,客户机10将显示布局1520存储到远程机器30上的存储元件1525、客户机10上的存储元件1525或通过网络1504或Internet能够访问的存储元件1525。
(512)显示布局1520可以被以适合存储元件1525的任意形式存储在存储元件1525中,并且可以被转换、变换、更改、转化或处理以存储在存储元件1525中。例如,在一个实施例中,显示布局1520可以包括客户机10上的数据,例如文件,它被通过网络分组传输到远程机器30,然后被转换成远程机器30上全局映射的数据文件。在另一个实施例中,显示布局1520被存储在任意类型和/或形式的存储元件1525中,例如关系型数据库。在其它实施例中,显示布局1520被存储在包括存储器的存储元件1525中。例如,显示布局1520可以包括客户机10和/或远程机器30上任意类型的对象、数据结构或部分存储器,或由其表示。
(513)可以用任意适当的方法和/或机制使显示布局1520与客户机10相关联。在一个实施例中,全局映射的数据文件的名字或其中的任意部分可以标识客户机10。在另一个实施例中,全局映射的数据文件的内容的任意部分可以标识客户机10。在附加实施例中,客户机10或远程机器30可以使用存储器中的任意类型的对象、数据结构、进程或其它元素将显示布局1520与客户机10关联在一起。在其它实施例中,客户机10或远程机器30可以使用存储元件1525的一部分或其它类型的存储(例如另一个文件)将显示布局1520和客户机关联在一起。
(514)在说明性方法300的步骤1620,窗体处理机制1550从存储元件1525访问显示布局1520以获得客户机10的期望显示布局信息。在一个实施例中,窗体处理机制1550使用的窗体过程的可执行指令包括装载、读取或者获取显示布局1520的指令。例如,窗体处理机制1550可以进行任意类型和/或形式的文件输入/输出(即文件I/O)操作以读取包含显示布局1520的全局映射的数据文件。在另一个实施例中,窗体处理机制1550的钩子API(应用编程接口)的指令提供用于获取显示布局1520的指令。在另一个实施例中,应用程序1530在执行或启动时读取或访问显示布局1520。在有些实施例中,可以在会话期间,例如用户或远程会话,执行应用程序1530。在一个实施例中,该全局映射的数据文件1525可以只由与远程会话相关联的应用程序1530、或者应用程序1530只能通过远程会话访问。在更多实施例中,对该全局映射的数据文件的访问可以由对远程会话是全局的互斥锁或信号量保护。本领域的普通技术人员将认识并领会到可以使用任意类型和/或形式的锁机制来控制对存储元件1525(例如全局映射的数据文件)的访问。
(515)在步骤1625,窗体处理机制1550拦截由应用程序1530显示在客户机10上的窗体1535的消息1540。在一个实施例中,在获得显示布局1520之后,钩子机制被引入远程机器30或远程机器30上的应用程序1530,它钩住一个或多个窗体创建API,例如基于WINDOWS的环境中的创建窗体类型的API。在有些实施例中,窗体处理机制1550拦截到应用程序的窗体1535的所有消息1540。在其它实施例中,窗体处理机制1550拦截具有特定消息标识符或名字的消息1540。在一个实施例中,消息240可以有由窗体处理机制1550用来确定该消息1540是否应该被拦截的参数或值。在附加实施例中,窗体处理机制1550拦截到应用程序1530的一部分窗体1535中的消息1540,在更多实施例中只有一部分类型的消息240被传递到这些窗体1535。在又一实施例中,用户可以配置窗体处理机制1550以通过名字、类型或其它选择要拦截的消息1540。
(516)在有些实施例中,窗体处理机制1550拦截去往应用程序1530的顶层窗体1535的消息1540。在其它实施例中,窗体处理机制1550可以拦截任意层次的窗体1535,或者只拦截窗体1535的层次结构中特定层次的窗体。例如,窗体处理机制1550可以忽略显示在顶层窗体1535之上或之前的第二层窗体的任意弹出对话框。
(517)在一个实施例中,窗体处理机制1550可以拦截消息1540但使消息1540通过或将其传递到初始的或被替换的窗体过程。在有些实施例中,窗体处理机制1550忽略特定的消息1540。在另一实施例中,窗体处理机制1550的窗体过程还包括被替换的窗体过程的功能和操作。这样,窗体处理机制1550可以拦截消息1540并且可以用被替换的窗体过程或者钩入应用程序1530中的窗体过程处理消息1540。
(518)在步骤1630,窗体处理机制1550修改消息1540以根据客户机10的期望显示布局1520在客户机10上提供窗体1535。在有些实施例中,窗体处理机制1550相比于显示应用程序1530的客户机10的显示布局1520而检查、分析或者处理消息1540的任意值和参数。根据该比较,窗体处理机制1550可以根据显示布局1520为消息1540修改、调整、编辑、改变、更改、替换、转换或者设置或提供值和/或参数,消息1540将提供由应用程序1530显示在客户机10或将要显示在客户机10上的窗体235的期望的行为、外观和属性。例如,消息1540的值和/或参数可以指示窗体1535的大小、位置、区域、分辨率或其它属性。这些特征可以基于不同于显示布局1520中所指定的显示环境。这样,在有些实施例中,窗体处理机制1550可以为显示布局1520中指定的显示设备1522a-1522n修改消息1540的大小、位置、区域、分辨率或其它属性。
(519)通过进一步的示例,并且现在参看图16B,窗体处理机制1550可以拦截并修改由下列之一所标识的消息1540:1)WM_GETMAXMININFO,2)WM_WINDOWPOSCHANGING,3)WM_WINDOWPOSCHANGED和4)WM_DISPLAYCHANGE。在说明性步骤1630a,对于由WM_GETMINMAXINFO标识并拦截的消息1540,窗体处理机制1550分析应用程序1530(即顶层窗体1535)相对于显示布局的一个或多个显示1522a-1522n的位置,并确定应用程序1530应该被最大化到显示1522a-1522n中的哪一个。窗体处理机制1550修改消息1540以提供与基于期望的显示布局1520的分辨率对应的并被转化为该分辨率的值。例如,远程机器30可以为单一监视器会话提供窗体分辨率,窗体处理机制1550将该分辨率转化为通过显示布局1520提供的多个显示环境。这样,这个技术使得应用程序1530能够根据显示布局1520而不是单显示器会话最大化到期望的区域。
(520)在说明性步骤1630b,对于以WM_WINDOWPOSCHANGING标识并被拦截的消息1540,窗体处理机制1550判断窗体1535是否在最大化状态,如果是的话,消息1540被修改以设置窗体标志为不能移动的窗体风格,或者固定窗体1535的位置或区域,或者不允许窗体1535的位置发生改变。这样,在最大化状态,用户不能移动窗体1535。这个技术使得应用程序1530或者应用程序1530的窗体1535被最大化到由显示布局1520指定的显示1522a-1522n上的一组固定位置。在有些实施例中,或者根据WM_WINDOWPOSCHANGING消息1540,或者是窗体处理机制1550确定窗体1535不在最大化状态并修改消息1540以移除不能移动风格,例如窗体的位置不再是固定的或者允许窗体1535的位置被移动。
(521)在说明性步骤1630c,对于所截获的以WM_WINDOWPOSCHANGED标识的消息1540,窗体处理机制1550比较窗体1535的位置和显示布局1520,如果窗体1535被绘制在显示1522a-1522n的屏幕或工作区之外,就改变窗体1535的位置以使其被绘制在显示1522a-1522n的至少一部分屏幕或工作区中。这个技术使得用户不会把应用程序1530或应用程序1530的窗体1535丢失在屏幕外的区域。
(522)在说明性步骤1630d,对于截获的以WM_DISPLAYCHANGED标识的消息1540,窗体处理机制1550暂停对消息1540的处理直到为客户机1505获取或提供了新的或第二显示布局1520。在一个实施例中,窗体处理机制1550挂起对所有消息1540的处理。在有些实施例中,窗体处理机制1550挂起被截获并传递到被替换的或原始的窗体过程的消息1540。在其它实施例中,窗体处理机制1550挂起用于被替换的或原始的窗体过程的消息而继续处理其它消息1540。这个技术使得客户机10能够在应用程序1530执行期间的任意时刻动态地改变显示布局1520。
(523)尽管上面是相对于消息一般性说明了这些技术,但本领域的技术人员将认识并领会到可以使用任意类型和/或形式的消息。此外,窗体处理机制1550可以根据消息1540和/或显示布局1520完成任意的逻辑、功能、操作或规则,即使对相同类型的消息1540也可以根据对显示布局1520的改变或环境1500、1501和1502的事件、条件或状态对消息1540的每个实例进行不同的功能和操作。
(524)回过去参看图16A,在方法300的步骤1635,窗体1535被根据通过窗体处理机制1550处理过的消息1540而显示在客户机10上。这样,当窗体处理机制1550根据显示布局1520修改消息1540时,窗体1535就被根据显示布局1520显示在客户机10上。在有些实施例中,窗体处理机制250不修改消息1540,因此窗体1540被根据没有修改的消息1540而显示在客户机10上。上面所示技术使得在基于服务器的计算环境1500的一个实施例中运行在远程机器30上的应用程序1530来提供显示输出给客户机10,客户机10以显示布局1520所期望和指定的任意方式控制和指示显示输出中窗体的行为、外观和属性,显示布局1520可以不对应于客户机10的物理显示布局。
(525)另一方面,尽管这里是用来自WINDOWS操作系统的窗体管理系统一般性描述了所说明的技术,但本领域的技术人员将认识并领会到可以用任意类型和/或形式的窗体管理器或管理系统实践这里所说明的技术,例如任意类型和/或形式的X-windows管理器,包括运行在任意类型操作系统上的任意定制或基于开源的窗体管理器。
(526)现在参看图16C,可以在任意通信会话或用户会话(例如客户机10和远程机器30之间的远程显示会话)的重新连接、重新建立或重新验证期间实践这些技术。在一个实施例中,图15A和15B中所示远程机器30上的会话登录机制1545可以包括窗体处理机制1550或其中的任意部分。简单地说,在方法350中,在步骤1652,会话登录机制1545从存储元件1525访问或获取显示布局1520。在步骤1654,可以存在由会话登录机制1545处理的断开或重新连接。在重新建立和/或重新验证会话时,会话登录机制在步骤1656比较窗体1535的位置和客户机的显示布局1520,并在步骤1658根据客户机的显示布局1520修改窗体235以显示在客户机10上。
(527)在说明性步骤1652,会话登录机制1545以任意适当的方法和/或机制获取显示布局1520上的信息。例如,包括在会话登录机制1545中或为其使用的窗体处理机制1550可以具有可执行指令(例如文件I/O操作)以访问全局映射的数据文件1525。在另一个实施例中,会话登录机制1545可以装载动态链接库,该动态链接库装载、读取或访问具有显示布局信息的存储元件225。在一个实施例中,作为建立或重新建立会话的一部分,会话登录机制1545可以从客户机1520获取显示布局1520。例如,会话登录机制1545向客户机10请求显示布局1520以及任何标识或验证证书。
(528)在说明性步骤1654,对客户机10和远程机器30之间的会话的任何类型的断开或破坏都有可能发生,并且可以通过会话登录机制1545促进会话的任意类型的重新连接或重新建立。在有些情况下,因为客户机显示环境中的物理变化或者因为用户移到另一客户机10,用户可以造成对客户机10和远程机器30之间的会话的断开或破坏。一种情况下,用户从第一个客户机10a(例如工作计算机)移到第二个客户机10b(例如家用计算机)。远程机器30可以维护计算设备100a-110b之间的相同用户会话,但显示布局1520可能已经改变。另一种情况下,用户和/或客户机10可以遍历造成客户机10的主机名、IP地址变化或造成客户机10断开的网段或网络接入点。客户机10可以(例如通过客户机代理1508)手动或自动重新连接到网络1504。这样,会话登录机制1545可以促进或被用来促进重新连接。
(529)在方法350的步骤1656,会话登录机制1545相对于期望的显示布局1520比较应用程序1530的窗体1535的区域或者位置。在有些实施例中,会话登录机制1545截获到窗体1535的消息1540,并检查或分析消息1540的任意部分,例如值或参数。在一个实施例中,会话登录机制1545通过应用编程接口(API)查询或获取应用程序1530的一个或多个窗体1535的当前位置。在另一个实施例中,会话登录机制1545向应用程序1530请求该应用程序的窗体的位置。会话登录机制1545将窗体535的位置、大小和任意其它属性与显示布局1520中的任意信息进行比较。
(530)在步骤1658,会话登录机制1545可以根据期望的显示布局1520修改窗体1535。从对与窗体1535有关的信息和显示布局1520的信息的比较,会话登录机制1545在有些实施例中修改窗体1535以用期望的方式通过显示布局1520中所标识的显示1522a-1522n显示在客户机10上。在一个实施例中,通过内嵌在会话登录机制1545中或与之接口的窗体处理机制1550的功能,可以根据这里所说明的操作截获并修改到窗体1535的消息。在另一个实施例中,会话登录机制1545可以通过任意应用编程接口(API)修改应用程序1530的一个或多个窗体1535以修改这样的窗体1535。由方法350所说明的技术使得能够断开并重新连接客户机会话、并且根据客户机10的任意新的或改变了的显示布局1520、或者从一个客户机10a到另一个客户机10b的变化来调整窗体的显示。
(531)另一方面,说明了为客户机10动态改变显示布局1520。现在参看图16D,可以为在应用程序1530的执行期间发生的对显示布局1520的改变实践所说明的技术。简单地说,在说明性方法360中,在步骤1662,改变了客户机的显示布局1520。在步骤1664,当客户机的显示布局1520被改变时,窗体处理机制350暂停窗体消息处理。在步骤1666,由窗体处理机制1550获取更新后的或第二个显示布局1520′,在步骤1668,窗体处理机制1550恢复根据第二显示布局1520′拦截和修改到窗体1535的消息1540。
(532)更详细地说,在步骤1662,可以在任意时间以任意原因改变显示布局1520。在一个实施例中,客户机10的显示环境可以改变,并且显示布局1520也可以被更新以反映改变后的显示环境。例如,另一显示设备124可以与客户机10相连。在另一个实施例中,客户机10的用户可以进行调整、更新或改变显示布局1520以使用户对应用程序1530的行为和外观的期望和应用程序1530的窗体1535在客户机10上的显示相适应。在又一个实施例中,第一会话可以在具有第一显示布局1520的第一客户机10上,用户切换到第二个会话并在具有第二个或更新后的显示布局1520′的第二用户机10′上维护第一会话。
(533)在步骤1665,该方法在显示布局1520改变的通知之后暂停拦截并修改到应用程序1530的窗体1535的消息1540。在一个实施例中,窗体处理机制1550截获消息1540,例如WM_DISPLAYCHANGE消息,表示显示环境的任意属性或者特征(例如分辨率)的变化。在另一个实施例中,客户机10传递一个表示显示布局1520已经发生或将要发生变化的通知到远程机器30、窗体处理机制1550或会话登录机制1545。在又一个实施例中,应用程序1530可以包括用户界面机制以让用户指示对显示环境的变化、或者根据显示布局1520让应用程序1530暂停对窗体消息的处理。
(534)窗体处理机制1550可以暂停对所有应用程序230、一部分应用程序230、或者一个、一些或全部应用程序230的一部分窗体1535的消息240的处理。在一个实施例中,窗体处理机制1550查询接收到的任何消息1540直到窗体处理机制1550获得另一个显示布局1520。在另一个实施例中,窗体处理机制1550只根据该显示布局1520暂停对要修改的窗体消息的处理,并且继续将不修改的消息1540传递到初始的或被替换的窗体过程。
(535)在方法的步骤1666,获取更新后的或第二个显示布局1520′以用于窗体消息处理。更新后的或第二个显示布局1520′可以由任意适当的方法和/或机制提供。在一个实施例中,更新后的或第二个显示布局1520′和第一显示布局1520一起被存储在存储元件225中。在另一个实施例中,更新后的或第二个显示布局1520′被存储为第一显示布局1520的更新版本,在更多实施例中,第二显示布局1520′可以替换存储元件225中的第一显示布局1520。在一个实施例中,客户机10将更新后的或第二个显示布局1520′传递到远程机器30或者将第二显示布局1520′存储到远程机器30上的存储元件225中。在有些实施例中,客户机10通过到远程机器30的重新连接或重新建立可以提供更新后的显示布局1520。在一个实施例中,客户机10将没有改变的、已经存储在远程机器30的存储元件1525中的显示布局1520传递到远程机器30。在其它实施例中,远程机器30或客户机10可以从网络204上的另一客户机10获取第二显示布局1520′,例如从远程机器30下载第二显示布局1520′。如上所述,结合说明性方法300,窗体处理机制350可以通过多种方法和/或机制从存储元件225获取显示布局1520。
(536)在方法360的步骤1668,窗体处理机制1550根据第二显示布局1520恢复拦截和修改到窗体235的消息240。在一个实施例中,如果窗体处理机制1550将全部消息240排队,窗体处理机制1550根据第二显示布局1520′分析并修改排队的消息240。或者,窗体处理机制1550使用第二显示布局1520′修改在获得第二显示布局1520′之后截获的任意消息240。使用这里所说明的技术,可以在执行一个或多个应用程序期间动态修改客户机显示环境和客户机的显示布局,应用程序的窗体的显示将根据对显示布局的修改而呈现。例如,可以向客户机添加另一显示设备,并在显示布局的变化期间将应用程序最小化。当显示布局被更新时,用户能够最大化应用程序并使应用程序呈现在适当的显示中,即使显示环境是在应用程序被最小化时被修改。
(537)从上述功能、结构和操作的角度来看,提供了系统和方法以用灵活的方式控制和指示应用程序的窗体的外观、行为和属性,用于虚拟化、模拟或提供多显示环境而不必限制客户端显示配置。例如,客户机的显示布局不能被限制为配置客户机的物理监视器为主显示,即显示布局配置中最左上的监视器。可以在基于服务器的或基于瘦客户机的计算环境中实践所说明的系统和方法,客户机可以有一个或多个显示设备。另外,提供了没有被限制到客户机的物理显示环境的显示布局配置。客户机的显示环境可以扩展到包括附加的虚拟显示,这样如果客户机有两个显示设备,就可以为客户机虚拟或模拟出三个或更多显示。在根据期望的或定制的显示布局不断改变窗体的外观和行为的同时,可以实现单显示设备的单显示配置。客户机或用户可以获得多显示环境的功能、益处和优点而不需要有多个显示设备或者不需要有期望的所有显示设备。
(538)在一个实施例中,多监视器支持提供对窗体的最大化以填充单个监视器而不是全屏幕,提供将对话框中心定位在监视器而不是屏幕上。在另一实施例中,在由虚拟机提供的计算环境中执行的会话管理组件、虚拟机服务组件和多监视器钩子组件提供虚拟机环境中的多监视器支持。在又一实施例中,多监视器钩子组件和获取客户机几何数据的一个组件提供了虚拟机环境中的多监视器支持。
(539)在一个实施例中,会话管理组件1300从多监视器钩子文件映射中读取客户机10的监视器配置。在客户机10的用户建立到执行在执行机器(虚拟机在其中提供对计算资源的访问)上的表示服务器的连接的有些实施例中,表示服务器在用户建立连接时产生多监视器钩子文件映射。
(540)在一个实施例中,会话管理组件1300将消息发送到包含用户的监视器布局的虚拟机服务组件。在有些实施例中,当会话管理组件1300检测到用户重新连接时该消息被发送,以使监视器布局保持与客户机10同步。
(541)虚拟机服务组件接收到由会话管理组件900提供的监视器布局消息。在有些实施例中,虚拟机服务组件在计算环境中创建文件映射并更新该文件以包括监视器布局数据。
(542)在其它实施例中,虚拟机服务组件还为多监视器钩子组件使用的数据创建校验和,以确保它已经正确的读取了布局数据。在其中一个这样的实施例中,使用校验和而不是锁机制来同步对布局数据的访问。在这个实施例中,校验和不会在读取该数据的进程之间导致任何阻塞。布局数据很少被更新,并且数据量也不大,因此校验和计算可以很快地完成。在另一个这样的实施例中,读进程保存校验和、读取数据并重新计算校验和。如果计算出的校验和与所保存的校验和不匹配,表示当数据正在被读取时被更新,读进程重复前面的过程。因为通常只在用户重新连接到另一客户机并且读数据的时间很短时更新数据,所以不太可能出现读进程对特定的改变读取超过一次的情况。在有些实施例中,虚拟机服务组件使用为客户机10保存的缺省显示设置,选择所存储的缺省设置是为了确保计算环境在会话初始化时具有有效的显示设置。
(543)在有些实施例中,多监视器钩子组件在由虚拟机提供的计算环境中执行。在其中一个这样的实施例中,多监视器钩子组件在每个窗体被创建之前接收到该窗体的一个事件,其中包括正在被创建的窗体的句柄。多监视器钩子组件可以标识该窗体的窗体类型并确定该窗体的窗体钩子消息。在有些实施例中,将钩取具有表示该窗体能够被最大化或者该窗体是对话框的类型的窗体。被钩住的窗体可以被添加到包含窗体句柄和初始窗体过程的数组中。在其它实施例中,多监视器钩子组件接收到表示窗体将要被销毁的事件。在其中一个这样的实施例中,多监视器钩子组件移除与该窗体相关联的钩子数组中的入口。
(544)在有些实施例中,多监视器钩子组件在窗体被创建之后和被显示之前接收到窗体的标识。在其中一个这样的实施例中,多监视器钩子组件检查对话框的位置,如果对话框跨越多个监视器,多监视器钩子组件就将该窗体重新定位到包含该对话框的大部分的监视器的中心,如果对话框区域被平均分割在两个监视器之间就将其重新定位到包含该对话框的第一个显示器的中间。在其它实施例中,当窗体将要被最大化时,多监视器钩子组件接收到一个事件。多监视器钩子组件确保当窗体被从最小化状态最大化时它将被定位到正确的监视器上。
(545)在有些实施例中,在窗体被最大化时,多监视器钩子组件接收一个事件。多监视器钩子组件检查窗体的状态,如果窗体是最小化状态,多监视器钩子组件就从窗体钩子数组获取该窗体被最小化到其中的监视器的标识。如果该窗体不是最小化状态,多监视器钩子组件标识出包含该窗体的大部分的监视器。如果没有找到监视器,或者监视器不存在(例如在重新连接之后),就使用监视器0。多监视器钩子组件随后从它所保存的监视器信息中删除该监视器的坐标和大小并更新由消息指定的MINMAXINFO结构。这使得窗体只最大化到指定的监视器。
(546)在有些实施例中,虚拟机服务组件接收与客户机10的用户相关联的验证信息。在其中一个这样的实施例中,虚拟机服务组件从协议栈组件接收验证信息,而协议栈组件从客户机10接收证书。在另一个这样的实施例中,虚拟机服务组件从会话管理组件1300接收验证信息。在又一个这样的实施例中,虚拟机服务组件使用接收到的验证信息来验证客户机10的用户到虚拟机提供的计算环境。
(547)在一个实施例中,当通信信道被建立并且与初始会话有关的信息被传递到虚拟机服务组件时,虚拟机服务组件自动将用户登录到计算环境中。在一个实施例中,虚拟机服务组件从会话管理组件1300接收证书。在另一个实施例中,虚拟机服务组件接收到先前由用户提供的证书。在有些实施例中,用户在请求对资源的访问之前向客户机10提供证书。在其中一个这样的实施例中,用户向客户机代理提供证书,例如ICA客户机。虚拟机服务组件自动重新配置客户机操作系统的显示设置以匹配ICA客户机的显示设置。虚拟机向虚拟设备产生图形和声音输出,虚拟设备将图形和声音输出重定向到请求机上的客户机代理,例如ICA代理。虚拟机接收到从ICA客户端重定向的音频输入、鼠标和键盘设备数据。当虚拟机被关闭或暂停时,会话管理组件1300清除并关闭ICA会话。
(548)远程机器30、30′和30″可以属于相同的验证域。一个域可以包括在一个安全数据库控制下的一组机器,例如应用服务器、执行机或客户机结点。一个域可以包括被链接在一起以充当单个系统从而提供集中管理的一个或多个机器群组。相反,一个机器群组可以包括一个或多个域。为了让两个不同域的服务器属于相同机器群组,在域之间需要有信任关系。信任关系是不同域之间的一种关联,它使用户能够只用一次登录验证就能访问与各个域相关联的资源。
(549)在一个实施例中,远程机器30″′在不同于群组38的一个不同域中。在另一个实施例中,远程机器30″′在与机器30、30′和30″相同的域中。对任一实施例,机器30、30′和30″可以属于一个机器群且,而远程机器30″′属于另一机器群组,或者所有机器30、30′、30″和30″″可以属于相同群组。当新的机器被连接到网络150时,新机器或者加入已有的机器群组,或者启动一个新的机器群组。
(550)机器10可以在一个域中,或者不与任何域相连。在一个实施例中,客户机10在域38中。在另一个实施例中,客户机10在不包含机器30、30′、30″和30″″中的任一机器的另一个域中。在另一实施例中,客户机10不在任何域中。
(551)在一个实施例中,客户机10在域38中,该机器的用户提供用户证书以登录到客户机10。用户证书通常包括该机器的用户名、该用户的密码以及该用户在其中被识别出的域的名字。用户证书可以从智能卡、基于时间的令牌、社会安全号码、用户密码、个人识别码(PIN)、基于对称密钥或椭圆曲线加密的数字证书、用户的生物统计信息或者通过其能够为验证获取和提交客户机结点的用户标识的任意其它方式获取。
(552)从用户提供的证书,客户机10产生用户验证数据。客户机10将这个用户验证数据发送到远程机器30。在这个实施例中,用户证书没有被在网络上发送,只有产生的用户验证数据被客户机10发送。
(553)远程机器30可以确定由包含远程机器30的机器群组提供的哪些资源可以为客户机10的用户所用。在一个实施例中,远程机器30查看用户验证数据来做出这个判断。在另一个实施例中,远程机器30查看与用户所请求的资源相关联的信息来做出判断。远程机器30将代表可用资源的信息发送到客户机10。
(554)远程机器30所进行的用户验证足以将对现有的每个所提供的资源的使用授权给客户机10,尽管这样的资源可以驻留在另一机器上。因此,在这个实施例中,当客户机10访问或启动(即启动其执行)所提供的资源之一时,不需要用户进行用户证书的额外输入来验证对那个资源的访问。因而,用户证书的单一入口足以确定可用资源并授权对这些资源的访问和启动而不需要用户额外的手动登录验证过程。
(555)图17更详细地说明了用于将客户机10的客户验证给远程机器30的系统。如图17所示,客户机10包括与瘦客户机程序1720通信的验证模块1710。验证模块1710接收到为将用户验证到客户机100、远程机器30或二者的目的而提供的用户验证证书。接收到的验证证书可以包括用户名-密码组合、图形密码数据、从基于时间的令牌(例如由位于Bedford,Massachusetts的RSA Security Inc生产的SecurID系列令牌)获取的数据、质询-响应数据、来自智能卡的信息以及生物统计信息(例如指纹、声波纹或面部特征)。验证模块1710可以使用提供的验证证书以将用户10验证到机器100。例如,在基于WINDOWS的环境中,验证模块1710可以由MSGINA动态链接库提供。在其它实施例中,例如在基于Unix的环境中,验证模块1710可以使用pam_krb模块的由Unix可插验证管理器提供。在其它实施例中,验证模块1710可以由UNIX kinit命令程序提供。
(556)在图17所示实施例中,机器100还包括安全服务1712。在有些实施例中,验证模块1710和安全服务1712被提供为同一个动态链接库。安全服务1712向机器100上的模块和应用程序(包括验证模块1710和瘦客户机应用程序1720)提供安全服务,例如到机器100的验证和到远程机器或网络服务的验证。例如,应机器100上的模块或应用程序的请求,安全服务1712(它可以是由Internet工程任务组(IETF)指定的GSSAPI或由位于Redmond,Washington的Microsoft公司制造的SSPI)可以根据接收到用户验证证书获取Kerberos票据并使用这个票据获取额外的Kerberos票据以将用户验证到远程机器或网络服务。如果远程验证需要的话,安全服务1712可以用这些Kerberos票据产生用户验证数据。在一个实施例中,安全服务1712可以用外部验证服务(例如Kerberos环境中的密钥发布中心或基于WINDOWS的环境中的活动目录)产生用户验证数据。
(557)安全服务1712将所产生的用户验证数据(例如Kerberos票据和相关的Kerberos验证器)提供给瘦客户机应用1720。瘦客户机应用程序1720将用户验证数据发送到远程机器30进行用户的远程验证。因而,不像现有的用于基于服务器的计算的单一登录机制,用户提供的验证证书不会在网络150上被发送到远程机器30。由安全服务1712产生的用户验证数据独立于用户用来验证到机器10的方法。因而,例如,不管用户使用用户名-密码组合或生物统计验证到机器100,都获得机器100的用户的Kerberos票据。
(558)在图17所示实施例中,瘦客户机应用程序1720通过有一个或多个虚拟信道的瘦客户机协议与远程机器30进行通信。在这些实施例中,瘦客户机应用程序1720装载虚拟信道驱动程序并用它在验证虚拟信道上发送和接收消息。在有些实施例中,虚拟信道驱动程序提供了用于打开虚拟信道和在它上面发送数据的功能。
(559)当瘦客户机协议连接被建立时,瘦客户机应用程序1720将一个用于虚拟信道1735的数据结构发送到远程机器30,向服务器端瘦客户机应用程序1750表示验证虚拟信道可用。在一个实施例中,用于验证虚拟信道的虚拟信道数据结构包含虚拟信道信息和机器100能够在虚拟信道1735上从远程机器30接收或向其发送的最大数据分组的大小的表示。数据分组大小受客户机10所限制的最大瘦客户机大小和任意特定的存储器限制所约束。在一个特定实施例中,用于验证虚拟信道的数据结构被定义如下:
typedef struct_C2H
{
VD_C2H Header;
UINT16cbMaxDa taSize;
}C2H,*PC2H;
(560)服务器端瘦客户机应用程序1750通过打开虚拟信道并向信道上发送绑定的请求消息而向瘦客户机应用程序1720表示它用验证虚拟信道1735进行验证的意图。在一个实施例中,一旦虚拟信道被打开,瘦客户机应用程序1720中的虚拟信道驱动程序从虚拟信道读取请求绑定的消息,根据所绑定的请求向虚拟信道上发送消息;并从信道读取“commit”消息。在一个实施例中,请求绑定的消息包括指定所支持的协议版本的数据。在其它实施例中,可以使用所绑定的请求和所绑定的响应消息在瘦客户机应用程序1720和服务器端瘦客户机1750之间协商协议版本。
(561)所绑定的请求、所绑定的响应和所绑定的commit初始化消息使得服务器端瘦客户机应用程序1750和瘦客户机应用程序1720进行由服务器端瘦客户机应用程序1750启动的3-路握手,并协商功能。当只用2-路握手就可以协商虚拟信道功能的当前集合时,可以由服务器端瘦客户机应用程序1750启动2-路握手,但支持3-路握手以允许新功能或对当前功能的改进可能需要的更多灵活性。例如,在3-路握手中,在从服务器端瘦客户机应用程序1750接收到“menu”功能之后,瘦客户机应用程序1720能够展现特定的偏好或者确认与特定功能有关的完整的选项集,因而让服务器端瘦客户机1750选定特定的选择。在将由瘦客户机应用程序1720启动的2-路握手中,瘦客户机应用程序1720不能展现特定的偏好,因为它可能不被主机所支持。
(562)在信道建立之后,瘦客户机应用程序1720和服务器端瘦客户机应用程序1750二者的虚拟信道驱动程序在一个循环中进行下列操作直到接收到“stop”消息或“error”消息:从安全服务1712、1712′获取验证数据,将另一方通过虚拟信道提供的任意验证数据提供为输入;并将获取的验证数据(如果有的话)在数据消息中发送到虚拟信道。如果从安全服务1712、1712′的数据获取返回“STOP”消息,就以信号停止并关闭验证虚拟信道。在有些实施例中,虚拟信道驱动程序可以将它自己重置在“stop”信号上。如果从安全服务1712、1712′的数据获取返回“CONTINUE”消息,就继续。如果安全服务1712、1712′的验证数据获取返回返回“ERROR”,就以信号通知发生了错误并关闭验证虚拟信道。
(563)只要没有用信号通知“stop”或“error”信号,瘦客户机应用程序1720和服务器端瘦客户机应用程序1750的虚拟信道驱动程序就能够自由交换数据消息直到安全服务1712、1712′停止产生要发送的数据缓冲区。在有些实施例中,所交换的消息数量可以由虚拟信道驱动程序、服务器端瘦客户机应用程序1750或虚拟信道1735限制。在其它实施例中,瘦客户机应用程序1720和服务器端瘦客户机应用程序1750的虚拟信道驱动程序顺序交换消息,也就是说,不能在一个方向上在没有收到另一方对第一个消息的回应的情况下发送两个消息。在任一实施例中,消息交换可以在任一方向上发送了一个消息之后停止。
(564)在有些特定的实施例中,数据消息在虚拟信道上被以最低双字(LSDW)优先、最低字(LSW)优先、最低字节(LSB)优先的顺序发送。在其它特定实施例中,数据消息在存储器中被按字节边界对齐并完全分组。在这些实施例中,数据字段在写入虚拟信道或从虚拟信道读出时在存储器中被对齐。
(565)在验证虚拟信道上发送的有些消息跨越多个虚拟信道分组。为此,每个消息前必须有一个指定下一个发送的命令的长度的消息。可以用来指定下一命令长度的消息的一个例子如下:
typedef struct_PKT_CMDLEN
{
UINT32  Length;
UINT8      Command;
UINT8      FlagsBitMask;
}PKT_CMDL EN,*PPKT_CMDLEN;
(566)在有些这样的实施例中,PKT_CMDLEN还包含命令编号以指示后面跟随的是什么类型的消息:
#define CMD_BIND_REQUEST   0x00
#define CMD_BIND_RESPONSE  0x01
#define CMD_BIND_COMMIT    0x02
#define CMD_SSPI_DATA       0x03
(567)包含Length=0的PKT_CMDLEN分组表示后面不再有数据(即逻辑信道关闭)。
(568)服务器端瘦客户机应用程序1750将它在验证虚拟信道上接收到的验证数据发送到它的安全服务1712′。如果服务器端安全服务1712′能够验证该数据,它就生成表示用户的登录会话的访问令牌,使得用户能够验证到远程机器30而不必重新提交验证证书。访问令牌是一个(除了其它之外还)包括登录会话的逻辑唯一标识符(LUID)的数据对象。如果服务器端安全服务1712′不能验证该数据,用户就会被提示重新提交验证证书。
(569)在有些实施例中,直到服务器端安全服务1712′验证了用户,仅有用户可以在其上与远程机器30通信的虚拟信道是验证虚拟信道。在有些这样的实施例中,在验证后,新的虚拟信道被启动用于通信。在其它实施例中,只有一个虚拟信道存在,它可以只用于与验证有关的通信直到用户被验证通过,在用户被验证通过之后它可以只用于其它通信。
(570)对于远程机器30在MICROSOFT WINDOWS操作系统的控制下运行的实施例,由服务器端安全服务1712′产生的访问令牌是只有网络登录权限的模拟令牌。也就是说,产生的访问令牌不适合用于启动应用程序以像基于WINDOWS服务器的计算环境所要求的那样交互式运行。为了让应用程序能够交互式运行,需要有交互式登录权限的主访问令牌。在一个实施例中,产生的访问令牌被修改以提供适当的权限。在另一个实施例中,为用户产生新的令牌。
(571)对于服务器端计算设备140在基于UNIX的操作系统的控制下运行的实施例,如果服务器端安全服务1712′验证了它在验证虚拟信道上从服务器端瘦客户机应用程序1750接收到的验证数据,服务器端瘦客户机应用程序1750将授权该用户访问资源。在这些实施例中,服务器端安全服务1712′不产生访问令牌。
(572)在有些实施例中,在远程机器30已经验证通过了用户之后,远程机器30提供该用户可用的资源列表。在这些实施例中,远程机器30可以创建由多个机器提供的、可为机器100所用的、说明资源的显示的页面。远程机器30可以随后将所创建的页面发送到机器100进行显示并从机器100接收对所提供的资源之一的访问请求。
(573)在有些这样的实施例中,执行由多个机器之一提供的可用资源中被选择的那一个不再要求从机器100进一步接收用户验证数据。在有些这样的实施例中,远程机器30响应用户的成功验证而启动从远程机器30到提供该用户可用的资源的第二个远程机器30′的连接。在这些实施例中,可用资源在该连接上被执行。在有些实施例中,该连接是虚拟信道。
(574)在其它实施例中,第一远程机器30正在提供可用资源中选定的那一个。在有些这样的实施例中,远程机器30在现有的连接上使该资源对该用户可用。在其它这样的实施例中,远程机器30在新连接上使该资源对用户可用。在有些这样的实施例中,新连接包括虚拟信道。
(575)在有些实施例中,为将客户机10的用户验证到远程机器30上的虚拟机而提供了多个组件。在其中一个这样的实施例中,提供用于客户机10和虚拟机提供的客户操作系统之间的基于Kerberos的单一登录过程的功能。
(576)在有些实施例中,寻求访问由虚拟机提供的资源的用户多次提供验证证书给不同的实体。在其中一个这样的实施例中,用户被客户机10上的客户机代理、远程机器30或远程机器30中的虚拟机提供的计算环境所验证。在有些这样的实施例中,单一登录支持只需要从用户传输一次验证证书就能将用户验证到不同的实体。
(577)可以按照结合图17所说明的那样将用户验证到客户机和远程机器30。在有些实施例中,提供了验证组件、GINA(图形标识和验证)组件、会话管理组件中的验证模块以及用于虚拟机服务组件的验证模块。在一个实施例中,双向虚拟信道使得虚拟机30上的服务管理组件和执行在客户操作系统中的虚拟机服务组件之间的通信成为可能。在一个实施例中,远程机器30包括客户机端单一登录功能,并且虚拟机包括服务器端单一登录功能。在又一个实施例中,服务管理组件实现验证模块并与虚拟机服务组件中的验证模块通信以验证用户。
(578)在一个实施例中,会话管理组件在它自己和虚拟机服务组件之间创建Kerberos信道。当该信道被建立时,会话管理组件获取用户的证书并用这个数据初始化安全上下文。返回的初始化数据被发送到虚拟机服务组件,虚拟机服务组件接受该数据并启动这两个组件之间的SSPI消息的交换直到在虚拟机服务组件中建立了安全上下文。这个上下文随后被用来使用单一登录GINA组件将用户登录到虚拟机。
(579)在有些实施例中,会话管理组件将用户验证到远程机器30上的宿主操作系统。在其中一个这样的实施例中,宿主操作系统随后将用户验证到虚拟机。在其它实施例中,会话管理组件将用户验证到管理程序。在其中一个这样的实施例中,管理程序随后将用户验证到虚拟机。在其它实施例中,会话管理组件将用户验证到为用户寻求访问的虚拟机提供管理功能的虚拟机。
(580)回过去参看图8,远程机器30可以决定提供对资源流服务的访问,资源流服务能够将所请求的资源发送给客户机(步骤816)。在有些实施例中,远程机器30决定实现资源流服务以将所请求的资源发送到客户机10或远程机器30。在其它实施例中,远程机器30决定使用资源流服务将资源流式传输到虚拟机提供的计算环境。在其它实施例中,该资源是一个计算环境并且远程机器30决定使用资源流技术将该计算环境流式传输到虚拟机。在有些实施例中,多个资源文件驻留在远程机器30′上。在其它实施例中,多个资源文件驻留在单独的文件服务器或远程机器30″上。在其它实施例中,该多个资源文件可以被发送到客户机10。在其它实施例中,该多个资源文件中的一个文件可以在向客户机10发送该多个资源文件中的第二个文件之前被执行。
(581)在有些实施例中,远程机器30从远程机器30′获取与所列举的资源有关的信息。在其中一个这样的实施例中,远程机器30接收到提供了多个资源文件的远程机器30″的标识。在另一个这样的实施例中,远程机器30接收到多个资源文件的位置标识,该标识符合通用命名标准(UNC)。在另一个这样的实施例中,该标识包括网络位置和资源流协议的套接字。
(582)在一个实施例中,远程机器30获取包含与列举出的资源有关的信息的文件。该文件可以包括提供所列举的资源的远程机器30′的位置标识。该文件可以包括所列举的资源的多个版本的标识。该文件可以包括包含所列举的资源的多个资源文件的列表。该文件可以包括一个压缩文件的标识,该压缩文件包含包括了所列举的资源的多个资源文件。该文件可以包括执行所列举的资源的机器要满足的先决条件的标识。该文件可以包括与列举出的资源相关联的数据文件的列表。该文件可以包括要在执行列举出的资源的机器上执行的脚本的列表。该文件可以包括与列举出的资源相关联的注册数据的列表。该文件可以包括用在列举出的资源在隔离环境中执行的实施例中的规则的列表。在一个实施例中,该文件可以被称为“清单”文件。下面更详细地说明该文件所包含的信息。
(583)数据分组流可以包括包含所列举资源的资源文件。在有些实施例中,资源文件包括与资源相关联的数据文件。在其它实施例中,资源文件包括资源的执行所需要的可执行文件。在其它实施例中,资源文件包括元数据,元数据包括与文件有关的信息,例如位置、功能要求、配置数据、注册数据、用在隔离环境中的执行脚本规则的标识或者授权要求。
(584)在有些实施例中,流资源(streamed resource)在传输包括该流资源的多个资源文件中的每个资源文件之前执行。在其中一个这样的实施例中,流资源的执行在客户机10接收到多个资源文件中的一个资源文件后开始。在另一个这样的实施例中,流资源的执行在客户机10接收到多个资源文件中的可执行资源文件后开始。在另一个这样的实施例中,客户机10执行多个资源文件中第一个接收到的资源文件,并且该第一个接收到的资源文件请求访问多个资源文件中的第二个资源文件。
(585)在一个实施例中,流资源在客户机10上执行但不必永久驻留在客户机10上。在这个实施例中,流资源可以在客户机10上执行然后在流资源执行结束后被从客户机10上移除。在另一个实施例中,流资源在每个资源的预先布署的拷贝被存储在客户机10上之后在客户机10上执行。在又一个实施例中,流资源在每个资源的拷贝被存储在客户机10上的隔离环境中之后在客户机10上执行。在又一个实施例中,流资源在每个资源文件的拷贝被存储在客户机10上的缓存中之后在客户机10上执行。
(586)在有些实施例中,远程机器30将列举出的资源流式传输到远程机器30,在远程机器30上执行列举出的资源,并将由这些列举出的资源的执行所产生的资源输出数据提供给客户机10。在其它实施例中,资源被流式传输到虚拟机,并且资源输出数据被用诸如X11、VNC、ICA或RDP等的表示层协议发送到客户机10。
(587)在一个实施例中,远程机器30接收到包含列举出的资源的多个资源文件。在另一个实施例中,远程机器30通过表示层协议(例如ICA表示层协议或远程桌面协议窗体(Remote Desktop Windows)表示层协议或X-Windows表示层协议)提供资源-输出数据。
(588)在有些实施例中,远程机器30还提供与列举出的资源有关的访问信息,该访问信息是根据所选择的方法生成的。在其中一个这样的实施例中,该访问信息向客户机10提供了为了列举出的资源的执行而选择的方法的标识。在另一个这样的实施例中,该访问信息包括列举出的资源的位置标识,该标识符合通用命名标准(UNC)。在又一个这样的实施例中,该访问信息包括会话管理服务器的标识。
(589)在有些实施例中,该访问信息包括包含验证信息的启动票据。在其中一个这样的实施例中,客户机10可以使用启动票据验证从远程机器30接收到的访问信息。在另一个这样的实施例中,客户机10可以使用该启动票据将它自己验证到提供列举出的资源的第二远程机器30。在又一个这样的实施例中,远程机器30根据客户机10对启动票据的请求而将启动票据包含在访问信息中。
(590)现在参看图18,所示流程图说明了为访问包含资源(例如计算环境或应用程序)的多个文件所采用的步骤的一个实施例。客户机10进行启动前分析(步骤1810)。在一个实施例中,客户机10在获取并执行包含资源的多个资源文件之前完成启动前分析。在另一个实施便中,客户机10根据接收到启动前分析是被授权访问包含资源的多个资源文件的必要条件的指示,完成启动前分析。
(591)在有些实施例中,客户机10从远程机器30接收到与多个资源文件相关联的访问信息。在其中一个这样的实施例中,该访问信息包括提供该多个资源文件的远程机器30′的位置标识。在另一个这样的实施例中,客户机10接收到包含该资源的一个或多个版本的多个资源文件的标识。在又一个这样的实施例中,客户机10接收到包含一个或多个资源的多个资源文件的标识。在其它实施例中,客户机10接收到客户机10可以获取和执行的资源的列表。在其中一个这样的实施例中,该列表来自对客户机10的评估。在其它实施例中,客户机10根据获取的包含资源的多个资源文件的标识获取至少一个特征。
(592)在有些实施例中,访问信息包括能够授权客户机10访问该多个资源文件的启动票据。在其中一个这样的实施例中,该启动票据被根据对客户机10的评估而提供给客户机10。在另一个这样的实施例中,该启动票据在客户机10进行了对客户机10的启动前分析之后被提供给客户机10。
(593)在其它实施例中,客户机10获取该多个资源文件的执行所需的至少一个特征。在其中一个这样的实施例中,访问信息包括至少一个特征。在另一个这样的实施例中,访问信息指示一个文件的位置以让客户机10获取,该文件列举了至少一个特征。在又一个这样的实施例中,列举了至少一个特征的该文件还包括多个资源文件的列表以及提供该多个资源文件的远程机器30的标识。
(594)客户机10判断该至少一个特征在客户机10上的存在。在一个实施例中,客户机10作为启动前分析的一部分而进行这个判断。在另一个实施例中,客户机10判断客户机10是否有该至少一个特征。
(595)在一个实施例中,判断该至少一个特征在客户机10上的存在包括判断在客户机10上是否安装了设备驱动程序。在另一个实施例中,判断该至少一个特征在客户机10上的存在包括判断在客户机10上是否安装了操作系统。在又一个实施例中,判断该至少一个特征在客户机10上的存在包括判断在客户机10上是否安装了特定的操作系统。在又一个实施例中,判断该至少一个特征在客户机10上的存在包括判断在客户机10上是否安装了特定修订级别的操作系统。对于远程机器30充当客户机10(例如,远程机器代表客户机的用户在其中执行计算资源的终端服务会话)的实施例,判断该至少一个特征的存在可以包括判断该远程机器30是否执行管理程序或者远程机器30是否执行其自身在原生操作系统中执行的管理程序。
(596)在有些实施例中,判断该至少一个特征在客户机10上的存在包括判断客户机10是否已经获取了执行列举出的资源的授权。在其中一个这样的实施例中,客户机10可以关于客户机10是否已经接收到执行列举出的资源的许可而做出该判断。在另一个这样的实施例中,客户机10可以关于该客户机10是否已经接收到跨越资源流会话接收包括列举出的资源的多个资源文件的许可而做出该判断。在其它实施例中,判断该至少一个特征在客户机10上的存在包括判断客户机10是否有足够的带宽可用来获取并执行列举出的资源。
(597)在有些实施例中,判断该至少一个特征在客户机10上的存在包括在客户机10上执行脚本。在其它实施例中,判断该至少一个特征在客户机10上的存在包括在客户机10上安装软件。在其它实施例中,判断该至少一个特征在客户机10上的存在包括修改客户机10上的注册表。在其它实施例中,判断该至少一个特征在客户机10上的存在包括将收集代理704发送到客户机10,以在客户机10上执行从而收集与客户机10相关联的证书。
(598)客户机10向远程机器30请求对多个资源文件的执行授权,该请求包括启动票据(步骤1812)。在有些实施例中,客户机10根据该至少一个特征在客户机10上存在的判断而进行请求。在其中一个这样的实施例中,客户机10判断多个特征在客户机10上存在,该多个特征与列举出的资源相关并且是响应执行列举出的资源的请求而接收到的。在另一个这样的实施例中,客户机10是否接收到对列举出的资源文件的执行的授权的指示取决于该至少一个特征是否在客户机10上存在。在一个实施例中,客户机10接收到资源列表,请求执行列举出的资源,并接收到包括访问信息,访问信息包括该至少一个特征和在确定该至少一个特征在客户机10上存在后授权列举出的资源的执行的启动票据。在一个实施例中,客户机10从远程机器30接收到授权该多个资源文件的执行的许可。在有些实施例中,该许可为指定时间段授权执行。在其中一个这样的实施例中,该许可要求心跳消息的发送以维持对该多个资源文件的执行的授权。对于虚拟机被流式传输或下载到客户机的实施例,可以提供一个授权虚拟机、虚拟机的客户操作系统以及安装在客户操作系统中的所有获得许可的软件的许可池。在有些这样的实施例中,提供授权那些实体的单个许可。
(599)在另一个实施例中,客户机10从远程机器30接收到与监视该多个资源文件的执行的远程机器30相关联的许可和标识符。在有些实施例中,该远程机器30是会话管理服务器1962,如下面结合图19所说明的那样。在其中一个这样的实施例中,会话管理服务器1962包括监视与客户机10相关联的会话的会话管理子系统1910。在其它实施例中,单独的远程机器30″″是会话管理服务器1962。
(600)回过来参看图18,客户机10接收并执行该多个资源文件(步骤1814)。在一个实施例中,客户机10跨越资源流会话接收该多个资源文件。在另一个实施例中,客户机10将该多个资源文件存储在客户机10上的隔离环境中。在又一个实施例中,客户机10在接收到该多个资源文件的第二个之前执行该多个资源文件中的一个。在有些实施例中,远程机器30将该多个资源文件发送到多个客户机10,其中的每个客户机10都与远程机器30建立了独立的资源流会话。
(601)在有些实施例中,客户机10将该多个资源文件存储在高速缓存中并延迟这些资源文件的执行。在其中一个这样的实施例中,客户机10接收到在预定的时间段内执行资源文件的授权。在另一个这样的实施例中,当客户机10缺乏对网络的访问时,客户机10接收到在预定时间段内执行资源文件的授权。在其它实施例中,客户机10将该多个资源文件存储在高速缓存中。在其中一个这样的实施例中,资源流客户端1952(下面将结合图19更详细地说明)建立内部资源流会话以从高速缓存中获取该多个资源文件。在另一个这样的实施例中,当客户机10缺乏对网络的访问时,客户机10接收到在预定时间段内执行该资源文件的授权。
(602)客户机10发送至少一个心跳消息到远程机器(步骤1816)。在有些实施例中,客户机10发送该至少一个心跳消息以维持执行包括列举出的资源的多个资源文件的授权。在其它实施例中,客户机10发送至少一个心跳消息以维持获取该多个资源文件中的一个资源文件的授权。在其它实施例中,客户机10接收到授权在预定时间段内执行该多个资源文件的许可。
(603)在有些实施例中,客户机10发送心跳消息到第二远程机器30″″。在其中一个这样的实施例中,该第二远程机器30″″可以包含监视该多个资源文件的获取和执行的会话管理服务器1962。在另一个这样的实施例中,该第二远程机器30″″可以响应传输来的心跳消息更新授权多个资源文件的执行的许可。在又一个这样的实施例中,该第二远程机器30″″可以响应传输来的心跳消息向客户机10发送一个命令。
(604)现在参看图19,客户机10可以包括资源流客户端1952、流服务1954和隔离环境1956。
(605)资源流客户端1952可以是可执行程序。在有些实施例中,资源流客户端1952能够启动另一可执行程序。在其它实施例中,资源流客户端1952可以启动流服务1954。在其中一个这样的实施例中,资源流客户端1952可以向流服务1954提供与执行资源相关联的参数。在另一个这样的实施例中,资源流客户端1952可以用远程过程调用启动流服务1954。
(606)在一个实施例中,客户机10请求一个资源的执行并从远程机器30接收到与该执行有关的访问信息。在另一个实施例中,资源流客户端1952接收到该访问信息。在又一个实施例中,资源流客户端1952将该访问信息提供给流服务1954。在又一个实施例中,该访问信息包括与包含该资源的多个资源文件相关联的一个文件的位置标识。
(607)在一个实施例中,流服务1954获取与多个资源文件相关联的文件。在有些实施例中,所获取的文件包括该多个资源文件的位置标识。在其中一个这样的实施例中,流服务1954获取该多个资源文件。在另一个这样的实施例中,流服务1954在客户机10上执行所获取的多个资源文件。在其它实施例中,流服务1954发送心跳消息到远程机器30以维持获取并执行多个资源文件的授权。
(608)在有些实施例中,所获取的文件包括不止一个资源文件的位置标识,该多个资源文件中的每一个都包含一个不同的资源。在其中一个这样的实施例中,流服务1954获取包含与客户机10兼容的资源的多个资源文件。在另一个这样的实施例中,流服务1954响应对客户机10的评估而接收到获取特定的多个资源文件的授权。
(609)在有些实施例中,该多个文件被压缩并存储在文件服务器上的一个归档文件中,例如CAB、ZIP、SIT、TAR、JAR或其它归档文件。在一个实施例中,存储在归档文件中的多个资源文件包含一个资源。在另一个实施例中,存储在归档文件中的多个资源文件各自包含一个资源的不同版本。在又一个实施例中,存储在归档文件中的多个资源文件各自包含不同的资源。在有些实施例中,归档文件包括与该多个资源文件中的各个文件相关联的元数据。在其中一个这样的实施例中,流服务1954根据所包括的元数据生成目录结构。下面将更详细地说明,元数据可以用来满足资源对目录列举的请求。
(610)在一个实施例中,流服务1954对归档文件解压缩以获取该多个资源文件。在另一个实施例中,流服务1954在从该多个资源文件获取一个文件之前先判断在客户机10上的高速缓存中是否存在该文件的本地拷贝。在又一个实施例中,文件系统过滤驱动程序1964判断高速缓存中是否存在本地拷贝。在有些实施例中,流服务1954在获取该多个资源文件中的一个文件之前先修改注册表记录。
(611)在有些实施例中,流服务1954将多个资源文件存储在客户机10上的高速缓存中。在其中一个这样的实施例中,流服务1954可以提供用于在接收到缓存多个资源文件的请求时缓存该多个资源文件的功能。在另一个这样的实施例中,流服务1954可以提供对于保护客户机10上的高速缓存的功能。在另一个这样的实施例中,流服务1954可以使用算法调整高速缓存的大小和位置。
(612)在有些实施例中,流服务1954在客户机10上创建隔离环境1956。在其中一个这样的实施例中,流服务1954使用隔离环境应用编程接口创建隔离环境1956。在另一个这样的实施例中,流服务1954将该多个资源文件存储在隔离环境1956中。在另一个这样的实施例中,流服务1954执行隔离环境中的多个资源文件中的文件。在又一个这样的实施例中,流服务1954在隔离环境中执行资源。在有些实施例中,流服务1954访问由虚拟机提供的隔离环境1956。
(613)对于接收到在客户机10上执行资源的授权的实施例,资源的执行可以发生在隔离环境1956中。在有些实施例中,在该资源的执行之前,包含该资源的多个资源文件被存储在客户机10上。在其它实施例中,在该资源的执行之前,该多个资源文件的一个子集被存储在客户机10上。在其它实施例中,该多个资源文件不驻留在隔离环境1956中。在其它实施例中,该多个资源文件的一个子集不驻留在客户机10上。不管该多个资源文件的一个子集或其中的每个文件是否驻留在客户机10上或隔离环境1956中,在有些实施例中,该多个资源文件中的资源文件都可以在隔离环境1956中被执行。
(614)在有些实施例中,隔离环境被用来向资源流客户端1952提供附加功能。在其中一个这样的实施例中,在隔离环境中执行资源。在另一个这样的实施例中,获取的多个资源文件驻留在隔离环境中。在又一个这样的实施例中,对客户机10上的注册表的改变可以在隔离环境中进行。
(615)在一个实施例中,资源流客户端1952包括隔离环境1956。在有些实施例中,资源流客户端1952包括拦截对文件的资源请求的文件系统过滤驱动程序1964。在其中一个这样的实施例中,文件系统过滤驱动程序1964截获用于打开一个现有文件的资源请求并判断该文件不驻留在隔离环境1956中。在另一个这样的实施例中,文件系统过滤驱动程序1964在确定该文件不在隔离环境1956中之后将该请求重定向到流服务1954。流服务1954可以从该多个资源文件中提取该文件并将其存储在隔离环境1956中。文件系统过滤驱动程序1964可以随后以所存储的该文件的拷贝响应对该文件的请求。在有些实施例中,文件系统过滤驱动程序1964可以响应流服务1954未能获取该文件或该多个资源文件的指示以及该文件不在隔离环境1956中的判断将对该文件的请求重定向到文件服务器1940。
(616)在有些实施例中,文件系统过滤驱动程序1964使用严格的隔离规则以防止冲突或不一致数据出现在隔离环境1956中。在其中一个这样的实施例中,文件系统过滤驱动程序1964截获对用户隔离环境中的文件的请求,并可以将该请求重定向到资源隔离环境。在另一个这样的实施例中,文件系统过滤驱动程序1964不将该请求重定向到系统范围。
(617)在一个实施例中,流服务1954使用IOCTL命令与过滤驱动程序通信。在另一个实施例中,到文件服务器1940的通信被Microsoft SMB流协议接收到。
(618)现在参看图20,所示流程图说明客户机10为执行资源所采用的步骤的一个实施例。如前面结合图18关于步骤1814所说明的那样,客户机10接收到并执行多个资源文件。简单地说,客户机接收到包括用于访问多个资源文件和执行能够接收资源流的第一客户端的访问信息的文件(步骤2002)。客户机10根据该文件获取该多个资源文件的标识(步骤2004)。客户机10根据该文件获取该多个资源文件的执行所需的至少一个特征(步骤2006)。客户机10判断该客户机10是否包括该至少一个特征(步骤2008)。客户机10执行第二个客户端,该第二客户端根据客户机10缺乏该至少一个特征的判断请求在远程机器30上执行该多个资源文件(步骤2010)。
(619)更详细地参看图20,客户机10接收到包括用于访问多个资源文件和用于执行能够接收资源流的第一客户端的访问信息的文件(步骤2002)。在一个实施例中,客户机10接收到包括包含资源的多个资源文件的位置标识的访问信息。在另一个实施例中,客户机10响应请求该资源的执行而接收到该文件。在又一个实施例中,访问信息包括该多个资源文件驻留在远程机器30′(例如资源服务器或文件服务器)上的指示。在又一个实施例中,访问信息指示客户机10可以在资源流会话上从远程机器30获取该多个资源文件。
(620)客户机10根据该文件获取多个资源文件的标识(步骤2004)。在一个实施例中,客户机10根据包括访问信息的该文件标识出该多个资源文件所在的远程机器30。在另一个实施例中,客户机10从远程机器30获取标识该多个资源文件的一个文件。在有些实施例中,该多个资源文件包括一个资源。在其它实施例中,该多个资源文件包括多个资源。在其它实施例中,该多个资源文件包括单个资源的多个版本。
(621)向前参看图21,所示框图说明了驻留在远程机器30′(例如文件服务器1940)上的多个资源文件的一个实施例。在图21中,被称为包的多个资源文件包括包含了一个或多个资源的三个不同版本的资源文件。
(622)在一个实施例中,包括一个或多个资源的一个版本并存储在包中的资源文件的一个子集被称为一个目标。例如,目标1包括字处理资源和电子表格程序的一个版本,该版本与Microsoft Windows2000操作系统的英语版本相兼容。目标2包括字处理资源和电子表格程序的一个版本,该版本与Microsoft XP操作系统的英语版本相兼容。目标3包括字处理资源和电子表格程序的一个版本,该版本与带有服务补丁3的MicrosoftWindows2003的日语版本相兼容。
(623)回过来参看图20,在有些实施例中,从提供多个资源文件的远程机器30获取的文件包括对在该多个资源文件中包含的包和目标的说明。在其它实施例中,从远程机器30获取的文件标识出包含客户机10执行的所请求的源的多个资源文件。
(624)客户机10根据该文件获取该多个资源文件的执行所需的至少一个特征(步骤2006)。在有些实施例中,除非客户机10包括特定的特征,否则客户机10不能执行资源。在其中一个这样的实施例中,不同的资源要求客户机10包括不同于其它资源所要求的特征。在另一个这样的实施例中,客户机10接收到包含客户机10所请求的资源的多个资源文件的执行所要求的至少一个特征的标识。
(625)仍然参看图20,客户机10判断该客户机10是否包括该至少一个特征(步骤2008)。在一个实施例中,客户机10评估客户机10上的操作系统以判断客户机10是否包括该至少一个特征。在另一个实施例中,客户机10标识出客户机10上的操作系统使用的语言以判断该客户机10是否包括该至少一个特征。在又一个实施例中,客户机10标识出客户机10上的操作系统的修订级别以判断该客户机10是否包括该至少一个特征。在又一个实施例中,客户机10标识出驻留在该客户机10上的一个资源的资源版本以判断该客户机10是否包括该至少一个特征。在有些实施例中,客户机10判断该客户机10是否包括设备驱动程序以判断该客户机10是否包括该至少一个特征。在其它实施例中,客户机10判断该客户机10是否包括操作系统而判断该客户机10是否包括该至少一个特征。在其它实施例中,客户机10判断该客户机10是否包括执行多个资源文件的许可来判断该客户机10是否包括该至少一个特征。
(626)在一个实施例中,客户机10判断该客户机10是否包括访问资源要求的可用磁盘空间量。在另一个实施例中,客户机10判断客户机10的中央处理单元是否提供了要求的处理速度。在又一个实施例中,客户机10判断该客户机10是否包含所要求数量的可用RAM。在又一个实施例中,客户机10判断客户机10是否包括所要求级别的图形处理和显示能力。
(627)客户机10根据客户机10缺乏该至少一个特征的判断执行第二个客户端(步骤2010),该第二客户端请求在远程机器30上执行多个资源文件。在一个实施例中,当客户机10判断该客户机10缺乏该至少一个特征时,该客户机10不执行能够接收资源流的第一客户端。在另一个实施例中,当客户机10缺乏该至少一个特征时,存在策略阻止客户机10在资源流上接收该多个资源文件。在有些实施例中,客户机10判断该客户机10不包括该至少一个特征。在其中一个这样的实施例中,客户机10执行第一客户端,第一客户端从远程机器30接收包含该多个资源文件的资源流以在客户机10上执行。
(628)在有些实施例中,客户机10在判断该客户机10缺乏该至少一个特征时执行请求在远程机器30上执行多个资源文件的第二客户端。在其中一个这样的实施例中,该第二客户端将请求发送到提供该多个资源文件的远程机器30上。在另一个这样的实施例中,远程机器30执行包括该资源的多个资源文件并产生资源-输出数据。在又一个这样的实施例中,该第二客户端接收到由远程机器30上该多个资源文件的执行所产生的资源-输出数据。在又一个这样的实施例中,该第二客户端将资源-输出显示在客户机10上。在一个实施例中,客户机10请求在物理机器30上执行多个应用文件。在另一个实施例中,客户机10请求在执行在远程机器30上的虚拟机上执行多个应用文件。
(629)在有些实施例中,第二客户端接收到包含用于访问多个资源文件的访问信息的文件,并根据第一客户端做出的客户机10缺乏该至少一个特征的判断请求在提供了具有该至少一个特征的计算环境的虚拟机上执行该多个资源文件。在其它实施例中,在确定客户机10缺乏该至少一个特征后,客户机10执行请求在远程机器30上执行该多个资源文件的第二客户端。在其中一个这样的实施例中,第二客户端将请求发送到提供该多个资源文件的远程机器30。在另一个这样的实施例中,在远程机器30上执行的虚拟机执行包含该资源的多个资源文件并产生资源-输出数据。在又一个这样的实施例中,第二客户端接收到该多个资源文件在虚拟机上的执行产生的资源-输出数据。在又一个这样的实施例中,第二客户端将资源-输出显示在客户机10上。
(630)在有些实施例中,第二客户端将请求发送到不提供该多个资源文件的远程机器30。在其中一个这样的实施例中,该远程机器30可以从提供该多个资源文件的第二个远程机器30请求该多个资源文件。在另一个这样的实施例中,该远程机器30可以跨越资源流会话从第二远程机器30接收该多个资源文件。在又一个这样的实施例中,该远程机器30将接收到的多个资源文件存储在隔离环境中并在隔离环境中执行该资源。在又一个这样的实施例中,该远程机器30将产生的资源-输出数据发送给客户机10上的第二客户端。
(631)在有些实施例中,第二客户端将请求发送到不提供该多个资源文件的远程机器30。在其中一个这样的实施例中,该远程机器30可以从提供该多个资源文件的第二远程机器30请求该多个资源文件。在另一个这样的实施例中,该远程机器30可以跨越资源流会话从第二远程机器30接收该多个资源文件。
(632)在其它实施例中,远程机器30将接收到的多个资源文件存储在由执行在该远程机器30上的虚拟机提供的计算环境中,该计算环境具有该至少一个特征。在又一个这样的实施例中,该远程机器30在该虚拟机提供的计算环境中执行该资源,并将产生的资源-输出数据发送到客户机10上的第二客户端。
(633)在有些实施例中,该远程机器30上的虚拟机执行该多个资源文件。在其中一个这样的实施例中,该虚拟机接收到包括该多个资源文件的资源流用于执行。在有些实施例中,虚拟机可以根据策略的应用接收到资源流以执行。在其中一个这样的实施例中,策略的应用结果取决于所请求的资源在机器群组38中的可用性(包括适当配置的物理机器30或虚拟机的可用性)、所请求的资源的敏感度(包括是否有策略阻止将所请求的资源发送到未加保护的环境)以及与客户机10的用户相关的信息(包括在未加保护的环境中执行或访问所请求的资源的授权)。
(634)回过去参看图19,在一个实施例中,能够接收资源流的第一客户机10是资源流客户端1952。资源流客户端1952接收该文件,根据该文件获取多个资源文件的标识以及该多个资源文件的执行所需的至少一个特征,并判断客户机10是否包括该至少一个特征。在另一个实施例中,第二客户端是客户机代理1960。在有些实施例中,客户机代理1960根据资源流代理1952做出的客户机10缺乏该至少一个特征的判断从资源流代理1952接收到该文件。
(635)远程机器30包括用于监视客户机10的资源使用情况的功能。远程机器30可以监控客户机10使用的各个资源的状态,例如在资源的执行或结束时。在一个实施例中,远程机器30要求客户机10发送与客户机10所执行的资源的状态有关的消息。在另一个实施例中,当客户机10连接到远程机器30所在的网络时,客户机10发送指示客户机10已经连接到该网络的消息。
(636)在一个实施例中,当客户机10与远程机器30交互并执行一个或多个资源时,称客户机10具有一个会话。在另一个实施例中,远程机器30要求客户机10在会话期间维持授权从远程机器30接收到的资源的执行的许可。在又一个实施例中,会话具有由远程机器30分配的唯一的会话标识符。
(637)在一个实施例中,客户机10向与它交互以接收和执行资源的远程机器30发送消息。在另一个实施例中,客户机10从该远程机器30接收到第二远程机器30(例如会话管理服务器)的标识符,第二远程机器30接收并存储与客户机10上的会话相关联的所有所传输的消息。
(638)在有些实施例中,会话管理服务器1962是提供许可管理和会话监控服务的远程机器30。在其中一个这样的实施例中,会话管理服务器1962包括提供这些服务的服务器管理子系统1908。
(639)在一个实施例中,客户机10将消息直接发送到会话管理服务器1962。在另一个实施例中,客户机10将消息发送到远程机器30,该远程机器30将消息转发到带有客户机10的标识的会话管理服务器1962。
(640)客户机10可以发送心跳消息到远程机器30。在一个实施例中,心跳消息包括对许可的请求。在这个实施例中,客户机10可以在接收到与客户机10请求授权以执行的资源相关联的访问信息之后发送心跳消息。客户机10可以在执行该资源之前发送心跳消息。在一个实施例中,客户机10在心跳消息中包括从访问信息接收到的启动票据。在这个实施例中,远程机器30可以在成功验证了该访问票据之后向客户机10授权许可。
(641)在另一个实施例中,心跳消息包括对客户机10已经启动资源的执行的指示。在又一个实施例中,心跳消息包括对客户机10已经结束了资源的执行的指示。在又一个实施例中,心跳消息包括对执行资源失败的指示。
(642)在一个实施例中,心跳消息包括对第二会话管理服务器(例如会话管理服务器1962)的标识的请求。在另一个实施例中,心跳消息包括对客户机10连接到该远程机器30所在网络的指示。
(643)在有些实施例中,心跳消息包括重置资源流会话的请求。在其中一个这样的实施例中,当发生错误并且远程机器30所在网络和客户机10之间的连接被终止时,客户机10发送这个心跳消息。在另一个这样的实施例中,客户机10发送与会话相关联的心跳消息信息。在又一个这样的实施例中,如果会话已经到期,远程机器30可以向客户机10发送与会话有关的数据。
(644)在另一个这样的实施例中,如果远程机器30从它所在的网络上中断连接,客户机10就不能接收到对发送到该远程机器30的心跳消息的回复。在一个实施例中,客户机10可以通过向远程机器30发送请求会话重置的消息而重新建立会话。在另一个实施例中,客户机10可以通过向第二远程机器30发送请求会话重置的消息而重新建立会话。在有些实施例中,当远程机器30重新连接到网络时,它可以为当它仍然处在中断状态时接收到的每个会话重置请求创建一个新的会话。在其中一个这样的实施例中,新的会话将会与重新连接和无许可的状态关联在一起。在另一个这样的实施例中,为新会话没有获取到新的许可。在又一个这样的实施例中,当客户机10执行资源时,新的许可将被获取,并且与该客户机10相关联的所有会话都将与活动的和获得许可的状态关联在一起。
(645)在有些实施例中,客户机10上的资源流客户端1952产生心跳消息。在其中一个这样的实施例中,资源流客户端1952将心跳消息转发到web接口1958以传输到客户机10,进而传输到远程机器30。在其它实施例中,远程机器30上的管理服务1904通过web接口1958从客户机10接收到心跳消息。在其它实施例中,包括收集点240(如上述)的远程机器30接收并存储心跳消息。
(646)在有些实施例中,资源流代理1952向远程机器30请求许可。在其中一个这样的实施例中,该许可授权资源在客户机10上的执行。在另一个这样的实施例中,该远程机器30可以访问第二个远程机器30以提供许可。在又一个这样的实施例中,该远程机器30可以向客户机10提供该许可。在又一个这样的实施例中,该远程机器30可以将用于授权目的而可接受的许可提供给第二远程机器30。在有些实施例中,在资源的执行结束时该许可被撤销。
(647)回过去参看图8,接收到对资源的访问请求(步骤802)。在有些实施例中,该资源是一个文件。在其中一个这样的实施例中,选择并执行一个应用程序以提供对该文件的访问。在另一个这样的实施例中,标识出与所请求的文件相关联的文件的类型以选择要执行的应用程序。在又一个这样的实施例中,在对该文件的访问请求之前,将应用程序与文件类型相关连,这样使得能够在标识出与所请求的文件相关联的文件类型之后自动地选择应用程序。在有些实施例中,文件类型关联(FTA)功能使得用户能够自动地启动与数据文件相关联的应用程序的执行,即使该数据文件和可执行程序托管在不同的计算节点上。
(648)通常,文件类型关联功能使得用户能够通过选择位于不同于可执行程序所在机器的机器上的数据文件来透明地执行可执行应用程序。在一个实施例中,客户机10的用户能够通过选择位于客户机10上的数据文件来透明地调用远程机器30上的可执行程序的执行。在另一个实施例中,用户能够通过选择位于远程机器30上的数据文件而透明地调用它们的客户机10上的应用程序的执行。在又一个实施例中,用户能够选择存储在远程机器30′(例如web服务器)上的数据文件并透明地调用远程机器30(例如应用执行服务器)上的相关可执行程序的执行。通常,该执行许可对所选择的数据文件进行处理,其输出被提供给客户机10上的用户。
(649)将会理解使用文件名扩展的例子必定反映出使用WINDOWS操作系统家庭的实施例的特质。其它实施例通过使用数据文件自身中存储的特殊参数、数据文件中包含的数据、与数据文件相关联的文件系统记录或单独的数据文件或数据库来实现方法和设计。例如,使用MacOS操作系统家庭的实施例利用文件和应用程序创建者类型并在与各个存储设备相关联的桌面文件中存储文件-类型关联数据。使用UNIX类操作系统的实施例使用文件扩展名、嵌入式参数或其它适当的机制。因此,权利要求的范围不应该被解读为仅限于依赖于文件名扩展的实施例或使用WINDOWS操作系统的实施例。
基于客户机的FTA
(650)参看图22A,所示流程图说明了通过对代表位于客户机10上的数据文件的图形标记的选择而在远程机器30上透明地启用分布式应用程序的执行的方法中采用的步骤的一个实施例。客户机10从多个远程机器30之一接收到一个映射(步骤2206),此映射指定数据文件的类型和要在多个远程机器30之一上执行的可执行程序之间的关联。在有些实施例中,该映射指定数据文件的类型和要在位于多个远程机器30之一上的虚拟机上执行的可执行程序之间的关联。
(651)客户机10提供客户机10上存储的数据文件的图形说明(步骤2214)并接收到对数据文件的图形说明的选择(步骤2218)。客户机10使用接收到的映射来标识出与所选择的数据文件的类型相关联的可执行程序(步骤2222)并发送请求到远程机器30用于执行标识出的可执行程序(步骤2226)。在一个实施例中,客户机10启动本地显示应用程序的执行(步骤2230)以从执行的应用程序接收应用程序输出数据(步骤2234),本地显示应用程序将接收到的应用程序输出数据显示给终端用户(步骤2238)。
(652)仍然参看图22A,当客户机10接收到该映射时(步骤106),该映射可以被单独接收到,或者和若干其它映射一起被接收到,或者和其它消息或数据(例如软件更新)一起被接收到。表3示出了在本发明的一个实施例中提供的示范性映射:
表3
 
文件类型 可执行程序
“.DOC”,”.RTF” MSWORD.EXE
“.PDF” ACROBAT.EXE
(653)在一个实施例中,该映射标识特定的可执行程序与用户的客户机10上存储的特定的数据文件或数据文件类型之间的关联。在另一个实施例中,该映射依据启动远程机器30上的可执行程序并在客户机10上显示执行输出的客户机10应用程序来指定可执行程序和数据文件之间的关系。例如,如同结合图8A所说明的那样(步骤2206),该映射能够指定当“.DOC”文件被选定时,客户机10将执行来自位于Ft.Lauderdale,FL的CitrixSoftware的METAFRAME,而METAFRAME接着发送请求到多个远程机器30其中的一个以执行WORD,从执行接收输出数据以在客户机10上显示给用户。在有些实施例中,接收到执行应用程序的请求的远程机器30选择用于提供对该应用程序的访问的方法,如同结合图8所说明的那样(步骤804)。在其中一个这样的实施例中,远程机器30决定执行该应用程序并将应用程序输出数据提供给客户机10。在另一个这样的实施例中,远程机器30标识出执行该应用程序并提供应用程序输出数据给客户机10的远程机器30。在又一个这样的实施例中,远程机器30标识出将应用程序发送到客户机10用于本地执行的应用流服务。在又一个这样的实施例中,远程机器30标识出在其上有虚拟机提供能够执行该应用程序并将应用程序输出数据提供给客户机10的计算环境的远程机器30′。
(654)在又一实施例中,该映射根据请求将可执行程序从远程机器30提供的应用流服务传输到客户机10的客户机10应用程序来指定可执行程序和数据文件之间的关系。在其它实施例中,该映射能够指定当一个文件被选定时客户机10将建立到由多个远程机器30中的一个提供的虚拟机的连接以启动应用程序在该虚拟机上的执行并从该执行接收应用程序输出数据以在客户机10上显示给用户。在有些这样的实施例中,如同结合图8所说明的那样(步骤808),标识出并配置虚拟机以及在其上启动该虚拟机的执行机,并向客户机10的用户提供对该文件的访问。
(655)在有些实施例中,客户机10显示出与客户机10上存储的数据文件相关联的文件名列表。在又一实施例中,代表存储在客户机10上的文件的标记和代表存储在一个或多个远程机器30上或在远程机器30上执行的虚拟机上的文件的标记被混合在一起。在这个实施例中,当代表存储在客户机10上的文件的标记被选定时,基于客户机的FTA有效。在另一个实施例中,但根据与选定的标记相关联的文件的位置来激活适当形式的FTA,使得多种形式的FTA(见下)有效。
(656)图22B说明了在基于客户机的文件类型关联过程中由远程机器30采用的步骤的一个实施例。提供了指定客户机10上存储的数据文件的类型和要在多个远程机器30之一上执行的可执行程序之间的关联的映射(步骤2254)。接收到执行可执行程序的请求(步骤2262)并在多个远程机器30中的一个上面执行该可执行程序(步骤2266)。在一个实施例中,接收到执行该应用程序的请求的远程机器30选择如同结合图8所说明的那样提供所请求的访问(步骤2204和步骤2206)。在有些实施例中,远程机器30接收到将标识出的可执行程序传输到客户机10用于本地执行的请求。在其中一个这样的实施例中,远程机器30选择通过上述应用流服务向客户机10提供该可执行程序。在另一个这样的实施例中,该远程机器30选择将该可执行程序流传输到一个远程机器30或者到远程机器30′上执行的虚拟机。
基于服务器的FTA
(657)现在参看图23,所示流程图说明了用于通过对代表位于远程机器30上的数据文件的图形标记的选择而在客户机10上的透明地启动分布式的程序执行的方法中所采用的步骤的另一个实施例。客户机10呈现多个远程机器30中的一个上面存储的数据文件的图形表示(步骤2300)。客户机10接收到对数据文件的图形表示的选择(步骤2304)并将该选择发送到多个远程机器30之一(步骤2308)。客户机10从多个远程机器30中的一个接收请求以执行与所选择的数据文件相关联的可执行程序(步骤2312)并执行相关联的可执行程序(2316)。
(658)仍然参看图23,客户机10向用户呈现存储在至少一个远程机器30上的至少一个数据文件的图形说明(步骤2300)。在一个实施例中,代表存储在一个或多个远程机器30上和执行在该一个或多个远程机器30上的虚拟机上的文件的标记被和代表存储在客户机10上的文件的标记混合在一起。在这个实施例中,当代表存储在远程机器30上的文件的标记被选中时,基于服务器的FTA有效。在另一个实施例中,多种形式的FTA(见上和下)有效,其时,根据与所选择的图形标记相关联的文件的位置启动适当形式的FTA。
(659)如同上面结合图8(步骤804)所说明的那样,接收到访问所选择的数据文件的请求的远程机器30选择提供对该数据文件的访问的方法。在一个实施例中,该数据文件驻留在远程机器30上。在另一个实施例中,该数据文件驻留在例如web服务器的远程机器30′上。在有些实施例中,该远程机器30查看映射以标识出与所请求的数据文件相关联的应用程序。
(660)在有些实施例中,该远程机器30选择通过在虚拟机提供的计算环境中执行相关联的应用程序向客户机10提供对该文件的访问(步骤806)。在其中一个这样的实施例中,该远程机器30可以标识出一个远程机器30′以执行该应用程序并将应用程序输出数据发送到客户机10。在另一个这样的实施例中,该远程机器30标识出一个远程机器30′以在远程机器30′上执行的虚拟机所提供的计算环境中执行该应用程序,如同结合图8(步骤808)所说明的那样。
(661)在其它实施例中,该远程机器30标识出提供了应用流服务的远程机器30′,应用流服务能够将该应用程序发送到客户机10以在客户机10上执行,如同结合图8(步骤816)所说明的那样。在其中一个这样的实施例中,应用流服务将该应用程序发送到远程机器30′上执行并且该远程机器30将执行所产生的应用程序输出数据发送给客户机10。
(662)在有些实施例中,该远程机器30根据策略从预定数量的用于执行所请求的应用程序的方法中选择一个,该预定数量的方法包括在由虚拟机提供的计算环境中执行所请求的应用程序的方法。在其中一个这样的实施例中,应用流服务将该应用程序发送到远程机器30′以在由执行在该远程机器30′中的虚拟机提供的计算环境中执行。在另一个这样的实施例中,该远程机器30选择用于将所请求的应用程序流传输到虚拟机并在该虚拟机中执行列举出的应用程序的方法。在又一个这样的实施例中,评估该虚拟机并响应该评估做出将所请求的应用程序流传输到该虚拟机的决定。在其它实施例中,根据从客户机10收集到的证书做出将包含列举出的应用程序的多个文件中的一个流传输到虚拟机的决定。
(663)接收到与所选择的数据文件相关联的数据之后,客户机10通常用该可执行程序处理接收到的数据并将处理结果显示给终端用户。
(664)如上所述,客户机10连接到机器群组38中的一个或多个远程机器30。在有些这样的实施例中,客户机10可以与远程机器30通信以接收由该远程机器30上或者在该远程机器30上执行的虚拟机上的应用程序的执行所产生的应用输出数据。在有些实施例中,实现了协议栈以能够在客户机10和远程机器30之间进行通信。
(665)图24所示流程图说明了用于建立可扩展和动态绑定的协议栈20的方法的一个特定实施例。在一个实施例中,该方法允许客户机10动态指定协议栈的内容而不需要远程机器30对特定的客户机和特定的应用程序需求有一个预先的协议栈说明。
(666)在一个实施例中,远程机器30在线并且监控特定传输系统(例如LAN或WAN)上的活动,并且已经用最小必要协议模块初始化了它的协议栈以支持“TTY”通信模式。这种模式是在传输层之上不带任何协议假设(即没有用于压缩、加密、可靠性、成帧或调制解调的协议层)的原始的ASCII流模式。类似地,寻求访问远程机器30的客户机10用支持TTY通信模式所需的最小协议集来建立到公用传输系统的连接。
(667)在检测到客户机10已经建立了传输系统连接(步骤2401)之后,应用服务器在步骤2402广播表示服务可用的TTY数据流
“DETECT.sub.--STRING”。用于检测客户机连接的方法与传输系统相关(例如,对于TCP传输来说,当客户机连接到已知端口时,可以检测到客户机连接)。如果客户机10不在预定时间段内响应(步骤2403),在步骤2402再次广播该消息的任务。否则该过程继续到步骤2405,在那里客户机10发送TTY字符串“DETECT-STRING”。在步骤2406,客户机10等待远程机器30响应,并且如果该响应在预定时间间隔内,该过程继续到步骤2407,在那里客户机10启用支持它的应用程序所需的协议。否则,客户机10重复在步骤2405对该消息的发送。服务器在步骤4108通过启用所需协议集而响应。在步骤2409,TTY模式的通信终止,因为下一个由服务器发送的消息是表示层协议分组,“PACKET.sub.--INIT.sub--REQUEST”,它表示已经接收到并接受了客户机所需的“DETECT.sub--STRING”。响应步骤2409,客户机10在步骤2410发送一组表示层协议分组
“PACKET.sub.--INIT.sub.--RESPONSE”,其中的各个分组被用来指定正在与服务器协商的必需或可选的协议模块。在步骤2411,服务器发送一组“PACKET.sub.--INIT.sub.--CONNECT”分组。分组的数量是可变的:对步骤2410中发出的每个客户机分组有一个相应的服务器分组,因而让远程机器30有机会通过覆盖客户机10的参数协商即将发生的通信所用的参数;或者,远程机器30可以通过发送没有改变的参数指示客户机10的所有参数都是可接受的。在步骤2412,远程机器30启用步骤2411中所协商的协议(包括任何可选协议)。在客户机10接收来自步骤2411的分组后,客户机10在步骤2413中启用所协商的协议。
(668)仍然参看图24,在有些实施例中,虚拟机主机服务器与客户机10通信以启用所协商的协议。如上所述,从客户机10接收到访问计算环境或执行应用程序的请求,该请求包括客户机10的用户的标识。在有些实施例中,启动与管理程序通信的虚拟机。在其它实施例中,用预定协议集和提供公用传输机制的相关协议参数来初始化虚拟机主机服务器,其中公用传输机制用于原始的ASCII流模式通信。在其它实施例中,用预定的协议集和提供公用传输机制的相关协议参数来初始化虚拟机主机服务器。
(669)虚拟机主机服务器创建协议栈的第一部分。在一个实施例中,管理程序创建协议栈的第一部分。在另一个实施例中,管理程序将请求协议消息发送到客户机10。在又一个实施例中,管理程序从客户机10接收指定客户机10期望的一个或多个协议参数的多个协议分组。在又一个实施例中,虚拟机主机服务器响应每个接收到的协议分组产生分组计数器-指定一个或多个协议参数。
(670)虚拟机主机服务器发送请求协议消息到客户机10。虚拟机主机服务器从客户机10接收到指定客户机10期望的一个或多个协议参数的多个协议分组。虚拟机主机服务器响应每个接收到的分组发送一个分组计数器-指定一个或多个协议参数。在一个实施例中,虚拟机主机服务器发送确认消息到客户机10,表示已经启用了客户机10指定的协议中的至少一个。在另一个实施例中,虚拟机主机服务器以虚拟机主机服务器协议分组响应每个接收到的由客户机10发送的协议分组,其中至少一个虚拟机主机服务器分组修改了相关协议参数中的至少一个。虚拟机主机服务器在虚拟机主机服务器上创建协议栈的第二部分,协议栈的第一部分和第二部分建立了与具有所协商的协议参数的客户机10通信的通信信道。
(671)仍然参看图24,在有些实施例中,虚拟机与客户机10通信以如上所述启用协商出的协议。如上所述,从客户机10接收到访问计算环境或执行应用程序的请求,该请求包括客户机10的用户的标识。标识出与管理程序通信的虚拟机。在一个实施例中,启动与管理程序通信的虚拟机。在另一个实施例中,分配与管理程序通信的虚拟机。在一个实施例中,用预定的协议集和提供公用传输机制的相关协议参数初始化第二个虚拟机。在另一个实施例中,用预定协议集和提供公用传输机制的相关协议参数初始化第二个虚拟机,其中公用传输机制是用于原始的ASCII流模式通信。
(672)第二个虚拟机创建协议栈的第一部分。第二个虚拟机发送请求协议消息到客户机10。第二虚拟机从客户机10接收到指定客户机10所期望的一个或多个协议参数的多个协议分组。第二虚拟机响应每个接收到的协议分组,发送一个分组计数器-提定该一个或多个分组。在一个实施例中,第二个虚拟机向客户机10发送确认消息,表示已经启用了客户机10所指定的协议中的至少一个。在另一个实施例中,第二个虚拟机以响应协议分组回应由客户机10发送的每个接收到的协议分组,响应协议分组中的至少一个修改了相关协议参数中的至少一个。第一个虚拟机创建协议栈的第二部分,协议栈的第一部分和第二部分建立了与具有协商出的协议参数的客户机10通信的通信信道。在一个实施例中,第一个虚拟机发送确认消息到客户机10,表示已经启用了客户机10指定的协议中的至少一个。在另一个实施例中,第一个虚拟机以响应协议分组回应由客户机10发送的每个接收到的协议分组,响应协议分组中的至少一个修改了相关协议参数中的至少一个。
(673)仍然参看图24,在有些实施例中,虚拟机主机服务器与客户机10通信以如上所述启用协商出的协议。如上所述,从客户机10接收到访问计算环境或执行应用程序的请求,该请求包括客户机10的用户的标识。在一个实施例中,启动与管理程序通信的虚拟机。在另一个实施例中,分配与管理程序通信的虚拟机。在一个实施例中,用预定的协议集和提供公用传输机制的相关协议参数初始化虚拟机主机服务器。在其它实施例中,用预定协议集和提供公用传输机制的相关协议参数初始化虚拟机主机服务器,其中公用传输机制是用于原始的ASCII流模式通信。
(674)虚拟机主机服务器发送请求协议消息到客户机10。虚拟机主机服务器从客户机10接收到指定客户机10所期望的一个或多个协议参数的多个协议分组。虚拟机主机服务器响应每个接收到的协议分组发送一个分组计数器-指定一个或多个协议参数。在一个实施例中,虚拟机主机服务器发送确认消息到客户机10,表示已经启用了客户机10所指定的协议中的至少一个。在另一个实施例中,虚拟机主机服务器以虚拟机主机服务器协议分组响应由客户机10发送的每个接收到的协议分组,其中至少一个虚拟机主机服务器协议分组修改了相关协议参数中的至少一个。虚拟机主机服务器产生表示该连接并与初始的协议栈相关联的一个数据结构。虚拟机主机服务器标识出与管理程序通信的虚拟机并在标识出的虚拟机中产生客户机空间。虚拟机主机服务器产生与所产生的客户机空间相关联的第二协议栈,并通过将该数据结构与该第二协议栈关联而将虚拟机主机服务器和客户机10之间已经建立的连接从初始协议栈转移到该第二协议栈。
(675)仍然参看图24,在有些实施例中,虚拟机与客户机10通信以启用上述协商出的协议。如上所述,从客户机10接收到访问计算环境或执行应用程序的请求,该请求包括客户机10的用户的标识。标识出与管理程序通信的第一虚拟机。在一个实施例中,用预定的协议集和提供公用传输机制的相关协议参数初始化第二个虚拟机。在另一个实施例中,用预定协议集和提供公用传输机制的相关协议参数初始化第二个虚拟机,其中公用传输机制用于原始的ASCII流模式通信。
(676)第二个虚拟机发送请求协议消息到客户机10。第二虚拟机从客户机10接收指定客户机10所期望的一个或多个协议参数的多个协议分组。第二虚拟机响应每个接收到的协议分组,发送一个分组计数器-指定一个或多个协议参数。在一个实施例中,第二个虚拟机向客户机10发送确认消息,表示已经启用了由客户机10指定的协议中的至少一个。在另一个实施例中,第二个虚拟机以响应协议分组回应由客户机10发送的每个接收到的协议分组,响应协议分组中的至少一个修改了相关协议参数中的至少一个。第二个虚拟机产生表示该连接并与初始协议栈相关联的一个数据结构。第二个虚拟机在标识出的第一个虚拟机中产生客户机空间。第二个虚拟机产生与所产生的客户机空间相关联的第二协议栈,并通过将该数据结构与该第二协议栈关联而将第二个虚拟机和客户机10之间已经建立的连接从初始协议栈转移到该第二协议栈。
(677)现在参看图25,所示框图说明了与远程机器30通信的客户机10的一个实施例。当客户机10想要访问由远程机器30提供的一个资源时,客户机10可以将请示发送到远程机器30上先前由通信协议规定的常用通信端口或“众所周知”的通信端口。在一个实施例中,该通信通过数据报服务发生。远程机器30访问服务器地址的表并返回一个包含提供对所请示的资源的访问并具有最低负载的远程机器30′的地址的消息。在有些实施例中,提供了在具有最低负载的远程机器30′上执行的虚拟机的地址。对于该消息标识出具有最轻负载的执行机的实施例,操作系统或管理程序可以将通信请示以及所有后续话务量转发到适当的虚拟机。
(678)后续通信也被客户机10自动寻址到远程机器30′上“众所周知”的或预定的常用通信端口。在一个实施例中,向远程机器30进行初始查询的协议类型决定了远程机器30向客户机10返回信息的协议。因而,如果用TCP/IP数据报进行该请求,远程机器30将把远程机器30′的TCP/IP地址返回给客户机10并且客户机10将接着与使用该协议的远程机器30′建立联系。在另一个实施例中,客户机10请求应用程序地址的数据报包括对不同于向远程机器30发送该请求所用的协议类型的请求。例如,客户机10可以用IPX协议向远程机器30发送请求并按照TCP/IP协议地址来请求远程机器30′的地址。
(679)如同前面结合图8(步骤802-804)所说明的那样,远程机器30接收到对资源的访问请求并选择一个提供对所请求的资源的访问的方法。在有些实施例中,远程机器30将具有期望的资源的远程机器30′的网络地址返回给客户机10。客户机10然后使用从远程机器30接收到的信息来请求到指定的远程机器30′的连接。如上所述,这样的连接首先被建立在“众所周知”的通信端口上,随后在连接管理器的控制下被转移到特定的通信端口。该特定的通信端口与在远程机器30′上执行的该资源相关联,客户机10随后通过该特定的通信端口与远程机器30′通信。
(680)更详细地说,并参看图25,在有些实施例中,客户机10上的客户端进程2502向远程机器30发出请求2504以获得包括期望的资源2506的远程机器30′的地址。远程机器30向客户机10返回一个含有包括该资源2506的远程机器30′的地址的消息2508。在一个实施例中,在这个连接点上使用的协议是数据报服务。
(681)客户机10使用返回的地址建立与远程机器30′的通信信道2510。客户机10使用的端口号对应于远程机器30′中已经由网络协议定义为远程机器30′用来与客户机10建立通信连接的端口的“众所周知的端口”。该众所周知的端口2512具有主要包括端点数据结构2516的基本协议栈2514。
(682)端点数据结构2516指向通信协议栈76以及从而为客户机10建立唯一的表示或“句柄”的客户端连接。端点数据结构2516允许远程机器30′和客户机10之间的连接被随意移动到连接管理器2518和机器30′上的各种不同资源2506之间。在有些实施例中,端点数据结构2516允许远程机器30′和客户机10之间的连接被随意移到或移出为远程机器30′上的虚拟机提供管理功能的虚拟机。
(683)在一个实施例中,端点数据结构2516不仅包含客户机10的句柄,还包含与客户端连接有关的其它信息。在所示实施例中,机器30′监控特定通信系统(例如LAN或WAN)上的活动并且已经只用支持“TTY”通信模式需要的必要协议模块初始化了这个最小协议栈76。“TTY”通信模式是在传输层上没有任何协议假设的简单ASCII流。也就是说,没有用于对发送的数据进行压缩、加密、可靠性、成帧或表示的协议层。因而寻求在客户机10′上运行的资源2506的客户机10用支持TTY通信模式所需的最小协议集建立到众所周知的通信端口2512的连接。
(684)执行在远程机器30′上的连接管理器2518正在“监听”众所周知的通信端口2512上的连接请求2510。当收到来自客户机10的连接请求2510时,连接管理器2518得到通知2520。连接管理器2518根据该通知2520知道正在使用哪个协议。
(685)利用这个信息,连接管理器2518创建新的最小协议通信栈2522,启动计算环境2524(在本文全文中称为执行环境2524)并将新的最小协议栈2522绑定到该执行环境2524。在有些实施例中,连接管理器2518在远程机器30′上的虚拟机中创建新的最小协议栈2522。在其它实施例中,连接管理器2518在为执行在远程机器30′上的虚拟机提供管理功能的虚拟机中创建新的最小协议栈2522。在其它实施例中,连接管理器2518创建多个最小协议栈2522,其中的各个协议栈2522可以位于远程机器30′上、位于由执行在远程机器30′上的虚拟机提供的计算环境中、或者位于为执行在远程机器30′上的虚拟机提供管理功能的虚拟机上。
(686)在一个实施例中,远程机器30′包括多个先前已经被启动但还没有与通信端口相关联的执行环境2524。在这个实施例中,执行环境的连接前启动能够提供比在接收到来自客户机10的连接请求时启动每一执行环境2524更快的响应时间。当执行环境2524被启动时,客户机10所请求的资源2506也被启动。在另一个实施例中,如果客户机10不指定资源,那么或者是缺省的应用程序被启动,或者是不带任何资源的执行环境2524被启动。在有些实施例中,执行环境2524就是所请求的资源。
(687)连接管理器2518随后将客户端连接(包括唯一的客户机标识符或句柄)从众所周知的通信端口2512转移到新的最小协议栈2522。在有些实施例中,连接管理器2518将客户端连接转移到远程机器30′上的虚拟机中的新的最小协议栈2522。在其它实施例中,连接管理器2518将客户端连接转移到为远程机器30′上执行的虚拟机提供管理功能的虚拟机中的新的最小协议栈2522。在其它实施例中,连接管理器2518将客户端连接的各个部分转移到多个最小协议栈2522,其中的各个协议栈2522可以位于远程机器30′上、位于由执行在远程机器30′上的虚拟机提供的计算环境中、或者位于为执行在远程机器30′上的虚拟机提供管理功能的虚拟机上。
(688)连接管理器2518使用最小协议栈2522发送表示服务可用的TTY数据流。因而,用于检测客户端连接的这个方法独立于最初建立该连接的端口。如果客户机10没有在预定时间周期(例如5秒)内响应该服务可用消息,客户机30′会重新发送该“服务可用”消息。
(689)如果客户机10接收到该消息,客户机10就发送表示该“服务可用”消息被检测到的TTY字符串。客户机10等待远程机器30′响应并且如果在预定时间间隔(例如5秒)内没有响应,客户机10就重发该消息。连接管理器2518随后查询90客户机10,请求客户机的缺省通信参数。这个查询90采用消息的形式,该消息被发回客户机10并指示客户机10应该用与客户机10愿意在连接中使用哪些协议有关的细节回应。
(690)作为回应,客户机10发送一组协议分组2526;其中的每个分组用来指定一个正在从远程机器30′请求所需的或可选的协议模块。在一个实施例中,该集合中分组的数量是变化的:为每个请求的协议发送一个分组。在另一个实施例中,正在发送的分组的数量被包括在第一个分组的报头中。在第三个实施例中,正在发送的分组的剩余数量被包括在每个分组的报头中并且随着每一后面发送的分组而被递减。因而,客户机10可以通过指示(例如)将要使用的加密和数据压缩回应查询2528。这种情况下,将从客户机10向远程机器30′发送两个协议分组,并且在一个实施例中,第一个分组的报头将指示分组数为2。
(691)一旦接收到对查询90的回应,连接管理器2518用对应于客户机10所请求的协议的协议驱动程序2530、2530′和2530″构造协议栈。在一个实施例中,连接管理器2518将与所请求的客户机协议对应的所需协议驱动程序2530、2530′和2530″(例如,如果客户机期望加密,就有加密驱动程序)中的每一个都放入协议栈“容器”2532并将它们链接在一起。在有些实施例中,连接管理器80将协议驱动程序2530、2530′和2530″都放入位于不同位置的多个协议栈“容器”2532并将多个协议栈“容器”2532链接在一起。这个动态过程使得客户机10能够动态指定协议栈的内容而不需要机器30′拥有对特定客户机10的预先协议栈说明。使用这个方法,单个远程机器30可以服务多个客户机10,即使各个客户机10对相关通信信道的要求有很大的不同。在所示实施例中,每个客户机10、10′、10″都与各自的通信协议栈2522、2522′和2522″相关联。下面更详细地说明这种动态可扩展的协议栈。
(692)在刚刚阐述的实施例中,“容器”2532是用户层或内核层设备驱动程序,例如NT设备驱动程序。这个容器驱动程序为与客户机10的协议需要对应的内部协议模块或“驱动程序”(一般称为2530)提供辅助支持。这个辅助支持采用帮助例程的形式,例如帮助一个协议驱动程序将数据发送到下一个驱动程序。或者,在另一个实施例中,每个协议驱动程序自身就是一个完全的用户层或内核层驱动程序。
(693)现在参看图26,正在查看的用户使用所谓“浏览器”程序在用户的客户机10的屏幕2606上显示具有资源窗体2604的HTML页面2602。一旦正在查看的用户已经指示资源2506的执行应该开始,浏览器应用程序2706就实例化参数处理器2708并通过普通的嵌入式窗体标记2704传递与资源窗体2604相关联的实例化参数。参数处理器2708实例派生出网络主管(network executive)2710并将资源窗体2604的参数传递给网络主管2710。网络主管2710确定哪些资源2506将要被调用,以及这些资源驻留在哪台机器30′上。通常这个信息是由参数处理器2708传递给网络主管2710的,参数处理器2708以普通嵌入式窗体标记2704的形式从浏览器应用程序2706获得这个信息,但网络主管2710可能需要查询另一台远程机器30用于确定哪些服务器(如果有的话)提供期望的资源2506。网络主管2710然后开始该资源的执行并按照前面所详细说明的那样将该资源2506的输出显示在资源窗体2604中。
(694)网络主管2710继续直接将资源输出显示在资源输出窗体2604′中,直到正在查看的用户指示资源2506的执行应该停止,例如通过关闭资源窗体2604,或者直到正在查看的用户点击一个表示应该显示不同的HTML页面的标记。当这种情况发生时,资源2506的执行可以被终止。但是,首选的是“缓存”这个连接。事实上,第一个参数处理器2708实例不会被马上终止。反而,资源2506以降低的优先级继续执行,即以“背景”模式,因为第一个参数处理器2708不再有“焦点”。
(695)通常,希望通过向参数处理器2708源代码提供用于注册实例的全局可访问的数据结构而完成连接缓存。例如,可以向参数处理器2708提供全局可访问所链接的链表数据结构、数据数组、数据表或其它数据结构。因为该数据结构是全局可访问的,参数处理器2708的每个实例都能够读写该数据结构。这使得参数处理器2708的每个实例都能够通过写该数据结构而使用所有其它实例来“注册”以通知它的存在。
(696)对于没有存储其它连接信息的实施例,可以设置在任意时间可以缓存的连接数量的预定限制。在这些实施例中,如果实例的注册导致缓存的连接的数量超出该限制,其中一个缓存的连接会被删除,即与该连接相关联的参数处理器2708实例被通知它应该终止。在终止前,参数处理器2708通知它相关的网络主管2710它应该结束。接着,网络主管2710关闭它与提供该资源2506的服务器的会话并随即终止。
(697)在存储了其它信息的实施例中,附加信息可以用来更有效地管理所缓存的连接。例如,如果用户没有在预定的时间(例如10分钟)内有效地查看完HTML页面2602,参数处理器2708实例就被命令结束,与宿主服务器的会话被终止,并且参数处理器2708实例删除它在注册表中的条目。
(698)可以用任意已知的缓存管理方案管理所缓存的连接信息。可以根据先进先出原则丢弃连接条目,即每次必须添加一个新的条目时丢弃最老的条目。或者,可以根据最近最少使用原则丢弃缓存的连接信息条目,该原则丢弃与与用户使用次数最少的连接有关的信息。也可以使用其它缓存管理技术,例如随机替换。
(699)如果正在查看的用户返回到具有缓存连接的先前的HTML页面2602,与该HTML页面2602相关联的网络主管2710就被返回到前台,即它重新获得“焦点”,并且对相关资源的处理恢复到正常优先级。如果必要的话,网络主管2710重新建立与该资源2506的连接。尽管网络主管2710不为缓存的连接存储任何输出数据,但只要为资源窗体2604重新建立了连接,就重新建立了到资源2506的连接并且资源2506再次直接写到资源窗体2604。
(700)参看图27,位于远程机器30′上并根据本发明的一个实施例构造的HTML文件2602包括普通的嵌入式窗体标记2704。普通嵌入式窗体标记2704是向显示HTML文件2602的浏览器60指示普通嵌入式窗体2604应该被显示在HTML文件2602所描述的HTML页面2602中的特定位置上的任意数据结构。普通嵌入式窗体标记2704可以包括附加信息,例如窗体的高度、窗体的宽度、窗体的边框风格、窗体中的背景颜色或者模式、可以在该窗体中显示哪些资源,输出显示应该被更新的频率,或者对增强资源输出的显示有用的任意其它附加信息。
(701)可以嵌入HTML文件中的普通嵌入式窗体标记的一些例子如下:
ActiveX tag
<object Classid=″clsid:238f6f83-b8b4-11cf-8771-00a024541ee3″
 data=”/ica/direct.ica″CODEBASE=”/cab/wfica.cab″
 width=436height=295>
<param name=″Start″value=″Auto″>
 <param name=″Border″value=″On″>
 </object>
Netscape Plugin tag
<embed src=″http://www.citrix.com/ica/direct.ica″
pluginspage=http://www.citrix.com/plugin.html
   height=295width=436Start=Auto Border=On>
   <embed>
  JAVA tag
<applet code=JICA.class width=436height=295>
<param name=Address value=″128.4.1.2602″>
<param name=InitialProgram value=Microsoft Word7.0>
<param name=Start value=Auto>
<param name=Border value=On>
</applet>
(702)在上面的各个例子中,标记表示应该画出高度为295像素、宽度为436像素的窗体以接收资源输出。各个标记还指定该资源应该自动启动执行并且指定在其中显示资源输出的窗体应该带有边框。ActiveX和Netscape插件标记具有位于目录“/ica”下的文件“direct.Ica”中指定的远程资源参数。JAVA标记直接指定远程资源参数。在上面的例子中,指定了提供该资源的机器30的地址以及要执行的资源的名字。
(703)浏览器应用程序2706通过发出对特定统一资源定位符(URL)地址的请求而访问HTML文件2602。提供该HTML文件2602的远程机器30′将该HTML文件2602的数据发送到浏览器应用程序2706,浏览器应用程序2706显示HTML文件2602中包含的文本并转换其中包含的所有标记。浏览器应用程序2706将HTML文件2602数据显示为HTML页面2602。如果HTML文件2602中存在普通的嵌入式窗体标记2704,例如上述标记中的一个,浏览器60就在显示的HTML页面2602中画出空窗体2604。
(704)期望的资源2506的执行可以在HTML页面2602的显示之后立即执行,或者等待某个信号,例如,指示资源2506的执行应该开始的指定的用户输入。一旦开始了资源2506的执行,浏览器应用程序2706就实例化与该资源窗体2604相关联的参数处理器2708。参数处理器2708实例可以被派生为浏览器应用程序2706的子进程、浏览器应用程序2706的对等进程、静态链接的执行线程、动态链接的执行线程、或者与浏览器应用程序2706相关联的动态链接库(“DLL”)。
(705)浏览器应用程序2706将与由普通的嵌入式窗体标记66提供的资源窗体2604相关联的任意特定参数传递到参数处理器2708实例。另外,浏览器应用程序2706可以将资源窗体2604的句柄传递给参数处理器2708实例,或者参数处理器2708实例可以查询浏览器应用程序2706以获取资源窗体2604的句柄。参数处理器2708实例还派生出网络主管2710。网络主管2710可以被派生为参数处理器2708实例的子进程、静态链接的执行线程、动态链接的执行线程或者参数处理器2708实例的对等进程。
(706)参数处理器2708实例将任意指定的资源窗体2604参数转发到网络主管2710。没有被参数处理器2708实例或嵌入式普通窗体标记2704指定的参数可以被设置为缺省值。网络主管2710可以具有特定参数缺省值的硬编码,或者可以访问包含参数缺省值的文件。
(707)网络主管2710创建它自己的资源输出窗体2604′。网络主管2710将它的资源输出窗体2604′创建为所显示的资源窗体2604的子窗体并将它的资源输出窗体2604′直接显示在由浏览器应用程序2706画出的父窗体2604之上。因为由网络主管2710画出的资源输出窗体2604′是浏览器应用程序2706画出的资源窗体2604的子窗体,资源输出窗体2604′继承了包括位置信息的它的父窗体的各种属性。因此,当正在查看的用户卷动浏览器应用程序2706的屏幕或者执行改变资源窗体2604的位置的其它动作时,资源输出窗体2604′将跟随资源窗体2604。
(708)网络主管2710还建立与远程机器30′的通信信道并通过使用上述连接方法调用由机器30′对期望的资源2506的执行。作为上面的说明中的客户机10的网络主管2710将它从参数处理器2708实例接收到的任何参数以及任何必要的缺省值传递给机器30′。如果一个参数没有被传递给机器30′,如果该参数是没有缺省值的必要参数(例如“用户ID”),机器30′可以请求该参数,或者可以为该参数提供缺省值,例如执行优先级。机器30′开始所期望的资源2506的执行并将输出定向到网络主管2710。网络主管2710从资源2506接收数据并将输出数据显示在它的资源输出窗体2604′中。因为资源输出窗体2604′被画在由浏览器应用程序2706所画的资源窗体2604顶部,资源输出数据也被显示在HTML页面2602中。如上所述,由网络主管2710所画出的资源输出窗体2604′是由浏览器应用程序2706所画的资源窗体2604的子窗体。这使得资源输出窗体2604′能在HTML页面2602被滚动时也滚动。
(709)资源输出窗体2604′还从正在查看的用户接收输入。原始的输入数据(例如鼠标点击)被网络主管2710接收到资源输出窗体2604′中。网络主管2710将原始的输入数据转发到在机器30″上执行的资源2506。采用这种方式,正在查看的用户能够通过HTML页面2602与资源2506交互。
(710)现在参看图28,简单地说,本发明的交互式超媒体系统的一个实施例包括由通信链路150(这里不失一般性地称为网络或web)互连的客户机10、网络远程机器30和执行远程机器30′。网络远程机器30可以由远程机器30提供。执行机器30′可以由物理机器或虚拟机提供。
(711)客户机10上希望访问位于web150上的执行机器30′上的资源2802的用户通过位于客户机10上的图形用户界面2804(这里不失一般性地称为超媒体)访问该资源。该图形界面被显示在图形显示设备124上。数据由位于客户机10上的鼠标16和键盘17输入。用户首先在超媒体2804上看到的图形显示或页面2806这里被不失一般性地称为主页或资源2802的web页面。超媒体2804的页面2806或主页包括这里不失一般性地称为超链接的图形链接2808或文本链接2810。Web页面由执行在客户机10上的进程2602(这里不失一般性地称为网络浏览器2602)显示。
(712)网络浏览器2602从网络远程机器30获取第一个页面或web页面2806并将web页面2806显示在超媒体2804上以便用户在图形显示设备124上查看。当用户(通过使用鼠标16或键盘17选择图形超链接2808或文本超链接2810)选择将要访问的资源2802时,网络浏览器2602从预定的网络服务器2606获取与所选择的资源2802对应的网络配置文件2812并启动客户机代理2814,客户机代理2814与所选择的资源2802通信。下面将更详细地对此进行讨论。
(713)客户机代理2814读取配置文件2812并建立到由配置文件2812指定的执行服务器24上的服务器代理2816的通信链路。在一个实施例中,配置文件2812包括与超链接2808、2810对应的资源2802的节点位置以及资源名字。该配置文件还可以包含可选信息,例如验证信息或者被授权的用户信息。服务器代理2816进行必要的操作(例如验证)以允许客户机代理2814访问资源2802,一旦访问被允许,就允许访问用户所请求的资源2802。服务器代理2816可以执行在管理程序、虚拟机中或操作系统上。在有些实施例中,服务器代理2816提供的功能被分割在管理程序和虚拟机之间或者两个虚拟机之间。在其它实施例中,服务器代理提供的功能被分割在管理程序和在虚拟机中执行的客户操作系统之间。在有些实施例中,建立到包括资源2802的计算环境的连接,如同下面所更详细地说明的那样。
(714)一旦资源2802在执行服务器30′上可用,客户机10可以用客户机代理2814直接通过服务器代理2816访问资源2802,而不需要网络浏览器2602的干预。客户机代理2814随后负责通过鼠标16和键盘17从用户接收数据并将数据发送到执行机器30′上的资源2802。同样,客户机代理2814负责从执行机器30′上的资源2802接收数据并将该数据显示在客户机10上的图形显示设备124上的显示窗体2818中。应该注意到显示窗体2818可以位于超媒体2804的边界之内或之外。当资源2802被完成时,服务器代理2816指示客户机代理2814中断客户机代理2814和服务器代理2816之间的通信链路150。在有些实施例中,服务器代理2816可以位于执行机器30′之外。在其它实施例中,客户机代理2814可以位于客户机10之外。
(715)图29更详细地说明了该系统的运行。起初,向客户机10的网络浏览器2602注册客户机代理2814(步骤2901)并在网络浏览器的注册文件2820(图28)中添加一个条目。这个条目使得网络浏览器2602能够在每当超媒体2804的超链接2808、2810请求特定的文件类型(包括像MIME这样的类型)时启动客户机代理2814。在这种情况下,客户机代理2814被设计为允许客户机10上的用户在执行机器30′上执行远程资源2802并与之交互。客户机代理2814将被注册到网络浏览器2602,这样每当超链接2808、2810向网络浏览器2602请求特定的文件类型(例如用于远程执行的.RMT)时,网络浏览器2602将启动客户机代理2814,客户机代理2814将允许位于执行机器30′上的资源2802的执行并与之交互。下面更详细地说明对客户机代理2814的调用。
(716)当用户希望从超媒体环境访问一个资源(例如数据库程序)时,超媒体2804以一种本领域的技术人员众所周知的方式被显示出来。当用户使用客户机10上的鼠标16或键盘17选择超媒体的页面2806上的超链接2808、2810(步骤2902)时,就向相应数据文件的网络浏览器2602发出请求(步骤2903)。在这个例子中,所请求的文件类型是.RMT。
(717)网络浏览器2602从网络服务器2606获取相应的配置文件2812,该网络服务器2606是在超链接2808、2810对网络浏览器2602的请求文件中指定的(步骤2904)。网络浏览器2602随后对获得的配置文件2812与它维护的客户机代理名字的注册文件2820进行比较(步骤2905)。在一个实施例中,网络浏览器2602比较获得的配置文件的文件类型和注册文件2820。在另一个实施例中,网络浏览器2602比较获得的配置文件2812中的条目和注册文件2820。如果在注册文件2820中发现了配置文件2812指定的客户机代理2814,就启动该客户机代理2814(步骤2906)。
(718)所调用的客户机代理2814读取配置文件2812(步骤2907),并根据配置文件2812中的信息开始建立与执行服务器24(在这个例子中为销售数据库应用程序执行服务器,通常标记为30′)上的服务器代理2816的通信链路(步骤2908)。
(719)更详细地考虑步骤2908(图29)中开始通信链路的过程,通信从服务器代理2816监控网络150上的通信活动开始。此时,服务器代理2816在超出传输层所必需的那些协议之外没有进行任何协议假设。同样,客户机代理2814在传输层所需协议之外也没有对通信协议进行任何假设。一旦服务器代理2816判定客户机代理2814正在试图与之通信,服务器代理2816就发送表示服务可用的消息给客户机代理2814。
(720)一旦客户机代理2814判定服务在远程执行机器30′上可用,客户机代理2814就将表示它随时可进行通信协议的消息发送到服务器代理2816。一旦服务器代理2816回应以它已准备就绪继续通信协议,客户机代理2814就启用运行应用程序36必需的协议。响应来自客户机代理2814的消息,服务器代理2816也启用所需的协议。服务器代理2816随后用所需的协议发送表示已经接收到并接受客户机代理的请求的消息。
(721)客户机代理2814和服务器代理2816交换一组消息,该组消息协商何种情况下产生通信的参数。一旦协商完成,客户机代理2814和服务器代理2816就能够进行由用户将要运行的资源2802所必需的通信。
(722)一旦已经建立了通信协议并且服务器代理2816已经验证了客户机代理2814(步骤2909)(例如判断用户有权限读写数据库),就由应用程序执行服务器24提供对资源2802的访问(步骤2910)。此时,执行服务器30′上的资源2802通过服务器代理2816与客户机10上的客户机代理2814通信。客户机代理2814现在负责将用户使用鼠标16和键盘17的数据输入发送到执行机器30′上的资源2802。此外,客户机代理2814负责从资源2802接收要显示的数据并将该数据显示在客户机10的图形显示设备124上的应用程序窗体2818中。
(723)应该注意到将数据传递到诸如TCP/IP的传输层的基础表示层协议必须能够传输图形信息。可以用于交互式超媒体通信的这种协议的例子包括公共域X11协议,Citrix Systems公司专有的独立计算体系结构(ICA)协议,或者Microsoft公司专有的远程桌面协议(RDP)。
(724)因而上述系统允许客户机10(它可能只有非常有限的资源)上的用户启动位于执行机器30′上的资源2802并与之交互。资源2802随后在执行机器30′上运行,并且数据在客户机10上输入,结果也被显示在客户机10上。在有些实施例中,所访问的资源2802在由远程机器30′提供的虚拟机中执行。
(725)现在参看图30,所示流程图说明了使超媒体页面具备交互性的方法的一个实施例,超媒体页面由网络浏览器显示。如上所述,选择显示在客户机10上的超媒体页面上的一个超链接,该超链接标识期望的计算资源(步骤3002)。获取一个超链接配置文件,该超链接配置文件与该超链接相对应并标识一个远程机器30′(步骤3004)。在客户机10上启动客户机代理(步骤3006)。客户机代理创建到由该超链接配置文件所标识的远程机器30′上执行的虚拟机的通信链路(步骤3008)。客户机代理从该虚拟机获取数据并将接收到的数据显示在客户机10上而不被网络浏览器干预(步骤3010)。
(726)选择显示在客户机10上的超媒体页面上的一个超链接,该超链接标识期望的计算资源(步骤3002)。在一个实施例中,在选择超媒体页面上的超链接之前,从远程机器30获取超媒体页面。在另一个实施例中,根据对可用资源列表的请求来接收超媒体页面。
(727)获取超链接配置文件,该超链接配置文件与(所选择的)超链接相对应并标识一个远程机器30′(步骤3004)。在一个实施例中,充当中介(brokering)机器的远程机器30标识出远程机器30′。在另一个实施例中,远程机器30′充当执行机器。在又一个实施例中,管理程序在远程机器30′上执行。在又一个实施例中,虚拟机被启动到在远程机器30上执行的管理程序中。在有些实施例中,服务器代理在远程机器30′中的虚拟机上启动。
(728)在客户机10上启动客户机代理(步骤3006)。在一个实施例中,当超链接配置文件中的条目与网络浏览器可访问的注册文件中的客户机代理相关联的标识符成功匹配时,由网络浏览器启动客户机代理。在另一个实施例中,向网络浏览器注册客户机代理。
(729)客户机代理创建到在超链接配置文件所标识的远程机器30′上执行的虚拟机的通信链路(步骤3008)。在一个实施例中,响应所创建的通信链路,在虚拟机上开始标识出的应用程序的执行。在另一个实施例中,客户机代理创建通信链路而不需要网络浏览器的干预。
(730)客户机代理从虚拟机接收数据并将接收到的数据显示在客户机10上而不需要网络浏览器的干预(步骤3010)。在一个实施例中,从虚拟机接收到的数据被显示在客户机10上的显示窗体中。在有些实施例中,为通信链路上的通信采用表示层协议。
(731)回过去参看图28,在使超媒体页面具备交互性的系统的有些实施例中,对所请求的计算环境的访问是通过交互式超媒体页面提供的。客户机10执行浏览器应用程序2602。一台远程机器30充当网络服务器2606并发送网络配置文件到客户机10。在客户机10上执行的客户机代理2814建立与充当执行机器30′的远程机器30′的通信链路。
(732)如上所述,客户机10执行浏览器应用程序2602,浏览器应用程序2602显示包括标识资源2802的超链接的超媒体页面。一台远程机器30充当网络服务器30,并响应对所述超链接的选择将网络配置文件发送到客户机10,该网络配置文件对应于所述标识出的计算资源2802。在有些实施例中,一个进程从网络服务器30获取超媒体页面并将该超媒体页面提供给客户机10。
(733)在一个实施例中,该网络配置文件包含与所述超链接对应的资源标识符和与所述超链接对应的虚拟机地址。在有些实施例中,虚拟机地址是由超链接提供的虚拟IP地址,虚拟机在该地址中执行。在其它实施例中,虚拟机地址是与虚拟机在其上执行的执行机器30′相关联的IP地址。
(734)在客户机10上执行的客户机代理2814建立与充当执行机器30′的远程机器30′的通信链路。客户机代理2814根据网络配置文件中的数据建立该链路。在一个实施例中,管理程序在执行机器30′上执行,并且提供资源2802的虚拟机在管理程序中执行。在有些实施例中,虚拟机发送数据到客户机代理2814以显示该数据而不需要浏览器应用程序2602的干预。在其中一个这样的实施例中,虚拟机提供对所请求的资源2802的访问并且该数据从所请求的资源2802的执行输出。
(735)在有些实施例中,客户机代理根据配置文件中的数据建立与执行在远程机器上的管理程序的通信链路。在其中一个这样的实施例中,管理程序在网络服务器2606上执行。在另一个这样的实施例中,管理程序在执行机器30′上执行。在又一个这样的实施例中,管理程序在执行机器30′中的虚拟机上执行。在又一个这样的实施例中,管理程序在执行机器30′或远程机器30′′上具有管理权限的虚拟机上执行。在其它实施例中,管理程序启动将期望的计算资源提供到执行机器30′上的超链接中的虚拟机。
(736)在有些实施例中,客户机代理2814在位于客户机10上的显示窗体中显示从所述虚拟机接收到的数据。在其中一个这样的实施例中,该显示窗体位于超媒体页面的边框之内。在另一个这样的实施例中,该显示窗体位于超媒体页面的边框之外。
(737)参看图31,在上述方法的有些实施例中,由资源2506发送的数据在发送到客户机10之前先被发送到其它远程机器30。采用这种方式,随着网络的扩展,由资源2506发送的数据被发送到越来越多的客户机10。
(738)当每个客户机10终止它与机器30′的连接时,每个客户机协议栈(通常标记为2522)和它的相关最小栈(通常标记为3102)被销毁。类似地,与第一个客户机协议栈2522相关联的最小协议栈(通常标记为3104)也被销毁。当最小的客户机协议栈3102和第二个(以及随后的)客户机协议栈2522中的最后一个已经终止时,配置就和最初只有与执行环境2524相关联的第一客户机通信协议栈2522一样。注意直到所有的第二和后续的客户机协议栈2522都被终止,第一客户机协议栈2522也不能被销毁,即使客户机10不再存在。
(739)如上图25中所示,各个执行环境2524通过多路复用器2534、2534′和2534″与各个协议栈2522通信。现在参看图31,可能有不止一个客户机10接收到正在发送到客户机10的数据用来(例如)遮蔽或监控来自机器30′的数据传输、或者用来广播来自专用广播应用程序(相同的数据被从专用广播应用程序基本上同时广播或传输到多个客户端,例如股票行情应用程序)的数据。
(740)在这种情况下,客户机10使专用资源2506执行并如前所述将它的数据发送到客户机10。当客户机10′请求访问广播资源2506时,连接管理器2518开始如同前面关于第一客户机10所说明的那样为第二客户机10′构造协议栈2522′。但是,因为资源2506是广播应用程序,连接管理器2518认识到它不需要启动额外的执行环境2524,而是采用必要的步骤将数据从广播资源2506发送到客户机10和任意的附加客户机10″。
(741)首先,连接管理器2518创建第一最小通信协议栈3104,它将之与第一客户机10的通信协议栈2522相关联。连接管理器2518接着创建第二最小协议栈3102并将之与第二客户机10′的通信协议栈2522′相关联。随着每一附加客户机10″请求对广播资源2506的访问,创建另一个最小协议栈3104′并将之与第一客户机协议栈2522相关联,并为第个新的客户机10″创建另一个最小协议栈3102′和客户机协议栈2522″。第一客户机协议栈2522以及与第一客户机协议栈2522相关联的所有最小协议栈3104和3104′,以及与各个附加客户机10和10′相关联的每对客户机协议栈2522′、2522″和最小协议栈3102、3102′通过多路复用器2534通信。
(742)在有些实施例中,连接管理器2518驻留在执行在远程机器30′上的虚拟机之外并在执行在远程机器30′上的虚拟机中创建最小协议栈3102。在其它实施例中,连接管理器2518驻留在执行在远程机器30′上的虚拟机之外并在为执行在远程机器30′上的虚拟机提供管理功能的第二虚拟机中创建最小协议栈3102。在其它实施例中,连接管理器2518驻留在执行在远程机器30′上的虚拟机之外并在为执行在远程机器30′上的虚拟机提供管理功能的管理程序中创建最小协议栈3102。在其它实施例中,连接管理器2518驻留在于远程机器30′上执行的虚拟机之外并在为执行在远程机器30′上的远程机器提供管理功能的远程机器30′上的宿主操作系统中创建最小协议栈3102。在有些实施例中,连接管理器2518驻留在执行在远程机器30′上的虚拟机中并在执行在远程机器30′上的虚拟机中创建最小协议栈3102。
(743)当多路复用器2534正在将数据导向唯一的客户机10或者正在从唯一的客户机10接收数据时,多路复用器2534充当简单的直通设备。但是,当有不止一个客户机10、10′和10″正在从单一资源2506接收数据或者向其发送数据时,每个多路复用器(通常标记为2534)承担两个额外的配置。在一个配置中,多路复用器2534被配置用来向第一客户机协议栈2522以及与之相关联的各个最小通信协议栈3104和3104′发送资源数据或者从它们接收数据。在第二种配置中,多路复用器2534被配置用来将由最小协议栈3102、3102′接收到的数据分别发送到与之相关联的客户机协议栈2522′、2522″。在这个实施例中,多路复用器2534可以直接从各个客户机协议栈2522、2522′、2522″接收输入数据。
(744)连接管理器2518分别将与客户机10相关联的最小协议栈3104、3104′与第二客户机10′以及后续的客户机10″的最小协议栈3102、3102′相连,并指令多路复用器2534将来自资源2506的输出导向客户机10的通信协议栈2522以及它的相关最小协议栈3104、3104′。多路复用器2534也被连接管理器2518指令将每个第二个和后续的客户机最小协议协议栈3102、3102′分别连接到它的相关客户机协议栈2522、2522′。通过第一客户机协议栈2522发送到客户机10的数据因此也被发送到与该客户机10相关联的最小协议栈3104、3104′,并因此也被分别通过客户机10′和后续客户机10″的相关协议栈2522、2522′以及相关最小协议栈3102、3102′发送到客户机10′和后续客户机10″。在一个实施例中,协议栈容器包括一个数据结构来跟踪与给定资源2506相关联的协议的数量和类型。
(745)参看图32,如上所述,一个机器30′的“客户机”可能是其它远程机器30′和30″(为简单起见,只示出了两个)。远程机器30′和30″接着将数据发送到客户机10或附加的远程机器30′。在这个实施例中,服务器协议栈(通常标记为2522)的输出被连接到次级远程机器30′和30″的协议栈107′。然后,如前所述,数据在这两个协议栈之间传输并且被输出到客户机10。采用这种方式,数据可以扇出并被分发到可以被一个服务器合理支持的多个客户机。在有些实施例中,服务器协议栈的输出可以被连接到在远程机器30上执行的虚拟机中创建的协议栈3102′。
(746)简单地说,在上述方法的一个实施例中,客户机10的用户请求从可以提供web服务器功能的远程机器30访问一个或多个资源。在验证了该用户的证书之后,该web服务器从与该web服务器耦合的存储器访问用户专有的和资源专有的参数。该web服务器随后将这些参数传递到提供所请求的资源的一个或多个远程机器30,在资源服务器上运行的软件进程用传递来的参数执行并初始化所请求的资源。采用这种方式,可以为特定请求的用户个性化该资源的每个实例。提供这些个性化应用程序的资源服务器的特定网络地址随后被转发到用户的客户机10,该客户机随后建立通信链路与客户机-服务器会话。
(747)在客户机-服务器会话期间,在用户设备和资源服务器之间传递与执行资源相关联的命令、事件、图形数据和窗体属性信息,以确保资源-输出数据被无缝显示在用户设备的桌面上。资源-输出数据的无缝显示指的是数据在用户桌面上的表示方式与本地执行的资源在用户设备的本地桌面上被显示和操纵的方式一致。用户因此可以就像这些资源在本地被执行一样查看由远程资源产生的资源-输出数据并与之交互。
(748)在一个实施例中,资源的输出被显示在用户设备的web浏览器所显示的web页面中的一个或多个资源-输出窗体中。资源可以在远程机器30上或者在远程机器30上执行的虚拟机上执行。在进一步的实施例中,可以修改资源-输出窗体的属性,以便能够在web页面的边界内移动资源-输出窗体并调整其大小。在另一个实施例中,资源-输出窗体最初出现在web页面的边界内并且随后可以被移动以便它们被定位在web页面的边界外并因此给出应用-输出窗体与本地执行的应用程序而不是与远程-执行的应用程序对应的外观。在又一个实施例中,应用-输出窗体最初出现在web页面的边界之外并因此也对应于本地执行的应用程序。在一个实施例中,显示在应用-输出窗体中的应用程序输出以及应用-输出窗体自身的属性被用户设备和资源服务器上的软件进程传递并操控,没有最初提供对该资源访问的web服务器或web浏览器的介入。
(749)更详细地参看图33,能够向远程用户提供对web和传统应用的全部功能(例如,不为基于web的交付而设计的未修改的应用程序)的web-访问的基于服务器的计算体系结构3300,包括:客户机10(例如,任意数字数据处理设备),web服务器3304,一个或多个远程机器30(它们或者是单独的机器,或者被集群在机器群组38中,并且最好由防火墙3302保护),以及提供必要连接以使这些元素中的每一个都能相互通信的数据通信网络150(例如,Internet,Intranet等)。
(750)在其它实施例中,web服务器3304是远程机器30。在有些这样的实施例中,虚拟机可以执行在一个或多个远程机器30上,这些虚拟机提供所请求的资源所在并在其中产生资源-输出数据的计算环境。
(751)在运行中并且也参看图28,客户机10的用户指示在客户机10上执行的浏览器2822提交对通过web服务器3304可以访问的特定web页面内容3306的访问请求。在一个实施例中,用户在浏览器2822中输入统一资源定位符(URL)地址。该URL与web服务器3304提供的web页面内容3306相关联,并且浏览器2822通过发送对该适当的URL地址的访问请求而做出回应。Web服务器3304接收到该访问请求(该请求通常包括用户证书信息,例如用户ID、密码、组/项目成员标识符等),并将该用户验证到机器群组38或到提供web内容3306的至少部分内容的单独服务器114。
(752)web服务器3304通过访问验证过程而验证用户,验证进程比较用户输入的证书和先前分配的证书。在一个实施例中,验证过程和先前分配的证书的数据库被存储并维护在web服务器3304上。在其它实施例中,先前分配的证书可以被存储在机器群组38中,或者单独的应用远程机器30上,和/或通过Internet或其它数据通信网络与web服务器3304相耦合的管理服务器(未示出)上。
(753)在web页面内容3306对应于企业门户(提供对资源集3308的访问,例如已经由门户管理员为用户进行了个性化定制的资源集合)的情况中,web服务器3304访问一个或多个资源对象3310(例如,COM兼容的Java对象、ActiveX对象、HTML标记等),这些资源对象调用web服务器端脚本以验证用户和/或从机器群组38获取与该门户和用户相关联的资源集3308信息。资源对象3310还包括与该用户和/或通过该门户提供的资源集3308中的特定资源3312相关联的属性。用户属性包括,例如,标识该特定资源3312的组/项目信息以及用户需要访问以便让用户能够与该组/项目的其它成员合作的数据。资源属性包括,例如,用户对资源集3308中的每个资源3312的偏好。
(754)资源对象3310调用的脚本通过(例如)中央管理过程(未示出,它监控并控制机器群组38中的每个资源机器30)在web服务器3304和机器群组38之间建立网络会话。该管理过程根据(例如)服务器和/或网络性能原则选择提供了资源对象3310指定的资源集3308中的资源3312的一个或多个资源服务器。可以通过从服务器30上提供的多个资源3312、3314选择/分配资源集3308中的每个资源3312而完全由该单一服务器30提供期望的资源集3308。或者,资源集3308′可以由多个远程机器30提供,其中的每个远程机器30提供该资源集3308′中的至少一个资源。
(755)管理过程响应资源对象3310调用的脚本而在选定/分配的远程机器30上启动一个或多个服务器代理3316。服务器代理3316是根据由资源对象3310指定的属性执行、初始化资源集3308中的每个资源3312并与之交互的软件进程。在一个实施例中,对资源集3308中的每个资源3312都有一个服务器代理3316。在其它实施例中,对资源集3308只有单一服务器代理3316,在这个意义上,所有资源3312都在同一服务器30上提供。在又一个实施例中,对每个服务器30有一个单独的服务器代理3316。服务器代理3316随后将资源集3308中的资源3312的输出以及与资源集3308有关的任何其它信息提供给web服务器3304,web服务器3304接着将资源集信息格式化为web页面内容3306。Web页面内容3306可以包括资源集3308中的一个或多个资源3312中的所对应的应用程序图标以及来自资源3312中的一个或多个的资源-输出数据。在一个实施例中,由资源3312提供的资源-输出数据对应于被格式化以刚好放入窗体中的图形数据,该窗体展示了最初由资源对象3310的属性指定的特征(例如,web页面上的窗体位置,大小,风格,z序等)。
(756)在一个实施例中并参看图34,浏览器2822接收到web页面内容3306并将其显示在浏览器窗体3402中,浏览器窗体3402包括很多可能的图形用户界面(“GUI”)单元(例如,菜单3406,局部窗体3408等),这些GUI单元形成了显示在与客户机10相耦合的显示设备上的客户机桌面3410。在这个实施例中,web页面内容3306被显示在浏览器窗体3402中显示的web页面3412中,并且包括一个或多个资源图标3414和/或与资源集3308相关联的一个或多个资源-输出窗体3416。在一个实施例中,资源对象3310中的一个或多个还形成了web页面3412的web页面内容3306的一部分,并因此能够设置资源-输出窗体3416的初始特征(大小,z序,位置)。如下所述,可以修改显示在web页面3412上的每个资源-输出窗体3416的初始方向、大小、位置和z序,以使资源-输出窗体3416相对于web页面3412和/或相对于客户机桌面3410展示不同的方向、大小、位置和z序。
(757)资源对象3310可以是向显示web页面内容3306的浏览器2822指示资源-输出窗体3416应该被显示在web页面3412中的特定位置上的任意数据结构。资源对象3310可以包括附加信息,例如资源-输出窗体3416的高度、宽度、边框风格、背景颜色或模式,以及哪些资源3312可以被显示在窗体3416中的指示、输出显示多长时间被更新一次的标记,或者对增强资源输出的显示有用的任意其它附加信息。
(758)在一个实施例中,资源对象3310是嵌入在HTML文件中的窗体标记,下面给出了这些标记的例子。
ActiveX tag
<object classid=″clsid:238f6f83-b8b4-11cf-8771-00a024541ee3″
data=”/ica/direct.ica″CODEBASE=”/cab/wfica.cab″
width=436height=295>
<param name=″Start″value=″Auto″>
<param name=″Border″value=″On″>
</object>
Netscape Plugin tag
<embed src=″http://www.citrix.com/ica/direct.ica″
pluginspage=″http://www.citrix.com/plugin.html″
height=295width=436Start=Auto Border=On>
<embed>
JAVA tag
<applet code=JICA.class width=436height=295>
<param name=Address value=″128.4.1.2602″>
<param name=InitialProgram value=Microsoft Word7.0>
<param name=Start value=Auto>
<param name=Border value=On>
 </applet>
(759)在上面的各个例子中,标记表示应该画出高度为295像素、宽度为436像素的资源-输出窗体3416以接收来自资源3312的输出数据。每个标记还指定资源3312应该自动启动执行并且指定应该在其边界以内画出资源输出的资源-输出窗体3416。ActiveX和Netscape插件标记具有位于目录“/ica”下的文件“direct.ica”中指定的远程资源3312的属性。JAVA标记直接指定远程资源3312的属性。在上面的例子中,提供资源3312的服务器30的地址和要执行的资源3312的名字也被指定。
(760)在一个实施例中,资源3312实际上在web页面3412显示的同时执行。在另一个实施例中,资源3312在被服务器30指令作为提供web页面内容3306给web服务器3304的一部分时执行。在又一个实施例中,该资源响应信号而执行,例如用户指定的输入(例如,选择web页面3412上的资源图标3414)。一旦开始了资源3312的执行,浏览器2822就实例化客户机10上的客户机代理2814。或者,客户机代理2814实际上是在web页面3412显示的同时或者响应用户指定的输入而被实例化。
(761)客户机代理2814包括一个或多个软件进程,它们执行在客户机10上并被配置用来与服务器代理3316、浏览器2822、资源-输出窗体3316和/或web服务器3304交互。在一个实施例中,客户机代理2814被派生为浏览器2822的子进程。在其它实施例中,客户机代理2814是浏览器2822的对等进程或者是与浏览器2822相关联的一个动态链接库。在一个实施例中,为web页面3412中显示的每个资源-输出窗体3416实例化一个客户机代理2814。在另一个实施例中,为与资源集3308中的一个特定资源3312相关联的一个或多个资源-输出窗体3416实例化单个的客户机代理2814。在又一个实施例中,为投送web页面内容3306的每个服务器代理3316实例化单个的客户机代理2814。在又一个实施例中,为整个资源集3308实例化单个的客户机代理2814。
(762)浏览器2822将与资源集3308中的特定资源3312有关的资源对象3310的属性传递给与那些相同的资源3308相关联的客户机代理2814。另外,浏览器2822可以将资源-输出窗体3416的句柄传递给客户机代理2814,或者客户机代理2814可以查询浏览器2822以获取用于资源-输出窗体3416的句柄。没有被浏览器2822或资源对象3310指定的资源属性可以被设置为缺省值。客户机代理2814还可以硬编码特定的属性缺省值,或者可以访问包含属性缺省值的文件。
(763)客户机代理2814使用资源3312的名字和资源服务器30的地址(它们都被提供为资源对象3310的属性的一部分)来建立通信链路并启动与和资源服务器30和资源3312相关联的服务器代理3316的客户机-服务器会话。客户机代理2814将资源对象3310的部分或全部属性以及任意必要的缺省值传递给服务器代理3316。或者,服务器代理3316可以在投送web页面内容3306之前已经从web服务器3304接收到了资源对象3310的部分或全部属性,web页面内容3306随后被显示在web页面3412中。如果某个特定的属性没有被传递给服务器代理3316,如果该属性是没有缺省值的必要属性(例如用户ID),服务器代理3316可以向客户机代理2814请求该属性,或者服务器代理3316可以提供它自己对该属性的缺省值(例如,执行优先级)。
(764)服务器代理3316使用从客户机代理2814接收到的属性来验证客户机代理2814并且来执行期望的资源3312(假如该资源先前尚未被启动)。一旦资源3312执行并且已经验证过客户机代理2814,资源3312通过服务器代理130直接与客户机代理2814通信,不需要浏览器2822或web服务器3304的干预。客户机代理2814从资源3312接收输出数据并将输出数据显示在web页面3412中的适当的资源-输出窗体3416中。客户机代理2814还检测与资源-输出窗体3416相关联的输入事件,例如鼠标点击和键盘输入,并通过服务器代理3316将这些输入事件转发到资源3312。为由用户选择的应用程序集126中的每个资源3312重复这种类型的客户机-服务器会话,并因此使得该用户能够与资源集3308中的所有资源交互。
(765)客户机-服务器会话期间在客户机代理2814和服务器代理3316之间交换的数据不仅包括输入事件和资源3312的图形输出数据,还包括窗体属性信息(例如,窗体位置、z序、大小、风格、颜色等)。资源-输出窗体3416的窗体属性信息最初由嵌入在web页面3412中的资源对象3310指定。例如,资源对象3310可以包括ActiveX控件,它指定并控制客户机-服务器会话期间资源-输出窗体3416的窗体属性。在一个实施例中,资源-输出窗体3416展示了与相对应的ActiveX控件相同的尺寸。
(766)客户机代理2814将本地应用-输出窗体的初始窗体属性以及与客户机桌面3410有关的信息(例如,大小,分辨率等)传递到服务器代理3316。服务器代理3316回应以使它的服务器桌面的大小与客户机桌面3410的大小相一致并使本地服务器窗体的窗体属性与客户机3410上的资源-输出窗体3416的窗体属性相一致。客户机桌面3410上的资源-输出窗体3416和服务器桌面上的服务器窗体因而展示出相同的窗体属性并显示由资源3312产生的相同的图形输出数据。注意到服务器桌面可以对应于服务器的视频存储器中包含的屏幕之上的表面或者与服务器30耦合的显示设备上显示的屏幕上表面。
(767)客户机10的用户可以通过输入一个输入事件(由客户机代理2814检测到并随即被传递到服务器代理3316)在客户机-服务器会话期间移动资源-输出窗体3416、重新调整它的大小和/或修改它的z序或其它初始窗体属性。服务器代理3316使它的桌面和/或窗体与输入事件相一致,并对应于输入事件将更新后的图形输出数据和窗体属性信息以及更新资源-输出窗体3416的指令一起发送到客户机代理2814,以使它们与服务器30上的窗体相匹配。
(768)例如,如果客户机10的用户重新调整从由资源对象3310最初所指定的资源-窗体3416之一的大小(例如通过点住鼠标并拖动应用-输出窗体3416的边框到期望的位置/大小),客户机代理2814检测到由鼠标动作产生的输入事件并将它传递给服务器代理3316,服务器代理3316在服务器30的屏幕外表面或者屏幕上产生相同的重新调整大小的事件。服务器代理3316接着发送重画和重新调整大小命令消息以及更新后的图形输出数据和窗体属性信息到客户机代理2814。作为响应,客户机代理2814修改受该重新调整大小事件(例如上述ActiveX控件)影响的适当的资源对象3310,以使相应的资源-输出窗体3416被重新调整大小并且更新后的图形输出数据被画在资源-输出窗体3416的边框中。
(769)因而这些实施例使得能够修改资源-输出窗体3416的窗体属性,以使资源-输出窗体3416能够在浏览器窗体3402的边界内被移动、重新调整大小等。参看图35并通过非限制性实例,可以用上述方法重新调整资源-输出窗体B′3502的大小以形成资源-输出窗体B′′3504,它与资源-输出窗体F3506重叠(因而展现了与其不同的z序)。或者,资源-输出窗体3416可以被移动或重新调整大小到超出浏览器3402或者完全到浏览器3402之外。通过非限制性示例并参看图36,资源-输出窗体J3602位于浏览器窗体3402的边界之内,而资源-输出窗体K3604扩展到浏览器窗体3402之外,并且资源-输出窗体L3606整体位于浏览器窗体3402之外。注意资源-输出窗体可以关于客户机桌面3410中的其它单元展现不同的z序。例如,本地窗体3608展现在浏览器窗体3402和资源-输出窗体L3606的z序之间的z序。在这个实施例中,客户机代理2814响应从服务器代理3316接收到的命令消息,指令客户机10的操作系统画出期望的资源-输出窗体3416,而不需要先修改web页面3402中内嵌的资源对象3310的属性,这些属性最初建立了资源-输出窗体3416的窗体属性。
(770)在一个实施例中,影响资源-输出窗体3416的每个输入事件被传输到服务器代理3316并由其进行处理,服务器代理3316随后指令客户机代理2814在资源-输出窗体3416中进行相应的改变。在另一个实施例中,有一个或多个输入事件类型(例如,目标是将资源-输出窗体3416移动到web页面3412上的另一网格位置的点击和拖动鼠标行为)由客户机代理2814处理并且不被报告给服务器代理3316,在服务器代理3316中,资源-输出窗体3416中显示的图形输出数据保持不变。
(771)更详细地并且参看图37,客户机代理2814包括监控进程3702、命令进程3704、消息接收进程3706以及消息发送进程3708。在一个实施例中,每个进程3702、3704、3706、3708是独立于其它进程运行的独立操作的代码段。例如,消息接收进程3706和命令进程3704可以被实现为独立的线程,它们通过命名管道或共享内存相互通信。使用公共数据集能够同步消息接收进程3706和消息发送进程3708。
(772)消息接收进程3706通过在客户机-服务器会话期间提供客户机代理2814和服务器代理3316之间的连接性的通信链路从服务器代理3316接收图形数据、窗体属性信息以及命令。该通信链路优选地包括第一虚拟信道3710和第二虚拟信道3712。命令、事件和窗体属性信息通过第一虚拟信道3710在客户机代理2814和服务器代理3316之间传递,而与资源-输出窗体3416的图形内容对应的图形数据通过第二虚拟信道3712传递。消息接收进程3706向命令处理进程3704通知从服务器代理3316接收到的命令、窗体消息和图形数据,命令进程3704进一步处理这个数据。
(773)在一个实施例中,命令进程3704通过根据服务器代理3316指定的窗体属性指令客户机操作系统3714形成和/或修改所影响的资源-输出窗体3416而处理从服务器代理3316接收到的命令。命令进程3704还指令客户机操作系统3714在适当的资源-输出窗体3416中显示由服务器代理3316提供的图形数据。在一个实施例中,命令进程3704通过发出GDI命令实现对客户机桌面3410中资源-输出窗体3416的改变。在其它实施例中,命令进程3704直接向相关图形子系统发出命令或通过图形API命令发出命令。
(774)命令进程3704还指令监控进程3702周期性地监控客户机桌面3410以便检测到影响资源-输出窗体3416的改变。在一个实施例中,监控进程3702指令客户机操作系统3714以预定的轮询间隔返回涉及客户机桌面3410的信息。在其它实施例中,监控进程3702监控由客户机操作系统3714维护的消息队列以便检测影响资源-输出窗体的改变。监控进程3702将检测到的桌面改变的部分或全部发送到命令进程3704用于进一步处理。
(775)在一个实施例中,命令进程3704指令消息发送进程3708将监控进程3702检测到的所有变化通过第一虚拟信道发送到服务器代理3316。在另一个实施例中,命令进程3704指令消息发送进程3708发送检测到的改变的一个子集,例如只影响资源-输出窗体3416的图形数据和/或窗体属性的改变。服务器代理3316接收到检测到的改变以及来自命令进程3704的任意命令,还有触发检测到的改变的客户机10的用户所进行的任何输入事件。服务器代理3316随后修改它的本地桌面以适应检测到的改变并将相关的命令、窗体属性和图形数据发送回客户机的消息接收进程3706。采用这种方式,客户机和服务器桌面中公共的桌面单元(例如,资源-输出窗体3416)保持锁步(lock step)。
(776)客户机代理2814的命令进程3704通过维护公共窗体列表确保客户机和服务器桌面中的类似/公共单元保持锁步。公共窗体列表包括客户机桌面3410中每个窗体以及资源服务器桌面中的每个对应窗体的窗体属性信息。在多个客户机代理在客户机10上执行的实施例中,单个客户机代理2814的命令进程3704主要负责维护公共窗体列表。如果该单个客户机代理2814终止,而其它客户机代理仍然在运行中,剩余的客户机代理将选择另一个主客户机代理来维护公共窗体列表。
(777)图38说明了一个客户机10与多个远程机器30、30′相连的系统。如图38中所示,客户机10具有相关显示设备3802。显示设备3802可以用来显示图形用户界面的一个或多个组件,例如窗体和下拉菜单。显示设备3802显示给用户的图形用户界面组件的集合通常称为“桌面”。如图38中所示,客户机10向用户显示本地桌面环境3804。客户机10可以提供本地桌面环境3804的至少一部分,或者客户机10可以简单地显示从其它源(如远程机器30)接收到的各种不同桌面组件。如图38中所示,每个远程机器30、30′都有相关的显示设备3806、3806′,它们也显示桌面环境3808、3808′。应该注意到显示设备3806、3806′不必是视频显示监视器。例如,显示设备3806、3806′可以只是资源将图形过程调用的输出写入其中的视频RAM库。图38说明了每个机器30显示设备3806、3806′显示一个图形用户界面窗体3810、3812′的系统的一个实施例。
(778)每个远程机器30、30′还包括至少一个代理3814、3814′。在有些实施例中,每个远程机器30、30′为与远程机器30、30′相连的每个客户机10包括一个代理3814、3814′。客户机10也可以提供代理3816。在有些实施例中,客户机10为每个客户机10所连接的远程机器30提供一个单独的本地代理3816。在其它实施例中,客户机10提供一个单一代理3816来管理与多个远程机器30的连接。代理3814、3814′和3816中的每一个可以监控它们相关的桌面环境3808、3808′和3804,监控的是窗体改变位置、窗体被打开、窗体被关闭、窗体改变大小、窗体被最小化、窗体被最大化、或者窗体被恢复到桌面的顶部(即先前没有输入焦点的窗体获得输入焦点)。每个代理3814、3814′和3816将表示它们相关桌面3808、3808′和3804中的变化的消息发送到其它代理。例如,本地代理3816可以接收从服务器节点代理3814、3814′发送来的消息。本地代理3816根据从服务器代理3814、3814′接收到的消息命令客户机10修改本地桌面环境3804,也就是说,本地代理3816发送命令给客户机10以使本地桌面环境3804与桌面环境3808、3808′相一致。在其它实施例中,远程机器30、30′的代理3814、3814′从本地代理3816接收消息并且根据从本地代理3816接收到的消息命令机器30、30′修改桌面环境3808、3808′。
(779)在一个实施例中,代理3814、3816通过周期性地发出由操作系统(它能够确定图形用户界面桌面的细节)提供的一组命令中的一个或多个而监控对它们的相关桌面环境3808、3808′的改变。对于代理3814、3816不驻留在执行某个版本的WINDOWS操作系统的节点的实施例,代理3814、3816可以周期性地向WINDOWS操作系统发出Enum窗体命令,由WINDOWS操作系统返回桌面上现有的所有窗体的列表以及与那些窗体有关的信息。代理3814、3816可以每隔50、100或500毫秒或者任意间隔发出Enum窗体命令,Enum窗体命令让代理3814、3816能够快速地确定对它的相关桌面环境的改变何时已经发生,而不会给节点带来明显的计算负担。在这个实施例中,代理3814、3816维护存储与桌面窗体有关的信息的数据结构并比较Enum窗体命令返回的值和该数据结构以确定改变。
(780)代理3814、3814′确定并存储的信息可以包括与各个窗体相关联的标题栏、桌面环境3808、3808′中各个窗体的位置、各个窗体的大小、以及桌面环境3808、3808′中各个窗体的z序定位。在另一个实施例中,代理3814、3814′、3816监控一个节点间图形消息队列以判断对它的相关桌面环境的改变。多个服务器代理3814、3814′监控服务器间消息队列,本地代理3816监控客户机间消息队列。在这个实施例中,通过从系统应用或操作系统自身发送到图形子系统的消息影响对桌面环境3808、3808′的改变。因而,在远程机器30、30′上执行的资源将发送消息到服务器30、30′上的图形引擎以便改变服务器桌面环境3808、3808′。返回图形用户界面数据的其它命令对本领域的技术人员来说显然是透明的。对于代理3814、3816驻留在执行某个版本的WINDOWS操作系统的节点上的实施例来说,代理3814、3816监控Windows Message Queue(窗体消息队列),监控的是影响与代理所在节点相关联的桌面环境的消息。这些消息的例子包括:WM_SETFOCUS,它指示哪个窗体将被给予焦点(即,被恢复到桌面的顶部);WM_KILLFOCUS,它从指示的窗体移走焦点;以及WM_WINDOWPOSCHANGING,它指定窗体位置的变化。其它可以被发送到Windows Message Queue的消息对本领域的技术人员来说显示是已知的。
(781)现在参看图39,显示了在服务器启动的事件中采用的步骤。远程机器30的代理3814感应到它的相关桌面中的变化(步骤3902)。代理3814可以通过拦截服务器消息队列上的窗体事件做到这一点,或者可以如上所述通过比较串行发送的操作系统命令所返回的结果而判断桌面中的改变。代理3814发送表示服务器桌面3810中的变化的消息到客户机代理3816(步骤3904)。例如,如果已经将焦点给予了一个新的窗体,代理3814可以发送表示新的“顶层”窗体的身份的消息到客户机代理3816。在一个实施例中,代理3814将它的消息广播给系统中存在的所有客户机代理3816。或者,代理3814可以只将它的消息发送到客户机代理3816中的预定子集。例如,当客户机10连接到远程机器30时,客户机代理3816可以向代理3814注册。在这个实施例中,代理3814把改变消息只发送到已经向该远程机器30注册过的那些客户机代理。
(782)客户机代理3816接收到发送的消息(步骤3906)。在远程机器30广播命令的实施例中,客户机代理3816必然有某些机制用于检测发送来的命令是否影响它的相关桌面。例如,客户机代理3816可以维护它所连接到的远程机器30的列表。在这些实施例中,客户机代理3816响应它的列表中存在的任意远程机器30广播的消息。对于代理3814不广播消息的实施例中,不需要这样的机制。
(783)客户机代理3816根据接收到的消息实现对它的相关桌面的改变(步骤3908)。客户机代理3816可以通过直接发出使客户机10改变它的相关桌面的显示的图形应用编程接口命令完成这一步骤。或者,客户机代理3816可以发出GDI命令来改变它的相关桌面。在其它实施例中,客户机代理3816直接向系统发出用于在客户机10上显示图形的命令,不管系统是以硬件或软件实现。
(784)现在参看图40,显示了当客户机10启动桌面改变时采用的步骤。客户机代理3816感应到它的相关桌面14中的改变(步骤4002)。如上所述,这可以根据事件驱动原理或者轮询在客户机10上运行的操作系统而完成。客户机代理3816判断受影响的窗体属于哪个远程机器30(步骤4004)。为了促进这个进程,客户机代理3816可以维护将远程窗体与特定远程机器30关联在一起的一个列表。客户机代理3816随后发送表示它的桌面14中的变化的消息到标识出的远程机器30(步骤4006)。或者,客户机代理3816可以整个跳过步骤404并将它的改变消息广播到所有远程机器30。服务器代理接收到发送来的消息(步骤4008)并如上所述在它的相关桌面中实现该改变(步骤4010)。
(785)在一个特定实施例中,客户机10和远程机器30用ICA协议通信,并且客户机10和远程机器30执行某个版本的WINDOWS操作系统。客户机10提供本地代理3816,它可以被提供为动态链接库模块。远程机器30提供代理3814,它可以被提供为一个单独的线程。
(786)在这个实施例中,本地代理3816和代理3814通过第一ICA虚拟信道交换图形数据,即实际显示在桌面上的每个窗体中的数据。通过第二ICA虚拟信道在客户机10和远程机器30之间传递与窗体定位、窗体大小、窗体的z-通路顺序有关的信息以及其它这样的信息。在本说明书中,当客户机10和远程机器30正在通过第二ICA虚拟信道主动交换信息时,客户机10将被称为是“无缝开窗模式”。
(787)现在参看图41,显示了用于在本地代理3816和代理3814之间启用无缝开窗模式的过程。在这个实施例中,服务器代理和客户机代理之间的所有通信都是面向分组的并且发生在专用的ICA虚拟信道上,使得代理3814、3816的操作独立于底层通信协议。所有分组都从分组类型(1个字节)开始,后面跟分组数据长度(2个字节,可以为零)和数据(可选)。代理3814、3816将试图在单个网络分组中发送尽可能多的数据,但它将总是发送完整的分组。也就是说,无缝窗体虚拟分组的大小绝不会超过ICA分组的允许大小。分组流控制和交付确认由ICA协议的传输层实现。单个分组在接收到之后被立即执行。
(788)客户机代理3816等待来自服务器代理3814的初始分组。在用户登录到服务器之后,服务器代理3814将被调用(步骤4104)。
(789)服务器代理3814发送TWI_PACKET_START分组到客户机代理3816,该分组包括与远程机器30桌面环境有关的一些实质信息(桌面分辨率、桌面大小、服务器支持的ICA协议的版本号,等等)(步骤4106)。这个分组由服务器代理3814在初始连接或重新连接时发送,并且被用来(1)检测客户机10的无缝开窗能力;和(2)请求基本的客户机10信息。
(790)客户机代理接收到TWI_PACKET_START分组(步骤4107)并回以TWI_PACKET_C2H_START_ACK分组,确认TWI_PACKET_START并提供客户机10的版本/功能信息(步骤4108)。这个分组由客户机代理3816发送以确认接收到TWI_APCKET_START分组并发送所请求的基本的客户机10信息到服务器代理3814。
(791)如果没有来自客户机代理3816的回应(步骤4109),服务器代理3814就假定客户机10不能进入无缝开窗模式,并且无缝开窗虚拟信道不会被远程机器30用来传递窗体信息。在这种情况下,远程机器30继续通过别的虚拟信道向客户机10传递图形数据,并且客户机10桌面显示服务器桌面而不需要包括来自其它节点的窗体。
(792)客户机代理3816使用服务器代理3814在步骤4106中发送的信息来确定是否能够在服务器代理3814和客户机代理3816之间建立无缝开窗会话。在一个实施例中,如果客户机代理3816确定可以启用无缝开窗模式(步骤4110),客户机代理3816比较与服务器代理3814支持的虚拟信道协议的版本有关的信息以做出客户机代理3816是否能够(在服务器代理3814和客户机代理3816之间)确定启用无缝开窗模式的决定,客户机代理3816发送TWI_PACKET_C2H_OPEN分组到服务器代理3814(步骤4111)。这个分组请求服务器代理3814启用无缝开窗模式。
(793)在接收到TWI_PACKET_C2H_OPEN分组之后(步骤4112),服务器代理3816(I)重置它的内部数据结构,(II)发送TWI_PACKET_SYSINFO分组到客户机代理3816以发送与远程机器30上的窗体设置有关的一些一般信息到客户机代理3816,(III)发送表示无缝开窗模式的建立的TWI_PACKET_OPEN分组到客户机代理3816(步骤4114),并(IV)激活它的主轮询循环(步骤4116),该循环将轮询服务器节点上的操作系统以获知桌面变化。如果客户机代理3816和服务器代理3814不支持相同版本的无缝开窗协议,服务器代理3814就忽略TWI_PACKET_C2H_OPEN分组。
(794)在接收到TWI_PACKET_OPEN分组之后(步骤4120),客户机代理3816重置它的内部数据结构(步骤4122),并且客户机代理3816和服务器代理3814之间的无缝开窗模式也被建立。
(795)在无缝开窗模式会话中,服务器代理3814将发送服务器节点上的所有顶层窗体的窗体信息,例如窗体位置、大小、风格、窗体文本等等。另外,发送前台窗体信息,即服务器节点桌面上的哪个窗体是前台窗体。根据这个信息,客户机代理3816创建与远程机器桌面上的服务器节点窗体相同大小/位置的窗体。在有些实施例中,窗体单元被当作位图从服务器节点20发送。由服务器代理3814发送的分组的例子包括:TWI_PACKET_CLOSE,发送它是为了将客户机代理3816切换出无缝开窗模式并切换回正常(或全屏)模式;也就是说,客户机10被切换回显示服务器节点桌面环境而不包括来自其它桌面环境的窗体;TWI_PACKET_CREATEW,发送它是为了在客户机10上创建新窗体;TWI_PACKET_DELETEW,发送它是为了销毁客户机10上的窗体;TWI_PACKET_CHANGEW,发送它是为了改变本地节点10显示的窗体;TWI_APCKET_SYSINFO,发送它是为了报告远程机器30的系统设置-通常该分组只被发送一次,但也可以被发送多次;TWI_PACKET_FOREGROUNDW,该分组在正常的无缝开窗模式操作期间被发送以改变前台窗体;TWI_PACKET_SETTOPW,该分组在正常的无缝开窗模式操作期间被发送以改变顶层窗体,即将一个新的窗体置顶;TWI_PACKET_SETFOCUS,该分组在正常的无缝开窗模式操作期间被发送以改变焦点窗体;TWI_PACKET_FOCUSACK,它是响应TWI_PACKET_C2H_SETFOCUS(见下)而被发送,并报告Se tFocus尝试的结果;以及TWI_PACKET_SPA_STATUS,它是响应TWI_PACKET_C2H_START_PUBLI CAPP(见下)而被发送,用来报告所请求的操作的结果。
(796)客户机代理3816发送到服务器代理3814的分组的例子包括:TWI_PACKET_C2H_PAUSE,发送它是为了暂停服务器代理3814,也就是说服务器代理3814将暂停发送窗体信息,清除它的内部数据结构并发送TWI_PACKET_CLOSE分组(见上);TWI_PACKET_C2H_RESUME,发送它是为了恢复服务器代理3814-服务器代理3814将清除它的内部数据结构,并发送TWI_PACKET_OPEN分组(见上);TWI_PACKET_C2H_SETPOS,发送它是为了报告机器上的窗体大小/位置改变;TWI_PACKET_C2H_SETFOCUS,发送它是为了报告机器上焦点窗体中的改变;TWI_PACKET_C2H_RESTORE,发送它是为了请求恢复最小化的窗体;TWI_PACKET_C2H_TERMINATE,发送它是为了请求终止在远程机器30上执行的程序;TWI_PACKET_C2H_STARTAPP,发送它是为了启动远程机器30上的新资源;TWI_PACKET_C2H_LOGOUT,发送它是为了终止当前会话;TWI_PACKET_C2H_START_PUBLICAPP,发送它是为了启动远程机器上新发布的资源;和TWI_PACKET_C2H_CLIENTINFO,发送它是为了报告客户机桌面设置给服务器代理3814--这个分组通常是在启动时被发送,但也可以用在无缝开窗会话期间。
(797)客户机代理3816将试图在本地进行一些操作(例如窗体移动和调整大小),然后将更新信息发回远程机器30。通过拦截到客户机创建的窗体的WM_NCHITTEST消息模拟正确的窗体行为。
(798)前台窗体变化既可以发生在客户机10上也可以发生在远程机器30上,因此客户机10和远程机器30将协商并平衡实际的前台窗体改变。例如,如果远程机器30改变它的前台窗体,该改变将被正确地表示在客户机10桌面上。服务器代理3814用TWI_PACKET_FOREGROUNDW分组发送与新的前台窗体有关的信息到客户机代理3816。同样,如果客户机代理3816检测到客户机10桌面上的前台窗体改变,客户机代理3816发送与该改变有关的信息到服务器代理3814并且服务器代理3814在远程机器30桌面上实现该改变。
(799)当焦点被从代表服务器窗体的窗体拿走并给予本地机器10窗体时,客户机10通知远程机器30该变化并且远程机器30将焦点给予一个不可见窗体。对于客户机10与两个服务器节点30相连的实施例,并且焦点被从代表来自第一远程机器30的窗体的窗体拿走并给予代表来自第二远程机器30′的窗体的窗体,客户机10发送一个分组通知当前的远程机器30或30′它的窗体不再拥有焦点。一旦远程机器30或30′通过将焦点给予一个不可见窗体而做出回应,客户机代理3816就通知另一远程机器30它的窗体现在拥有客户机10桌面上的焦点。
(800)在有些实施例中,期望向客户机的主轮询循环增加一些复杂性以降低网络流量。在这些实施例中,主轮询循环包括当前前台窗体和最后被请求移到前台的窗体的标识之间的比较。如果当前前台窗体匹配最近的请求中标识的窗体,代理就不需要发送确信该改变的信息。这个技术在服务器代理3814和客户机代理3816中都有用。
(801)客户机10上的窗体z序是服务器节点z序的超集(机器10将总是比主机有更多的窗体)。服务器节点边框是通过复制窗体和窗体风格中的TOP_MOST标志之间的所有者/拥有关系而在客户机10上被复制的。所有者/拥有关系指是其它窗体的孩子的窗体,例如与资源窗体相关联的对话框。对话称被称为是由资源窗体拥有,对话框将总是出现在它的所有者的顶端上。TOP_MOST标志表示特定的窗体应该出现在桌面顶端之上,例如WINDOWS95中的状态栏。
(802)当用户断开连接时,服务器代理3814将它自己切换到暂停模式,并不再向客户机代理3816发送信息。在重新连接时,服务器代理3814发送TWI_PACKET_START分组,报告HostAgentState(主机代理状态)为“已经在运行,重新连接”。
(803)根据服务器支持的协议的版本号,客户机10将(从客户机10的角度)决定是否能启用无缝开窗模式。如果可以切换到无缝开窗模式,客户机代理3816将发送TWI_PACKET_C2H_OPEN分组,请求服务器代理3814启用无缝开窗模式。
(804)负责监控相关桌面的每个代理可以被实现为独立的软件过程(例如基于DOS的系统上的可执行文件)、动态链接库过程(DLL)或者操作系统的内部成分。现在参看图42,简单地说,每个代理包括消息接收设施4202、命令设施4204、监控设施4206以及消息发送设施4208。代理与代理之间的通信是全双工的,即代理可以同时发送和接收消息。因而,每个设施可以被实现为独立于其它设施运行的单独运行的代码段。例如,消息接收设施4202和命令设施4204可以被实现为通过命名管道或共享内存相互通信的独立线程。使用公共数据能够同步消息接收设施4202和消息发送设施4208。
(805)消息接收设施4202接收从其它代理发送过来的、表示与那些代理相关联的桌面环境中的变化的消息。消息接收设施4202可以直接用代理用来通信的通信协议的物理层相连,或者消息接收设施4202可以通过以一个或多个通信系统协作而运行在更高层的协议上。对于消息被代理广播的实施例,消息接收设施4202有用于判断广播的消息是否是为它而发的机制。例如,消息接收设施4202可以存储它的相关桌面显示的窗体的列表。消息接收设施4202比较任何接收到的消息的目标和它的窗体列表以确定是否要在接收到的消息上采取动作。消息接收设施可以被实现为一个阻塞函数。或者,消息接收设施可以被实现为由ICA虚拟协议传输调用的回调函数。
(806)一旦消息接收设施4202已经确定接收到的消息是为它的桌面而发,命令设施就被调用以对相关的桌面环境完成该消息所指示的变化。接收到的消息可以被传递到命令设施4204,或者在与命令设施4204通信之前由消息接收设施4202处理所接收到的消息。命令设施4204可以通过发出GDI命令实现由接收到的消息所指示的桌面变化。在其它实施例中,命令设施4204可以直接发出命令到相关图形子系统或者可以发出其它图形API命令。
(807)在无缝开窗会话期间,多个桌面与单一客户机10相关联-一个桌面是客户机10自身上的,以及对客户机10所连接的每个远程机器30有一个桌面。客户机代理3816结合服务器代理3814、3814′产生表示所有桌面的z序的组合窗体列表。所有参与的桌面被客户机代理40和服务器代理3814、3814′“链接”在一起,并且任意桌面上的任一z序变化将被传播到其它桌面。
(808)在一个实施例中,每个远程机器30只知道它自己的图形桌面表示,并且远程机器30桌面被独立地表示在客户机10中。根据客户机代理3816从各个服务器节点30、30′获得的窗体信息,通过将所有远程机器30和机器10桌面映像合并到单一显示映像中,而更新客户机10的显示。产生的映像被显示在客户机10上。
(809)合并过程涉及根据所有代理交换的窗体信息构造公共窗体列表。使用合并后的窗体列表,图形桌面数据被修剪和合并用于由客户机10表示。节点关注“剪切”从命令设施4204发出的命令产生的所显示的窗体。这个“剪切”功能对本领域的技术人员是众所周知的。但是,在有些实施例中,命令设施4204维护剪切后的窗体的阴影位图。也就是说,命令设施4204维护被其它窗体遮挡的窗体的位映像。这使得代理能够改变它的相关桌面而不需要从某个适当来源重新装载被遮挡窗体的窗体映像。在其它实施例中,节点在接收到图形数据时就判断它是否被遮挡。如果是,该节点就忽略接收到的图形数据。如果不是,该节点就显示该数据。节点通过应用剪切功能判断该图形数据是否被遮挡。
(810)监控设施4206监控与代理相关联的桌面。监控设施4206可以通过周期性地发出由在节点上执行的操作系统提供的命令(这些命令返回与节点的桌面有关的信息)而监控桌面。或者,监控设施506可以关注传递给节点间消息队列的消息。如上所述,在一个特定实施例中,监控设施4206监控窗体消息队列(Windows Message Queue)。一旦有桌面变化发生,消息发送设施4208就发送表示已经发生的变化的消息。在有些实施例中,消息发送设施4208广播对该变化的通知。
(811)在一个实施例中,消息发送设施4208可以被实现为可以从任意窗体过程调用的非阻塞函数的形式。如果该函数不能立即发送数据分组(例如,通信子系统没有缓冲区空间),可以设置一个定时器并进行重发尝试直到发送成功。
(812)参看图43,示出了用于在客户机10和远程计算环境之间启用无缝开窗模式的系统的一个实施例。简单地说,该系统包括第一虚拟信道4302、第一远程桌面环境4304、本地(native)操作系统4306、远程窗体4308、第二虚拟信道4310、第三虚拟信道4312、第二远程桌面环境4314、虚拟操作系统4316、远程窗体4318、第四虚拟信道4320、本地代理4330和本地桌面环境4340。
(813)在有些实施例中,前面结合图24-37所说明的方法和系统可以被实现在包括虚拟机的系统中。在有些实施例中,本地代理4330驻留在客户机10上。在其中一个这样的实施例中,客户机10建立到提供对客户机10所请求的资源的访问的物理机器的连接。在这个实施例中,客户机10上的本地代理4330可以如上所述从远程机器30上的代理接收与远程窗体4308相关联的窗体属性数据和图形数据。
(814)在其它实施例中,客户机10已经建立了到提供对资源的访问的虚拟机的连接。在其中一个这样的实施例中,用于远程机器30的代理可以驻留在该虚拟机中。在另一个这样的实施例中,远程机器30的代理可以驻留在其中启动该虚拟机的管理程序中。在又一个这样的实施例中,远程机器30的代理可以驻留在为远程机器30上的虚拟机提供管理功能的第二虚拟机中。在这些实施例中,客户机10可以通过结合图24-37所说明的方法和系统的实现接收与远程窗体4308相关联的窗体属性数据和图形数据。
(815)客户机10可以访问来自不同远程机器30的多个资源。在有些实施例中,客户机10可以在多个所建立的、到远程机器30上的物理机器和远程机器30′上的管理程序中执行的虚拟机的连接上实质上同时访问不同机器上的资源。
(816)仍然参看图43,并且更详细地参看,所示框图说明了用于从虚拟化操作系统和本地操作系统接收与远程窗体相关联的窗体属性数据和图形数据的系统的一个实施例。第一虚拟信道4302与本地操作系统4306提供的第一远程桌面环境4304相耦合。第一虚拟信道4302传输与第一远程桌面环境4304提供的远程窗体4308相关联的图形数据。与第一远程桌面环境4304相耦合的第二虚拟信道4310传输与由第一远程桌面环境4304提供的远程窗体4308相关联的窗体属性数据。
(817)第三虚拟信道4312与由虚拟化操作系统4316提供的第二远程桌面环境相耦合,第三虚拟信道4312传输与第三远程桌面环境4314提供的第二远程窗体4318相关联的图形数据。与第二远程桌面环境4314相耦合的第四虚拟信道4320传输与第二远程桌面环境4314提供的第二远程窗体4318相关联的窗体属性数据。在一个实施例中,与远程窗体708和718相关联的窗体属性数据由第二虚拟信道4310传输,并且第四虚拟信道4320包括远程窗体的大小和z序。
(818)与第一远程桌面4304和第二远程桌面4314相耦合的本地代理3814通过第一、第二、第三和第四虚拟信道控制对与第一远程桌面环境4304提供的远程窗体4308对应的本地桌面环境4340中的第一窗体和与第二远程桌面环境4314提供的远程窗体4318对应的本地桌面环境4340中的第二窗体的形成。第一本地窗体根据由第二虚拟信道4310传输的窗体属性数据显示由第一虚拟信道4302传输的图形数据,并且第二本地窗体根据第四虚拟信道4320传输的窗体属性数据显示由第三虚拟信道4312传输的图形数据。在一个实施例中,本地代理4330形成并维护表示本地桌面环境4340中的对应窗体的可修改z序的组合窗体列表。
(819)在有些实施例中,本地操作系统形成了本地桌面环境4340。在其中一个这样的实施例中,本地代理4330周期性地轮询本地操作系统以检测第一本地窗体和第二本地窗体其中一个的属性变化。在另一个这样的实施例中,在检测属性变化后,本地代理4330发送一个表示该属性变化的消息到第一远程桌面环境和第二远程桌面环境二者中的一个。在有些实施例中,本地桌面环境4340和远程桌面环境4304和4314上的对应窗体呈现出:相对于本地桌面环境的本地窗体的窗体属性数据实际上相似于相对于各个远程桌面环境的远程窗体的窗体属性数据。
(820)现在参看图44,所示流程图说明了在从虚拟化操作系统和本地操作系统接收和远程窗体相关联的窗体属性数据和图形数据的方法中采用的步骤的一个实施例。简单地说,与本地操作系统提供的第一远程桌面环境所提供的远程窗体相关联的图形数据是通过与该远程桌面相耦合的第一虚拟信道被接收的(步骤4302)。与由第一远程桌面环境提供的远程窗体相关联的窗体属性数据是通过与第一远程桌面环境耦合的第二虚拟信道被接收的(步骤4304)。与虚拟操作系统提供的第二远程桌面环境所提供的远程窗体相关联的图形数据是通过与该远程桌面环境相耦合的第三虚拟信道被接收的(步骤4306)。与第二远程桌面环境提供的远程窗体相关联的窗体属性数据是通过与第二远程桌面环境耦合的第四虚拟信道被接收的(步骤4308)。第一窗体在本地桌面环境中被形成,它根据从第二虚拟信道接收到的窗体属性数据显示从第一虚拟信道接收到的图形数据(步骤4310)。第二窗体在本地桌面环境中被形成,它根据从第四虚拟信道接收到的窗体属性数据显示从第三虚拟信道接收到的图形数据(步骤4312)。
(821)在有些实施例中,形成了组合窗体列表并存储至少部分窗体属性数据。在其它实施例中,轮询与本地桌面环境相关联的本地操作系统以检测第一本地窗体和第二本地窗体其中一个的属性变化,并发送表示所检测到的属性变化的消息到第一远程桌面环境和第二远程桌面环境中(相应)的一个。在其它实施例中,本地窗体呈现的相对于本地桌面环境的窗体属性数据实际上相似于相对于远程桌面环境的远程窗体的窗体属性数据。
(822)参看图45,示出了向客户机提供到主机服务的可靠连接的系统的一个实施例。简单地说,用于网络通信的系统4500包括在网络150上与第一协议服务4502(例如,第二计算设备)通信的客户机10(例如,第一计算设备)。系统4500中还包括多个主机服务4516a-4516n(例如,第三计算设备),它们在网络150′上与第一协议服务4502通信,并通过第一协议服务4502在网络150上与客户机10通信。或者,在另一个实施例中,并且现在参看图46,第一协议服务4502和主机服务4516a-4516n没有像图45中所示那样被实现为独立的计算设备,而是被包括在相同的计算设备,例如远程机器30。系统4500可以包括一、两个或多个远程机器30、30′。协议服务4502也可以被提供为远程机器30。
(823)在一个实施例中,网络150和150′是不同的网络,如图45中所示。网络150和150′也可以是相同网络,如图46中所示。
(824)仍然参看图45和46中的实施例,客户机10被配置以用第一协议在网络150上建立客户机10和第一协议服务4502之间的连接4504。对此部分,第一协议服务4502被配置以接受该连接4504。因此客户机10和第一协议服务4502能够用参考图47-48和图49中下面说明的第一协议彼此通信。
(825)在有些实施例中,如图45和46中所示,客户机代理4506被包括在客户机10中。例如,客户机代理4506可以被实现为软件程序和/或硬件设备,例如ASIC或FPGA。客户机代理4506可以使用任意类型的协议,它可以是(例如)HTTP客户机代理,FTP客户机代理,Oscar客户机代理,Telnet客户机代理,来自Fort Lauderdale,Florida的Citrix Systems公司的独立计算体系结构(ICA)客户机代理,或者来自Redmond,Washington的Microsoft公司的远程桌面协议(RDP)客户机代理。在有些实施例中,客户机代理4506自身被配置以使用第一协议通信。在有些实施例中(未示出),客户机10包括多个客户机代理4506a-4506n,各自分别使用主机服务4516a-4516n通信。
(826)在另一个实施例中,一个独立的客户机代理被配置以使客户机10能够用第一协议通信。该独立客户机代理可以被并入客户机10中,或者该独立客户机代理可以独立于客户机10。例如,该独立客户机代理可以是本地主机代理。通常,该独立客户机代理可以实现这里关于客户机代理4506所说明的任何功能。
(827)下面将进一步说明,在一个实施例中,第一协议服务4502自身被配置以使用第一协议通信。第一协议服务4502被配置用于分别建立第一协议服务4502和主机服务4516a-4516n之间的连接4508a-4508n。例如,第一协议服务4502可以建立第一协议服务4502和主机服务4516a之间的连接4508a以及第一协议服务4502和另一主机服务4516b之间的连接4508b。在一个实施例中,第一协议服务108分离地建立这样的连接4508a-4508n(即,第一协议服务4502一次建立一个连接)。在另一个实施例中,第一协议服务4502同时建立这些连接4508a-4508n中的两个或更多。
(828)在又一实施例中,第一协议服务4502能够同时建立并维护多个连接4508a-4508n。第一协议服务4502被配置以提供两个或多个连接4508a-4508n而且不打断与客户机10的连接4504。例如,第一协议服务4502能够被配置用来在客户机10的用户请求执行驻留在主机服务4516a上的第一应用程序时在第一协议服务4502和主机服务4516a之间建立连接4508a。当用户终止该第一应用程序的执行并启动驻留在(例如)主机服务4516b上的第二应用程序的执行时,在一个实施例中,第一协议服务4502被配置用来中断连接4508a并建立第一协议服务4502和主机服务4516b之间的连接4508b,而不会干扰第一协议服务4502和客户机10之间的连接4504。
(829)第一协议服务4502和主机服务4516a-4516n能够用多种次级协议中的任意一种分别在连接4508a-4508n上通信,这些第二协议包括但不限于HTTP、FTP、Oscar、Telnet、来自Fort Lauderdale,Florida的CitrixSystems公司的ICA远程显示协议,和/或来自Redmond,Washington的Microsoft公司的RDP远程显示协议。例如,第一协议服务4502和主机服务4516a能够使用ICA远程显示协议在连接4508a上通信,而第一协议服务4502和主机服务4516b能够用RDP远程显示协议在连接4508b上通信。
(830)在一个实施例中,用于在第一协议服务4502和主机服务4516之间通信的次级协议(例如ICA远程显示协议)包括多个虚拟信道。虚拟信道是应用层代码用来发出以交换数据的命令的面向会话的传输连接。例如,多个虚拟信道中的每一个可以包括启用远程客户机10上的功能的多个协议分组。在一个实施例中,多个虚拟信道中的一个包括用于通过第一协议服务4502从主机服务4516发送图形屏幕命令到客户机10以使客户机10显示图形用户界面的协议分组。在另一个实施例中,多个虚拟信道中的一个包括用于通过第一协议服务4502从主机服务4516发送打印机命令到客户机10以使文档在客户机10上被打印的协议分组。
(831)在另一个实施例中,第一协议是隧道协议。第一协议服务4502将多个次级协议(每个用于主机服务4516a-4516n中的一个和第一协议服务4502之间的通信)封装在第一协议中。这样,主机服务4516a-4516n和第一协议服务4502通过多个次级协议与客户机10通信。在一个实施例中,第一协议是能够在TCP/IP连接上隧道多个次级协议的应用层传输协议。
(832)参看图47,客户机10和第一协议服务4502之间通过连接4504的通信采用封装在第一协议4704中的多个次级协议4702a-4702n(例如,HTTP、FTP、Oscar、Telnet、ICA和/或RDP)的形式。这由次级协议4702a-4702n在第一协议4704中的位置表示。在不需要调用安全通信的地方,可以如图47所示在未加保护的TCP/IP连接4706上传递第一协议4704。
(833)现在参看图48,如果使用了安全通信,第一协议4704就在加密连接上被传递,例如用安全套接字层(SSL)等安全协议4804保护的TCP/IP连接4802。SSL是最早由位于Mountain View,California的NetscapeCommunication公司开发的安全协议,现在被互联网工程任务组(IETF)发布为传输层安全(TLS)协议的标准,并且在IETF RFC-2246中描述。
(834)因而,用(图48)或不用(图47)安全协议4804在连接4504上的第一协议4704中传递多个第二协议4702a-4702n。可以用来在连接4508a-4508n上通信的次级协议包括但不限于HTTP、FTP、Oscar、Telnet、ICA和RDP。此外,在一个实施例中,次级协议中至少有一个如上所述包括多个虚拟信道,其中的每个虚拟信道包括启用远程客户机10上的功能的多个协议分组。例如,在一个实施例中,一个主机服务4516a是web服务器,使用HTTP协议在连接4508a上与第一协议服务4502通信,另一个主机服务4516b是应用服务器,使用ICA协议在连接4508b上与第一协议服务4502通信。主机服务4516b产生用于发送屏幕命令到客户机10以使客户机10显示图形用户界面的协议分组,并且产生用于发送打印机命令到客户机10以使文档在客户机10上被打印的协议分组。
(835)在另一个实施例中,这里所说明的方法和系统减少了打开和关闭网络连接的次数。在一个实施例中,第一协议4704允许其中被隧道的次级协议连接4702a-4702n(例如,HTTP连接4702n)分别被打开和/或关闭,而不要求在第一协议4704上传送传输连接(例如,TCP连接4706和/或4802),安全协议连接4804或者第一协议连接4704自身也被类似地重复打开和/或关闭。没有第一协议4704的封装,次级协议4702a-4702n可能频繁地打开或关闭网络连接,例如TCP连接。这将给系统带来明显的延迟和负担。使用在建立网络连接中有显著负担的安全封装协议4806(例如SSL)会进一步增大这些延迟和负担。通过将次级协议4702a-4702n封装在第一协议4704中并维持传输连接(4706、4802)的连接,作为第一协议4704的有效负载的一部分的次级协议4702a-4702n就不需要进行频繁且昂贵的打开或关闭网络连接4504的操作。此外,因为可以用安全协议4804在第一协议4704中传送次级协议4702a-4702n,次级协议4702a-4702n也不需要打开或关闭诸如SSL的安全连接。传输连接(4706、4802)建立并维持网络连接4504以便能够传送封装的次级协议4702a-4702n而不需要重复地打开和关闭安全的或未加保护的网络连接4504。这显著提高了传送次级协议4702a-4702n中的运行速度。
(836)如上所述,次级协议4702a-4702n使用HTTP、FTP、Oscar、Telnet、ICA和RDP等协议携带与应用程序有关的协议分组。次级协议分组4902a-4902n传输与客户机10和主机服务4516a-4516n之间处理的应用功能有关的数据。例如,客户机10上的用户可以与主机服务4516a-4516n提供的web页面交互。在客户机10和主机服务4516a-4516n之间的处理事务中,封装在第一协议4704中的次级协议4702a-4702n可以有与显示web页面并接收任何用户交互以传送到主机服务4516a-4516n有关的http协议分组。因为传输连接(4706、4802)不是由次级协议4702a-4702n维持,因此次级协议4702a-4702n不需要处理网络级连接中断。这样,次级协议4702a-4702n在它们的有效负载中不能提供任何网络级连接中断信息。在上面的例子中,发送到客户机10的次级协议4702a-4702n的与http有关的次级协议分组4902a-4902n不提供对网络中断(例如web页面上的错误消息)的通知。因此,客户机10上的用户不会被通过次级协议4702a-4702n通知网络级连接中断。这在使用与次级协议4702a-4702n有关的应用程序期间有效地向用户隐藏了网络连接中断。
(837)参看图49,第一协议服务4502和客户机10的客户机代理4506使用的示例过程4900在第一协议4704中封装了多个次级协议4702(例如,HTTP、FTP、Oscar、Te1net、ICA和/或RDP)以通过连接4504通信。可选地,如下所述,第一协议服务4502和客户机10的客户机代理4506使用的示例过程4900在通过连接4504通信之前还在第一协议所在层上对通信进行压缩和/或加密。从第一协议服务4502的观点来看,次级协议分组4902a-4902n在第一协议服务4502上通过连接4508a-4508n被接收到。例如,两个次级协议分组4902a和4902b被第一协议服务4502接收到。能够接收到一个、两个或任意数量的次级协议分组4902a-4902n。在一个实施例中,次级协议分组4902a-4902n由主机服务4516在连接4508上传输到第一协议服务4502。次级协议分组4902a-4902n包括报头4904和数据分组4906,也称为数据有效负载。
(838)在接收到次级协议分组4902a-4902n之后,第一协议分组4502将这些次级协议分组4902a-4902n中的一个或多个封装在第一协议分组4908中。在一个实施例中,第一协议服务4502产生第一协议分组报头4910并在第一协议分组4908的数据有效负载4912中封装次级协议分组4902a-4902n中的一个或多个,例如,两个次级协议分组4902a和4902b。在另一个实施例中,在每个第一协议分组4908中只封装了一个次级协议分组4902a。
(839)在一个实施例中,第一协议分组4908随后在连接4504(例如在参考图47所说明的连接4706)上被发送到客户机10的客户机代理4506。或者,在另一个实施例中,第一协议服务4502还被配置用来在任意第一协议分组4908发送之前在第一协议4704所在层上对通信进行加密。在一个这样的实施例中,使用参考图48说明的SLL协议加密第一协议分组4908。结果是产生了包括报头4916和加密后作为数据有效载荷4918的第一协议分组4908′的安全分组4914。安全分组4914随后可以在连接4505(例如,图48中所示安全TCP/IP连接4802)上被发送到客户机10的客户机代理4506。
(840)在另一个实施例中,第一协议服务4502还被配置用来在任意第一协议分组4908的发送之前对第一协议4704的层上的通信进行压缩。在一个实施例中,在压缩第一协议分组4908之前,第一协议服务4502使用标准压缩技术压缩第一协议分组4908。这样,提高了系统4502的效率。
(841)再次参看图45-46,在一个实施例中,系统4500向远程客户机10提供到远程机器30(例如,远程机器30′)的持久连接。例如,如果客户机10建立了客户机10和第一协议服务4502之间的连接4504并且第一协议服务4502建立了第一协议服务4502和远程机器30′之间的连接4508a,那么客户机代理4506或者第一协议服务4502或者它们二者都被配置以维持通过连接4504最近接收到的第一协议数据分组的队列。例如,可以在连接4504失败之前和之后由客户机代理4506和/或第一协议服务4502维持被排队的数据分组。此外,在连接4504失败之后,第一协议服务4502(同样还有远程机器30)被配置以维持连接4508a。
(842)在连接4504失败之后,客户机10建立与第一协议服务4502的新连接,而不丢失任何数据。更明确地说,因为在连接4504失败后保持了连接4508a,新建立的连接4504可以被链接到所维持的连接4508a。此外,因为最近传输的第一协议数据分组被排队(缓冲),它们可以再次在新建立的连接4504上被客户机10发送到第一协议服务4502和/或由第一协议服务4502发送到客户机10。这样,通过第一协议服务4502,远程机器30′和客户机10之间的通信会话持久并且不丢失任何数据地继续运行。
(843)在一个实施例中,客户机10的客户机代理4506和/或第一协议服务4502对它们在连接4504上发送的数据分组编号。例如,客户机代理4506和第一协议服务4502各自分别对它们自己发送的数据分组编号,而不管对方是如何对它的数据分组编号。此外,对数据分组的编号可以是绝对的,而无需对数据分组的任意重新编号,即由客户机代理4506和/或第一协议服务4502发送的第一数据分组可以被编号为1,而由客户机代理4506和/或第一协议服务4502发送的每个数据分组在此之后被分别、连续地编号。
(844)在一个这样的实施例中,在连接4504被破坏并重新建立之后,客户机代理4506和/或第一协议服务4502通知对方它需要的下一个数据分组。例如,如果客户机代理4506在连接4504中断之前已经接收到数据分组1-10号,在连接4504重新建立之后,客户机代理4506就通知第一协议服务4502它现在需要数据分组11号。同样,第一协议服务4502也可以这样操作。或者,在另一个这样的实施例中,客户机代理4506和/或第一协议服务4502告知对方它接收到的最后一个分组。例如,如果客户机代理4506在连接4504中断之前已经接收到数据分组1-10号,在连接4504重新建立之后,客户机代理4506通知第一协议服务4502它最后接收到的数据分组是10号。同样,第一协议服务4502也可以这样操作。在又一个实施例中,客户机代理4506和/或第一协议服务4502在连接4504重新建立之后通知对方最后接收到的数据分组以及它需要的下一个数据分组。
(845)在这样的实施例中,在连接4504重新建立之后,客户机代理4506和/或第一协议服务4502可以发送对方没有接收到的所缓冲的数据分组,使主机服务4516和客户机10之间的通信会话通过第一协议服务4502继续而不丢失任何数据。此外,在连接4504重新建立之后,客户机代理4506和/或第一协议服务4502能够从它们各自的缓冲区冲洗出当前知道将由对方接收的所缓冲的数据分组。
(846)通过向客户机10提供到远程机器30的可靠持久的连接,通过在网络连接中断期间维持用户会话而避免了打开与远程机器30的新用户会话的过程。对于和远程机器30的每个用户会话,客户机10和远程机器30可以维护会话专有的上下文和高速缓存,以及与用户会话的实例有关的其它应用专有机制。对于建立的每个新的用户会话,这些会话专有的上下文和高速缓存应该被重新填充或重新建立以反映新用户会话。例如,客户机10上的用户可以有与远程机器30的HTTP会话。远程机器30可以保持与客户机10的HTTP会话的这个实例的上下文-专有信息。上下文可以被存储在服务器的存储器中、服务器的文件中、数据库中或者与提供远程机器30的功能有关的其它组件中。另外,客户机10可以对HTTP会话的实例专有的本地上下文,例如用于跟踪对远程机器30的未处理请求的机制。这个上下文可以被存储在客户机10的存储器中、客户机10上的文件中、或者与客户机10接口的其它软件组件中。如果客户机10和远程机器30之间的连接不是持久的,需要建立具有远程机器30上和客户机10上的新会话专有上下文的新用户会话。维持会话以便不需要重新建立新会话和新的专有会话上下文。
(847)在有些实施例中,通过网络级连接中断维持用户会话并且不向客户机的用户通知连接被中断。在这些实施例的运行中,第一协议服务4502建立并维持与客户机10的第一连接以及与主机服务4516a-4516n的第二连接。通过第一连接和第二连接,建立了客户机10和远程机器30之间的会话。第一协议服务4502能够存储并维护任何与会话有关的信息,例如验证证书以及用于建立会话的客户机10上下文和远程机器30上下文。客户机10上的用户将执行通过所建立的会话由远程机器30提供的功能。这样,相关的次级协议分组4902a-4902n将包含与这些功能的事务有关的数据。作为次级协议4702a-4702n的一部分的这些次级协议分组4902a-4902n被封装在第一协议4704中并在第一协议4704中被传送。在检测到第一连接或第二连接的中断之后,第一协议服务4502可以在维持没有被中断的连接的同时重新建立被中断的连接。网络连接中断可以导致客户机10和远程机器30之间的会话的中断。但是,因为传输机制不是由次级协议4702a-4702n维持,可以在网络连接重新建立之后重新建立会话而不必通知客户机10上的用户连接被中断。次级协议4702a-4702n不需要包含任何与中断有关的信息以发送到客户机10。因而,由于第一协议4704的封装,有效地向用户隐藏了由网络连接中断导致的会话中断。
(848)维持会话有关信息的第一协议服务4502可以重新建立客户机10和远程机器30之间的会话。例如,如果客户机10和第一协议服务4502之间的第一连接被中断,第一协议服务4502能够保持客户机10的会话在第一协议服务4502和远程机器30之间有效或打开。在第一连接被重新建立之后,第一协议服务4502能够将客户机10的会话链接到第一协议服务4502和主机服务4516之间所维持的会话。第一协议服务4502能够将第一连接中断之前排队缓存的任何数据发送到客户机10。这样,客户机10将使用中断之前的相同会话,远程机器30和客户机10将继续使用它们存储在存储器中或其它地方的任何会话专有的上下文。此外,因为第一协议服务4502的中介身份(intermediary),远程机器30不知道第一协议服务4502和客户机10之间的网络中断。
(849)在另一个例子中,如果第一协议服务4502和远程机器30之间的第二连接被中断,第一协议服务可以在重新建立与远程机器30的第二连接的同时维持与客户机10的第一连接。在重新建立第二连接之后,第一协议服务4502可以代表客户机重新建立客户机与远程机器30的会话。因为第一协议服务4502正在维持任何会话有关信息,第一协议服务可以重新建立相同或相似的会话以使客户机10不知道第一协议服务4502和远程机器30之间第二网络连接的中断以及由此导致的会话中断。在重新建立第二网络连接和会话期间,第一协议服务4502能够排队中断期间客户机10发送的任何会话事务。随后,在重新建立了与远程机器30的会话之后,第一协议服务4502可以将排队的事务发送到远程机器30,会话能够正常继续。采用这种方式,客户机10就像没有发生过会话中断一样继续运行。
(850)另外,通过提供可靠持久的连接,有些实施例还避免了对作为在客户机10和远程机器30或者远程机器30′之间运用的功能的一部分的事务、命令或操作的中断。例如,使用Windows Explorer的文件复制操作没有被设计为在网络连接中断之后继续工作。客户机10上的用户可以使用Windows Explorer的文件复制功能从客户机10复制文件到远程机器30。因为文件的大小,这个操作可能占用相对较长的时间才能完成。如果在复制文件到远程机器30的操作中间,客户机10和远程机器30之间的网络连接中断,文件复制将失败。一旦网络连接被重新建立,用户需要从WindowsExplorer启动另一个文件复制操作以将文件从客户机10复制到远程机器30。在上述方法的有些实施例中,用户不需要启动另一个文件复制操作。网络连接将作为第一协议4704连接的一部分被重新建立。文件复制操作将被封装在次级协议4702a-4702n的有效负载中。这样,Windows Explorer的文件复制将不会得到网络连接中断的通知,因此也不会失败。第一协议服务4502将重新建立任何连接并发送任何排队的数据以使操作能够继续而不失败。第一协议服务4502将维持与文件复制操作有关的且因为网络连接中断而没有发送给远程机器30的数据队列。一旦网络连接被重新建立,第一协议服务4502可以发送排队的数据并继续顺顺序发送与文件复制操作有关的数据。
(851)尽管是依据文件复制操作的例子说明了这些实施例,但本领域的技术人员将认识到可以维持客户机10和一个或多个远程机器30之间进行的任何操作、事务、命令、函数调用等并从网络连接中断无故障地继续,此外客户机10也不会知道网络中断或接收到网络中断的通知。
(852)此外,通过提供可靠持久的连接,客户机10能够穿过不同网络拓扑而不需要重新启动客户机10上的会话或应用程序。例如,客户机10可以是带有无线网络连接的笔记本电脑。当客户机10从第一无线网络移动到第二无线网络时,客户机的网络连接4504可能在建立与第二个无线网络的网络连接时被暂时从第一无线网络中断。第二个无线网络可以向客户机10分配一个新的网络标识符,例如主机名或internet协议(IP)地址。这个新的网络标识符可能不同于由第一个无线网络分配给客户机10的网络标识符。在另一个例子中,客户机10可以通过以太网电缆物理连接到网络上的一个端口。物理连接可以被拔出,并且转移到另一个地方的客户机10可以插入网络上的不同端口。这会导致网络连接102的中断并且分配的网络标识符也可能改变。通过这里所说明的方法和系统,为客户机维持网络连接并自动重新建立客户机10的网络连接,包括处理网络拓扑和网络标识符中的改变。客户机10以及客户机10上的任何应用程序或会话能够继续运行就像没有发生过网络连接中断或者网络标识符的改变一样。此外,客户机10上的用户不会意识到有任何中断或改变,并且客户机10没有接收到对这种中断的任何通知。
(853)即使用上述可靠持久的通信会话,网络连接仍然会被中断。当重新建立客户机到主机服务的会话时,客户机10还需要被重新验证到远程机器30。在一个实施例中,系统和方法验证客户机10到主机服务4516,并且重新验证客户机10到远程机器30而不需要重新输入验证证书。
(854)在另一个实施例中,安全建立客户机10和主机服务4516之间的通信会话被通过多个连接或者穿越多个网络组件(例如代理、安全网关、防火墙或路由器)的“中继段”启用。可以通过安全的客户机-web服务器通信信道(例如,使用SSL的在web浏览器6302和第一远程机器30之间的通信信道)进一步启动多“中继段”安全通信会话的建立。票据授权6102可以为每个“中继段”(例如客户机和第一协议服务之间的连接4504以及第一协议服务到主机服务的连接4508a-4508n)提供票据。采用这种方式,客户机10通过客户机10和主机服务4516a-4516n之间的所有连接而被验证。
(855)在有些实施例中,充当web服务器的第一远程机器30从客户机10接收到对一个应用程序的请求,第一远程机器30用票据授权6102验证该请求。票据授权6102随后产生N部分票据(例如,T1到TN)。在一个实施例中,票据授权6102随后将N部分票据的一部分Ti(例如,票据的第一部分,或第一票据T1)发送到第一远程机器30。第一远程机器30随后将该票据T1发送到客户机10。在一个实施例中,票据授权6102还发送下一个“中继段”(例如第一协议服务4502)的地址到第一远程机器30,第一远程机器30接着将该地址发送到客户机10。这个地址是这个中继段(例如,客户机10)需要与之通信以使客户机最终被验证到远程机器30的下一中继段(例如第一协议服务4502)的地址。
(856)客户机10使用该地址用于随后联系下一“中继段”(例如第一协议服务4502)并通过在客户机和第一协议服务的通信信道4504上发送代理连接请求而启动与第一协议服务4502a的通信会话。第一协议服务4502a随后从该代理连接请求提取出第一个票据T1并将这个票据转发到票据授权6102进行验证。票据授权6102随后验证第一个票据T1。
(857)在正确验证了第一个票据T1之后,票据授权6102将来自N个部分票据的下一个票据Ti(例如T2)发送到下一个第一协议服务4502(例如,第一协议服务4502a)。在有些实施例中,票据授权6102还将下一中继段(例如,第二个第一协议服务4502b)的地址发送到这个中继段(例如,第一协议服务4502a)。第一协议服务4502a将此票据发送到下一中继端(例如,第二个第一协议服务4502b)。在一个实施例中,第二个第一协议服务4502b通过将此票据发送到票据授权6102而验证它。票据授权6102验证第二个票据T2并且处理继续。一旦N个部分票据中的最后一个已经被验证,就在客户机10上启动该应用程序。
(858)在一个实施例中,每个第一协议服务4502(即,每个中继段)使用与该第一协议服务(即中继段)相关联的票据授权6102验证Ti(例如T2)。在这个实施例中,在每个第一协议服务4502用票据授权验证了票据Ti(例如T2)之后,当前发生验证的票据授权6102将下一个票据Ti+1(例如T3)和下一个第一协议服务的地址(即下一中继目标)发送到已经验证了票据Ti的第一服务协议4502。因而,每个第一协议服务4502与已经用当前和下一中继段票据配置的票据授权6102(即验证Ti并发送Ti+1用于下一中继段)相关联。因此,下一个第一协议服务4502充当那个中继段的客户机。重复这个过程直到到达远程机器30。因而,已经分别验证了每个中继段而没有向任何一个中继段展现所有票据。
(859)在其它实施例中,票据授权6102可以发出多个票据而不是发出具有很多部分的一个票据。例如,票据授权6102产生第一中继段票据和第二中继段票据,第一中继段票据与第二中继段票据没有关联。票据授权6102接着将第一中继段票据发送到第一远程机器30,第一远程机器30将第一中继段票据发送到客户机10。客户机10将这个第一中继段票据发送到第一协议服务4502(例如第一协议服务4502a)由票据授权6102进行验证。验证之后,票据授权6102将第二中继段票据发送到下一个第一协议服务4502(例如,第二个第一协议服务4502b),而第一中继段票据独立于第二中继段票据。
(860)在进一步的实施例中,票据授权6102中的一个或多个向作为第一协议服务4502的一部分或者独立于第一协议服务4502的代理提供连接到下一中继段需要的任意必要信息,例如(但不限于)加密密钥、SSL方法配置信息以及连接到SOCKS服务器(例如,由位于Tokyo,Japan的NEC公司开发的SOCKS5服务器)的验证信息。
(861)在又一个实施例中,票据授权6102只产生一个单一票据。票据授权6102将该单一票据发送到第一远程机器30。第一远程机器30将该单一票据转发到客户机10。第一协议服务4502随后从客户机10接收到该票据并在验证后“消费”该单一票据。结果是,该单一票据能够提供使用客户机-代理通信信道4504和客户机-web服务器通信信道上的任意通信协议的能力。另外,因为远程机器30没有接收到或者验证过该单一票据,该票据对远程机器30是透明的,因此远程机器30不“了解”对该票据的使用。
(862)通过利用安全的客户机-web服务器通信信道上客户机10和第一远程机器30之间的安全通信的安全性,该系统在不安全的客户机-代理通信信道4504上建立了安全的通信链路以在客户机10上安全地远程显示桌面应用程序。
(863)在又一个实施例中,票据授权6102将第一协议服务票据以及客户机票据的禁用版本发送到第一远程机器30以发送到客户机10。客户机10接着将第一协议服务票据和客户机票据一起作为代理连接请求的一部分发送到第一协议服务4502。第一协议服务4502接着将两个票据都发送到票据授权6102。在接收到禁用的第一协议服务票据之后,票据授权6102在验证客户机票据之后启用第一协议服务票据。票据授权6102接着将启用的第一协议服务票据发送到第一协议服务4502以验证到主机节点118。
(864)或者,在另一个实施例中,第一远程机器30从票据授权6102接收到禁止的第一协议服务票据和启用的客户机票据,并只将客户机票据发送到客户机10。客户机10将该客户机票据作为代理连接请求的一部分发送到第一协议服务4502。第一协议服务4502接着将该客户机票据转发到票据授权6102。票据授权6102验证该客户机票据,并在验证后启用先前发送到第一远程机器30的第一协议服务票据。在又一个实施例中,票据授权6102在验证了该客户机票据之后将启用的第一协议服务票据发送到第一远程机器30以验证到远程机器30。
(865)因而,在任意给定时间,票据授权6102只提供被启用给票据授权6102能够验证的客户机10或第一协议服务4502的一个票据。票据授权6102可以提供不能被验证的另一个票据(即禁用的票据)直到启用的票据被验证通过。或者,票据授权6102不能发送该第一协议服务票据到第一协议服务4502直到票据授权6102验证了启用的票据。如同下面所更详细地阐述的那样,因为客户机10在票据授权6102没有验证启用的票据并发送与远程机器30通信所需的票据的情况下不能穿越第一远程机器30或第一协议服务4502,这种做法促进了使用这个系统的实施例的通信的网络路由。
(866)在另一个实施例中,票据授权6102不是发送第一协议服务票据到第一协议服务4502,而是直接在web服务器-授权通信信道上将第一协议服务票据发送到第一远程机器30。第一远程机器30随后自动将该第一协议服务票据发送到远程机器30。换句话说,第一远程机器30将该第一协议服务票据“推”向远程机器30。票据授权6102还可以将该第一协议服务票据“推”向其它远程机器30而不必将该第一协议服务票据发送到第一协议服务4502或第一远程机器30。
(867)在又一实施例中,远程机器30在票据授权-内容服务器通信信道157上从票据授权6102获取第一协议服务票据。换句话说,远程机器30从票据授权6102“拉”出第一协议服务票据。
(868)此外,该系统强制客户机10通过第一协议服务4502的路由。如上所述,客户机10必须获得第一协议服务票据以建立与远程机器30的通信会话。更准确地说,为了建立与远程机器30的连接,第一远程机器30首先必须用票据授权6102验证客户机10的请求。一旦验证通过,客户机10获取第一票据并将这个第一票据发送到票据授权6102进行验证。但是,在验证之后,票据授权6102将第一协议服务票据发回第一协议服务4502而不是客户机10。当主机服务4516接收到第一协议服务票据时,客户机10和主机服务4516之间的通信会话被建立。因而,客户机10必须与第一协议服务4502通信以便使第一协议服务票据被发送到主机服务4516,由此强制了客户机10通过第一协议服务4502的路由。因而,本发明能够确保在授权对远程机器30的访问之前对安全设备(例如,第一协议服务4502)的正确遍历。
(869)例如,远程机器30执行若干应用程序,例如MICROSOFTWORD和MICROSOFT EXCEL,它们都是由位于Redmond,Washington的Microsoft公司开发。在一个实施例中,客户机10使用由位于Fort Lauderdale,Florida的Citrix公司开发的NFUSE从由客户机10可以在其中访问这些应用程序的机器群组38获取信息。如果客户机用户想要访问并使用MICROSOFTWORD,客户机10向第一远程机器30请求该应用程序。但是,只有支付了MICROSOFT WORD的应用费用的用户才能被授权访问该应用程序。
(870)为了确保应用费用的支付,该系统包括第一协议服务4502和票据授权6102来强制客户机10通过第一协议服务4502的路由。如果第一协议服务4502被用来收取应用费用并授权用户对应用程序的访问,客户机10通过第一协议服务4502的路由对应用提供商就很有价值。
(871)票据授权6102接着产生与对该应用程序的请求相关联的票据。启用的第一票据接着被发送到客户机10。因为客户机10没有主机节点118的地址,客户机10不能访问该应用程序。此外,客户机10没有被第一协议服务4502授权(即还没有付费)。因而,客户机10必须与第一协议服务4502通信以获得授权。第一协议服务4502接着可以在支付了应用费用之后将启用的第一票据发送到票据授权6102。
(872)票据授权接着验证客户机票据并随后将第一协议服务票据发送(或启用)到代理。第一协议服务4502将该第一协议服务票据发送到远程机器30(例如,假定客户机用户已经支付了应用费用),该票据使得远程机器30能够将应用程序发送到客户机10。
(873)图50说明了能够用自动客户机重连服务(被称为ACR服务)5002将客户机10重新连接到主机服务4516的系统5000的一个实施例。简单地说,客户机10在通信信道5004上与远程机器30(也称为服务器)通信。通信信道5004可以包括网络150。例如,通信信道5004可以在局域网LAN(例如公司内部网络)上,或者广域网WAN(例如互联网或万维网)上。远程机器30通过ACR服务5002提供自动客户机重连服务。客户机10通过通信信道5004访问远程机器30。远程机器30的ACR服务5002提供验证服务以验证客户机10到远程机器30。当出现网络连接中断时,ACR服务5002还提供重新验证服务以重新验证客户机10到远程机器30。尽管这里是用单个客户机10和一个通信信道5004进行的说明,但任意数量的客户机(例如10、10′)和任意数量的通信信道(例如5004、5004′)都可以是系统4500的一部分。
(874)运行在远程机器30上的ACR服务5002包括密钥发生器5006、会话标识符(SID)发生器5008、加密器5010、密钥销毁器5012和解密器5014。当远程机器30或ACR服务5002从客户机10接收到验证证书时密钥发生器5006产生一个密钥。在一个实施例中,密钥发生器5006从远程机器30的特征中导出密钥。特定的例子包括密钥发生器5006从处理器5016的温度、远程机器30接收到验证证书的时间以及存储器5018中存储的密钥的数量导出密钥。在进一步的实施例中,密钥和验证证书是相同大小(例如,8位)。在一个实施例中,密钥发生器是软件模块。在另一个实施例中,密钥发生器5006是一个随机数发生器。
(875)SID发生器5008产生唯一的SID以使远程机器30能够标识出特定的通信会话。在一个实施例中,SID发生器5008是一个软件模块。在另一个实施例中,SID发生器5008是随机数发生器。在另一个实施例中,SID发生器将SID发送到主机服务4516。在一个实施例中,SID发生器5008从运行在服务器上的主机服务4516获得SID。在又一个实施例中,SID发生器通过从建立用户会话的主机服务4516接收会话标识符而产生SID。
(876)加密器5010用密钥对验证证书进行加密以产生加密的用户证书。在一个实施例中,加密器5010通过对密钥和验证证书进行异或(XOR)操作而用密钥对验证证书进行加密。在另一个实施例中,加密器5010将验证证书加到密钥上以加密验证证书;也就是说,加密器5010用密钥作为移位值在验证证书上进行“Caesar Cipher”(凯撒密码)操作。在另一个实施例中,加密器5010在验证证书上执行一个哈希(hash)函数,例如MD4、MD5或SHA-1。应该清楚加密器5010能够在验证证书上进行任意类型的操作,只要ACR服务5002能够用密钥对加密的验证证书解密。
(877)在一个实施例中,加密器5010是在密钥和验证证书上执行数学算法以产生加密的验证证书的软件模块。在另一个实施例中,加密器5010是远程机器30的逻辑门,例如异或(XOR)门。
(878)在一个实施例中,加密器5010将加密的验证证书同SID一起存储在存储器5018的表5020中。在另一个实施例中,加密器5010将加密的验证证书存储在表5020中,SID发生器将SID存储在表5020中。在一个实施例中,表5020是存储器5018中由处理器5016分配由加密器5010使用的一块区域。在另一个实施例中,加密器5010将加密的验证证书同SID一起存储在与存储器5018分开的数据库(图50未示出)中。
(879)在一个实施例中,ACR服务5002使用SID作为到表5020中加密的验证证书的位置向量。在另一个实施例中,ACR服务5002使用SID作为数据库关键字来定位并取出数据库(图50中未示出)中的加密的验证证书。由加密器5010产生的每个加密的验证证书只与唯一的SID相关联。因而,ACR服务5002能够用特定的SID定位并获取加密的验证证书。
(880)一旦ACR服务5002确定不再需要密钥,密钥销毁器5012就删除密钥。在一个实施例中,密钥销毁器5012是软件程序(例如远程机器30的操作系统)的一个删除函数。
(881)一旦ACR服务5002从客户机10接收到密钥和SID,解密器5014就对加密的验证证书解密。在一个实施例中,解密器5014是一个软件模块,它执行加密器5010为产生加密证书所执行的函数或算法的逆函数或算法。在另一个实施例中,解密器5014是执行加密器5010的逆操作的硬件部件(例如,逻辑门)。
(882)在一个实施例中,密钥发生器5006、SID发生器5008、加密器5010、密钥销毁器5012和解密器5014中的一个或多个被结合到代表ACR服务5002的一个软件模块中。在另一个实施例中,这些组件可以是硬件部件,例如逻辑门。在进一步的实施例中,这些组件被包括在单个集成电路中。在又一个实施例中,其中的有些组件(例如密钥发生器5006和SID发生器5008)可以是硬件组件,其它组件(例如加密器5010、密钥销毁器5012和解密器5014)可以是软件组件。
(883)在另一个实施例中,提供了当客户机到网络的连接中断时重新连接客户机10到远程机器30的方法。该方法包括重新建立客户机到远程机器30的连接并用ACR服务5002重新验证客户机到主机服务。
(884)参看图51,客户机10在通信信道5004上建立与远程机器30的第一通信会话。客户机10从客户机10的用户获取验证证书(步骤54100)。在不使用开放系统互连(OSI)协议作为客户机10和远程机器30之间的通信的传输协议的系统4500中,验证证书可以是建立第一通信连接需要的登录密码。在这个实施例中,从用户获取验证证书在通信会话建立之前。在另一个实施例中,验证证书是客户机10在第一通信会话已经建立之后获取的用户的个人信息。验证证书的例子包括登录密码、社会安全号码、电话号码、地址、生物信息、随时间变化的通行码和数字证书。客户机10随后将在通信信道5004上将验证证书发送到远程机器30(步骤5405)以使远程机器30能够验证客户机10或客户机10的用户。
(885)在远程机器30接收到验证证书之后,ACR服务5002提供它的自动客户机重连服务。密钥发生器5006产生第一加密密钥(步骤5410)以用于验证证书。在一个实施例中,该加密密钥是一个随机数。在另一个实施例中,该加密密钥是任意的标准密码密钥。加密器5010然后用该第一密钥对验证证书加密(步骤5415)以产生加密的验证证书。这阻止了攻击者通过访问没有密钥的验证证书而获取对远程机器30的访问。SID发生器5008随后产生(步骤5120)第一SID以标识客户机10和远程机器30之间的第一个通信会话。在一个实施例中,第一通信会话是与由远程机器30提供的主机服务4516进行。加密器5010接着将加密的验证证书连同第一SID存储(步骤5425)在上述表5020中。
(886)在一个实施例中,加密器5010将加密的验证证书连同第一SID存储在特定位置中方便以后更有效地检索。例如,加密器5010将预定时间内产生的所有加密的验证证书和SID存储在RAM中。ACR服务5002在预定时间之前将所有加密的验证证书和SID传输到二级外部存储器(未示出)。在另一个实施例中,加密器5010将加密的验证证书连同SID一起存储在数据库(未示出)中。
(887)可以按照任意特定的顺序和/或格式布置存储器5018中存储的SID和加密的验证证书。例如,可以关于加密的验证证书的产生时间而按时间顺序存储SID和加密的验证证书。
(888)远程机器30接着在网络150上将第一密钥和相关的第一SID发送到客户机10。客户机10将第一密钥和第一SID存储(步骤5435)在存储器(未示出)中。然后ACR服务5002的密钥销毁器5012删除存储器5018中存储的密钥(步骤5440)。
(889)在另一个实施例中,ACR服务5002直到ACR服务5002得到客户机10已经接收到该密钥的通知才从存储器5018删除第一密钥。例如,客户机10在客户机10成功接收到该密钥之后向远程机器30发送确认消息。一旦ACR服务5002接收到通知,密钥销毁器5012就从存储器5018删除密钥(步骤5440)。这样防止了ACR服务5002在客户机10成功接收到密钥之前就删除该密钥。通过直到收到确认消息才删除密钥,ACR服务5002能够在传输失败时将密钥和SID重新发送到客户机10。
(890)通过在步骤5440中删除密钥,ACR服务5002就不具有解密表5020中存储的加密的验证证书所需要的机制。因而,如果攻击者访问远程机器30的存储器5018,攻击者能够获取加密的验证证书但不能对加密的验证证书进行解密。因此,攻击者不能读取验证证书。简单地说,存储在远程机器30上的加密的验证证书不提供任何攻击者能够解析或理解的信息。这样,远程机器30就没有处理任何信息能够用于对加密的验证证书解密。
(891)另外,客户机10是能够向加密的验证证书提供密钥的唯一设备。可能有很多客户机10作为网络150的一部分,攻击者可能不得不尝试逐个获取对各个客户机(10、10′)的访问以找到拥有正确密钥的客户机10。这会非常耗时且枯燥乏味,结果,可以阻止攻击者试图对加密的验证证书进行解密。
(892)在另一个实施例中,远程机器30关于访问加密的验证证书有一个超时功能。例如,远程机器30在第一通信被异常终止后启用一个计时器。如果在客户机10重新建立第二个通信会话并发送密钥到远程机器30进行解密之前该计时器达到了预定值,ACR服务5002就从表5020删除该加密的验证证书。如果没有使用计时器,密钥就充当未来会话的事实上的密码。
(893)一旦客户机10如上参考图51所述从远程机器30接收到第一密钥和第一SID,就能够如图52所示重新建立会话,而不需要用户重新输入他或她的验证证书。当客户机10和远程机器30之间的第一通信会话发生中断(步骤54100)或者被打断时,第一通信会话5004需要被重新建立,客户机10需要被重新验证到远程机器30。ACR服务5002提供了用于重新建立(会话)和重新验证客户机10到远程机器30的系统和方法。
(894)当客户机10和远程机器30重新建立第二通信会话时,客户机10将第一密钥和第一SID发送(步骤5405)到远程机器30。ACR服务5002使用SID在服务器的存储器5018中定位并获取加密的验证证书(步骤5210)并使用密钥对获取的验证证书解密(步骤5215)。远程机器30接着通过验证来自客户机10的验证证书重新验证客户机10到远程机器30(步骤5220)。在一个实施例中,通过由远程机器30的计算设备的操作系统提供的安全服务实施验证和重新验证。例如,验证证书是远程机器30的帐户和密码。在另一个实施例中,通过远程机器30上的应用或软件程序的应用级安全服务实施验证和重新验证。例如,验证证书是特定的主机服务4516的应用程序帐户和密码。
(895)为了说明,在用户的登录密码是验证证书的第一通信会话异常终止时(步骤54100),客户机10尝试建立与远程机器30的第二通信会话。作为请求远程机器30与其建立第二通信会话的请求的一部分,客户机10将第一终止的通信会话的密钥和SID发送给远程机器30(步骤5205)。远程机器30不提示用户再次输入用户的登录密码,而是通过ACR服务5002使用SID定位并获取与该用户相关联的加密的验证证书(步骤5210),使用密钥对获取的验证证书解密(步骤5215),并用解密的验证证书重新验证客户机(步骤5220)。
(896)在一个实施例中,在第二通信会话期间,ACR服务5002为验证证书产生第二密钥(步骤5225)并用该第二密钥加密验证证书(步骤5230)。产生第二SID以标识第二通信会话并将该会话与客户机10相关联。将第二加密的验证证书连同第二SID存储在表5020中(步骤5425)。
(897)在这个实施例中,服务器接着发送第二密钥和第二SID到客户机10(步骤5240)。客户机10接着将第二密钥和第二SID存储在存储器(未示出)中(步骤5245)以备将来的获取。ACR服务5012随后从存储器5018删除第二密钥(步骤54150)。因而,ACR服务5002只能在从客户机10获取第二密钥和第二SID之后才能对第二个加密的验证(证书)解密。ACR服务5002已经为第二通信会话产生新的密钥和新的SID,而第二通信会话仍然使用用户在第一通信会话期间已经发送的相同验证证书。因此,在第一通信会话异常终止之后不需要在第二通信信道上重新发送用户的验证证书。
(898)尽管是依据验证证书阐述了本发明,但如果发生通信故障可以使用能够在会话中维持的任何证书信息。因而,如果应用程序需要信用卡信息并且信用卡信息被发送给服务器,如果使用本发明的话,在客户机和服务器之间的后续断开连接就不需要重新输入信用卡信息。此外,尽管会话标识符或SID被阐述为提供到存储的验证证书的指针,但可以使用任何适合作为指针的数字或值。
(899)图53说明了能够使用执行在中介机器30′上的ACR服务5002重新连接客户机10到远程机器30的系统5300的另一个实施例。中间机器30′是不同于远程机器30的计算设备,它可以是能够进行通信并有足够的处理器能力和存储器容量完成这里所说明的操作的任意远程机器30。简单地说,客户机10在通信信道5004上与中介机器30′通信。通信信道5004可以包括网络150。中介机器30′通过ACR服务5002向客户机10提供客户机重连服务以将客户机10重新连接到远程机器30。中介机器30′在通信信道5004′上与远程机器30通信。通信信道5004′可以包括网络150′。客户机10通过中介机器30′访问远程机器30的服务。中介机器30′上的ACR服务5002为客户机10到远程机器30的连接提供自动客户机重连服务。尽管图中所示为通信信道5004上的单个客户机10,但任意数量的客户机和任意数量的通信信道都可以是系统5300的一部分。
(900)在进一步的实施例(未示出)中,系统5300包括通过网络150或在附加的通信信道5004、5004′上与一个或多个客户机10通信的多个中介机器30′。尽管图53中只示出通信信道5004上的单个中介机器30′,但系统5300可以包括任意数量的中介节点和任意数量的通信信道。
(901)在另一个实施例中,本发明涉及用一个或多个中介机器30′促进建立客户机10到远程机器30的连接并验证客户机10到远程机器30的方法。如图54所示,中介机器30′建立与远程机器30的会话。
(902)客户机10在通信信道5004上建立与中介机器30′的第一通信会话。客户机10从客户机10的用户获得验证证书(步骤5400)。客户机10接着在通信信道5004上将验证证书发送到中介机器30′(步骤5405)以使中介机器30′能够用远程机器30验证该用户。
(903)在中介机器30′接收到验证证书之后,ACR服务5002提供它的自动客户机重连功能。ACR服务5002创建用于验证证书的第一加密密钥(步骤5410)并用该第一密钥加密验证证书以产生加密的验证证书(步骤5415)。这阻止了攻击者不用密钥就能访问验证证书从而获得对远程机器30的访问。随后建立与远程机器30的会话(步骤5420A)并用验证证书将客户机10验证到远程机器30。由此,ACR服务5002产生第一SID以标识第一通信会话。加密的验证证书和第一SID一起被存储在上述的表5020中(步骤5425)。中介机器30′然后在网络150上将第一密钥和第一SID发送到客户机10(步骤5430)。客户机10将第一密钥和第一SID存储在客户机的存储器中(未示出)(步骤5435)。ACR服务5002随后删除存储器5018中存储的密钥(步骤5440)。
(904)一旦客户机10如上参考图54所述从中介机器30′接收到第一密钥和第一SID,如图55中所述,就可以重新建立和重新验证通信会话而不需要用户重新输入他或她的验证证书。例如,可能在客户机10和中介机器30′之间的第一通信会话由于异常中止而存在中断(步骤5505)。
(905)当客户机10和中介机器30′重新建立第二通信会话时,客户机10将第一密钥和第一SID发送到中介机器30′(步骤5505)。中介机器30′的ACR服务5002使用SID在服务器的存储器5018中定位并获取加密的验证证书(步骤5510)并使用密钥对获取的验证证书解密(步骤5515)。密钥发生器为验证证书产生第二密钥(步骤5520),密钥加密器5010随后用第二密钥加密验证证书(步骤5525)。SID发生器5008也产生第二SID(步骤5530)以标识第二通信会话并将其与中介机器30′和远程机器30之间维持的会话相关联。加密器5010将第二加密的验证证书和第二SID存储在表5020中。
(906)在这个实施例中,远程机器30接着将第二密钥和第二SID发送到客户机10(步骤5535)。客户机10存储(步骤5540)第二密钥和第二SID存储以备将来获取。密钥销毁器5012接着从存储器5018删除第二密钥(步骤5545)。因而,ACR服务5002只能在从客户机10获取第二密钥和第二SID之后才能解密第二加密的验证(证书)。ACR服务已经为使用用户在第一通信会话期间发送的相同验证证书的第二通信会话产生了新的密钥和新的SID。因此,在第一通信会话异常终止之后不需要在第二通信信道上重新发送用户的验证证书。
(907)在另一个实施例中,中介机器30′和远程机器30之间的第二通信会话中断或异常终止(步骤5600)。如图56中所示,可以不要求用户重新输入他或她的验证证书就能重新建立和重新验证第二通信会话。
(908)当中介机器30′和远程机器30重新建立第二通信会话时,中介机器30′向客户机10请求第一密钥和第一SID(步骤5605)以代表客户机重新建立与远程机器30的会话。作为响应,客户机10将第一密钥和第一SID发送到远程机器30′(步骤5610)。中介机器30′的ACR服务5002使用该SID在服务器的存储器5018中定位并获取加密的验证证书(步骤5615)并使用密钥加密获取的验证证书(步骤5620)。ACR服务5002接着用解密的验证证书重新建立客户机与服务器的会话(步骤5625)以重新验证客户机10到远程机器30。
(909)在另一个实施例中,在重新建立了第二通信会话并在其上重新验证了客户机之后,中介机器30′的ACR服务5002如前在图55中所述产生替代的第二SID和第二密钥。参考图55中所示ACR服务的实施例,密钥发生器为验证证书产生第二密钥(步骤5520),密钥加密器5010用第二密钥加密验证证书(步骤5525)。SID发生器5008还产生第二SID(步骤5530)以标识第二通信会话并将其与中介机器30′和远程机器30之间重新建立的会话相关联。加密器5010将第二加密的验证证书连同第二SID存储在表5020中。在这个实施例中,服务器随后将第二密钥和第二SID发送到客户机10(步骤5535)。客户机10接着存储(步骤5540)第二密钥和第二SID以备将来获取。密钥销毁器5012接着从存储器5018删除第二密钥(步骤5545)。
(910)在其它实施例中,第一协议服务4502和ACR服务5002中的一个或多个可以被分布越过任意主机服务节点。这样,重新建立和重新验证、或者自动重新连接、客户机10连接到主机服务4516的功能可以被灵活地分布在跨越主机服务4516和/或远程机器30的不同的系统和布署体系结构中。
(911)在一个实施例中,ACR服务5002可以与系统4500中的主机服务4516a-4516n中的每一个相关联以提供分别专用于各个主机服务4516的自动客户机重连服务。可以布署单一的第一协议服务4502以处理所有的主机服务4516a-4516n。如图57中所示,多个ACR服务5002a-5002n中的每一个分别与主机服务4516a-4516n中的每一个相关联。例如,客户机10用第一服务协议4502建立与主机服务4516a的通信会话。与主机服务4516a相关联的ACR服务5002a为客户机10到主机服务4516a的连接提供自动客户机重连服务。如果网络连接中断,第一协议服务4502将重新建立与客户机10的连接,ACR服务5002a将重新验证客户机10到主机服务4516a。第二客户机10′可以与第一客户机10同时使用第一协议服务4502建立与主机服务4516b的通信会话。ACR服务5002b为客户机到主机服务4516b的连接提供自动客户机重连服务。如果有网络中断,第一协议服务4502结合ACR服务5002b将客户机10′重新连接到主机服务4516b。
(912)在这些方法的另一个实施例中,ACR服务可以与运行在系统4500的各个远程机器30上的多个主机服务4516a-4516n中的每一个相关联。第一协议服务4502可以被布置在每个远程机器30上以服务运行在主机节点118上的多个远程机器30中的每一个。如图57中所示,各个ACR服务5002a-5002n分别与各个主机服务4516a-4516n相关联。每个远程机器30具有专用的第一协议服务4502服务它的主机服务4516中的每一个和每一个ACR服务5002。例如,客户机10用第一协议服务4502建立与远程机器30上的主机服务4516a的通信会话。远程机器30上的ACR服务5002a为客户机10到远程机器30上的主机服务4516a的连接提供自动客户机重连服务。
(913)如果检测到网络中断,第一协议服务4502重新建立客户机到远程机器30上的主机服务4516a的连接,并且远程机器30上的ACR服务5002a重新验证客户机10到远程机器30上的主机服务4516a。与第一客户机10同步,第二客户机10′使用第一协议服务4502和ACR服务5002a建立与远程机器30上的主机服务4502b的通信会话。如果有网络中断,第一协议服务4502结合ACR服务5002a将客户机10′重新连接到远程机器30上的主机服务4516b。与第一客户机10和第二客户机10′同时,第三客户机10′′用第一协议服务4502和远程机器30′上的ACR服务5002n建立与远程机器30′上的主机服务4516n的通信会话。采用同样的方式,第一协议服务4502和ACR服务5002n能够将客户机10′′重新连接到远程机器30′的主机服务4516n。
(914)在其它实施例中,ACR服务5002中的一个或多个可以和第一协议4502一起被分布越过任意中介或第一协议服务节点。这样,重新连接客户机10到主机服务4516的功能可以被灵活地分布在与第一协议服务4502相关联的不同系统和布署体系结构中。
(915)在本发明的这个方面的一个实施例中,ACR服务5002可以与每个第一协议服务4502相关联以提供专用于第一协议服务4502的自动客户机重连服务。可以布署单个第一协议服务4502和ACR服务5002来处理所有主机服务4516a-4516n。如图59中所示,ACR服务5002和第一协议服务4502一起驻留在相同计算设备上以向主机服务4516a-4516n提供自动客户机重连服务。例如,客户机10用第一协议服务4502和ACR服务5002建立与任意主机服务4516a-4516n中的通信会话。第一协议服务4502和ACR服务5002提供从客户机10到任意主机服务4516a-4516n的重新连接功能。
(916)在本发明的这个方面的另一个实施例中,ACR服务5002a-5002n中的每一个与多个第一协议服务4516a-4516n中的每一个相关联。对于图60中所示例子,第一协议服务4502和ACR服务5002a可以被布置在远程机器30上以服务运行在该远程机器30上的多个主机服务4516a-4516n中的每一个。如图60中进一步所示,各个ACR服务5002a-405n与各个第一协议服务4502a-112n相关联用于为各个远程机器30-118n的多个主机服务4516a-4516n提供专用的自动客户机重连服务。例如,客户机10用远程机器30上的第一协议服务4502a和ACR服务5002a建立与相同远程机器30上的主机服务4516a的通信会话。如果有网络故障,第一协议服务4502结合ACR服务5002a重新连接客户机10到远程机器30上的主机服务4516a。
(917)尽管是按照图57-60中的不同系统和布署体系结构阐述了本发明,但可以使用将一个或多个第一协议服务4502、一个或多个ACR服务5002以及一个或多个主机服务4516中的一个或多个组合和/或部分在任意远程机器30、中介机器30′或其它计算设备上的不同系统和/或布署体系结构。
(918)此外,不是使用ACR服务5002提供验证和重新验证服务,而是使用票据授权6102。票据授权6102为连接和验证目的而产生并验证票据。票据包括会话标识符和密钥。它还包括一个随机数、应用服务器证书、一个临时数、一个常数或空值或任意其它类型的标识、可以用于这种目的的基于机密或安全的信息。
(919)在图61中所示重新连接客户机10到主机服务4516的网络通信系统的一个实施例中,票据授权6102能够运行在与中介机器30、第一协议服务4502或任意主机服务4516a-4516n分离的节点上。图61说明了作为系统4500的一部分的中介机器30和票据授权6102,票据授权6102可以是单个计算设备。除了网络150和150′之外,系统4500包括客户机10、第一协议服务4502、和主机服务4516a-4516n,上面已经对它们都进行了说明。在一个实施例中,中介机器30是安全网关,例如防火墙和/或路由器,由于网络150的配置客户机10和第一协议服务4502之间的消息必须通过它。票据授权6102可以是能够通信并有足够的处理器能力和存储器容量执行这里所说明的操作的独立网络组件。票据授权6102还可以是专门用来提供远程机器30上的与票据有关的服务的特定主机服务。
(920)如图61的实施例中所示,中介机器30被配置用来接受由客户机10启动的连接4504a并建立与第一协议服务4502的第二连接4504b。连接4504a和4504b一起构成了上述连接4504,客户机10和第一协议服务4502在连接4504上使用第一协议通信。
(921)如图所示,中介机器30也被配置用来票据授权6102通信。在一个实施例中,票据授权6102被配置用来从中介节点30′接收对第一重连票据的请求并在此之后产生第一重连票据。第一重连票据包括(例如)一个大随机数。第一重连票据使得客户机10能够在服务异常中断之后自动重新建立与主机服务的连接而不需要请求客户机10再次提供验证证书。
(922)在另一个实施例中,票据授权6102被配置用来接收对客户机10和主机服务4516之间的每个“中继段”的第一重连票据的请求。例如,中介机器30可以为客户机10和中介机器30之间、中介机器30和第一协议服务4502之间、以及第一协议服务4502和主机服务4516之间的连接请求重连票据。这些重连票据仅对每一“中继段”有效。例如,对第一协议服务4502到主机服务4516的连接的第一重连票据只对代表客户机10将第一协议服务4502验证到主机服务4516有效。
(923)在第一重连票据产生之后,票据授权6102用第一重连票据加密客户机10提供的验证证书,以使获取对中介机器30或票据授权6102的访问的攻击者因为没有第一重连票据而不能访问验证证书。票据授权6102还可以产生SID以标识在客户机10和中介机器30之间建立的通信会话。票据授权6102然后将加密的验证证书和SID一起存储在存储器中并在网络150上将SID和第一重连票据发送到客户机10。在客户机10接收到SID和第一重连票据之后,票据授权6102从它的存储器(未示出)销毁(即删除)该票据。
(924)在另一个实施例中,票据授权6102被配置用来产生一个句柄。该句柄可以是(例如)与第一重连票据相关联或映射到第一重连票据的一个随机数。在一个实施例中,该句柄是比形成第一重连票据的随机数更小的随机数。例如,该句柄是一个32-位随机数。在进一步的实施例中,与票据或重连票据相关联的句柄是指向客户机10和主机服务4516之间的多-中继段连接中的下一“中继段”的地址或指针。在这种情况下,用指向下一“中继段”的指针为单一“中继段”验证票据或重连票据。下一“中继段”将需要获取并验证不同的票据或重连票据直到最后一个“中继段”被代表客户机10验证并连接到主机服务4516。
(925)票据授权6102将第一重连票据和句柄发送到中介机器30,同时保持该第一重连票据的副本和该句柄的副本。当以后在重新连接客户机10期间最初发送到客户机10的第一重连票据被呈现给票据授权6102时,第一重连票据的副本可以被票据授权6102用来验证第一重连票据。在一个实施例中,票据授权6102还保持第一协议服务4502的地址,该地址如下所述与第一重连协议相关联并在验证了第一重连票据后被发送到中介机器30。
(926)在一个实施例中,中介机器30还被配置用来使用票据授权6102发送给它的句柄删除票据授权6102所保持的第一连接票据的副本。在另一个实施例中,如下所述,票据授权6102还被配置用来在重新连接客户机10到主机服务4516期间删除第一重连票据并在之后产生替代的第一重连票据。另外,在另一个实施例中,第一重连票据被配置为在预定时间周期后用于自动删除。在对客户机10和主机服务4516之间的每个“中继段”有一个重连票据的实施例中,可以将一个、一些或全部重连票据配置为在预定时间周期后被自动删除。在其它实施例中,票据授权6102或中介机器30被配置用来删除多-中继段票据中的每一个并产生替代票据。
(927)在另一个实施例中,第一协议服务4502被配置用来产生第二重连票据,和第一重连票据中的情况一样,第二重连票据可以包括(例如)一个大随机数。在一个实施例中,第一协议服务4502为客户机10和主机服务4516之间的每个“中继段”产生一个第二重连票据。第一协议服务4502还可以被配置用来将第二重连票据发送到客户机10,而保持第二重连票据的副本和会话编号。当以后在重新连接客户机10期间最初发送到客户机10的第二重连票据被呈现给第一协议服务4502时,第二重连票据的副本可以被第一协议服务4502用来验证第二重连票据。在一个实施例中,第一协议服务4502通过中介机器30将第二重连票据发送到客户机10。在另一个实施例中,第一协议服务4502直接将第二重连票据发送到客户机10。在进一步的实施例中,第一协议服务4502可以将第二重连票据发送到包括客户机10和主机服务4516之间的多-中继段连接的其它第一协议服务4502和中介机器30。
(928)此外,如同下面更详细地说明的那样,第一协议服务4502还可以被进一步配置用来在重新连接客户机10到主机服务4516期间删除第二重连票据,并在之后产生替代第二重连票据。另外,在另一个实施例中,第二重连票据被配置为在预定时间周期后自动删除。在进一步的实施例中,多-中继段连接中的一个或多个第一协议服务4502中的第一协议服务4502被配置用来删除每个“中继段”的第二重连票据,并在之后为一个、一些或全部“中继段”产生替代第二重连票据。
(929)在一个实施例中,中介机器30充当第一和第二重连票据的中介。例如,中介机器30接收到票据授权6102产生的第一重连票据以及第一协议服务4502产生的第二重连票据。中介机器30可以随后将第一重连票据和第二重连票据发送到客户机10。此外,在重新连接客户机10到主机服务4516期间,中介机器30可以接受来自客户机10的第一重连票据和第二重连票据并在之后将第一重连票据发送到票据授权6102并且如果适当的话将第二重连票据发送到第一协议服务4502。
(930)在另一个实施例中,中介节点632充当客户机10和主机服务4516之间的多-中继段的重连票据的中介。例如,中介机器30接收到客户机10到第一协议服务4502的连接的第一重连票据以及第一协议服务4502到主机服务4516的连接的第一重连票据。在进一步的实施例中,中介机器30接收到中介机器30到第一协议服务4502之间的连接的第一重连票据。中介机器30可以随后将客户机的第一重连票据发送到客户机10,将第一协议服务4502的第一重连票据发送到第一协议服务4502。此外,在重新连接客户机10到主机服务4516期间,中介机器30能够接受来自客户机10的第一重连票据以验证该票据从而重新建立客户机到中介机器30或第一协议服务4502的连接。
(931)如果客户机10和主机服务4516之间的第一通信会话终止,例如异常终止,可以重新建立新会话而不用要求用户重新输入他或她的验证证书。当客户机10和主机服务4516重新建立第二通信会话时,客户机10将第一和第二重连票据以及SID重新发送到中介机器30。中介机器30将第一和第二重连票据以及SID发送到票据授权6102,票据授权6102用SID定位并获取第一连接的加密的验证证书并用第一重连票据对获取的验证证书解密。票据授权6102然后通过验证解密的验证证书来验证客户机。在重新验证之后,第二重连票据被转发到第一协议服务4502以重新建立与主机服务4516的第二连接4508。
(932)在图62和63所示的网络通信系统6100的另一实施例中,客户机10使用web浏览器6302请求访问资源并且第一远程机器30验证该用户。在接收到请求之后,第一远程机器30用票据授权136验证该请求。票据授权6102然后产生一个票据,它包括第一票据(或客户机票据)和第二票据(或第一协议服务票据)。第一和第二票据是在首次使用后就没有其它值的“一次性使用”票据。在又一个实施例中,第一和第二票据必须在预定时间周期内被使用。
(933)在一个实施例中,票据授权6102将第一和第二票据存储在存储器(例如RAM)中直到该票据被使用。或者,票据授权6102将第一和第二票据存储在存储设备(未示出)中直到该票据被使用。存储设备可以包括数据库或持久存储器(例如软盘或硬盘驱动器)。票据授权6102随后将客户机票据发送到第一远程机器30,第一远程机器30接着将客户机票据转发到客户机10。
(934)客户机10接着通过在客户机-第一协议服务的通信信道4504上发送代理连接请求而启动与第一协议服务4502的通信会话。代理连接请求包括客户机票据。在一个实施例中,代理连接请求还包括在建立与远程机器30的通信会话时可以被第一协议服务4502替换的伪密码。在另一个实施例中,第一远程机器30将该伪密码发送到客户机10以便将来产生具有第一协议服务4502能够接受的格式的代理连接请求。第一协议服务4502接着从代理连接请求提取出客户机票据并将客户机票据转发到票据授权6102进行验证。票据授权6102接着验证该第一票据。在一个实施例中,票据授权6102通过在它的存储设备(例如数据库)中查找第一期望的票据而验证该第一票据。
(935)如果票据授权6102没有在存储设备中找到该第一票据(例如该第一票据已经被使用),票据授权6102就终止该通信会话。如果接收到的票据匹配票据授权6102期望的客户机票据,该客户机票据就通过了验证。票据授权6102然后将第二票据或第一协议服务票据发送到第一协议服务4502。另外,票据授权6102在客户机票据现在已经被使用一次之后将其从存储设备删除。在另一个实施例中,票据授权6102还将远程机器30的IP地址发送到第一协议服务4502。在又一实施例中,票据授权6102将远程机器30的域名发送到第一协议服务4502以用于将来转换成IP地址。
(936)第一协议服务4502接收到第二票据(或第一协议服务票据),并接着通过将第二票据发送到远程机器30而打开跨越代理-服务器通信信道145的通信。远程机器30接收到第一协议服务票据并在票据-服务器通信信道上将该票据发送到票据授权6102用于验证。在一个实施例中,如果票据授权6102确定从远程机器30接收到的第一协议服务票据此前已经被使用过或者没有正确的值(即,与相关存储设备中存储的值相同的值),票据授权6102就发送错误消息到第一协议服务4502(或第一远程机器30)以终止所建立的与客户机10的通信会话。如果票据授权6102验证通过该第一协议服务票据,远程机器30随后启用ICA发布的应用程序。远程机器30接着将应用程序信息发送到第一协议服务4502以使用客户机代理4506将该应用程序远程显示在客户机10上。
(937)在一个实施例中,客户机10在启动与第一协议服务4502的通信时启动客户机代理4506。在其它实施例中,客户机10在从第一协议服务4502接收到应用程序信息时启动客户机代理4506。
(938)因而,客户机10不知道第一协议服务票据而只知道客户机票据。此外,客户机代理4506在未与第一协议服务4502通信并呈交客户机票据的情况下就不能与远程机器30通信。
(939)票据授权6102还可以将第一协议服务票据作为客户机10的用户的密码发送到第一协议服务4502。这使得第一协议服务4502能够将第一协议服务票据用作登录密码以获取对远程机器30的访问而不必在不被信任的web上(例如,不安全的客户机-第一协议服务通信信道4504)暴露用户的登录密码。因而,在一个实施例中,通信系统6100可以包括由票据授权6102管理并且共同位于远程机器30上的集中式密码映射数据库以将第一协议服务票据映射到用户的密码。
(940)因此,密码可以伴随两个票据(即第一协议服务票据和客户机票据)或者密码可以伴随两个票据中的一个。如上所述,如果密码伴随两个票据中的一个,例如客户机票据,那么第一协议服务票据是密码。在一个实施例中,密码可以是其值不改变的系统密码或者是一次性使用密码,例如由位于Bedford,Massachusetts的RSA Security公司开发的Secur ID令牌产生的那些密码。
(941)另外,上述方法可以被扩展到有任意数量的第一协议服务4502或者任意数量的(客户机在建立与远程机器30的通信会话之前必须与之通信的)“中继段”的通信系统。尽管是根据第一协议服务4502进行的说明,但一个中继段可以包括任意网络组件,例如代理、防火墙、路由器和中继器。
(942)例如,4-中继段的例子是具有第一协议服务4502a、第一协议服务4502b、第一协议服务4502n的通信系统,每个协议服务包括代理并位于停火区6308中。协议服务4502a-n可以在代理-代理通信信道上相互通信。客户机10与第一协议服务4502a通信,第一协议服务4502a与第二个第一协议服务4502b通信。接着,第二个第一协议服务4502b与第三个第一协议服务4502n通信,接着第三个第一协议服务4502n在代理-服务器通信信道4508上与远程机器通信以建立与远程机器的通信会话。此外,尽管上述实施例包括由客户机票据和第一协议服务票据构成的票据,另一个实施例包括由很多票据构成的票据。
(943)在图62中所示网络通信系统6100的另一个实施例中,可以将ACR服务5002而不是票据授权6102用于重新连接客户机10到任一主机服务4516a-4516n。在这个实施例中,ACR服务5002能够提供上面关于票据授权6102所说明的类似服务。如前所述,ACR服务5002产生、验证并管理用于连接和重新连接客户机通信会话的SID和密钥。SID和密钥能够形成与上述由票据授权6102所产生、验证和管理的票据的类型一样的票据。这样,在另一个实施例中,可以交替使用票据或者会话标识符和密钥的组合。
(944)如图62所示,中介机器30被配置用来与ACR服务5002通信。在一个实施例中,ACR服务5002被配置用来从中介机器30接收对第一SID和第一密钥的请求并在之后产生第一SID和第一密钥。ACR服务5002使用第一SID标识在客户机10和主机服务4516之间建立的通信会话。第一SID和第一密钥使得客户机10能够在服务异常中断之后自动重新连接到主机服务4516而不需要客户机10再次提供验证证书。
(945)在第一SID和第一密钥产生之后,ACR服务5002用第一密钥加密由客户机10提供的验证证书以使获得对中介机器30或ACR服务5002的访问的攻击者因为没有第一密钥而无法访问验证证书。ACR服务5002接着将加密的验证证书和SID一起存储在存储器5018中并在网络150上将第一SID和第一密钥发送到客户机10。在客户机接收到SID和密钥之后,ACR服务5002从它的存储器5018销毁(即删除)该密钥。
(946)在另一个实施例中,第一协议服务4502被配置用来产生第二SID和第二密钥。第一协议服务4502还可被配置用来将第二SID和第二密钥发送到客户机10,同时保持第二SID和第二密钥的副本。以后在重新连接客户机10期间当最初发送到客户机10的第二SID和第二密钥被呈交给客户机10时,第二SID和第二密钥的副本随后可被第一协议服务4502用来验证呈交给客户机10的第二SID和第二密钥。在一个实施例中,第一协议服务4502通过中介机器30发送第二SID和第二密钥到客户机10。在另一个实施例中,第一协议服务4502直接将第二SID和第二密钥发送到客户机10。此外,如同下面更详细地说明的那样,第一协议服务4502还可以被配置用来在重新连接客户机10到主机服务4516期间删除第二SID和第二密钥,并在之后产生替代的第二SID和第二密钥。另外,在另一个实施例中,第二SID和第二密钥被配置用于在预定时间周期后自动删除。
(947)在一个实施例中,中介机器30充当第一SID和密钥与第二SID和密钥的中介。例如,中介机器30接收到由ACR服务5002产生的第一SID和第一密钥以及由第一协议服务4502产生的第二SID和第二密钥。中介机器30可以将第一SID和第一密钥以及第二SID和第二密钥发送到客户机10。此外,在重新连接客户机10到主机服务4516期间,中介机器30能够接受来自客户机10的第一SID和第一密钥以及第二SID和第二密钥,并在之后将第一SID和第一密钥发送到ACR服务5002,如果适当地话将第二SID和第二密钥发送到第一协议服务4502。
(948)如果客户机10和主机服务4516之间的第一通信会话终止,例如异常终止,可以重新建立新会话而不需要用户重新输入他或她的验证证书。当客户机10和主机服务4516重新建立第二通信会话时,客户机10将第一和第二SID和密钥发送到中介机器30。中介机器30将第一SID和第一密钥发送到ACR服务5002,ACR服务5002使用该SID定位并取出第一连接的加密的验证证书并用第一密钥解密所获取的验证证书。ACR服务5002接着通过验证解密的验证证书来验证客户机。在重新验证之后,第二ID和第二密钥被转发到第一协议服务4502以重新建立与主机服务4516的第二连接4508。
(949)参看图63,如上所述,用于网络通信的系统4500的另一个实施例包括网络150和150′、第一客户机10、第一协议服务4502、主机服务4516、中介机器30和票据授权6102,还描述了第一远程机器30和第二远程机器30,二者在一个实施例中都被用于初始连接客户机10到主机服务4516。此外,在图63的实施例中,客户机10还包括web浏览器6302(例如来自Redmond,WA的Microsoft公司的INTERNET EXPLORER)以连接到万维网。
(950)在一个实施例中(未示出),系统4500包括两个或多个中介机器30和/或两个或多个第一协议服务4502。如下所述,可以根据负载平衡方程各自选择客户机10和第一协议服务4502之间的消息必须通过的中介机器30和/或第一协议服务4502。
(951)第一远程机器30和第二远程机器30的每一个可以是能够通信并有足够的处理器能力和存储器容量进行这里所说明的操作的任意计算设备。例如,在一个实施例中,第一远程机器30是web服务器,提供一个或多个web站点或基于web的应用。在另一个实施例中,第二远程机器30提供XML服务或web服务。
(952)在一个实施例中,客户机10和网络150形成外部网络6304,被第一防火墙6306从系统6100的其余部分隔离,如虚线所示。中介机器30和第一远程机器30可以位于“停火区”6308(即,公司的私有网络和公共网络之间的网络区域),被第一防火墙6306和第二防火墙6310从系统4500的剩余部分隔离,也如虚线所示。在有些实施例中,第一防火墙6306和第二防火墙6310禁止来自或去往远程机器30的未经授权的通信。接着,如图所示,网络150′、第一协议服务4502、主机服务4516a-4516n、票据授权6102和第二远程机器30形成内部网络6312,被第二防火墙从系统4500的其余部分隔离。
(953)在有些实施例中,停火区6308包括票据协议服务6314(图63中阴影所示),包括代理(未示出)和第一远程机器30(它可以是web服务器)。代理可以包括客户机-第一协议服务通信信道4504上的消息所通过的安全网关。在一个实施例中,网络防火墙6306拒绝来自客户机-第一协议服务通信信道4504的任何不是以第一协议服务4502作为目的地的输入消息。同样,网络防火墙6306拒绝客户机-第一协议服务通信信道4504的输出消息,除非它的来源是第一协议服务4502。安全网关可以是路由器、防火墙、继电器或者能够提供必要安全性的任意网络组件。代理可以是与第一协议服务4502分离的网络组件,它可以运行在第一协议服务4502所在相同计算设备或不同的计算设备上。在有些实施例中,代理是用于安全地传递客户机10和第一协议服务4502之间的通信的中介。
(954)或者,在图63中没有示出的另一个实施例中,系统4500还包括位于网络150和中介机器30之间的停火区6308中的第三远程机器30。第三远程机器30可以是能够进行通信并具有足够的处理器能力和存储器容量完成这里所说明的操作的任意计算设备。如下所述,第三远程机器在有些实施例中被用在连接客户机10到主机服务4516期间和/或重新连接客户机10到主机服务4516期间。更准确地说,如下所述,在系统4500包括两个或多个中介机器30的地方,第三远程机器30可以根据负载平衡方程选择客户机10的客户机代理4506和第一协议服务4502之间的通信必须经过的中介机器30。
(955)此外,参看图63,中介机器30在一个替代实施例中可以被两级或多级中介机器30“a”-“n”代替。如图所示,每一级“a”-“n”可以包括两个或多个中介机器30′。如下所述,可以根据负载平衡方程通过中介机器30的任意组合路由客户机10的客户机代理4506。例如,如图所示,可以通过连接4504经由中介机器30路由客户机代理4506。为了附加的安全性,通过连接4504的每个“中继段”可以要求票据或重连票据以验证客户机10和主机服务4516之间的多中继段连接。本领域的技术人员所熟知的对系统4500的其它配置也是可行的。
(956)再次参看图63,在一个实施例中,web浏览器6302在网络150上与第一远程机器30通信,第一远程机器30自身与第二远程机器30和票据授权6102接口。更准确地说,用第二远程机器30和票据授权6102的地址配置第一远程机器30。在一个实施例中,如下所述,第一远程机器30被配置用来中继客户机10的web浏览器6302、第二远程机器30和票据授权6102之间的信息,并由此阻止它们之间的直接通信。通过阻止这样的直接通信,第一远程机器30向系统4500增加了附加级别的安全性。还可以用中介机器30或者两个或多个中介机器30的地址配置第一远程机器30。
(957)第二远程机器30被配置用来确定运行在主机服务4516上的哪些应用程序对客户机10的用户可用。换句话说,第二远程机器30被配置用来确定用户被授权访问哪些应用程序。在一个实施例中,在用户选择了他期望的应用程序之后,如下所述,出于负载平衡的目的,第二远程机器30被进一步配置用来确定哪些主机服务4516将被用来运行用户期望的应用程序。第二远程机器30返回那个主机服务4516的地址给第一远程机器30。第二远程机器30还返回第一协议服务4502的地址到第一远程机器30,第一协议服务4502可以是通过使用负载平衡方程在多个第一协议服务4502之中被选择出来的。接着,第一远程机器30将选择的第一协议服务4502和选择的主机服务4516的地址发送到票据授权6102。
(958)票据授权6102产生连接票据。在一个实施例中,票据授权6102将初始连接票据发送到第一远程机器30以由其发送到客户机10。在另一个实施例中,票据授权将第一重连票据发送到中介机器30。
(959)在一个实施例中,票据授权6102发出一个或多个票据以验证客户机10。尤其,票据授权6102使得能够在通信信道(即,客户机与web服务器之间的通信信道)上根据验证证书对客户机10验证。票据授权6102还使得客户机10能够被验证到另一通信信道(即,客户机与第一协议服务之间的通信信道4504)而不需要客户机10在其它通信信道上重复提供验证证书。
(960)在一个实施例中,票据授权6102是独立的网络组件。在其它实施例中,模块化的票据授权136是驻留在一个或多个远程机器30上的一个软件模块。例如,可以对每个远程机器30有一个票据授权6102。在有些实施例中,第一远程机器(例如停火区6308中的web服务器)可以在代理-服务器通信信道上与票据授权6102和/或远程机器30通信。在另一个实施例中,票据授权6102可以驻留在与其它远程机器30分离的中介远程机器30上。
(961)在一个实施例中,票据授权6102产生第一票据和第二票据。在有些实施例中,票据都是临时的。在进一步的实施例中,票据由已经用随机性适当指定随机种子的加密随机数发生器产生。第一票据被发送到客户机10并用来建立客户机10和第一协议服务4502之间的第一通信会话。第二票据被发送到第一协议服务4502并被用来建立第一协议服务4502和远程机器30之间的第二通信会话。
(962)在有些实施例中,第一远程机器30是web服务器。在其中一个这样的实施例中,第一远程机器30向客户机10递送web页面。在另一个这样的实施例中,第一远程机器30能够建立与客户机10的安全的客户机-web服务器通信信道。
(963)在其它实施例中,第一远程机器30是向客户机10提供企业入口(也被称为企业信息入口)的web服务器。在其中一个这样的实施例中,企业入口是给用户的集合、个性化和服务应用程序、数据和内容的公司web站点,同时提供用于更有效地组织和使用信息的管理工具。在其它实施例中,第一远程机器30提供web入口或互联网入口给客户机10。web入口与企业入口类似,但通常不包括商业具体信息。
(964)在一个实施例中,客户机10的用户使用web浏览器6302将用户验证到第一远程机器30。在一个实施例中,客户机10发送用户证书(例如帐户和密码信息)到第一远程机器30。.第一远程机器30核实该用户可以访问机器群组38。
(965)在进一步的实施例中,web浏览器6302使用SSL建立安全的客户机-web服务器通信信道。web浏览器6302也可以使用其它安全协议在客户机-web服务器通信信道上连接到第一远程机器30,这些安全协议包括但不限于由Los Altos,CA的Terisa Systems开发的安全超文本传输协议(SHHTP)、由Redmond,Washington的Microsoft公司开发的私有通信技术(PCT)SSL上的HTTP(HTTPS)以及由互联网工程任务组(IETF)发布的传输层安全性(TLS)标准。在一个实施例中,第一远程机器30如上所述在验证了用户之后将web入口或企业入口发送到客户机10以使客户机10能够将资源(例如应用程序或服务器桌面)远程显示在客户机10上。
(966)客户机-web服务器通信信道可以是任何安全通信信道。在有些实施例中,该信道上的通信被加密。在某些这样的实施例中,客户机10和第一远程机器30可以用超文本传输协议(HTTPS)的安全套接字层(SSL)通信。或者,客户机10和第一远程机器30可以使用其它加密机制(例如对称加密技术)保护通信。
(967)此外,在一个实施例中,可以用表示服务协议(例如ICA、X11协议、VNC或RDP)建立客户机-第一协议服务通信信道4502。尽管被描述为建立客户机10和第一协议服务4502之间的第一通信会话以及第一协议服务4502和远程机器30之间的第二通信会话,但通信会话可以被看作是客户机10和主机服务4516之间单一的逻辑通信会话。
(968)在图64中所示网络通信系统4500的另一个实施例中,可以使用ACR服务5002而不是票据授权6102来重新连接客户机10到主机服务4516。不是像票据授权6102一样使用票据,ACR服务5002产生、验证并管理用于连接和重新连接客户机通信会话的SID和密钥。ACR服务5002使用与客户机10相关联的SID和密钥或者票据将客户机验证和重新验证到主机服务4516或远程机器30。如前所述,可以使用票据来指代SID和密钥的组合或者可以由SID和密钥构成票据。
(969)如上所述,图64的系统4500包括网络150和150′、客户机10、第一协议服务4502、主机服务4516、中介机器30以及ACR服务5002,图64还描述了第一远程机器30和第二远程机器30,二者在一个实施例中都被用来初始连接客户机10到主机服务4516。此外,客户机10还包括web浏览器6302以连接到万维网。
(970)在一个实施例中(未示出),系统4500包括两个或更多中介机器30和/或两个或更多第一协议服务4502或两个或更多ACR服务5002。如下所述,可以根据负载平衡方程选择客户机10和第一协议服务4502之间的消息必须通过的中介机器30、和/或第一协议服务4502和/或ACR服务5002。
(971)在另一个实施例中,图64的系统4500可以包括由第一防火墙6306将其与“停火区”6308分离的外部网络6304,停火区6308由第二防火墙6310与内部网络6312分离。尽管是按照图63和图64中所示不同网络拓扑阐述了本发明,但可以使用任意其它网络拓扑,例如包括内部网络、外部网络、子网络、企业网、防火墙、安全区、单一服务器、服务器网络或服务器群组的拓扑。
(972)或者,在图64中未示出的另一实施例中,系统4500还包括位于网络150和中介机器30之间的停火区6308的第三远程机器30。第三远程机器30在有些实施例中被用在开始连接客户机10到主机服务4516期间和/或重新连接客户机10到主机服务4516期间。
(973)在图64中的系统4500的另一个实施例中,中介机器30可以被两级或多级中介机器30“a”-“n”代替。可以根据负载平衡方程通过中介机器30的任意组合路由客户机10的客户机代理4506。
(974)在一个实施例中,web浏览器6302在网络150上与第一远程机器30通信,第一远程机器30与第二远程机器30和ACR服务5002接口。第一远程机器30被配置具有第二远程机器30和ACR服务5002的地址。在另一个实施例中,为了在系统4500中提供附加级别的安全性,第一远程机器30被配置用来中继客户机10的web浏览器6302、第二远程机器30和ACR服务5002之间的信息并由此阻止它们之间的直接通信。第一远程机器30也被配置以任意一个中介机器30′的地址。
(975)第二远程机器30被配置用来确定运行在主机服务4516上的哪些应用程序对客户机10的用户可用并将用户选择的主机服务4516的地址提供给第一远程机器30。第二远程机器30还通过负载平衡方程的使用提供多个第一协议服务4502之一的地址给第一远程机器30。接着,第一远程机器30将选择的第一协议服务4502和选择的主机服务4516的地址发送到ACR服务5002。
(976)如同这里所说明的,ACR服务5002产生、验证并管理连接SID和密钥以提供验证和重新验证服务从而重新建立客户机与主机服务4516或远程机器30的通信会话。在一个实施例中,ACR服务5002发送第一SID和第一密钥到第一远程机器30以由其发送到客户机10。在另一个实施例中,ACR服务5002发送第一SID和第一密钥到中介机器30之一。
(977)在其它实施例中,用于网络通信的方法用封装在第一协议中的多个次级协议使客户机10能够重新连接到主机服务4516。该方法包括使用第一协议建立客户机10和第一协议服务4502之间的第一连接并通过第一协议中封装的多个次级协议在客户机10和第一协议服务4502之间通信。此外,次级协议中至少有一个包括多个虚拟信道。
(978)在本发明的这个方面的一个实施例中,使用次级协议中的一个在第一协议服务4502和主机服务4516之间建立第二连接。第一协议服务4502和主机服务4516之间的通信通过次级协议之一发生。明确地说,在第一主机服务4502和不同主机服务4516之间建立多个第二连接的每一个,这多个第二连接中的每一个都是用多个次级协议中的一个建立的。在又一实施例中,客户机10和第一协议服务4516之间的第一连接是通过一个或多个中介机器30建立的。
(979)现在参看图65,示出了用于在网络故障之后重新连接客户机到主机服务的方法6500的一个实施例。在步骤6502,客户机10初始连接到多个主机服务4516之一。通常,客户机10被要求发送验证证书到该主机服务4516以启动通信会话。在客户机10被连接到主机服务4516之后,客户机10和主机服务4516通过第一协议服务4502通信,并在步骤6504像上面参考图47-48和图49说明的那样通过第一协议中封装的多个次级协议通信。在一个实施例中,第一协议服务4502在发送任何第一协议分组之前在第一协议4704所在层上对通信进行加密,由此保护了通信。在另一个实施例中,第一协议服务4502在发送任何第一协议分组之前,在第一协议的层上对通信进行压缩,由此提高了通信效率。
(980)在步骤6506,客户机代理4506判断客户机代理4506和第一协议服务4502之间的连接4504是否已经断开。例如,客户机代理4506和中介机器30之间的连接4504a可以已经失败,中介机器30和第一协议服务4502之间的连接4505b可能已经失败,或者连接4504a和连接4504b可能都已经失败。如果客户机代理4506确定连接4504没有出现问题,方法6500就继续到步骤6508。否则,如果客户机代理4506确定连接4504已经中断,客户机10就在步骤6510被重新连接到主机服务4516。
(981)在第一通信会话异常终止之后步骤6510中重新连接的步骤可以包括在系统4500中布署票据授权6102以及客户机10将SID和第一和第二重连票据发送到中介机器30。中介机器30使用第一重连票据验证客户机10并重新建立客户机10和中介节点30′之间的连接4504。中介机器30接着将第二重连票据发送到第一协议服务4502,第一协议服务4502使用第二重连票据验证并重新建立到主机服务4516的连接4508。因而重连票据使得客户机10能够自动建立到主机服务4516的第二通信会话而不必再次重新发送验证证书。
(982)在另一个实施例中,步骤6510中重新连接的步骤还可以包括在系统4500中布署ACR服务5002。在这样的实施例中,客户机10发送第一SID和第一密钥到中介机器30以验证客户机10并重新建立客户机10到主机服务4516的连接。
(983)在步骤6508确定客户机10是否希望干净地结束它与第一协议服务4502的连接4504并接着结束它与主机服务4516a-4516n的连接4508a-4508n。如果否,客户机10和第一协议服务4502之间的通信通过第一协议中封装的多个次级协议在步骤6504继续。如果是,在步骤6512,所有连接4504a、4504b以及4508a-4508n都被中断并且所有重连票据都被删除。在另一个使用ACR服务5002的实施例中,在步骤6512,所有连接4504a、4504b以及4508a-4508n都被中断并且所有SID和密钥都被删除。在一个实施例中,中介机器30使用它从票据授权6102接收到的句柄删除在票据授权6102上保持的第一重连票据的副本。在布署了票据授权6102的另一个实施例中,第一协议服务4502删除在第一协议服务4502上保持的第二重连票据的副本。在布署ACR服务5002又一个实施例中,第一协议服务4502删除在第一协议服务4502上保持的第二SID和第二密钥的副本。
(984)在使用票据授权6102的进一步的实施例中,如果出于某种原因次级协议连接4508失败,由第一协议服务4502删除在第一协议服务4502上保持并与其关联的第二重连票据的副本。在又一个实施例中,第一重连票据和/或第二重连票据在连接4504失败(如步骤6506)之后和/或连接4504的干净结束(如步骤6508)之后的预定时间周期之后被自动删除。
(985)另一方面,本发明涉及使用ACR服务5002重新连接客户机10到主机服务4516的方法。现在参看图66,示出了图65中的步骤6510的一个实施例。客户机10发送第一SID和第一密钥到ACR服务5002(步骤6602)以重新连接到主机服务。ACR服务5002使用该SID(步骤6604)定位并获取加密的验证证书并使用该密钥(步骤6606)解密获取的验证证书。在一个实施例中(未示出),ACR服务5002使用解密的验证证书重新验证客户机10到第一协议服务4502和主机服务4516之间所维持的会话。在重新验证之后,将重新建立的客户机10到第一协议服务4516的连接重新链接到第一协议服务4502和主机服务4516之间所维持的会话。
(986)在另一个实施例中,在第二通信会话期间,ACR服务5002为验证证书产生第二密钥(步骤6608)并用第二密钥加密验证证书(步骤6610)。ACR服务5002产生第二SID(步骤6612)。然后由主机服务4516验证解密的验证证书,并且第二SID被关联到主机服务4516所维持的通信会话(步骤6612a)。ACR服务5002接着将第二SID和第二密钥发送到客户机10(步骤6614)。在一个实施例中,ACR服务5002可以通过中介机器30发送第二SID和第二密钥。客户机10存储第二SID和第二密钥(步骤6616)。ACR服务5002接着删除第二密钥(步骤6618)。
(987)参看图67-68,示出了使用ACR服务5002初始连接客户机10到主机服务4516的方法6700的一个实施例。在步骤6702,客户机10使用浏览器6302发送请求(例如HTTP请求)到第一远程机器30。第一远程机器30返回一个web页面(例如HTTP表格)请求验证信息(例如,用户名和密码)。客户机10的用户输入他的验证证书并将完成的表格发送到第一远程机器30。
(988)在步骤6704,第一远程机器30接着通知客户机10的用户可以执行的应用程序。在一个实施例中,第一远程机器30从登录页面提取用户的证书并将它们发送到第二远程机器30,同时发送的还有第二远程机器30列举用户可用的应用程序的请求。根据用户的证书,第二远程机器30给第一远程机器30返回其可用的具体应用程序的列表,第一远程机器30接着将该列表以web页面的形式转发到客户机10的用户。
(989)在步骤6706,用户选择期望的应用程序,对该应用程序的请求被发送到第一远程机器30。例如,在一个实施例中,用户点击由第一远程机器30呈现给他的web页面中列举的期望的应用程序,对该应用程序的HTTP请求被转发到第一远程机器30。该请求由第一计算节点140处理并被转发到第二远程机器30。
(990)在步骤6708,第二远程机器30确定期望的应用程序将在其上被执行的主机服务4516。第二远程机器30可以根据负载平衡方程做出这个判断。在一个实施例中,第二远程机器30还从多个第一协议服务4502中确定将用来通过连接4508与该主机服务4516通信的第一协议服务4502。同样,第二远程机器30可以根据负载平衡方程做出这个判断。第二远程机器30将选择的主机服务4516和选择的第一协议服务4502的地址返回到第一远程机器30。
(991)在步骤6710,向客户机10提供初始连接会话ID和密钥(即第一SID和第一密钥)以及中介机器30的地址(如下所述,该地址可以是它的实际地址或它的虚拟地址)。在一个实施例中,第一远程机器30将所选择的主机服务4516和所选择的第一协议服务4502的地址连同对初始连接会话ID和密钥的请求一起提供给ACR服务5002。ACR服务5002产生初始会话ID和密钥,并将产生的会话ID和密钥发送到第一远程机器30,同时自己保留一份拷贝。
(992-993)在有些实施例中,票据授权6102产生初始连接票据。在其中一个这样的实施例中,票据授权6102保留选择的主机服务4516和选择的第一协议服务4502的地址,产生初始连接票据,将初始连接票据发送到第一远程机器30,同时自己保留一个副本。在一个实施例中,票据授权6102响应第一远程机器30对初始连接票据的请求为客户机10和主机服务4516之间的每个“中继段”产生初始连接票据。在另一个实施例中,第一远程机器30在单个请求或多个请求请求中的每个“中继段”的初始连接票据。
(994)在一个实施例中,用中介机器30的实际地址配置的第一远程机器30接着将中介机器30的实际地址和初始连接会话ID和密钥发送到客户机10的浏览器6302。在有些实施例中,初始连接票据被发送。第一远程机器30能够首先创建一个包含中介机器30的实际地址以及初始连接票据二者的文件,然后将该文件发送到客户机10的浏览器6302。或者,在另一个实施例中,第一远程机器30被配置以两个或多个中介机器30的实际地址。在这样的实施例中,第一远程机器30首先确定客户机10和第一协议服务4502之间的消息将必须经过的中介机器30。第一远程机器30接着用上述文件将选出的中介机器30的实际地址以及初始连接票据发送到客户机10的浏览器6302。在一个实施例中,第一远程机器30使用负载平衡方程选择中介机器30。客户机10的客户机代理4506接着被启动并使用中介机器30的地址,用于在步骤6712建立客户机10的客户机代理4506和中介机器30之间的第一协议连接4504a。
(995)或者,在另一个实施例中,第一远程机器30被配置以第三远程机器30的实际地址,它充当中介机器30的虚拟地址。在这样的实施例中,在步骤6710,第一远程机器30使用上述文件将第三远程机器30的实际地址和初始连接会话ID和密钥发送到客户机10的浏览器6302。客户机10的客户机代理4506接着被启动并使用第三远程机器30的实际地址在步骤6712建立客户机10的客户机代理4506和第三远程机器30之间的第一协议连接。第三远程机器30接着确定客户机10和第一协议服务4502之间的消息将必须经过的中介机器30。在一个实施例中,第三远程机器30使用负载平衡方程确定中介机器30。选出中介机器30之后,第三远程机器30建立到中介机器30的第一协议连接。因此,通过第三远程机器30,第一协议连接4504a存在于客户机10的客户机代理4506和中介机器30之间。第三远程机器30的实际地址因此被映射到中介机器30的实际地址。对客户机10的客户机代理4506来说,第三远程机器30的实际地址因此充当了中介机器30的虚拟地址。
(996)在一个如上所述存在多级中介机器30′的实施例中,第一远程机器30或第三远程机器30分别只选择客户机代理4506将在“a”级上连接到的中介机器30。在这样的实施例中,在″a″-″n-a″中的每一级,在该级上通过其路由客户机代理4506的中介机器30根据负载平衡方程确定它在下一级将要连接到的中介机器30。或者,在其它实施例中,第一远程机器30或第三远程机器30分别对″a″-″n″中的一些或全部级别确定客户机代理4506将通过其被路由的中介机器30。
(997)建立了客户机10的客户机代理4506和中介机器30(例如,″n″级上的中介节点30′,下面在方法6700中称为中介机器30)之间的第一协议连接4504a之后,客户机代理4506接着将初始连接票据发送到中介机器30。
(998)然后在步骤6714确定初始连接SID和密钥是否有效。在一个实施例中,中介机器30将初始连接SID和密钥发送到ACR服务5002用于验证。在一个实施例中,ACR服务5002通过将SID和密钥与它在步骤6710保留的SID和加密的验证证书的副本进行比较而验证SID和密钥。如果ACR服务5002确定SID和密钥有效,ACR服务5002在步骤6802(图68)将第一协议服务4502的地址和选择的主机服务4516的地址发送到中介机器30。第一协议服务4502还可以删除SID和密钥以及它们的任何副本。另一方面,如果ACR服务5002确定SID和密钥无效,客户机10在步骤6716被拒绝连接到第一协议服务4502,因此也被拒绝连接到主机服务4516。在有些实施例中,票据授权6102从中介机器30接收到初始连接票据以进行验证并如上所述验证该票据。
(999)在步骤6802之后,中介机器30使用选择的第一协议服务4502的地址在步骤6804建立中介机器30和第一协议服务4502之间的第一协议连接4504b。在一个实施例中,中介机器30使用初始连接票据建立中介机器30和第一协议服务4502之间的第一协议连接4504b。一种情况下,中介机器30使用从客户机10接收到的相同初始连接票据来验证连接4504b。另一种情况下,中介机器30使用为第一协议连接4504b产生并对其有效的初始连接票据。因此现在第一协议连接4504通过中介机器30存在于客户机10的客户机代理4506和第一协议服务4502之间。中介机器30还可以将选择的主机服务4516的地址传递到第一协议服务4502。
(1000)在一个实施例中,在步骤6806,第一协议服务4502使用选择的主机服务4516的地址建立第一协议服务4502和选择的主机服务4516之间的次级协议连接4508。例如,选择的主机服务4516实际是主机服务4516a,并且在第一协议服务4502和主机服务4516a之间建立次级协议连接4508a。
(1001)在一个实施例中,在步骤6806之后,用户在步骤6808选择要执行的第二个应用程序并且第二远程机器30在步骤6810确定将在哪个主机服务4516上执行第二个应用程序。例如,通过计算负载平衡方程,第二远程机器30可能选择主机服务4516b执行第二个应用程序。第二远程机器30接着将选择的主机服务4516b的地址发送到第一协议服务4502。在一个实施例中,第二远程机器30直接与第一协议服务4502通信并直接将地址发送到那里。在另一个实施例中,所选择的主机服务4516b的地址被间接发送到第一协议服务4502。例如,该地址可以通过第一远程机器30、ACR服务5002、中介机器30和第一协议服务4502的任意组合被发送到第一协议服务4502。接收到选中的主机服务4516b的地址之后,第一协议服务4502在步骤6812建立第一协议服务4502和选中的主机服务4516b之间的次级协议连接4508b。
(1002)可以用来在连接4508a和4508b上通信的次级协议包括但不限于HTTP、FTP、Oscar、Telnet、ICA和RDP。此外,在一个实施例中,上述次级协议中的至少一个包括多个虚拟信道,每个虚拟信道可以包括多个启用客户机10上的功能的协议分组。例如,在一个实施例中,主机服务4516a是web服务器,使用HTTP协议在连接4508a上与第一协议服务4502通信,另一主机服务4516b是应用程序器,使用ICA协议在连接4508b上与第一协议服务4502通信。主机服务4516b产生用于发送图形屏幕命令到客户机10的协议分组、用于使客户机10显示图形用户界面的协议分组、以及用于发送打印机命令到客户要0的协议分组、用于使文档在客户机10上被打印的协议分组。
(1003)步骤6808、6810和6812可以被重复任意次数。这样,任意数量的应用程序可以在任意数量的主机服务4516a-4516n上被执行,它们的输出可以被使用任意数量的次级协议在连接4508a-4508n上传递到第一协议服务4502。
(1004)现在转到步骤6814,如上所述,第一协议服务4502能够在第一协议中封装多个次级协议。这样,客户机10被同时连接到多个主机服务4516并与它们通信。
(1005)在另一个实施例中,在进行步骤6808、6810和6812以在主机服务4516(例如主机服务4516b)上执行新的应用程序之前,客户机10的用户终止另一应用程序的执行(例如,在主机服务4516a上执行的应用程序)。在这种情况下,第一协议服务4502断开第一协议服务4502和主机服务4516a之间的连接4508a。第一协议服务4502接着通过执行步骤6808、6810和6812在第一协议服务4502和主机服务4516b之间建立连接4508b,但并不中断客户机10和第一协议服务4502之间的连接4504。
(1006)在一个实施例中,在步骤6816产生第一SID和密钥。在有些实施例中,产生第一重连票据。例如,中介机器30向ACR服务5002请求第一SDI和密钥。在接收到该请求之后,ACR服务5002产生第一SID和密钥,还可以产生一个句柄,句柄是(例如)一个随机数。ACR服务5002接着可以在步骤6902将第一SID和密钥以及句柄发送到中介机器30,同时保留第一SID和密钥的副本以及句柄的副本。ACR服务5002继续保留由第一远程机器30在步骤6710发送给它的第一协议服务4502的地址。中介机器30接着在步骤6904将第一重连票据发送到客户机10。
(1007)在有些实施例中,中介机器30向票据授权6102请求第一重连票据或者为客户机10和主机服务4516之间的每个“中继段”请求第一重连票据。在接收到该请求之后,票据授权6102产生一个或多个第一重连票据,重连票据是一个大的随机数,并且还可以产生一个句柄,它是一个较小的随机数。票据授权6102接着可以在步骤6902将第一重连票据和句柄发送到中介节点632,同时保留第一重连票据的副本和句柄的副本。票据授权6102继续保留由第一远程机器30在步骤6710发送给它的第一协议服务4502的地址。中介节点632接着在步骤6904将客户机的第一重连票据发送到客户机10。
(1008)在步骤6906,接着产生第二SID和密钥。在一个实施例中,第一协议服务4502产生第二SID和密钥。第一协议服务4502随后在步骤6908通过中介机器30将第二SID和密钥发送到客户机10。在这种情况下,第一协议服务4502保留与其关联的密钥和会话编号的副本以在连接4504中断之后标识出需要重新连接的会话。例如,在一个实施例中,第一协议服务4502为特定的会话编号维持一张表,该表列出了与该会话编号相关联的次级协议连接4508a-4508n。
(1009)在步骤6906,产生一个或多个第二重连票据。在一个实施例中,第一协议服务4502为客户机10产生第二重连票据,它可以是一个大随机数。在另一个实施例中,第一协议服务4502为客户机10和主机服务4516之间的一个或多个“中继段”产生第二重连票据。第一协议服务4502在步骤6908通过中介机器30将客户机的第二重连票据发送到客户机10。在这种情况下,第一协议服务4502保留与其相关联的第二重连票据和会话编号的副本,用于标识在连接4504中断之后要重新连接的会话。例如,在一个实施例中,第一协议服务4502为特定的会话编号维护一张表,该表列出了与那个会话编号相关联的次级协议连接4508a-4508n。以类似的方式,第一协议服务4502对于以重新连接客户机10到主机服务4516而正在被验证的每个“中继段”可以维持第一和/或第二重连票据。
(1010)因此,当在第一协议服务4502上重新建立第一协议连接4504并验证了第二SID和密钥或第二重连票据之后,如下所述,第一协议服务4502能够标识出要封装在重新建立的第一协议连接4504中以和客户机10通信的次级协议连接4508。
(1011)在图67-69中未示出的一个实施例中,可以使用票据授权6102而不是ACR服务5002来提供重新连接客户机10到主机服务4516。在方法6700中,票据授权6102将产生并发送重连票据而不是ACR服务5002所产生和发送的SID和密钥。例如,在步骤6710,票据授权6102将向客户机10提供初始连接票据和中介机器30的地址。另外,在步骤6714,票据授权6102能够确定初始连接票据是否有效,在步骤6816产生第一重连票据。另外,在步骤6902、6904、6906和6908,将根据方法6700产生并发送第一和第二重连票据。这样,票据授权6102促进客户机10到主机服务4516的重新连接。
(1012)现在参看图70,示出了用于向客户机10提供到一个或多个主机服务4516的持久可靠的连接并重新连接客户机10到主机服务4516(例如在图65的步骤6510)的方法7000的一个实施例。尤其,在步骤7002,维护第一协议服务4502和一个或多个主机服务4516中的每一个之间的次级协议连接4508。此外,在步骤7004,维护在客户机10的客户机代理4506和第一协议服务之间通过连接4504(它被确定为已经断开,例如在图65的步骤6510上确定)最近传输的数据分组的队列。在一个实施例中,在连接4504失败之前和之后排队并维持数据分组。可以由客户机代理4506将排队的数据分组维护在一个缓冲区中。或者,第一协议服务4502可以在缓冲区中维护排队的数据分组。在又一个实施例中,客户机代理4506和第一协议服务4502二者都在缓冲区中维护排队的数据分组。
(1013)在步骤7006,在客户机10的客户机代理4506和第一协议服务4502之间建立新的第一协议连接4504,并且该连接4504被链接到第一协议服务4502和一个或多个主机服务4516中的每一个之间保持的次级协议连接4508,由此将客户机10重新连接到主机服务4516。在客户机10被重新连接以后,可以在步骤7008通过新建立的第一协议连接4504发送在步骤7004维护的排队的数据分组。这样,通过第一协议服务4502,主机服务4516和客户机10之间的通信会话是持久的且不丢失任何数据地进行。在一个实施例中,ACR服务5002在重新连接客户机10到主机服务4516之前验证客户机10到主机服务4516。在另一个实施例中,第一协议服务4502在重新连接客户机10到主机服务4516之前用票据授权6102验证重连票据。
(1014)在有多个“中继段”穿越多个第一协议服务4502的实施例中,可以在一个或多个第一协议服务4502上保持一部分或全部数据分组以便可以重新建立每个“中继段”。在客户机10被如上所述重新连接并重新链接到一个或多个第一协议服务4502中的第一个之后,可以重新建立剩余的各个连接并将其重新链接至之前重新链接的“中继段”,直到重新建立到主机服务4516的最后“中继段”。或者在最后“中继段”被重新建立并重新链接之后,或者在重新建立和重新链接各个“中继段”时,可以发送排队的数据分组。
(1015)图71-72示出了像在图64所示系统4500的实施例中一样使用ACR服务5002重新连接客户机10到一个或多个主机服务4516的方法7100的一个实施例。
(1016)在步骤7102,客户机10和第一协议服务4502之间的剩余连接都被中断。例如,在连接4504a已经失败而连接4504b还没有失败的地方,连接4504b被中断。或者,在连接4504b已经失败而连接4504a还没有失败的地方,连接4504a被中断。
(1017)在一个实施例中,客户机10的客户机代理4506使用提供给客户机10的中介机器30的实际地址,在步骤7104重新建立客户机代理4506和中介机器30之间的第一协议连接4504a。或者,在另一个实施例中,客户机10的客户机代理4506使用提供给客户机10的第三远程机器30的实际地址,在步骤7104重新建立客户机代理4506和第三远程机器30之间的第一协议连接。第三远程机器30接着确定客户机10和第一协议服务4502之间的消息将必须经过的中介机器30。在一个实施例中,第三远程机器30使用负载平衡方程选择中介机器30。第三远程机器30在重新连接客户机10到一个或多个主机服务4516中选择的中介机器30可以不同于为初始连接客户机10到一个或多个主机服务4516而选择的中介机器30。在一个实施例中,在重新连接客户机10到主机服务4516时为选中的中介机器30产生初始连接票据。
(1018)在选择了中介机器30之后,第三远程机器30重新建立到该中介机器30的第一协议连接。因此通过第三远程机器30重新建立了客户机10的客户机代理4506和中介机器30之间的第一协议连接4504a。在一个实施例中,当重新建立了到该中介机器30的第一协议连接4504时,通过用票据授权6102验证这个“中继段”的第一或第二重连票据而验证该第一协议连接4504。
(1019)在一个实施例中,当存在不止一级的中介机器30时,在″a″-″n″的每一级上通过其路由客户机代理4506的中介机器30根据负载平衡方程确定它将在下一级连接到的中介机器30。或者,在另一个实施例中,第三远程机器30为″a″-″n″级中的不止一级或全部确定客户机代理4506将通过其被路由的中介机器30。在其它实施例中,中介机器30或远程机器30之一(例如,第三远程机器30)为客户机代理4506通过其被路由的一个或多个连接或“中继段”产生第一或第二重连票据。
(1020)重新建立了客户机10的客户机代理4506和中介机器30(例如,″n″级上的中介节点30′,以后在方法7100中称为中介机器30)之间的第一协议连接4504a之后,客户机代理4506接着在步骤7106将第一S ID和密钥以及第二SID和密钥发送到中介机器30。在一个实施例中,客户机代理4506在步骤7106发送用于客户机10的第一重连票据和第二重连票据到中介机器30。
(1021)接着在步骤7108确定第一SID和密钥是否有效。在一个实施例中,使用ACR服务5002确定第一SID和密钥的有效性。例如,中介机器30将第一SID和密钥发送到ACR服务5002。在一个实施例中,ACR服务5002通过将第一SID和密钥与存储器5018中存储的第一SID的副本进行比较而确定第一SID和密钥的有效性。如果ACR服务5002确定第一SID和密钥有效,ACR服务5002就重新验证客户机10到主机服务4516并在步骤7110将第一协议服务4502的地址发送到中介机器30。否则,如果ACR服务5002确定第一SID和密钥无效,客户机10在步骤7112被拒绝重新连接到第一协议服务4502并因此被拒绝连接到主机服务4516。
(1022)在一个实施例中,使用票据授权6102确定第一重连票据的有效性。例如,中介机器30将第一重连票据发送到票据授权6102。在一个实施例中,票据授权6102通过将第一重连票据和先前保留的第一重连票据的副本进行比较而确定它的有效性。如果票据授权6102确定第一重连票据有效,票据授权6102在步骤7110将第一协议服务4502的地址发送到中介机器30。否则,如果票据授权6102确定第一重连票据无效,客户机10在步骤7112被拒绝重新连接到第一协议服务4502并因此被拒绝重新连接到主机服务4516。
(1023)在步骤7114,第一SID和密钥被ACR服务5002删除并由ACR服务5002产生替代第二SID和密钥。在有些这样的实施例中,ACR服务5002将第二SID和密钥发送到中介机器30。在有些实施例中,ACR服务5002在删除第一SID和密钥之前等待客户机10确认已经接收到了第二SID和密钥。
(1024)在其它实施例中,在步骤7114,由票据授权6102删除第一重连票据并产生替代的第一重连票据。此外,可以由票据授权6102产生替代句柄。在有些这样的实施例中,票据授权6102将替代第一重连票据和替代句柄发送到中介机器30。此外,在有些这样的实施例中,票据授权6102保存替代第一重连票据的副本。在有些实施例中,票据授权6102在删除第一重连票据之前等待客户机10确认它已经接收到了替代第一重连票据。
(1025)在验证了第一SID和密钥(或者,在有些实施例中是第一重连票据)之后,中介机器30使用第一协议服务4502的地址,在步骤7116重新建立中介机器30和第一协议服务4502之间的第一协议连接4504b。在重新建立了中介机器30和第一协议服务4502之间的第一协议服务4504b之后,确定第二SID和密钥或者重连票据是否有效。
(1026)在一个实施例中,使用第一协议服务4502确定第二SID和密钥的有效性。例如,中介机器30将第二SID和密钥发送到第一协议服务4502。在一个实施例中,第一协议服务4502通过对第二SID和密钥和先前保留的第二SID和加密的验证证书的副本进行比较而确定第二SID和密钥的有效性。如果第一协议服务4502确定第二SID和密钥有效,重新建立的第一中介机器30和第一协议服务4502之间的第一协议连接4504b在步骤7202被链接到第一协议服务4502和一个或多个主机服务4516中的每一个之间保持的次级协议连接4508。否则,如果第一协议服务4502确定第二SID和密钥无效,重新建立的第一协议连接4504b就不会被链接到一个或多个保持的次级协议连接4508,客户机10也被拒绝重新连接到一个或多个主机服务4516。
(1027)在使用重连票据的实施例中,使用第一协议服务4502确定第二重连票据的有效性。例如,中介机器30将第二重连票据发送到第一协议服务4502。在一个实施例中,第一协议服务4502通过对第二重连票据和先前保存的第二重连票据副本进行比较而判断其有效性。在另一个实施例中,第一协议服务112验证第一协议服务4502和主机服务4516之间的连接的第一重连票据,或者在另一实施例中第一协议服务4502和另一第一协议服务4502或中介机器30之间的连接。以同样的方式,可以用一个或多个票据(初始或重连票据)验证第一协议服务4502和主机服务4516之间的每个“中继段”以代表客户机10验证“中继段”的继续使用。
(1028)如果第一协议服务4502确定第二重连票据有效,第一中介机器30和第一协议服务4502之间重新建立的第一协议连接4504b被链接到第一协议服务4502和一个或多个主机服务4516中的每一个之间保持的次级协议连接4508。否则,如果第一协议服务4502确定第二重连票据无效,重新建立的第一协议连接4504b不会被链接到一个或多个保持的次级协议连接4508,客户机10也被拒绝重新连接到一个或多个主机服务4516。在第一协议服务4502和主机服务4516之间有多个中继段连接的情况下,可以为重新连接验证每个“中继段”并将各个“中继段”链接到前一“中继段”直到验证了到主机服务4516的最后的“中继段”为止,或者直到其中一个“中继段”被拒绝重新连接。
(1029)在步骤7024,第一协议服务4502删除第二SID和密钥,并产生替代的第二SID和密钥以发送到客户机10。在这样的实施例中,第一协议服务4502保留替代第二SID和密钥的副本。在有些实施例中,第一协议服务4502在删除第二SID和密钥之前等待客户机10确认它已经接收到了替代第二SID和密钥。
(1030)在有些实施例中,第一协议服务4502删除第二重连票据并产生替代第二重连票据以发送到客户机10。在这样的实施例中,第一协议服务4502保留替代第二重连票据的副本。在有些实施例中,第一协议服务4502在删除第二重连票据之前等待客户机10确认它已经接收到了替代第二重连票据。在为重连客户机108而验证一个或多个“中继段”的情况下,在步骤948可以由票据授权6102、中介结点632、任意计算结点、或者一个或多个第一协议服务112产生一个或多个替代重连票据和/或保存其副本。
(1031)在步骤7206,替代第二SID和密钥被发送到客户机10。例如,ACR服务5002可以通过中介机器30将替代第二SID和密钥发送到客户机10。此外,在一个实施例中,第一协议服务4502通过中介机器30将替代第二SID和密钥发送到客户机10。
(1032)在有些实施例中,替代第一重连票据和替代第二重连票据被发送到客户机10。例如,票据授权6102能够通过中介机器30将替代第一重连票据发送到客户机10。此外,在一个实施例中,第一协议服务4502通过中介机器30将替代第二重连票据发送到客户机10。在其它实施例中,一个或多个“中继段”的替代重连票据可以被发送到一个或者多个中介机器30、任意计算结点、或者一个或多个第一协议服务4502。
(1033)或者,在其它实施例中,上述方法只为客户机10提供单一重连票据和/或为客户机10和主机服务4516之间的每个“中继段”提供单一重连。这样,在这些实施例中,与既使用第一重连票据也使用第二重连票据不同,而是只使用上述单一重连票据。在一个这样的实施例中,还向客户机10的客户机代理4506提供了第一协议服务4502的地址。为了重新连接到主机服务4516,客户机代理4506直接将该单一重连票据发送到第一协议服务4502。第一协议服务4502随后确定单一重连票据是否有效。在一个实施例中,第一协议服务4502通过比较该单一重连票据和先前保存的它的副本而确定其是否有效。如果第一协议服务4502确定该单一重连票据有效,客户机10和第一协议服务4502之间重新建立的第一协议连接4504就被链接到第一协议服务4502和一个或多个主机服务4516其中每一个之间保持的第二协议连接4508。否则,如果第一协议服务4502确定该单一重连票据无效,重新建立的第一协议连接4504就不会被链接到一个或多个保持的第二协议连接4508,客户机10也被拒绝重新连接到一个或多个主机服务4516。
(1034)在该单一重连票据被验证之后,该单一重连票据被第一协议服务4502删除,并且由第一协议服务4502产生替代单一重连票据以发送到客户机10。在发送替代单一重连票据到客户机10中,第一协议服务4502保留该替代单一重连票据的副本。在有些实施例中,第一协议服务4502在删除单一重连票据之前等待客户机10确认它已经接收到了替代单一重连票据。
(1035)在又一个实施例中,像第一和第二重连票据一样,单一重连票据也被配置为在连接4504出现故障和/或连接4504干净地终止之后的预定时间周期后被自动删除。
(1036)在图71-72中未示出的实施例中,票据授权6102也可以替代ACR服务5002用于重新连接客户机10到主机服务4516,在方法7100中,票据授权6102能够产生并发送重连票据而不是像ACR服务5002一样产生和发送SID和密钥。例如,在步骤7106,票据授权6102将在步骤7108中确定在步骤7106中从中介机器30接收到的第一重连票据是否有效。在步骤7114,票据授权6102删除第一重连票据并产生第二重连票据和一个句柄。这样,票据授权6102实施了重新建立和重新验证客户机10的通信会话到主机服务4516。
(1037)可以监控网络150的性能以提高客户机10的用户察觉到的性能。网络150的带宽和延迟是影响客户机10的终端用户的交互体验的一个因素。其它因素包括在远程机器30上执行的虚拟机的数量或者远程机器30上的虚拟机中执行的应用程序的数量,被应用程序执行的数据量(或负载),客户机10正在进行的处理量(或负载)。在运行中,这些因素中的每一个都在波动。因为数据通过网络150被传输,所以网络的可用带宽减少了。对远程机器30的请求的数量由此增加或减少远程机器30的变动负载。本发明的一个方面提供的系统和方法用于确定这些独立变化是否以及如何影响终端用户的交互体验。
(1038)图73是包括客户机软件7302和远程机器软件7306的系统的一个实施例的概念框图,远程机器软件7306监控客户机10和远程机器30之间的连接状态。应该理解各个模块不必是单独的软件。相反,这些模块可以被提供成单一软件应用程序或者被组合成单独应用程序的任意组合。另外,某些模块可以是物理硬件。
(1039)客户机软件7302与客户机10的收发器模块7304通信。客户机软件7302包括与收发器模块7304通信的触发器模块7308。触发器模块7308产生被发送到远程机器软件7306的消息7310。消息7310被配置用来在该消息被远程机器30处理时产生来自远程机器软件7306的响应。例如,该消息可以包括导致来自远程机器的图形回应的用户输入事件。在一个实施例中,触发器模块7308周期性地产生消息7310。该周期的长度可以由客户机10的用户或者别的用户(如系统管理员)配置。在另一个实施例中,触发器模块响应使用输入设备7312的特定终端用户输入产生消息7310。
(1040)收发器模块7304与网络150通信并被配置用来通过网络150将消息7310从客户机10发送到远程机器30,并且接收来自远程机器30的响应。如果必要的话,收发器模块7304格式化消息7310以通过网络150传输并格式化该响应以由客户机软件7302执行。
(1041)或者,客户机软件7302可以包括定时器模块7316和计算模块7314。定时器模块7316与触发器模块7308以及计算模块7314通信。定时器模块7316被配置用来测量从消息7310的产生直到客户机10完成来自远程机器的回应中包括的指令所经过的时间。在一个实施例中,定时器模块7316产生启动时间戳和完成时间戳并确定其间的经过时间。在另一个实施例中,定时器模块充当跑表并在不进行计算的情况下产生经过时间。在一个实施例中,经过的时间被发送到另一远程机器30′以做进一步处理(例如对期望的经过时间的计算)、趋势分析和存储。在另一个实施例中,经过时间被转发到计算模块以和期望值进行比较从而确定环境7300是否在规范内运行。在又一实施例中,经过时间被转发到客户机正在与之通信的远程机器30。
(1042)远程机器软件7306与远程机器30的收发器模块7326通信。远程机器软件7306包括回声(echo)应用程序7318,可选的初始化模块7320以及可选的确认模块7328。在一个实施例中,远程机器软件7306与应用程序7322以及在远程机器30上执行的操作系统7324通信。在另一个实施例中,远程机器软件7306与在远程机器30上执行的计算环境或管理程序通信。在其它实施例中,远程机器软件7306在由管理程序提供的虚拟机中执行,并且在这些实施例中,远程机器软件7306与虚拟机的计算环境和虚拟化操作系统提供的应用程序通信。回声应用程序7318与收发器模块7326以及初始化模块7320(如果存在的话)和确认模块7328(如果存在的话)通信。在一个实施例中,回声应用程序7318对于客户机10的终端用户不可见。例如,回声应用程序7318可以是无窗体的(例如,秘密应用程序)。终端用户不直接与回声应用程序7318交互。
(1043)回声应用程序产生对来自客户机软件7302的消息7310的图形回应7330。图形回应消息7330包括以客户机10的终端用户感觉不到但客户机10的客户机软件7302能够感觉到的方式操纵、修改、更新、更改或改变客户机10的显示的指令。在一个实施例中,回声应用程序7318与应用程序7322一起来隐形执行。在这样的实施例中,回声应用程序7318像应用程序7322一样易受相同的环境效应和变化的影响。
(1044)收发器模块7326与网络150通信并被配置用来通过网络150从远程机器30向客户机10发送回应7330并从客户机10接收消息7310。如果必要的话,收发器模块7304格式化回应7330以通过网络150发送并格式化消息7310以由远程机器30执行。收发器模块将接收到的消息7310转发到远程机器30的操作系统7324。
(1045)操作系统7324被配置用来读取并处理消息7310用于为回声应用程序7318产生输入事件7332。输入事件7332可以是已知的WINDOWS输入事件或自定义输入事件。理论上,输入事件7332被配置用来使回声应用程序7318产生图形回应7330。
(1046)初始化模块7320与应用程序7322和操作系统7324通信。在一个实施例中,初始化模块7320监控应用程序7322并在应用程序7322中特定的一个应用程序开始在远程机器30上执行时自动初始化回声应用程序7318。在另一个实施例中,初始化模块7320在远程机器30接收到消息7310时初始化回声应用程序。在另一个实施例中,当客户机/远程机器会话开始并且保持静止直到接收到消息7310时回声应用程序7318被初始化。应该理解初始化模块能够初始化回声应用程序7318的一个或多个实例。例如,初始化模块7320可以为连接到远程机器30或者连接到远程机器30提供的虚拟机的每个客户机10启动各自的回声应用程序7318。
(1047)确认模块7328与回声应用程序7318通信。在一个实施例中,确认模块7328执行的功能包括监控回声应用程序7318以确保对客户机10和感兴趣的远程机器30之间的每个连接都有一个回声应用程序7318的实例在执行。确认模块7328可以向另一远程机器30′(例如上述管理服务器)报告回声应用程序7318是否正在运行并正确地发挥作用,或者确认模块7328可以向远程机器30的操作系统7324或者由管理程序提供的虚拟机报告回声应用程序7318是否正在运行并正确地发挥作用。
(1048)参看图74,说明了客户机10和远程机器30之间操作和交互的方法7400的一个实施例。一般来说,该方法可以被概念化为产生用于在基于远程机器的计算环境7300中计算终端用户体验量度的测量。客户机软件7302和远程机器软件7306的操作包括发送消息7310到应用程序7318(步骤7410),从应用程序7318接收图形回应(步骤7420),并确定表示终端用户交互体验的经过时间(步骤7430)。
(1049)在一个实施例中,客户机软件7302上的触发器模块7308通过收发器7304周期性地发送消息7310。在另一个实施例中,触发器模块7308响应终端用户输入而产生消息7310。消息7310可以包括产生被转发到应用程序7318的WINDOWS消息的指令。或者,消息7310可以是WINDOWS消息并代表到应用程序7318的输入事件。在一个实施例中,消息7310在ICA协议流中的独立的虚拟信道上被发送,当接收到消息7310时远程机器软件7306产生一个WINDOWS消息。
(1050)当远程机器软件7306接收到消息7310时,回声应用程序7318处理消息7310的指令并产生图形回应7330。在一个实施例中,图形回应7330产生终端用户检测不到的客户机10的显示变化。在各种实施例中,图形回应7330可以包括改变客户机显示器上的少量像素的指令,改变客户机显示器起始点(即左上角)上的单个像素的指令,使显示器的一个像素循环通过一个值域的指令或者使一个变化循环通过显示器的一个像素位置范围。
(1051)当客户机软件7302处理图形回应7330时,确定在消息7310的发送和对图形回应7310的处理完成之间的经过时间。在一个实施例中,客户机软件7302确定经过时间并将经过时间转发到管理远程机器30′用于进行存储和趋势分析。在另一个实施例中,起始时间戳和结束时间戳被从计时器模块7316转发到管理远程机器30′。在这样的实施例中,管理远程机器30′确定经过时间。应该理解经过时间的测量等价于这里使用的交互体验。
(1052)管理远程机器30′能够存储多个交互体验测量。所存储的测量值可以用来隔离按照期望没有正在执行的客户机10连接的那部分。例如,可以对相同时间段的网络定时测量和交互体验进行比较以隔离应用程序、虚拟机和执行机负载趋势。另外,可以用已知的方法分析所存储的交互体验测量以确定期望的交互体验值。可以由客户机软件7302的计算模块7314或管理远程机器30′对期望值和测量值进行比较。
(1053)参看图75,说明了远程机器30和远程机器软件7306的运行方法7500的一个实施例。在客户机10初始化(步骤7505)与远程机器30所建立的会话后,远程机器软件初始化(步骤7510)回声应用程序7318。远程机器30从客户机10接收到(步骤7520)消息7310。一旦接收到消息7310,确认模块7328确认(步骤7530)回声应用程序7318正在执行。从消息7310、操作系统7324或管理程序产生(步骤7540)输入事件7332,输入事件7332由回声应用程序处理以产生(步骤7550)图形回应7330。
(1054)当客户机10启动会话时,远程机器软件7306初始化模块7320初始化(步骤7510)回声应用程序7318。在一个实施例中,初始化单一回声应用程序7318。在其它实施例中,可以为在远程机器30上执行的每个应用程序7322启动一个回声应用程序7318。在这样的实施例中,可以基于应用程序测量交互体验,在另一个实施例中,为远程机器30上执行的每个虚拟机启动一个回声应用程序7318。在这些实施例中,可以基于虚拟机测量交互体验。在另一个实施例中,为执行多个应用程序7322的执行机启动单个回声应用程序7322。例如,远程机器10可以与多个客户机10通信。各个客户机10通过不同的网络路径连接到远程机器30,因而有不同的交互体验。回声应用程序7318对用户不可见。也就是说,用户不直接与回声应用程序7318交互,并且回声应用程序7318不会被显示在客户机的显示器上。在一个实施例中,回声应用程序7318是无窗体应用程序。
(1055)收发器模块7326从客户机10接收到(步骤7520)消息7310.在一个实施例中,收发器模块7326包括与网络150通信的网络接口卡。收发器模块能够格式化所接收到的消息7310以使消息7310可以被操作系统7324读取。
(1056)在产生图形回应7330之前,确认模块7328确认(步骤7530)回声应用程序7318正在操作系统分配的用户空间中执行。在有些实施例中,用户空间由原生操作系统(即执行机的操作系统)分配。在其它实施例中,用户空间由虚拟化操作系统(即由管理程序提供的虚拟机的操作系统)分配。在一个实施例中,确认模块7328向操作系统传递回声应用程序7318正在执行的指示。在一个实施例中,远程机器30在远程机器30上创建日志以表示当消息7310被接收到或者会话被初始化时回声应用程序7318没有运行。
(1057)一旦接收到回声应用程序7318的执行确认,操作系统就处理消息7310由此产生(步骤7540)输入事件7332。在一个实施例中,输入事件是WINDOWS消息,它被转发到回声应用程序7318以模仿出正常的输入事件WINDOWS消息。输入事件被设计用来使回声应用程序7318产生图形回应7330。典型的输入事件包括但不限于鼠标移动、键盘敲击、窗体生成、窗体销毁或者从回声应用程序7318产生图形回应的任意其它事件。在另一个实施例中,输入事件是自定义的“用户定义”应用程序专用WINDOWS消息。
(1058)回声应用程序7318处理输入事件7332并产生(步骤7550)图形回应7330,图形回应7330接着被转发到客户机10。在各种不同的实施例中,一旦回声应用程序7318已经完成了一组任务(例如计算、存储器使用、磁盘访问和网络资源访问),图形回应7330就被产生。回声应用程序7318可以由管理员配置以执行指定的任务。在另一个实施例中,回声应用程序7318能够完成镜像远程机器30上执行的应用程序158的执行任务并产生图形回应7330。
(1059)在一个实施例中,图形回应7330包括引起客户机10的显示器上终端用户检测不到的变化的指令。例如,图形回应7330包括改变显示器的最初的单个像素的指令。更复杂的图形回应可以用来区别由应用程序7322产生的图形或者用来检测从图形协议优化丢失的任何回应指示符。例如,像素值能够循环通过期望的值域。在另一个实施例中,图形回应导致像素位置循环通过期望的像素位置范围。图形回应的另一个例子是具有出乎意料的光栅操作的位图动画,对显示器或离屏表示(例如离屏缓冲区)。
(1060)除了测量总体的终端用户交互体验之外,在各种实施例中,可以测量并记录包括全部终端用户交互体验的子度量。通常,这些子度量包括客户机10产生并发送触发器消息7310所需要的时间、网络150延迟,远程机器30处理消息7310并产生和发送图形回应7330所需要的时间、以及客户机10处理图形回应7330所需要的时间。
(1061)参看图76和77,说明了产生客户机10子度量的方法的实施例。从客户机10的角度,产生了两种类型的子度量:a)与图76中所示产生和发送触发器消息7310有关的那些子度量,b)与图77中所示检测和处理图形回应7330有关的那些子度量。
(1062)参看图76,说明了用于捕获与产生触发器消息7310有关的子度量的方法7600的一个实施例。假定触发器消息7310是响应对输入设备7312的使用而被产生,触发器模块7304检测(步骤7610)到对输入事件的使用并标记(步骤7620)检测时间。触发器模块产生(步骤7630)消息7310并标记(步骤7640)完成消息生成的时间。触发器模块7308将消息7310转发到收发器7304,收发器7304将消息7310发送(步骤7650)到远程机器30。触发器模块7308或收发器模块7304标记(步骤7660)消息7310被发送到远程机器30的时间。
(1063)参看图77,说明了用于捕获与处理回应7330有关的子度量的方法7700的一个实施例。收发器7304从远程机器30接收到(步骤7710)图形回应7330并标记(步骤7720)接收的时间。客户机软件7302处理(步骤7730)图形回应7330。在处理图形回应7330完成时,客户机软件7302标记(步骤7740)完成时间。一旦完成,客户机软件7302就显示图形回应并检测(步骤7750)图形回应7330被显示。客户机软件7302还标记(步骤7760)检测显示器的时间。
(1064)上述标记表示某些事件发生的特定时间的动作能够以不同方式发生。在一个实施例中,由定时器模块7316在上述事件中的各个事件发生时启动并停止多个定时器。在另一个实施例中,使用单个定时器并在一个可以由计算模块7314访问的表中保存分段计时(即,在事件发生之间经过的时间)。在又一个实施例中,对每一个标记动作,时间戳被添加到消息7310和图形回应7330。在这样的实施例中,在发送消息7310之前时间戳被报告给计算模块7314,由计算模块确定各个时间戳之间的经过时间。这些经过时间代表上述不同的子度量。应该理解还可以使用经过时间的各种不同的组合。例如,可以处理与检测到输入设备的使用有关的时间戳和表示消息7310的发送的时间戳以确定客户机10产生消息7310并将其发送到远程机器30所用的总的经过时间。上面关于消息7310的生成的原则同样适用于客户机10对图形回应7330的处理。
(1065)参看图78,说明了用于捕获与产生图形回应7330有关的方法7800的一个实施例。收发器320从客户机10接收到(步骤7810)消息7310并标记(步骤7820)接收时间。操作系统7324接着产生(步骤7830)输入事件7332。远程机器软件7306标记(步骤7840)输入事件7332的产生完成的时间。回声应用程序7318接收(步骤7850)输入事件7332并且远程机器软件7306标记(步骤7860)接收到输入事件7332的时间。一旦回应应用程序7318接收到输入事件,回声应用程序7318产生(步骤7870)图形回应7330。远程机器软件7306标记(步骤7880)回声应用程序7318完成产生图形回应7330的时间。在一个实施例中,回声应用程序7318产生图形回应7330所需的时间包括回声应用程序7318处理与应用程序7322完成的那些任务类似的附加执行任务。收发器模块7326接收图形回应7330并将图形回应7330发送(步骤7890)到客户机10。远程机器软件还标记(步骤7900)发送图形回应7330的时间。
(1066)与关于客户机10说明的对事件的标记类似,可以对远程机器30采用相同的方法。在一个实施例中,由定时器模块7316在上述事件中的各个事件发生时启动和停止多个定时器。在另一个实施例中,使用单一定时器并在计算模块7314可以访问的表中保存分段时间(即,事件发生之间的经过时间)。在又一个实施例中,对每个标记动作,时间戳被添加到图形回应7330。在这样的实施例中,在接收到图形回应7330时,时间戳被报告给计算模块7314,由它确定各个时间戳之间的经过时间。这些经过时间代表上述不同的子度量。应该理解还可以使用经过时间的各种不同组合。例如,可以处理与检测到接收到消息7310有关的时间戳和表示图形回应7330的发送的时间戳以确定远程机器30产生图形回应7330并将其发送到客户机10所用的总经过时间。
(1067)现在参看图79,示出了用于提高上述系统的便利性和可用性的另一种系统。客户机-服务器计算机系统7900包括第一客户机10、第二客户机10和远程机器30。所示两个客户机仅出于说明目的。客户机-服务器计算机系统可以包括任意数量的客户机。
(1068)在一个实施例中,第一客户机10包括输入模块7908、客户机进程7910、网络模块7912和显示模块7914。输入模块7908为第一客户机10的用户提供与第一客户机10交互的接口,例如向远程机器30请求远程执行应用会话7918中的应用7916。
(1069)应用会话7918是运行在客户机30上的一个进程,提供对一个或多个资源(例如应用7916)的执行的访问或支持其执行。应用7916可以是软件程序,或者能够被计算机执行的任意组织的软件代码集,或者以专用集成电路(ASIC)、只读存储器(ROM)微芯片以及其它形式硬布线到电路。示例性应用包括但不限于Microsoft Word(来自位于Redmond,Washington的Microsoft公司)、Internet Explorer(Microsoft)、Acrobat(来自San Jose,California的Adobe Systems公司)等等。在一个实施例中,应用会话7918包括桌面应用7916,从它那里可以启动其它应用7916的执行。应用会话7918可以被嵌入其它应用会话7918中。在另一个实施例中,应用会话7918包括执行单一应用7916的实例。
(1070)在一个实施例中,输入模块7908是(例如)向用户提供一个或多个图标或菜单以让用户选择的图形用户界面。每个图标或菜单选择代表可用于远程执行的一个具体应用7916。选择一个图标或菜单就启动了将登录请求发送到远程机器30以访问那个应用7916。在另一个实施例中,图标或菜单选择不代表任何具体的应用7916,反而代表一般的远程机器30登录过程。在另一个实施例中,输入模块7908是非图形用户界面。在这个实施例中,用户可以输入命令以发送登录请求到远程机器30。输入命令可以包括键入预定字符集或在指定的输入设备(例如键盘或辅助键盘)上按下指定的按键序列。登录请求至少包括用户提供的验证信息。输入模块7908接收用户提供的验证信息的输入,验证信息可以包括任意类型的验证信息,包括但不限于用户名-密码/PIN组合、声音样本、一次性验证码、生物统计数据、数字证书、智能卡数据等等。在有些实施例中,输入模块7908与另外的硬件外设(未示出)通信以促进接受用户验证信息。在其它实施例中,输入模块7908能够接受在登录过程之外的验证信息。
(1071)输入模块7908接受验证信息并将它提供给客户机进程7910。客户机进程7910接着管理远程执行的应用会话的客户机端功能。客户机进程7910将包括验证信息和对应用会话7918的终止或断开请求的用户输入转发到远程机器30。客户机进程7910还处理来自远程机器30的数据,例如,通过将应用会话7918的图形输出转发到显示模块7014。
(1072)网络模块7912提供第一客户机10和远程机器30之间的通信。网络模块发送用户输入,例如验证信息和访问、断开或终止执行在远程机器30上的应用会话7918的请求。网络模块还从应用会话7918接收输出并将该输出转发到客户机进程7910。在一个实施例中,网络模块7912将用户输入封装到预定协议之中以发送到远程机器30,并从预定协议重新构成应用会话输出。在另一个实施例中,网络模块加密输出的传输并解密输入的传输。
(1073)显示模块7914显示来自远程执行的应用会话7918的应用7916的输出。网络模块7920为远程机器30提供通信功能。例如,网络模块7920在一个或多个数据网络或链路150上接收来自第一和第二客户机10的通信。网络模块7920还将资源输出数据发送到第一和第二客户机10。在一个实施例中,网络模块7920加密输出的通信并解密输入的通信。同样,在一个实施例中,网络模块7920将输出的通信封装在协议中进行发送并根据协议从接收到的传输中获取输入的数据。协议可以包括例如(但不限于)HTTP、独立计算体系结构(ICA)协议(由Ft.Lauderdale,Florida的CitrixSystems使用)、远程桌面协议(RDP)(Microsoft公司)或者通用网关协议(CGP)(Citrix)。远程机器30的网络模块7920与第一客户机10的网络模块7912在网络150上通信。网络150可以用多种合适技术中的任意一种实现。输入的通信,一旦被解密并从协议中获取(如果必要的话),就被转发到应用会话7918或者服务器进程7922。
(1074)服务器进程7922管理应用会话7918的执行、挂起到磁盘、执行的恢复、暂停(但不写状态到磁盘)和结束,以及那些应用会话7918到第一和第二客户机10的连接和断开。服务器进程7922能够启动新的应用会话7918,将客户机10从应用会话7918断开,检测客户机10从应用会话7918的断开,定位用户已经断开的应用会话7918,定位第一客户机10的用户从第二客户机10连接到的应用,并连接用户到断开的应用会话7918。在有些实施例中,提供应用会话7918以便于根据用户的个人偏好和访问许可配置。
(1075)服务器进程7922可以在管理程序中、由管理程序提供的虚拟机中、在虚拟机中执行的客户操作系统中、由物理机器提供的操作系统中或以上的组合中执行。
(1076)应用输出发送器7924通过网络模块7920将来自应用会话7918的输出发送到客户机10。应用输出发送器7924拦截应用会话7918的输出并确定哪个客户机10与应用会话7918相连。在其它实施例中,与应用程序7918相连的客户机10的标识在连接建立时被存储下来。如果应用会话7918与客户端相连,应用输出发送器7924通过网络模块7920将应用输出数据发送到连接的客户机10。在一个实施例中,如果应用会话没有与客户机10相连,应用输出发送器7924就丢弃应用输出数据并等待接收未来的应用输出数据。在另一个实施例中,如果应用会话7918没有与客户机10相连,应用输出发送器7924忽略所有的应用输出数据直到应用输出发送器7924接收到应用会话7918已经连接到客户机10的通知。在另一个实施例中,应用输出发送器7924将数据存储下来直到应用输出发送器7924接收到应用会话7918已经连接到客户机10的通知。在另一个实施例中,应用输出发送器7924试图发送应用输出数据到客户机10直到服务器进程7922通知应用输出发送器7924客户机10从远程机器30断开。在一个实施例中,应用输出发送器7924通过查看数据存储7926确定应用会话7918与哪个客户机10(如果有的话)。
(1077)数据存储7926包括与用户启动的应用会话有关的信息。该数据存储可以被存储在易失性或非易失性存储器中,或者被分布在多个服务器中。在有些实施例中,数据存储7926的功能由结合图86所说明的会话服务器8620提供。
(1078)在一个实施例中,远程机器30还包括规则源7928。规则源7928存储管理服务器进程7922对用户发送验证信息到远程机器30的反应的规则。在一个实施例中,规则源7928中存储的规则至少部分由系统管理员指定。在另一个实施例中,用户指定规则源7928中存储的规则的至少一部分。首选用存储户指定的规则。规则源7928可以被存储在易失性或非易失性存储器中,或者分布在多个服务器中。
(1079)规则源7928中存储的一个规则可以要求或禁止自动连接到断开的应用会话7918。另一个规则可以要求或禁止自动连接到当前与不同客户机10相连的活动的应用会话7918。又一规则可以在请求在安全网络内部访问的客户机10上进行连接和/或连接队列。又一规则可以只允许在接收到用户批准后才能连接到应用会话7918。另一规则可以只允许在断开后的预定时间进行连接。又一规则只允许连接到包括特定应用7916的应用会话7918。
(1080)验证模块7930负责验证试图登录到远程机器30的用户。验证模块7930接收到从第一客户机10发来的用户提供的验证信息。验证模块7930接着根据用户提供的验证信息验证用户。成功验证之后,验证模块7930将验证过程的结果(例如,允许或拒绝访问,用户的系统ID,客户机计算机ID,用户访问权限等)发送到服务器进程7922。
(1081)在一个实施例中,远程机器30的上述模块和进程(即,网络模块7920,服务器进程7922,应用输出发送器7924以及验证模块7930)和客户机10的上述模块和进程(即,输入模块7908,客户机进程7910,网络模块7912和显示模块7914)都被实现为可以在若干操作系统(包括但不限于,Microsoft公司的Windows操作系统家族,Cupertino,California的Apple Computer公司的MacOS操作系统家族,基于Unix的操作系统,例如Sunnyvale,CA的Sun Microsystems的Solaris)之一上的可执行软件。在其它实施例中,一个或多个模块或进程被以硬件实现为专用集成电路(ASIC)、只读存储器(ROM)设备或其它数字硬件电路。
(1082)由于不完整的网络连接或者用户自己未能终止他们的应用会话7918而导致的应用会话7918的无意终止会带来用户困难。本发明的一个实施例通过将断开(它就好像用户没有完成用应用会话7918工作一样被看待)和终止(它被假定为对应用会话的有意结束)区分开并将应用会话7918与用户而不是客户机联系起来而限制这些困难。当用户结束使用在应用会话7918中运行的应用7916时,用户可以终止应用会话7918。终止通常涉及表示服务器应该不再维护应用会话7918的用户的确认性输入。这样的确定性用户输入可以包括从菜单选择“Exit”选项,点击图标等等。作为对服务器进程7922接收的终止请求的反应,应用会话7918以及其中的任何应用7916的执行被停止。在一个实施例中,与该应用会话7918有关的数据也被从数据存储7926移除。
(1083)另一方面,断开(不管是有意的或无意的)不会导致应用会话7918的终止。因为在应用会话7918中运行的一个或者多个应用正在远程机器30上执行,到第一客户机10的连接通常不必继续执行应用7916,并且在一个实施例中应用7916能够在等待用户连接同时继续执行。在一个替代实施例中,在用户断开后,服务器进程7922停止在应用会话7918中运行的应用7916的执行。也就是说,服务器进程7922停止应用7916的进一步执行,并且服务器进程7922存储应用7916的运行状态以及应用7916正在处理的任何数据。在进一步的实施例中,服务器进程7922可以在用户断开后有选择地停止特定应用7916的执行。例如,在一个实施例中,服务器继续执行应用7916一个固定时间周期,如果用户在这个时间段内没有连接上,服务器进程7922就终止应用7916。在另一个实施例中,服务器终止没有用户输入就不能继续执行的指定应用会话7918。在上述各个实施例中,如果第一客户机10的用户在运行第一客户机10、第二客户机10或第三客户机的同时从远程机器30断开然后再连接到远程机器30,服务器进程7922可以将由该用户运行的客户机连接到与该用户相关联的一个或多个先前启动的、没有终止的应用会话118,并重新初始化任何被停止的应用7916的执行。
(1084)在一个实施例中,服务器进程7922检测到断开。用户可以有意手动地指令服务器将应用会话7918从用户正在与其通信的客户机10断开。例如,在一个实施例中,应用会话7918为断开(与上述终止区分开)提供用户能够选择的菜单选项。服务器进程7922还能够检测到无意识的断开。例如,在一个实施例中,当由网络模块7920发送到客户机10的预定数量的数据分组没有被客户机10确认时,远程机器30的网络模块7920通知服务器进程7922。在另一个实施例中,客户机10周期性地发送信号到远程机器30以确认连接仍然完好。如果服务器进程7922检测到预定数量的来自客户机10的期望的确认信号还没有到达,服务器进程7922就确定客户机10已经断开。如果服务器进程7922检测到用户已经从应用会话7918有意识或无意识地断开,就修改数据存储7926中与断开的应用会话7918有关的表项以反应该断开。
(1085)参看图80,在一个实施例中,提供对应用会话的远程访问的方法8000从远程机器30的网络模块7920接收到与用户相关联的验证信息(步骤8002)开始。验证信息可以包括多种类型的验证信息,包括但不限于用户名、客户机名、客户机地址、密码、PN、语音样本、一次性验证码、生物统计数据、数字证书、票据等等以及它们的组合。验证信息的形式可以是来自用户的登录请求。如上所述,登录请求可以由用户通过客户机10的输入模块7908而启动。客户机的网络模块将该请求转发到服务进程7922。
(1086)在一个实施例中,在接收到请求之后,服务器进程7922将用户提供的验证信息转发到验证模块7930,由它验证用户的标识。服务器的验证模块7930能够完成验证自身和/或与一个或多个其它模块或计算机(例如域服务器、验证服务等等)合作。成功的验证导致验证模块将用户的标识信息(例如用户名或ID)发送到服务器进程7922。
(1087)响应接收到与用户相关联的验证信息,服务器进程7922标识出与在远程机器30上正在执行、被停止、或者被挂起到磁盘的用户相关联的任何断开的应用会话7918(步骤8004)。在一个实施例中,服务器进程7922在接收到验证信息后标识出应用会话7918。在另一个实施例中,服务器进程在验证模块7930验证了用户的标识之后,响应接收到验证信息而标识出应用。在一个实施例中,服务器进程7922通过查看针对与该用户有关的会话的数据存储7926而确定是否存在这样的断开的应用会话7918,数据存储7926在有些实施例中是持久数据存储。例如,断开的应用会话7918可能已经被该应用会话7918的用户的指示断开,导致服务器进程7922通过(例如)将数据存储7926中该应用会话7918的状态修改为“断开”并删除数据存储7926中与该应用会话7918相连接的客户机10的标识而从该应用会话7918断开。在另一个实施例中,断开是无意识的。无意识的断开导致服务器进程7922对数据存储7926进行和有意识的断开一样的修改。
(1088)在标识出任何断开的应用会话7918(步骤8004)之后,在一个实施例中,服务器进程7922提示用户指示是否期望连接。如果不希望连接,服务器进程7922提示用户指示断开的应用会话7918是否应该保持断开,或者该应用会话是否应该被挂起到磁盘、暂停或终止。在一个替代实施例中,服务器进程7922查看规则源7928中存储的规则来确定是否允许和/或需要连接。
(1089)在一个替代实施例中,用户通过利用单一用户界面单元(例如点击标记为“登录”的图标)而连接到远程机器30、服务器进程7922以及任何断开的应用会话。在这个实施例中,激活单一用户界面将自动连接用户到任何断开的应用会话7918。
(1090)在一个实施例中,客户机可以被配置用来在用户连接时自动发送验证信息。如果连接被允许,或者是由用户同意或者是自动的,服务器进程7922就将用户连接到断开的应用会话(步骤8006)。在一个实施例中,连接包括修改数据存储7926中的条目以表示用户连接到应用会话7918并表示用户从哪个客户机10连接到服务器。在连接后,远程机器30恢复从应用输出发送器7924发送应用输出数据到客户机10(步骤8008)。在另一个实施例中,应用输出发送器在发送应用输出之前查看规则源7928以确定允许这样的发送。
(1091)当用户先前已经连接到服务器(然后又从服务器断开)时,应用会话主要与用户而不是用户所操作的客户机10相关联。结果,规则允许情况下,用户能够从第一客户机10、第二客户机10或任意其它客户机重新连接到应用会话7918。在其它实施例中,可以给予客户机10的用户更多选项,例如“重新连接到不在虚拟机上执行的所有会话”,“挂起在虚拟机上执行的所有会话”,“重新连接当前提供的所有会话”或者“重新连接到所有未挂起的会话”。
(1092)参看图81,即使会话没有被断开(例如,处于活动状态),它也可以用来将会话从一个客户机转移到另一个客户机。例如,可能应用会话被断开,但服务器还没有检测到该断开。可能用户故意让会话运行,但现在想要从另一个位置访问该会话。
(1093)用于将活动的应用会话7918从第一客户机10转移到第二客户机10的方法8100从网络模块7920接收到来自用户的验证信息开始,例如以登录请求的形式。在一个实施例中,用户通过输入模块7908提交验证信息。验证信息可以由第二客户机10的网络模块7912发送到远程机器30。远程机器30的网络模块7920可以将请求转发到服务器进程7922。
(1094)服务器进程7922接收到用户提供的验证信息(步骤8102)。在一个实施例中,服务器进程7922将用户提供的验证信息转发到验证模块7930,验证模块7930使用上述多种验证技术中的任意一种验证用户的标识。成功的验证导致验证模块将用户的标识信息发送到服务器进程7922。
(1095)在接收到验证信息(步骤8102)之后,服务器进程查看数据存储7926以标识与该用户相关联的但与不同客户机(例如,第一客户机10,作为说明性例子)相连的活动的应用会话7918(步骤8104)。在一个实施例中,如果服务器进程7922标识出任何这样的活动应用会话7918,服务器进程自动将该应用会话118从第一客户机10断开(步骤8106)并将该应用会话118连接到当前客户机10(步骤8108)。在一个实施例中,用户能够触发数据存储的自动查询以及与单一用户界面单元的选择的后续连接。
(1096)在一个替代实施例中,服务器进程7922提示用户该用户是否想让该活动的应用会话7918连接到当前客户机10。如果用户拒绝转移活动的应用会话中的一个或多个,服务器进程7922就提示用户保持该应用会话118活动、挂起该应用会话到磁盘、暂停该应用会话、或者终止该应用会话118。在一个替代实施例中,服务器进程7922在转移活动的应用会话118之前查看规则源7928中存储的规则以确定转移活动的应用会话118是否被允许。
(1097)如果对应用会话118的转移被允许并且转移是自动的或者由用户请求,在一个实施例中服务器进程7922通过修改数据存储7926中为该应用会话7918维护的表项以将所存储的客户机10的标识替换为当前客户机(即客户机10)的标识而完成断开(步骤8106)和连接(步骤8108)。在连接到当前客户机10之后,应用输出发送器7924开始将应用输出发送到当前客户机(步骤8110)。在另一个实施例中,应用输出发送器在开始发送应用输出之前查看规则源7928以确保这样的发送是被允许的。
(1098)应该理解可以组合图80和81的方法以允许客户机被连接到与用户相关联的断开的、挂起的、暂停的和活动的会话。另外,在转移或重连之前,活动的和/或断开的会话可能已经被连接到相同或多个不同的客户机。
(1099)参看图82,如上所述,远程机器30可以被实现为机器群组38。在一个实施例中,机器群组38包括若干远程机器30、30′和30″,它们被链接到一起并被共同管理。若干客户机10、10′和10″(通常是很多计算机)可以在网络150上连接到机器群组38。服务器30、30′和30″共享放在机器群组38上的计算负载。例如,如果用户正在访问三个应用会话8218a、8218b和8218c,各个应用会话可以在不同的服务器30、30′和30″上执行。同样,如果用户正在通过单个应用会话8218a、8218b或8218c访问两个或更多应用7916,机器群组38的服务器进程7922可以分配一个应用在服务器30上执行,分配另一个应用在服务器30′上执行。在机器群组配置中,服务器的模块120、122和124,数据存储7926以及规则源7928(图79)可以被存储在单一服务器30、30′或30″上,或者分布在服务器30、30′和30″之间。
(1100)关于在断开之后或者不断开但改变客户机10、10′和10″之后连接到机器群组38,服务器进程7922将服务器30、30′和30″看作单个服务器。也就是说,如果机器群组正在独立的服务器30、30′和30″上执行用户的应用会话8218a、8218b和8218c,并且用户从机器群组38断开或者改变用户正在用其工作的客户机10、10′和10″,在随后连接到机器群组38之后,机器群组38的服务器进程7922能够自动将用户的客户机10、10′或10″连接到在所有三个服务器30、30′和30″上执行的所有三个应用会话8218a、8218b和8218c。
(1101)在该系统的一个实施例中,第一客户机10(它在这个例子中是一个移动手持计算机)的用户通过无线调制解调器登录到机器群组38并请求两个应用会话8218a和8218b。机器群组38的服务器进程7922启动第一服务器30上的第一应用会话8218a,启动第二服务器30′上的第二应用会话8218b。当第一计算机10的用户进入电梯时,无线调制解调器丢失与机器群组的连接。机器群组38的服务器进程7922确定用户被断开,并且服务器进程7922相应地更新数据存储7926。
(1102)用户接着从第二客户机10′登录到机器群组38,第二客户机10′在这个例子中是他的办公室中的桌面计算机。服务器进程7922查看数据存储7926并确定那两个断开的应用会话8218a和8218b与该用户相关联。服务器进程7922(假定没有相反的规则)自动将第二客户机10′分别连接到在服务器30和30′上执行的应用会话8218a和8218b。
(1103)用户然后离开第二客户机10′而不与机器群组38断开,并从第三个客户机10″(例如同事的笔记本电脑)登录到机器群组38。在从第三客户机10″登录之后,服务器进程查看数据存储7926并确定该用户与连接到第二客户机10的两个活动的应用会话8218a和8218b相关联。服务器进程7922(假定没有相反的规则)接着自动将应用会话8218a和8218b二者从第二客户机10′断开,并将应用会话8218a和8218b二者连接到第三客户机10″。
(1104)用户接下来为每个应用会话8218a和8218b选择断开选项。服务器进程7922更新数据存储7926以表示应用会话8218a和8218b已经被断开连接。用户接着从第二客户机10′登录到机器群组38。服务器进程7922查看数据存储7926并确定那两个断开连接的应用会话8218a和8218b与该用户相关联。服务器进程7922(假定没有相反的规则)自动将断开的应用会话8218a和8218b连接到第二客户机10′。
(1105)现在参看图83,所示流程图说明了用于提供对由虚拟操作系统提供的计算环境的远程访问的方法中所采用的步骤的一个实施例。简单地说,接收与客户机10的用户相关联的验证信息(步骤8302)。根据接收到的验证信息,标识出由虚拟操作系统提供的并且已经与该用户相关联的计算环境(步骤8304)。在客户机10和标识出的计算环境之间建立连接(步骤8306)。
(1106)在有些实施例中,上面结合图79-92说明的方法和系统可以被实现在包括虚拟机的系统中。在有些实施例中,客户机10已经建立了到提供对客户机10所请求的资源的访问的物理机器的连接。在这个实施例中,客户机10可以如上结合图79-82所述与断开的应用会话相连并接收应用输出。
(1107)在其它实施例中,客户机10已经建立了到提供对资源的访问的虚拟机的连接。在其中一个这样的实施例中,客户机10可以被重新连接到在该虚拟机上执行的应用会话。在另一个这样的实施例中,客户机10可以被重新连接到在虚拟机提供的计算环境中执行的多个应用会话。在又一个这样的实施例中,客户机10可以被重新连接到包括在由虚拟机提供的计算环境中执行的多个应用程序的应用会话。在又一个这样的实施例中,客户机10可以被重新连接到包括由虚拟机提供的多个计算环境的应用会话。
(1108)仍然参看图83,更详细地看,接收与客户机10的用户相关联的验证信息(步骤8302)。在一个实施例中,响应接收到的验证信息,收集代理收集与该客户机10有关的信息。在有些实施例中,根据接收到的验证信息验证客户机10的用户。
(1109)根据接收到的验证信息,标识出由虚拟化操作系统提供并且已经与该用户相关联的计算环境(步骤8304)。在有些实施例中,验证信息包括如上述结合图7A和7B产生的访问控制决策。如上所述,客户机10请求对资源的访问,收集代理收集与客户机10有关的信息,策略引擎进行访问控制决策。在其中一个这样的实施例中,根据接收到的验证信息,标识出已经与该用户相关联的计算环境。在另一个这样的实施例中,在客户机10和那个标识出的计算环境之间建立连接。在又一个这样的实施例中,充当中介服务器的远程机器30接收到包括访问控制决策的验证信息,并且建立客户机10和远程机器30′之间的连接,所述远程机器30′充当向客户机10的用户提供对所请求的资源的访问的执行机器。
(1110)在一个实施例中,根据接收到的验证信息和收集到的客户机信息,标识出由虚拟操作系统提供的并且已经与该用户相关联的计算环境。在另一个实施例中,查看与至少一个计算环境相关联的所存储的数据以根据接收到的验证信息标识出由虚拟操作系统提供的并且已经与该用户相关联的计算环境。在又一个实施例中,根据接收到的验证信息,标识出由第一虚拟化操作系统提供的第一计算环境和由第二虚拟化操作系统提供的第二计算环境,该第一和第二计算环境已经与该用户相关联。在又一个实施例中,根据接收到的验证信息,标识出由在第一服务器上执行的第一虚拟化操作系统提供的第一计算环境和由在第二服务器上执行的第二虚拟化操作系统提供的第二计算环境,该第一和第二计算环境已经与该用户相关联。
(1111)在客户机10和标识出的计算环境之间建立连接(步骤8306)。在一个实施例中,根据规则在客户机10和标识出的计算环境之间建立连接。在另一个实施例中,根据应用到所接收的验证信息和收集到的客户机信息的一个策略,在客户机10和标识出的计算环境之间建立连接。
(1112)在有些实施例中,接收到从标识出的计算环境断开客户机的请求。在其中一个这样的实施例中,该客户机和该标识出的计算环境之间的连接被终止。在另一个这样的实施例中,更新与该标识出的计算环境相关联的数据记录以表示该客户机被断开。在又一个这样的实施例中,继续该标识出的计算环境的执行。尽管客户机从该标识出的计算环境被断开,但该执行可以继续。
(1113)在有些实施例中,接收到与用户相关联的验证信息。在其中一个这样的实施例中,用户使用第二客户机10′。在另一个这样的实施例中,根据接收到的验证信息,标识出由虚拟化操作系统提供的并且已经与该用户相关联的计算环境。在又一个这样的实施例中,建立第二客户机10′和标识出的计算环境之间的连接。在又一个这样的实施例中,终止第一客户机10和标识出的计算环境之间的连接。
(1114)现在参看图84,所示流程图说明了在提供对多个应用会话的访问的方法中所采用的步骤的一个实施例。简单地说,在客户机10上接收到客户机10的一个用户对单个用户界面单元的选择(步骤8410)。根据该用户界面单元选择,发送与该用户相关联的验证信息(步骤8412)。根据发送的验证信息,标识由虚拟操作系统提供的并且已经与该用户相关联的计算环境(步骤8414)。在该客户机和标识出的计算环境之间建立连接。
(1115)在客户机10接收到客户机10的用户对单个用户界面单元的选择(步骤8410)。根据该用户界面单元选择,发送与该用户相关联的验证信息(步骤8412)。在一个实施例中,收集代理根据接收到的信息收集与该客户机有关的信息。在另一个实施例中,如同结合图7A和7B所述,策略引擎根据收集到的信息做出访问控制决策。在有些实施例中,根据接收到的验证信息和收集到的客户机信息,标识出由虚拟化操作系统提供的并且已经与该用户相关联的计算环境。在其它实施例中,根据接收到的验证信息验证该用户。
(1116)根据发送的验证信息,标识出由虚拟化操作系统提供的并且已经与该用户相关联的计算环境(步骤8414)。在一个实施例中,根据用于接收到的验证信息和用于收集到的客户机信息的一个策略建立客户机和标识出的计算环境之间的连接。在另一个实施例中,根据接收到的验证信息,标识出由第一虚拟化操作系统提供的第一计算环境和由第二虚拟化操作系统提供的第二计算环境,该第一和第二计算环境已经与该用户相关联。在又一实施例中,根据接收到的验证信息,标识出由执行在第一服务器上的第一虚拟化操作系统提供的第一计算环境和由执行在第二服务器上的第二虚拟化操作系统提供的第二计算环境,该第一和第二计算环境已经与该用户相关联。在有些实施例中,根据接收到的验证信息,查看与至少一个计算环境相关联的所存储的数据以标识出由虚拟化操作系统提供的并且已经与该用户相关联的数据。
(1117)建立客户机和标识出的计算环境之间的连接(步骤8416)。在一个实施例中,根据规则建立客户机和标识出的计算环境之间的连接。在有些实施例中,接收到的与客户机10相关联的验证信息包括如同结合图7A和7B所述所产生的访问控制决策。在其中一个这样的实施例中,根据接收到的验证信息,标识出已经与该用户相关联的计算环境。在另一个这样的实施例中,充当中介代理服务器的远程机器30接收到包括访问控制决策的验证信息,并且在客户机10和充当向客户机10的用户提供对所请求的资源的访问的执行机器30′之间建立连接。
(1118)在有些实施例中,接收到将客户机从标识出的计算环境断开的请求。在其中一个这样的实施例中,客户机和标识出的计算环境之间的连接被终止。在另一个这样的实施例中,与该标识出的计算环境相关联的数据记录被更新以表示客户机被断开。在又一个这样的实施例中,所标识的计算环境的执行被继续。尽管用户已经终止了客户机和该标识出的计算环境之间的连接,但其执行仍然可以继续。
(1119)在有些实施例中,接收到与使用第二客户机10′的用户相关联的验证信息。在其中一个这样的实施例中,根据接收到的验证信息,标识出由虚拟操作系统提供的并且已经与该用户相关联的计算环境。在另一个这样的实施例中,建立第二客户机10′和标识出的计算环境之间的连接。在又一个这样的实施例中,第一客户机10和该标识出的计算环境之间的连接被终止。
(1120)现在参看图85,所示框图说明了用于提供对计算环境的远程访问的服务器的一个实施例。简单地说,远程机器30是一个服务器,包括网络模块7920、数据存储7926和代理进程8532。在有些实施例中,远程机器30包括上面结合图79所说明的组件、模块和子系统。
(1121)网络模块7920接收与操作客户机(例如客户机10)的用户相关联的验证信息。在有些实施例中,网络模块7920与验证模块通信,验证模块用于根据接收到的验证信息验证用户。在其它实施例中,网络模块7920包括验证模块。
(1122)数据存储7926包含与该用户相关联的计算环境的标识符。在一个实施例中,数据存储7926包含与该用户相关联的第一计算环境的第一标识符和与该用户相关联的第二计算环境的第二标识符。在另一个实施例中,第一计算环境在第一远程机器30上执行,第二计算环境在第二远程机器30′上执行。在有些这样的实施例中,代理进程8532将来自数据存储的列表发送到客户机10。
(1123)根据接收到的信息,代理进程8532将客户机10连接到数据存储7926中列举出的所标识的计算环境。在一个实施例中,代理进程8532根据规则将客户机10连接到标识出的计算环境。在另一个实施例中,代理进程8532根据接收到的断开信号将客户机10从标识出的计算环境断开。在又一实施例中,代理进程8532更新与标识出的计算环境相关联的数据记录以表示客户机10被从该标识出的计算环境断开。
(1124)在有些实施例中,远程机器30包括收集代理和策略引擎。在其中一个这样的实施例中,收集代理收集与客户机10有关的信息。在另一个这样的实施例中,收集代理包括至少一个脚本。在又一个这样的实施例中,收集代理包括字节码。在又一个这样的实施例中,客户机代理通过在客户机10上运行至少一个脚本而收集信息。在有些这样的实施例中,收集代理在客户机10上执行。在其它这样的实施例中,收集代理被发送到客户机10。在其中一个这样的实施例中,策略引擎将收集代理发送到客户机10。
(1125)在有些这样的实施例中,远程机器30包括策略引擎和代理进程8532,策略引擎接收收集到的信息并根据对接收到的信息的策略应用而分配多个访问级别之一,代理进程8532根据所分配的访问级别将客户机连接到数据存储中列举的所标识的计算环境。在一个实施例中,策略引擎还包括存储可配置策略的数据库。在另一个实施例中,策略引擎将确定收集代理收集的信息的类型的指令发送到收集代理。
(1126)在其它这样的实施例中,策略引擎还包括登录代理。在其中一个这样的实施例中,登录代理从收集代理接收所收集的信息。在另一个这样的实施例中,登录代理为策略引擎标识从收集代理接收到的验证信息。在又一个这样的实施例中,策略引擎还包括多个登录代理。在又一个这样的实施例中,该多个登录代理中至少有一个驻留在客户机10可以从其发送资源请求的每个网络域中。在有些这样的实施例中,客户机10将资源请求发送到特定的登录代理。在其它实施例中,登录代理为策略引擎标识出客户机10从其发送资源请求的网络域。
(1127)在有些实施例中,虚拟机群组提供将会话从一个请求机器迁移到第二请求机器的功能。在其中一个这样的实施例中,虚拟机群组提供对迁移会话所需要的信息的访问。在另一个这样的实施例中,管理程序提供迁移虚拟机会话的功能。在有些实施例中,管理程序实现众所周知的技术,包括用于将与虚拟机会话相关联的会话信息从一个执行机器移到第二执行机器的预拷贝、后拷贝和延迟拷贝(lazy-copying)。
(1128)在有些实施例中,虚拟机器群组与图86和87中所说明的系统通信,并提供在虚拟机会话中迁移应用会话的功能。
(1129)参看图86,说明了依据本发明构造的网络的一个实施例,它包括客户机10、收集代理704、策略引擎706、策略数据库708、条件数据库710、客户机10′、会话服务器8620、存储的应用数据库8622、远程机器30′、第一数据库8628、远程机器30″和第二数据库8632。简单地说,当客户机10将对应用程序的访问请求206发送到策略引擎706时,收集代理704与客户机10通信,获取与客户机10有关的信息,并将客户机信息714发送到策略引擎706。策略引擎706做出访问控制决策,如图7A和7B中所述。客户机10接收到与客户机10相关联的可用应用的列表。
(1130)在有些实施例中,会话服务器8620建立客户机10和与该客户机10相关联的多个应用会话之间的连接。在其中一个这样的实施例中,建立了到提供对应用会话在其中执行的计算环境的访问的虚拟机的连接。在其它实施例中,策略引擎706确定客户机10拥有获取包括应用在内的多个应用文件并在本地执行应用程序的授权。在其中一个这样的实施例中,远程机器30′存储应用会话数据和包括应用程序的多个应用文件。在另一个这样的实施例中,客户机10与存储应用会话数据和包括应用程序的多个应用文件的远程机器30′建立应用流会话。
(1131)现在参看图87,所示流程图说明了会话服务器8620为了向客户机10提供对它的相关应用会话的访问而采用的步骤的一个实施例。会话服务器8620从包含(策略引擎706所做的)访问控制决策的策略引擎706接收到与客户机10有关的信息(步骤8780)。在一个实施例中,该信息还包括客户机信息714。在另一个实施例中,该信息包括在本地执行该应用程序的授权。在又一个实施例中,该信息包括提供对应用会话在其中执行的计算环境的访问的授权。
(1132)在有些实施例中,策略引擎706标识已经与客户机10相关联的多个应用会话。在其它实施例中,会话服务器8620标识与客户机10相关联的所存储的应用会话(步骤8782)。在有些这样的实施例中,会话服务器8620在从策略引擎706接收到信息之后自动标识出所存储的应用会话。在一个实施例中,所存储的应用数据库8622驻留在会话服务器8622上。在另一个实施例中,所存储的应用数据库8622驻留在策略引擎706上。
(1133)所存储的应用数据库8622包含与机器群组38中的多个机器30相关联的数据,机器群组38执行应用会话或提供对应用会话数据和包括应用程序的应用文件的访问,或者提供对应用会话可以在其中执行的计算环境的访问,包括可以活动、被挂起、被暂停或被断开的虚拟机。在有些实施例中,标识出与客户机10相关联的应用会话需要查看与一个或多个机器30相关联的所存储的数据。在有些这样的实施例中,会话服务器8620查看与一个或多个机器30相关联的所存储的数据。在其它这样的实施例中,策略引擎706查看与一个或多个机器30相关联的所存储的数据。在有些实施例中,第一应用会话运行在远程机器30′上,第二应用会话运行在远程机器30″上。在其它实施例中,所有应用会话都运行在机器群组38中的单个远程机器30上。在其它实施例中,一个或多个应用会话运行在(执行提供对应用会话在其中运行的计算环境的访问的虚拟机的)远程机器30上。
(1134)会话服务器8620包括与用户启动的应用会话有关的信息。会话服务器可以被存储在易失性或非易失性存储器中,或者被分布在多个服务器上。表4示出了在示范性的会话服务器8620的一部分中包括的数据:
 
应用会话 应用会话1 应用会话2 应用会话3
用户ID 用户1 用户2 用户1
客户机ID 第一客户机 第一客户机
客户机地址 172.16.0.50 172.16.0.50
状态 活动 断开 活动
应用 WordProcessor(字处 DataBase(数据库) Spreadsheet(电子表格)
 
理器)
进程号 1 3 2
服务器 服务器A 服务器A 服务器B
服务器地址 172.16.2.55 172.16.2.55 172.16.2.56
在虚拟机中执行 是(实例ID#)
表4
(1135)表4中的会话服务器8620包括将各个应用会话与启动该应用会话的用户、该用户当前从其连接到远程机器30′的客户机10(如果有的话)的标识及IP地址关联在一起的数据。会话服务器8620还包括各个应用会话的状态。该数据可以包括提供应用会话在其中执行的计算环境的虚拟机的标识。应用会话状态可以是“活动”(意味着用户连接到该应用会话),或“断开”(意味着用户没有与该应用会话相连)。在一个替代实施例中,应用会话状态还可以被设置为“执行-断开”(意味着用户已经从应用会话断开,但该应用会话中的应用仍然在执行),或者“停止-断开”(意味着用户断开,并且应用会话中的应用不再执行,但已经存储了断开之前那一刻它们的运行状态)。会话服务器8620还存储了指示正在各个应用会话中执行的应用的信息以及指示服务器上各个应用的进程的数据。对于会话基于管理程序的实施例,会话服务器8620可以存储管理程序域的标识或虚拟机实例标识符。在远程机器30′是机器群组38的一部分的实施例中,除了表4的最后3行中标识机器群组38中各个应用在其上执行的远程机器30以及该远程机器30的IP地址的数据之外,会话服务器8620是动态存储的至少一部分。在可选实施例中,会话服务器8620包括各个应用会话中的各个应用的状态指示符。
(1136)例如,在表4的例子中,有三个应用会话,应用会话1、应用会话2和应用会话3。应用会话1与当前在使用终端1的用户1相关联。终端1的IP地址是172.16.2.50。应用会话1的状态是“活动”,并且在应用会话1中,字处理程序正在被执行。字处理程序在服务器A上以进程编号1执行。服务器A的IP地址是172.16.2.55。表1中的应用会话2是断开的应用会话7918的一个例子。应用会话2与用户2相关联,但应用会话2没有与客户机10或20相连。应用会话2包括在服务器A(IP地址152.16.2.55)上以进程编号3执行的数据库程序。应用会话3是用户如何能够与在不同远程机器30上运行的应用会话交互的一个例子。和应用会话1中一样,应用会话3与用户1相关联。应用会话3包括在服务器B(IP地址152.16.2.56)上以进程编号2执行的电子表格程序,而应用会话1中包括的应用程序会话在服务器A上执行。尽管在应用会话1中只说明了一个应用会话1,但应用会话可以包含多个正在执行的资源,包括在计算环境中以及在虚拟机中执行的计算环境中执行的应用会话。
(1137)在另一个例子中,用户可以通过在远程机器30′(例如服务器A)上执行的应用会话访问第一应用程序,同时跨越应用流会话与第二个远程机器30″(例如服务器B)通信以从该第二远程机器30″获取第二应用程序在本地执行。客户机10的用户可能已经获取了在本地执行第二应用程序的授权但未能满足在本地执行第一应用程序的先决条件。
(1138)在一个实施例中,会话服务器8620被配置用来接收断开与客户机10相关联的应用会话的断开请求并根据该请求断开应用会话。会话服务器8620在将客户机10从应用会话断开之后继续执行应用会话。在这个实施例中,会话服务器8620访问所存储的应用数据库8622并更新与各个断开的应用会话相关联的数据记录,以使这些记录表示与客户机10相关联的应用会话被断开。
(1139)在接收到与连接到网络的客户机10相关联的验证信息之后,会话服务器8620查看所存储的应用数据库8622以标识出与客户机10的用户相关联、但与不同客户机相连(例如客户机10,如果验证信息与客户机10′相关联)的任何活动的应用会话。在一个实施例中,如果会话服务器8620标识出任何这样活动的应用会话,会话服务器8620自动将这些应用会话从客户机10断开并将它们连接到当前客户机10′(步骤8784)。在有些实施例中,接收到的验证信息将限制客户机10可以连接到的应用会话。在其它实施例中,接收到的验证信息授权某个应用程序在客户机10′上执行,而该授权可能已经被拒绝给予客户机10。在一个这样的实施例中,会话服务器8620可以向客户机10提供用于获取该应用程序用于二次执行的访问信息。在其它实施例中,接收到的验证信息授权应用程序在由虚拟机提供的计算环境中的执行。
(1140)现在参看图88,所示框图说明了由虚拟机提供对计算环境的访问的一种系统的一个特定实施例。客户机10上的客户机代理8802连接到远程机器30。在有些实施例中,客户机代理8802建立与会话管理组件1300的连接。在其它实施例中,会话管理组件1300由客户机10所连接的远程机器30执行。在一个实施例中,会话管理组件1300查询虚拟机管理组件1200,以获取要为当前用户运行的虚拟机的配置和虚拟磁盘文件的位置以及该虚拟机可以在其中执行的管理程序的位置。在有些实施例中,标识出的管理程序和虚拟机在远程机器30上执行。在其它实施例中,标识出的管理程序和虚拟机在远程机器30′上执行。在一个实施例中,会话管理组件以全屏模式在指定的管理程序中启动该虚拟机。在另一实施例中,一个先前执行的虚拟机被分配给客户机10。
(1141)在有些实施例中,虚拟机服务组件8804在由远程机器30上的虚拟机提供的计算环境中执行。在其中一个这样的实施例中,虚拟机服务组件8804接收到用来在会话管理组件1300和虚拟机服务组件8804之间建立通信信道所使用的IP地址和端口。在一个实施例中,这个通信信道被用来将与会话有关的配置信息从客户机代理会话传递到虚拟机会话。在有些实施例中,该配置信息包括显示设置和变化、客户机驱动器信息以及让客户机10的用户能够单点登录的验证数据。
(1142)在有些实施例中,一旦该通信信道被建立并且与初始会话有关的信息被传递到虚拟机服务组件8804,虚拟机服务组件8804就用由用户提供给客户机代理8802的相同证书(如果有的话)自动将用户连接到一个计算环境,例如客户操作系统。在其中一个这样的实施例中,虚拟机服务组件8804自动重新配置客户操作系统的显示设置以匹配客户机8802的显示设置。虚拟机向虚拟设备产生图形和声音输出,虚拟设备将这些输出直接或间接地送到客户机10上的客户机代理8802。虚拟机接收到从客户机10重定向的音频输入、鼠标和键盘设备数据。当虚拟机被关闭或挂起时,会话管理组件1300终止客户机代理会话。
(1143)现在参看图95,所示框图说明了用于通过第一远程机器上的第二客户机代理向第一客户机代理提供由在第二远程机器提供的虚拟机中执行的资源产生的输出数据的系统的一个实施例。客户机10上的客户机代理8802连接到远程机器30并请求对资源的访问。在一个实施例中,该远程机器30是中介机器。在另一个实施例中,该远程机器30决定通过虚拟机提供对所请求的资源的访问。在又一个实施例中,该远程机器30标识出通过在其上执行虚拟机而提供对所请求的资源的访问的一个远程机器30′。远程机器30′可以被称为执行机器30′。
(1144)在一个实施例中,客户机10使用表示层协议(例如ICA、RDP、VNC或X11)与远程机器30通信。在有些实施例中,实现了协议栈以能够在客户机10和远程机器30之间通信,如上面结合图8的步骤816和图24所说明的那样。
(1145)在一个实施例中,远程机器30上的代理8802′建立到远程机器30′的连接。在另一个实施例中,远程机器30使用表示层协议(例如I CA、RDP、VNC或X11)与远程机器30′通信。在又一实施例中,远程机器30使用RDP等表示层协议建立与远程机器30′的连接并从在远程机器30上执行的终端服务会话与远程机器30′通信。在有些实施例中,实现了协议栈以能够在远程机器30上的代理8802′和远程机器30′之间通信,如上面结合图8的步骤816和图24所说明的那样。
(1146)在一个实施例中,如图95所示,远程机器30′通过提供对虚拟环境的访问或者提供对应用流服务的访问(如同结合图8所述)而提供对所请求的资源的访问。在另一个实施例中,远程机器30′在执行在远程机器30′上的虚拟机中执行该资源。在又一个实施例中,远程机器30′使用表示层协议将执行该资源所产生的输出数据发送到远程机器30。在另一实施例中,远程机器30使用表示层协议将从远程机器30′接收到的输出数据转发到客户机10。在有些实施例中,虚拟机在远程机器30′上执行。在其它实施例中,虚拟机在远程机器30″上执行。
(1147)在一个实施例中,远程机器30′提供对发布的桌面计算环境的访问。在另一个实施例中,远程机器30′提供对从客户机10可用的多个发布的桌面计算环境的列表中选择出的一个发布的桌面计算环境的访问。在有些实施例中,如结合对虚拟机管理组件1200的说明所描述的那样,虚拟机可以提供对标准运行环境的访问。
(1148)现在参看图96,所示框图说明了用于通过在第一客户机上的第二客户机代理向第一客户机代理提供在第二远程机器提供的虚拟机中执行资源所产生的输出数据的一种系统的实施例。客户机10上的客户机代理8802连接到远程机器30并请求对资源的访问。在一个实施例中,该远程机器30是中介机器。在另一个实施例中,该远程机器30决定通过虚拟机提供对所请求的资源的访问。在又一实施例中,该远程机器30标识出远程机器30′以通过在该远程机器30′上执行的虚拟机提供对所请求的资源的访问。远程机器30′可以被称为执行机器30′。
(1149)在一个实施例中,客户机10使用表示层协议(例如ICA、RDP、VNC或X11)与远程机器30通信。在有些实施例中,实现了协议栈以能够在客户机10和远程机器30之间通信,如上面结合图8的步骤816和图24所述的一样。
(1150)在一个实施例中,远程机器30上的代理8802′建立到远程机器30′的连接。在另一个实施例中,远程机器30使用表示层协议(例如ICA、RDP、VNC或X11)与远程机器30′通信。在又一实施例中,远程机器30使用ICA等表示层协议建立与远程机器30′的连接并与之通信。在有些实施例中,实现了协议栈以能够在远程机器30上的代理8802′和远程机器30′之间通信,如上面结合图8的步骤816和图24所述。
(1151)在一个实施例中,如图96所示,远程机器30′通过提供对虚拟环境的访问或者提供对应用流服务的访问(如结合图8所述)而提供对所请求的资源的访问。在另一个实施例中,远程机器30′在执行在虚拟远程机器30′上的虚拟机中执行资源。在又一实施例中,远程机器30′使用表示层协议将执行资源所产生的输出数据发送到远程机器30。在另一个实施例中,远程机器30使用表示层协议将从远程机器30′接收到的输出数据转发到客户机10。在有些实施例中,虚拟机执行在远程机器30′上。在其它实施例中,虚拟机执行在远程机器30″上。
(1152)现在参看图97,所示框图说明了用于通过协调器机器标识出通过虚拟机提供对计算环境的访问的工作者机器(worker machine)的系统的一个实施例。客户机10上的客户机代理8802连接到远程机器30并请求对资源的访问。在一个实施例中,该远程机器30是协调器机器,提供中介代理机器的功能。在另一个实施例中,该远程机器30标识出一台远程机器30′以提供对所请求的资源的访问。
(1153)在有些实施例中,该远程机器30是充当中介代理机器的多个远程机器中的一个远程机器。在其中一个这样的实施例中,协调器机器接收到请求并从第二多个远程机器中标识出另一远程机器30′,所标识出的机器回应该请求。在另一个这样的实施例中,标识出的远程机器30′被称为工作者机器。在又一个这样的实施例中,客户机10使用示层协议(例如ICA、RDP、VNC或X11)与协调器机器30通信。
(1154)在一个实施例中,协调器机器30标识出能够提供对所请求的资源的访问的工作者机器30′的集合。在有些实施例中,协调器机器30从能够提供对所请求的资源的访问的工作者机器30′集合中标识出一台工作者机器30′。在其它实施例中,协调器机器30标识出一台工作者机器30′并将用于访问该工作者机器30′的信息发送到客户机10。在其它实施例中,协调器机器30将用于访问客户机10的信息发送到该工作者机器30′。在其中一个这样的实施例中,协调器机器30在发送了与工作者机器30′相关联的访问信息之后不再向客户机10提供任何附加的信息或通信。在其它实施例中,协调器机器30建立客户机10和工作者机器30′之间的连接。
(1155)在一个实施例中,客户机10的客户机代理8802建立到工作者机器30′的连接。在另一个实施例中,客户机10使用表示层协议(例如ICA、RDP、VNC或X11)与工作者机器30′通信。
(1156)在有些实施例中,工作者机器30′通过在工作者机器30′上执行应用并将执行应用所产生的应用输出数据发送到客户机10而提供对所请求的资源的访问。在其它实施例中,如图97所示,工作者机器30′通过提供对虚拟环境的访问或者提供对应用流服务的访问(如结合图8所述)而提供对所请求的资源的访问。
(1157)在有些实施例中,在标识出工作者机器30′之后,客户机10的客户机代理8802建立与该工作者机器30′相关联或驻留在其上的会话管理组件1300的连接。在其它实施例中,工作者机器30′执行客户机10所连接的会话管理组件1300。在一个实施例中,会话管理组件1300查询虚拟机管理组件1300,以获取要为当前用户运行的虚拟机的配置和虚拟磁盘文件的位置以及该虚拟机可以在其中执行的管理程序的位置。在其它实施例中,客户机10直接连接到工作者机器30′。
(1158)在有些实施例中,标识出的管理程序和虚拟机在工作者机器30′上执行。在其它实施例中,标识出的管理程序和虚拟机在远程机器30″上执行。在其中一个这样的实施例中,工作者机器30′使用表示层协议与远程机器30″通信以接收由虚拟机执行资源所产生的输出数据。
(1159)在一个实施例中,会话管理组件以全屏模式在指定的管理程序中启动虚拟机。在另一个实施例中,先前正在执行的一个虚拟机被分配给客户机10。
(1160)在有些实施例中,虚拟机服务组件8804在由工作者机器30′上的虚拟机提供的计算环境中执行。在其中一个这样的实施例中,虚拟机服务组件8804接收到用来建立会话管理组件1300和虚拟机服务组件8804之间的通信信道的IP地址和端口。在一个实施例中,这个通信信道用来将与会话有关的配置信息从客户机代理会话传递到虚拟机会话。在有些实施例中,该配置信息包括显示设置和变化、客户机驱动器信息以及使客户机10的用户能够单点登录的验证数据。
(1161)在有些实施例中,一旦该通信信道被建立并且与初始会话有关的信息被传递到虚拟机服务组件8804,虚拟机服务组件8804就使用用户向客户机代理8802提供的相同证书(如果有的话)自动将用户连接到一个计算环境,例如客户操作系统。在其中一个这样的实施例中,虚拟机服务组件8804自动重新配置客户操作系统的显示设置以匹配客户机10的显示设置。虚拟机向虚拟设备产生图形和声音输出,图形设备将那些输出直接或间接地重定向到客户机10上的客户机代理8802。虚拟机接收从客户机10重定向的音频输入、鼠标和键盘设备数据。当虚拟机被关闭或挂起时,会话管理组件1300终止客户代理会话。
(1162)在有些实施例中,协调器机器30提供管理工作者机器30′池的功能。例如,在其中一个这样的实施例中,协调器机器30接收到标识工作者机器30′作为提供对特定资源的访问的物理机器或虚拟机的信息。在另一个这样的实施例中,协调器机器30接收到标识由工作者机器30′池提供的多种类型的资源的信息。例如,协调器机器30可以接收到指示工作者机器30′池提供对某种类型的计算环境(例如桌面或应用)的访问的信息。在另一个这样的实施例中,协调器机器30与虚拟机管理组件1200通信以获取与工作者机器30′池中的虚拟机有关的信息。
(1163)在其它实施例中,协调器机器30监控工作者机器30′池中的一个或多个工作者机器30′。在其中一个这样的实施例中,协调器机器30标识出一个工作者机器30′以向客户机10提供对该资源的访问并标识出一个工作者机器30″以在工作者机器30′出现故障时向客户机10提供对该资源的访问。在另一个这样的实施例中,协调器机器30根据负载平衡技术标识出一个工作者机器30″以提供对该资源的访问。在又一个这样的实施例中,协调器机器30根据与客户机10相关联的变化标识出一个工作者机器30″以提供对该资源的访问。例如,协调器机器30可以标识出第一工作者机器30′以向客户机10提供对该资源的访问,并在客户机10已经通过不同网络建立了连接之后,或者已经丢失了第一网络连接并重新建立了第二网络连接之后接收到客户机10的第二个访问请求。
(1164)在有些实施例中,协调器机器30按照基于对客户机10的评估、对客户机10和工作者机器30′某个策略的应用、以及对资源、客户机10和工作者机器30′的能力和要求的评估而选择的方法标识出向客户机10提供对某个资源的访问的工作者机器30′。
(1165)前面说明的实施例可以用编程和/或工程技术被实现为方法、设备或制品以产生软件、固件、硬件或它们的任意组合。这里使用的术语“制品”意图是包括可以被嵌入一种或多种计算机可读设备、固件、可编程逻辑、存储设备(例如EEPROM,ROM,PROM,RAM,SRAM等)、硬件(例如,集成电路芯片、场可编程门阵列FPGA,应用专用集成电路ASIC等)、电子设备、计算机可读非易失性存储单元(例如CD-ROM,软盘,硬盘驱动器等等)、通过网络传输线路提供对程序的访问的文件服务器、无线传输介质、通过空间传播的信号、无线电波、红外信号等等之中并可通过它们访问的代码或逻辑。制品包括硬件逻辑以及嵌入在计算机可读介质之中并可以由处理器执行的软件或可编程代码。当然,本领域的技术人员将认识到在不偏离本发明的精神的前提下可以对这个配置进行多种修改。
(1166)已经说明了用于提供对计算环境的访问的方法和系统的特定实施例,现在本领域的技术人员将明白可以使用并入本发明概念的其它实施例。因此,本发明不应该受限于特定实施例,而仅受限于下面的权利要求中的精神和范围。

Claims (62)

1.一种提供对桌面计算环境的访问的方法,该方法包括以下步骤:
(a)由代理机器接收来自客户机用于访问桌面计算环境的请求,该请求包括该客户机的用户标识;
(b)标识出多个虚拟机中的一个,该标识出的虚拟机提供所请求的桌面计算环境以及操作系统,在该操作系统中执行所述桌面计算环境;
(c)标识出多个执行机器中的一个,该标识出的执行机器提供终端服务会话,在该终端服务会话中执行管理程序以提供对所标识出的虚拟机需要的硬件资源的访问;
(d)将标识出的虚拟机启动到标识出的执行机器中,该标识出的虚拟机执行所述操作系统;
(e)将该桌面计算环境启动到执行机器上的操作系统中;和
(f)通过终端服务会话在该客户机和标识出的虚拟机之间建立连接。
2.权利要求1的方法,其中,步骤(b)还包括:根据接收到的客户机的用户标识,标识出多个虚拟机中的一个。
3.权利要求1的方法,其中,步骤(b)还包括:根据客户机对某种类型的虚拟机的请求,标识出多个虚拟机中的一个。
4.权利要求1的方法,其中,步骤(b)还包括:根据客户机对某种类型的计算环境的请求,标识出多个虚拟机中的一个。
5.权利要求1的方法,其中,步骤(b)还包括:由会话管理组件标识多个虚拟机中的一个,所标识的虚拟机在管理程序中执行。
6.权利要求1的方法,其中,步骤(c)还包括:由管理程序提供标识出的执行机上的多个硬件资源为标识出的虚拟机所用。
7.权利要求1的方法,其中,步骤(c)还包括:由管理程序划分标识出的执行机上的多个硬件资源为标识出的虚拟机所用。
8.权利要求1的方法,其中,步骤(c)还包括:根据标识出的虚拟机需要的硬件资源的标识,标识出多个执行机器中的一个。
9.权利要求1的方法,其中,步骤(c)还包括:由代理机器标识出多个执行机器中的一个。
10.权利要求1的方法,其中,步骤(e)还包括:向客户机提供与标识出的虚拟机相关联的互联网协议地址。
11.权利要求1的方法,其中,步骤(e)还包括:向客户机提供与标识出的执行机器相关联的互联网协议地址。
12.权利要求1的方法,其中步骤(e)还包括:为客户机和标识出的虚拟机之间的通信提供代理。
13.权利要求1的方法,其中步骤(e)还包括:在管理程序中启动标识出的虚拟机。
14.权利要求1的方法,其中步骤(e)还包括:通过终端服务会话,使用表示层协议、X11协议、远程桌面协议和独立计算体系结构协议之一建立客户机和标识出的虚拟机之间的连接。
15.权利要求1的方法,还包括下列步骤:
由客户机在显示在客户机上的超媒体页面上选择一个超链接,该超链接标识出可以提供桌面计算环境的虚拟机。
16.权利要求15的方法,还包括:
在选择该超链接后,由客户机检索对应于该超链接的超链接配置文件,该超链接配置文件标识出可以提供桌面计算环境的虚拟机。
17.权利要求1的方法,还包括:
(g)接收由桌面计算环境输出的数据;并
(h)将接收到的数据显示在客户机上而不需要网络浏览器干预。
18.权利要求17的方法,其中步骤(h)还包括在位于由网络浏览器显示的超媒体页面的边界内的显示窗体内显示该接收的数据。
19.权利要求17的方法,其中步骤(h)还包括在位于由网络浏览器显示的超媒体页面的边界之外的显示窗体内显示该接收的数据。
20.权利要求1的方法,还包括下列步骤:
接收对用户可用的计算环境的列表的请求;
从多个执行机器收集数据,该数据包括:
(i)每个执行机器上的桌面计算环境映像;和
(ii)对于每个桌面计算环境映像的访问控制信息;和
将收集的信息存储在数据库中。
21.权利要求20的方法,还包括:
接收客户机的用户的用户证书;
使用用户证书和来自数据库的收集的数据以确定用户可用的桌面计算环境图像;
将收集的数据发送到客户机,所发送的收集的数据表示与对用户可用的桌面计算环境映像对应的桌面计算环境。
22.权利要求21的方法,还包括:
将所发送的收集的数据在客户机上显示为图形用户界面窗体中的图标,该图标代表用户可用的桌面计算环境。
23.权利要求21的方法,还包括:将所发送的收集的数据在客户机上显示为图形用户界面窗体中的图标,该图标代表该用户不可用的计算环境。
24.权利要求1的方法,其中步骤(a)还包括:由收集代理收集与客户机有关的信息。
25.权利要求24的方法,其中步骤(b)包括:根据接收到的客户机的用户标识验证信息和收集到的客户机信息,标识出已经与该用户相关联的桌面计算环境。
26.权利要求24的方法,其中步骤(c)包括:根据规则,建立该客户机和桌面计算环境之间的连接。
27.权利要求26的方法,其中所述规则被应用于客户机的用户标识和收集的客户机信息。
28.权利要求1的方法,其中步骤(b)包括:根据接收到的客户机的用户标识,标识出由第一虚拟机提供的第一桌面计算环境和由第二虚拟机提供的第二桌面计算环境,该第一和第二桌面计算环境已经与该用户相关联。
29.权利要求28的方法,其中第一虚拟机和第二虚拟机分别在第一和第二执行机器上执行。
30.权利要求1的方法,还包括:
接收将客户机从桌面计算环境断开连接的请求;和
终止该客户机和桌面计算环境之间的连接。
31.权利要求30的方法,还包括:更新与桌面计算环境相关联的数据记录以表示第一客户机被断开。
32.在由代理机器向客户机提供对桌面计算环境的访问、执行机器提供终端服务会话执行提供对该桌面计算环境所需硬件资源的访问的管理程序的系统中的一种装置,该装置包括:
标识组件,与虚拟机管理组件通信,该标识组件:
(i)接收多个虚拟机中的一个的标识,该标识出的虚拟机提供所请求的桌面计算环境;和
(ii)标识出执行机器,该执行机器提供终端服务会话,在该终端服务会话中执行所述管理程序以提供对所标识出的虚拟机需要的硬件资源的访问;和
执行组件:
(i)提供该标识出的虚拟机;
(ii)将该标识出的虚拟机启动到所述执行机器,该被标识出的虚拟机执行操作系统;和
(iii)将该桌面计算环境启动到所述标识出的执行机器上的执行操作系统;和
管理组件,通过终端服务会话建立客户机和标识出的虚拟机之间的连接。
33.权利要求32的装置,其中,该标识组件从虚拟机管理组件接收多个虚拟机之一的标识。
34.权利要求32的装置,其中,该标识组件标识多个执行机器中的一个,所述管理程序在标识出的执行机器上执行。
35.权利要求32的装置,其中该标识组件还包括接收客户机的用户标识并将该用户标识发送到虚拟机管理组件的收发器。
36.权利要求32的装置,其中该标识组件还包括接收客户机用户所请求的桌面计算环境的类型的标识并将所请求的桌面计算环境的类型的标识发送到虚拟机管理组件的收发器。
37.权利要求32的装置,其中该标识组件还包括接收客户机用户所请求的虚拟机的类型的标识并将所请求的虚拟机的类型的标识发送到虚拟机管理组件的收发器。
38.权利要求32的装置,其中该标识组件还包括接收所请求的计算环境的类型的标识并将所请求的计算环境的类型的标识发送到虚拟机管理组件的收发器。
39.权利要求32的装置,其中该标识组件还包括接收所请求的虚拟机的类型的标识并将所请求的虚拟机的类型的标识发送到虚拟机管理组件的收发器。
40.权利要求32的装置,其中该标识组件还包括接收多个虚拟机中的一个的标识的收发器,该标识出的虚拟机已经在执行机器上的管理程序中执行。
41.权利要求32的装置,其中该标识组件接收多个虚拟机中的一个的标识,该标识出的虚拟机是根据接收到的客户机的用户标识而选择出的。
42.权利要求32的装置,其中该标识组件接收多个虚拟机中的一个的标识,该标识出的虚拟机是根据接收到的所请求的计算环境的类型的标识而选择出的。
43.权利要求32的装置,其中该标识组件接收多个虚拟机中的一个的标识,该标识出的虚拟机是根据接收到的所请求的虚拟机的类型的标识而选择出的。
44.权利要求32的装置,其中该虚拟机管理组件将标识出的虚拟机分配给用户。
45.权利要求32的装置,其中该管理组件还包括将与标识出的虚拟机相关联的互联网协议地址提供给客户机。
46.权利要求32的装置,其中该管理组件还包括将与所述执行机器相关联的互联网协议地址提供给客户机。
47.权利要求32的装置,其中该管理组件还包括为客户机和虚拟机之间的通信提供代理。
48.权利要求32的装置,其中该管理组件还包括通过终端服务会话,使用表示层协议、X11协议、远程桌面协议和独立计算体系结构协议之一在客户机和标识出的虚拟机之间建立连接。
49.权利要求32的装置,其中客户机执行网络浏览器,该网络浏览器使得可以由客户机的用户通过显示在客户机上的超媒体页面上的超链接选择桌面计算环境。
50.权利要求49的装置,其中在由客户机的用户选择超链接后,客户机检索对应于该超链接的超链接配置文件,该超链接配置文件标识出可以提供桌面计算环境的虚拟机。
51.权利要求32的装置,还包括:
客户机代理接收由桌面计算环境输出的数据并且在客户机的显示窗体内显示接收的数据无需网络浏览器的干预。
52.权利要求51的装置,其中显示窗体位于由网络浏览器显示的超媒体页面的边界之内。
53.权利要求51的装置,其中显示窗体位于由网络浏览器显示的超媒体页面的边界外。
54.权利要求32的装置,还包括:
收集模块
(a)从多个执行机器收集数据,该数据包括:
(i)每个执行机器上的桌面计算环境映像,和
(ii)对于每个桌面计算环境映像的访问控制信息,和
(b)将收集的数据存储在数据库中。
55.权利要求54的装置,还包括:
代理模块,访问数据库中收集的数据并使用用户证书确定对用户可用的桌面计算环境映像;
发送器,将表示与对客户机的用户可用的桌面计算环境映像对应的桌面计算环境的收集的数据发送到客户机。
56.权利要求55的装置,其中客户机将所发送的收集的数据显示为图形用户界面窗体中的图标,该图标代表用户可用的桌面计算环境。
57.权利要求55的装置,其中客户机将所发送的收集的数据显示为图形用户界面窗体中的图标,该图标代表该用户不可用的计算环境。
58.权利要求32的装置,还包括:数据存储器,其包含与该用户相关联的第一桌面计算环境的第一标识符和与该用户相关联的第二桌面计算环境的第二标识符。
59.权利要求58的装置,其中,该第一桌面计算环境执行在第一执行机器上,该第二桌面计算环境执行在第二执行机器上。
60.权利要求32的装置,其中管理组件根据规则将该客户机与桌面计算环境连接。
61.权利要求32的装置,其中管理组件响应于接收到的断开信号,将该客户机从桌面计算环境断开。
62.权利要求61的装置,其中管理组件更新与桌面计算环境相关联的数据记录以表示该客户机被从桌面计算环境断开。
CN2007800104850A 2006-01-24 2007-01-24 用于提供对计算环境的访问的方法和系统 Active CN101410803B (zh)

Applications Claiming Priority (21)

Application Number Priority Date Filing Date Title
US76167406P 2006-01-24 2006-01-24
US60/761,674 2006-01-24
US11/552,315 2006-10-24
US11/552,315 US20070174429A1 (en) 2006-01-24 2006-10-24 Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
US11/559,658 2006-11-14
US11/559,658 US20070180447A1 (en) 2006-01-24 2006-11-14 Methods and systems for interacting, via a hypermedium page, with a virtual machine
US11/563,932 2006-11-28
US11/563,958 2006-11-28
US11/563,958 US20070174410A1 (en) 2006-01-24 2006-11-28 Methods and systems for incorporating remote windows from disparate remote desktop environments into a local desktop environment
US11/563,932 US8341270B2 (en) 2006-01-24 2006-11-28 Methods and systems for providing access to a computing environment
US11/624,396 2007-01-18
US11/624,394 US7870153B2 (en) 2006-01-24 2007-01-18 Methods and systems for executing, by a virtual machine, an application program requested by a client machine
US11/624,395 2007-01-18
US11/624,403 US8341732B2 (en) 2006-01-24 2007-01-18 Methods and systems for selecting a method for execution, by a virtual machine, of an application program
US11/624,396 US7954150B2 (en) 2006-01-24 2007-01-18 Methods and systems for assigning access control levels in providing access to resources via virtual machines
US11/624,402 2007-01-18
US11/624,402 US7949677B2 (en) 2006-01-24 2007-01-18 Methods and systems for providing authorized remote access to a computing environment provided by a virtual machine
US11/624,395 US8117314B2 (en) 2006-01-24 2007-01-18 Methods and systems for providing remote access to a computing environment provided by a virtual machine
US11/624,394 2007-01-18
US11/624,403 2007-01-18
PCT/US2007/060963 WO2007087558A2 (en) 2006-01-24 2007-01-24 Methods and systems for providing access to a computing environment

Publications (2)

Publication Number Publication Date
CN101410803A CN101410803A (zh) 2009-04-15
CN101410803B true CN101410803B (zh) 2013-07-17

Family

ID=40572801

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007800104850A Active CN101410803B (zh) 2006-01-24 2007-01-24 用于提供对计算环境的访问的方法和系统

Country Status (2)

Country Link
US (12) US20070174429A1 (zh)
CN (1) CN101410803B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103685055A (zh) * 2013-12-25 2014-03-26 深圳供电局有限公司 电力系统跨区隔离数据均衡传输方法及跨区隔离器

Families Citing this family (2435)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352400B2 (en) 1991-12-23 2013-01-08 Hoffberg Steven M Adaptive pattern recognition based controller apparatus and method and human-factored interface therefore
US6065120A (en) * 1997-12-09 2000-05-16 Phone.Com, Inc. Method and system for self-provisioning a rendezvous to ensure secure access to information in a database from multiple devices
US7966078B2 (en) 1999-02-01 2011-06-21 Steven Hoffberg Network media appliance system and method
US8538843B2 (en) * 2000-07-17 2013-09-17 Galactic Computing Corporation Bvi/Bc Method and system for operating an E-commerce service provider
US7117239B1 (en) 2000-07-28 2006-10-03 Axeda Corporation Reporting the state of an apparatus to a remote computer
US9208270B2 (en) * 2000-08-02 2015-12-08 Comsol Ab System and method for establishing bidirectional links between multiphysics modeling and design systems
US8108543B2 (en) 2000-09-22 2012-01-31 Axeda Corporation Retrieving data from a server
US7185014B1 (en) 2000-09-22 2007-02-27 Axeda Corporation Retrieving data from a server
US8010469B2 (en) * 2000-09-25 2011-08-30 Crossbeam Systems, Inc. Systems and methods for processing data flows
US9525696B2 (en) 2000-09-25 2016-12-20 Blue Coat Systems, Inc. Systems and methods for processing data flows
US20070192863A1 (en) * 2005-07-01 2007-08-16 Harsh Kapoor Systems and methods for processing data flows
US7774492B2 (en) 2001-07-26 2010-08-10 Citrix Systems, Inc. System, method and computer program product to maximize server throughput while avoiding server overload by controlling the rate of establishing server-side net work connections
US9715252B2 (en) * 2011-08-24 2017-07-25 Z124 Unified desktop docking behavior for window stickiness
US9405459B2 (en) 2011-08-24 2016-08-02 Z124 Unified desktop laptop dock software operation
US9268518B2 (en) 2011-09-27 2016-02-23 Z124 Unified desktop docking rules
US7254601B2 (en) 2001-12-20 2007-08-07 Questra Corporation Method and apparatus for managing intelligent assets in a distributed environment
US7650576B2 (en) * 2002-03-07 2010-01-19 Business Objects Americas Method and system for creating graphical and interactive representations of input and output data
US7178149B2 (en) 2002-04-17 2007-02-13 Axeda Corporation XML scripting of soap commands
US7711847B2 (en) 2002-04-26 2010-05-04 Sony Computer Entertainment America Inc. Managing users in a multi-user network game environment
US20030217135A1 (en) 2002-05-17 2003-11-20 Masayuki Chatani Dynamic player management
US20030233580A1 (en) * 2002-05-29 2003-12-18 Keeler James D. Authorization and authentication of user access to a distributed network communication system with roaming features
US8291407B2 (en) 2002-06-12 2012-10-16 Symantec Corporation Systems and methods for patching computer programs
US8843903B1 (en) 2003-06-11 2014-09-23 Symantec Corporation Process tracking application layered system
US8302108B1 (en) 2002-06-12 2012-10-30 Symantec Corporation Feature based software virtualization
US8370420B1 (en) 2002-07-11 2013-02-05 Citrix Systems, Inc. Web-integrated display of locally stored content objects
US8560707B2 (en) 2007-10-05 2013-10-15 Sony Computer Entertainment America Llc Seamless host migration based on NAT type
US8131802B2 (en) * 2007-10-05 2012-03-06 Sony Computer Entertainment America Llc Systems and methods for seamless host migration
WO2004034184A2 (en) 2002-08-23 2004-04-22 Exit-Cube, Inc. Encrypting operating system
US7966418B2 (en) 2003-02-21 2011-06-21 Axeda Corporation Establishing a virtual tunnel between two computer programs
US20110113121A1 (en) * 2003-03-06 2011-05-12 Amit Sarkar Method And System For Operating A Primary PC From A Remote Pseudo-mobile PC
WO2004107130A2 (en) 2003-05-28 2004-12-09 Caymas Systems, Inc. Multilayer access control security system
WO2004107132A2 (en) 2003-05-28 2004-12-09 Caymas Systems, Inc. Method, system and software for state signing of internet resources
US7571180B2 (en) * 2003-06-27 2009-08-04 Attachmate Corporation Utilizing LDAP directories for application access control and personalization
US7707255B2 (en) 2003-07-01 2010-04-27 Microsoft Corporation Automatic grouping of electronic mail
US8539063B1 (en) 2003-08-29 2013-09-17 Mcafee, Inc. Method and system for containment of networked application client software by explicit human input
US8560671B1 (en) * 2003-10-23 2013-10-15 Netapp, Inc. Systems and methods for path-based management of virtual servers in storage network environments
US7978716B2 (en) 2003-11-24 2011-07-12 Citrix Systems, Inc. Systems and methods for providing a VPN solution
US7840968B1 (en) 2003-12-17 2010-11-23 Mcafee, Inc. Method and system for containment of usage of language interfaces
US8850060B1 (en) * 2004-04-19 2014-09-30 Acronis International Gmbh Network interface within a designated virtual execution environment (VEE)
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
US8739274B2 (en) 2004-06-30 2014-05-27 Citrix Systems, Inc. Method and device for performing integrated caching in a data communication network
US7617501B2 (en) 2004-07-09 2009-11-10 Quest Software, Inc. Apparatus, system, and method for managing policies on a computer having a foreign operating system
US8914522B2 (en) 2004-07-23 2014-12-16 Citrix Systems, Inc. Systems and methods for facilitating a peer to peer route via a gateway
KR20070037650A (ko) 2004-07-23 2007-04-05 사이트릭스 시스템스, 인크. 종단에서 게이트웨이로 패킷을 라우팅하기 위한 방법 및시스템
US8255828B2 (en) 2004-08-16 2012-08-28 Microsoft Corporation Command user interface for displaying selectable software functionality controls
US8146016B2 (en) 2004-08-16 2012-03-27 Microsoft Corporation User interface for displaying a gallery of formatting options applicable to a selected object
US7703036B2 (en) 2004-08-16 2010-04-20 Microsoft Corporation User interface for displaying selectable software functionality controls that are relevant to a selected object
US7873955B1 (en) 2004-09-07 2011-01-18 Mcafee, Inc. Solidifying the executable software set of a computer
WO2006034476A1 (en) * 2004-09-24 2006-03-30 Siemens Medical Solutions Usa, Inc. A system for activating multiple applications for concurrent operation
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
US7620953B1 (en) * 2004-10-05 2009-11-17 Azul Systems, Inc. System and method for allocating resources of a core space among a plurality of core virtual machines
US7487358B2 (en) * 2004-11-29 2009-02-03 Signacert, Inc. Method to control access between network endpoints based on trust scores calculated from information system component analysis
US7733804B2 (en) * 2004-11-29 2010-06-08 Signacert, Inc. Method and apparatus to establish routes based on the trust scores of routers within an IP routing domain
US8327131B1 (en) 2004-11-29 2012-12-04 Harris Corporation Method and system to issue trust score certificates for networked devices using a trust scoring service
US9450966B2 (en) * 2004-11-29 2016-09-20 Kip Sign P1 Lp Method and apparatus for lifecycle integrity verification of virtual machines
US8266676B2 (en) * 2004-11-29 2012-09-11 Harris Corporation Method to verify the integrity of components on a trusted platform using integrity database services
US7310696B1 (en) * 2004-12-03 2007-12-18 Crossroads Systems, Inc. Method and system for coordinating interoperability between devices of varying capabilities in a network
US9390132B1 (en) * 2009-10-16 2016-07-12 Iqor Holdings, Inc. Apparatuses, methods and systems for a universal data librarian
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
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
EP1839182B1 (en) * 2004-12-30 2017-04-12 Nokia Technologies Oy Use of configurations in device with multiple configurations
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
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
US8042165B2 (en) * 2005-01-14 2011-10-18 Citrix Systems, Inc. Method and system for requesting and granting membership in a server farm
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
US8219823B2 (en) 2005-03-04 2012-07-10 Carter Ernst B System for and method of managing access to a system using combinations of user information
JP4722519B2 (ja) * 2005-03-25 2011-07-13 株式会社日立製作所 計算機システム及びストレージサーバ、検索サーバ、端末装置並びに検索方法
CA2603380A1 (en) * 2005-03-30 2006-10-05 Welch Allyn, Inc. Communication of information between a plurality of network elements
JP4168052B2 (ja) * 2005-04-01 2008-10-22 株式会社日立製作所 管理サーバ
US8453148B1 (en) 2005-04-06 2013-05-28 Teradici Corporation Method and system for image sequence transfer scheduling and restricting the image sequence generation
ES2305938T3 (es) * 2005-04-22 2008-11-01 Trumpf Laser Gmbh + Co. Kg Sistema y procedimiento para acceso remoto seguro.
US7831833B2 (en) * 2005-04-22 2010-11-09 Citrix Systems, Inc. System and method for key recovery
US9621666B2 (en) 2005-05-26 2017-04-11 Citrix Systems, Inc. Systems and methods for enhanced delta compression
US8943304B2 (en) 2006-08-03 2015-01-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US9692725B2 (en) 2005-05-26 2017-06-27 Citrix Systems, Inc. Systems and methods for using an HTTP-aware client agent
US9407608B2 (en) 2005-05-26 2016-08-02 Citrix Systems, Inc. Systems and methods for enhanced client side policy
US7895578B2 (en) * 2005-06-13 2011-02-22 Business Objects Software Ltd. Apparatus and method for using connector components to provide connectivity to interactive graphics representative of input and output data
US20110288976A1 (en) * 2005-06-28 2011-11-24 Mark Ellery Ogram Total computer security
US20070002367A1 (en) * 2005-06-29 2007-01-04 Eric Yuan Methods and apparatuses for selectively controlling a remote device
GB0513375D0 (en) 2005-06-30 2005-08-03 Retento Ltd Computer security
US7856661B1 (en) * 2005-07-14 2010-12-21 Mcafee, Inc. Classification of software on networked systems
US8105679B2 (en) * 2005-07-25 2012-01-31 Toyo Ink Mfg. Co., Ltd. Actinic radiation curable jet-printing ink
US20070088278A1 (en) * 2005-07-26 2007-04-19 Ming-Jeng Shue Intravenous catheter introducing device with a flashback member
DE102005035903A1 (de) * 2005-07-28 2007-02-08 X-Aitment Gmbh Generische KI-Architektur für ein Multiagenten-System
US9323503B1 (en) 2009-12-29 2016-04-26 Comsol Ab System and method for accessing settings in a multiphysics modeling system using a model tree
GB0517585D0 (en) * 2005-08-30 2005-10-05 Ramakrishna Madhusudana Intuitive search which delivers fast results on the mobile phone
US7765483B2 (en) * 2005-09-12 2010-07-27 Microsoft Corporation Filtering obscured data from a remote client display
US8627222B2 (en) 2005-09-12 2014-01-07 Microsoft Corporation Expanded search and find user interface
WO2009149416A1 (en) * 2008-06-05 2009-12-10 3Tera, Inc. Automated filer technique for use in virtualized appliances and applications
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
US8171127B2 (en) * 2005-10-07 2012-05-01 Citrix Systems, Inc. Systems and methods for response monitoring
US7844445B2 (en) 2005-10-12 2010-11-30 Storage Appliance Corporation Automatic connection to an online service provider from a backup system
US8069271B2 (en) * 2005-10-12 2011-11-29 Storage Appliance Corporation Systems and methods for converting a media player into a backup device
US7702830B2 (en) * 2005-10-12 2010-04-20 Storage Appliance Corporation Methods for selectively copying data files to networked storage and devices for initiating the same
US7899662B2 (en) * 2005-10-12 2011-03-01 Storage Appliance Corporation Data backup system including a data protection component
US20070162271A1 (en) * 2005-10-12 2007-07-12 Storage Appliance Corporation Systems and methods for selecting and printing data files from a backup system
US8195444B2 (en) 2005-10-12 2012-06-05 Storage Appliance Corporation Systems and methods for automated diagnosis and repair of storage devices
US7818160B2 (en) * 2005-10-12 2010-10-19 Storage Appliance Corporation Data backup devices and methods for backing up data
US7813913B2 (en) * 2005-10-12 2010-10-12 Storage Appliance Corporation Emulation component for data backup applications
US7822595B2 (en) 2005-10-12 2010-10-26 Storage Appliance Corporation Systems and methods for selectively copying embedded data files
JP4806557B2 (ja) * 2005-10-18 2011-11-02 株式会社日立製作所 ログを管理するストレージ装置及び計算機システム
US7756893B2 (en) * 2005-11-09 2010-07-13 Microsoft Corporation Independent computation environment and data protection
US8112798B2 (en) * 2005-11-09 2012-02-07 Microsoft Corporation Hardware-aided software code measurement
CN101310285B (zh) * 2005-11-17 2011-09-07 皇家飞利浦电子股份有限公司 用于管理访问控制的系统
JP2007165996A (ja) * 2005-12-09 2007-06-28 Hitachi Industrial Equipment Systems Co Ltd 監視装置
US20110179477A1 (en) * 2005-12-09 2011-07-21 Harris Corporation System including property-based weighted trust score application tokens for access control and related methods
US7836303B2 (en) 2005-12-09 2010-11-16 University Of Washington Web browser operating system
US7596756B2 (en) * 2005-12-14 2009-09-29 Vacava Inc. Browser session control system and method
US7904949B2 (en) 2005-12-19 2011-03-08 Quest Software, Inc. Apparatus, systems and methods to provide authentication services to a legacy application
US7924884B2 (en) 2005-12-20 2011-04-12 Citrix Systems, Inc. Performance logging using relative differentials and skip recording
US8495613B2 (en) * 2005-12-22 2013-07-23 Microsoft Corporation Program execution service windows
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
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
US20070168872A1 (en) * 2006-01-19 2007-07-19 Raytheon Company Multi-monitor, multi-JVM java GUI infrastructure with layout via XML
US8196205B2 (en) * 2006-01-23 2012-06-05 University Of Washington Through Its Center For Commercialization Detection of spyware threats within virtual machine
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
US7949008B2 (en) * 2006-01-30 2011-05-24 International Business Machines Corporation Method, apparatus and computer program product for cell phone security
US8102864B2 (en) 2006-01-31 2012-01-24 Roundbox, Inc. Location specific event broadcasting
US8149771B2 (en) 2006-01-31 2012-04-03 Roundbox, Inc. Reliable event broadcaster with multiplexing and bandwidth control functions
US7757269B1 (en) 2006-02-02 2010-07-13 Mcafee, Inc. Enforcing alignment of approved changes and deployed changes in the software change life-cycle
US20070198729A1 (en) * 2006-02-07 2007-08-23 Yechuri Sitaramarao S SQL network gadget
US8087075B2 (en) 2006-02-13 2011-12-27 Quest Software, Inc. Disconnected credential validation using pre-fetched service tickets
JPWO2007094165A1 (ja) * 2006-02-15 2009-07-02 日本電気株式会社 本人確認システムおよびプログラム、並びに、本人確認方法
US7512408B2 (en) * 2006-02-16 2009-03-31 Softwired Ag Scalable wireless messaging system
US7739391B2 (en) * 2006-02-16 2010-06-15 Softwired Ag Gateway for wireless mobile clients
JP4801468B2 (ja) * 2006-03-02 2011-10-26 株式会社リコー 管理装置及び画像形成装置管理システム
US20090133129A1 (en) 2006-03-06 2009-05-21 Lg Electronics Inc. Data transferring method
WO2007102693A1 (en) 2006-03-06 2007-09-13 Lg Electronics Inc. Data transfer controlling method, content transfer controlling method, content processing information acquisition method and content transfer system
US8429300B2 (en) 2006-03-06 2013-04-23 Lg Electronics Inc. Data transferring method
US20070214233A1 (en) * 2006-03-07 2007-09-13 Daryl Cromer System and method for implementing a hypervisor for server emulation
US7941801B2 (en) * 2006-03-07 2011-05-10 Oracle America Inc. Method and system for provisioning a virtual computer and scheduling resources of the provisioned virtual computer
US7895573B1 (en) * 2006-03-27 2011-02-22 Mcafee, Inc. Execution environment file inventory
US20070234412A1 (en) * 2006-03-29 2007-10-04 Smith Ned M Using a proxy for endpoint access control
US7904563B2 (en) * 2006-03-31 2011-03-08 Microsoft Corporation Establishing and utilizing terminal server dynamic virtual channels
WO2007123728A2 (en) * 2006-03-31 2007-11-01 Huang Evans S Methods and apparatuses for securely operating shared host computers with portable apparatuses
US7870387B1 (en) 2006-04-07 2011-01-11 Mcafee, Inc. Program-based authorization
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
US7967682B2 (en) 2006-04-12 2011-06-28 Bally Gaming, Inc. Wireless gaming environment
US8745503B2 (en) * 2006-04-20 2014-06-03 Hewlett-Packard Development Company, L.P. Graphical interface for managing server environment
US8352930B1 (en) 2006-04-24 2013-01-08 Mcafee, Inc. Software modification by group to minimize breakage
US7702843B1 (en) 2006-04-27 2010-04-20 Vmware, Inc. Determining memory conditions in a virtual machine
EP2026973B1 (en) * 2006-04-28 2011-04-06 Telecom Italia S.p.A. Ink-jet printhead die and manufacturing method thereof
US8924524B2 (en) 2009-07-27 2014-12-30 Vmware, Inc. Automated network configuration of virtual machines in a virtual lab data environment
US8619771B2 (en) 2009-09-30 2013-12-31 Vmware, Inc. Private allocated networks over shared communications infrastructure
US8838756B2 (en) * 2009-07-27 2014-09-16 Vmware, Inc. Management and implementation of enclosed local networks in a virtual lab
US8892706B1 (en) 2010-06-21 2014-11-18 Vmware, Inc. Private ethernet overlay networks over a shared ethernet in a virtual environment
US8209408B1 (en) 2006-05-01 2012-06-26 Vmware, Inc. Multiple virtual machine consoles in a single interface
US20070260702A1 (en) * 2006-05-03 2007-11-08 University Of Washington Web browser architecture for virtual machine access
US7831786B2 (en) * 2006-05-08 2010-11-09 Research In Motion Limited Sharing memory resources of wireless portable electronic devices
US8141075B1 (en) * 2006-05-08 2012-03-20 Vmware, Inc. Rule engine for virtualized desktop allocation system
US8555404B1 (en) 2006-05-18 2013-10-08 Mcafee, Inc. Connectivity-based authorization
US7987512B2 (en) * 2006-05-19 2011-07-26 Microsoft Corporation BIOS based secure execution environment
US20140373144A9 (en) * 2006-05-22 2014-12-18 Alen Capalik System and method for analyzing unauthorized intrusion into a computer network
US8671403B2 (en) * 2006-05-22 2014-03-11 Infosys Limited Pre-creating virtual machines in a grid environment
US20070277224A1 (en) * 2006-05-24 2007-11-29 Osborn Steven L Methods and Systems for Graphical Image Authentication
US9189603B2 (en) 2006-05-24 2015-11-17 Confident Technologies, Inc. Kill switch security method and system
WO2007138423A2 (en) 2006-05-25 2007-12-06 Shuki Binyamin Method and system for providing remote access to applications
CN101083607B (zh) * 2006-05-30 2010-12-08 倪海生 一种用于内外网络隔离的因特网访问服务器及其处理方法
US9727989B2 (en) 2006-06-01 2017-08-08 Microsoft Technology Licensing, Llc Modifying and formatting a chart using pictorially provided chart elements
US8429712B2 (en) 2006-06-08 2013-04-23 Quest Software, Inc. Centralized user authentication system apparatus and method
US20070288645A1 (en) * 2006-06-08 2007-12-13 International Business Machines Corporation Method and System for Persistent and Reliable Data Transmission
JP4787684B2 (ja) * 2006-06-15 2011-10-05 日本電気株式会社 セッション管理システム、セッション管理方法、及びプログラム
US9106613B2 (en) * 2006-06-19 2015-08-11 Ncr Corporation Remote self service facilities administration system
US9392078B2 (en) * 2006-06-23 2016-07-12 Microsoft Technology Licensing, Llc Remote network access via virtual machine
US20080005560A1 (en) * 2006-06-29 2008-01-03 Microsoft Corporation Independent Computation Environment and Provisioning of Computing Device Functionality
US8583772B2 (en) * 2008-08-14 2013-11-12 International Business Machines Corporation Dynamically configurable session agent
US8868533B2 (en) 2006-06-30 2014-10-21 International Business Machines Corporation Method and apparatus for intelligent capture of document object model events
US8869066B2 (en) 2006-07-06 2014-10-21 Addthis, Llc Generic content collection systems
WO2008006196A2 (en) * 2006-07-09 2008-01-17 90 Degree Software Inc. Systems and methods for managing networks
US20090199132A1 (en) * 2006-07-10 2009-08-06 Devicevm, Inc. Quick access to virtual applications
US7441113B2 (en) * 2006-07-10 2008-10-21 Devicevm, Inc. Method and apparatus for virtualization of appliances
US20090083375A1 (en) * 2006-07-10 2009-03-26 Chong Benedict T Installation of a Virtualization Environment
US7870411B2 (en) * 2006-07-17 2011-01-11 Xensource, Inc. Tracking current time on multiprocessor hosts and virtual machines
US8185605B2 (en) * 2006-07-18 2012-05-22 Cisco Technology, Inc. Methods and apparatuses for accessing an application on a remote device
US20080018649A1 (en) * 2006-07-18 2008-01-24 Zheng Yuan Methods and apparatuses for utilizing an application on a remote device
US20080030793A1 (en) * 2006-07-26 2008-02-07 Microsoft Corporation Fax Accounts
US20080034420A1 (en) * 2006-08-01 2008-02-07 Array Networks, Inc. System and method of portal customization for a virtual private network device
WO2008017001A2 (en) * 2006-08-02 2008-02-07 Moka5, Inc. Sharing live appliances
US8392977B2 (en) * 2006-08-03 2013-03-05 Citrix Systems, Inc. Systems and methods for using a client agent to manage HTTP authentication cookies
US8561155B2 (en) 2006-08-03 2013-10-15 Citrix Systems, Inc. Systems and methods for using a client agent to manage HTTP authentication cookies
US8869262B2 (en) * 2006-08-03 2014-10-21 Citrix Systems, Inc. Systems and methods for application based interception of SSL/VPN traffic
US8244883B2 (en) * 2006-08-03 2012-08-14 Citrix Systems, Inc. Systems and methods of for providing multi-mode transport layer compression
US8495181B2 (en) * 2006-08-03 2013-07-23 Citrix Systems, Inc Systems and methods for application based interception SSI/VPN traffic
JP4952125B2 (ja) * 2006-08-04 2012-06-13 富士通株式会社 負荷分散装置
EP2057543A4 (en) * 2006-08-07 2012-07-04 Oracle Int Corp SYSTEM AND METHOD FOR VIRTUALIZING EQUIPMENT IN A VIRTUAL MACHINE ENVIRONMENT
US7917963B2 (en) * 2006-08-09 2011-03-29 Antenna Vaultus, Inc. System for providing mobile data security
KR20080022476A (ko) 2006-09-06 2008-03-11 엘지전자 주식회사 논컴플라이언트 컨텐츠 처리 방법 및 디알엠 상호 호환시스템
US8949295B2 (en) 2006-09-21 2015-02-03 Vmware, Inc. Cooperative memory resource management via application-level balloon
US20080075096A1 (en) * 2006-09-22 2008-03-27 Enthenergy, Llc Remote access to secure network devices
US8966016B2 (en) * 2006-09-28 2015-02-24 International Business Machines Corporation Resource-based event typing in a rules system
JP4932413B2 (ja) * 2006-09-29 2012-05-16 株式会社日立製作所 環境移行システム、端末装置、情報処理装置、管理サーバ、可搬型記憶媒体
US20080082976A1 (en) * 2006-09-29 2008-04-03 Matthias Steinwagner Usage of virtualization software for shipment of software products
US20080082832A1 (en) * 2006-09-29 2008-04-03 Mcdougal Monty D Configurable Data Access Application For Highly Secure Systems
US8260252B2 (en) * 2006-10-02 2012-09-04 The Nielsen Company (Us), Llc Method and apparatus for collecting information about portable device usage
US8014726B1 (en) * 2006-10-02 2011-09-06 The Nielsen Company (U.S.), Llc Method and system for collecting wireless information transparently and non-intrusively
US8370479B2 (en) 2006-10-03 2013-02-05 Axeda Acquisition Corporation System and method for dynamically grouping devices based on present device conditions
CA2665556A1 (en) 2006-10-04 2008-04-17 Welch Allyn, Inc. Dynamic medical object information base
WO2008046101A2 (en) * 2006-10-13 2008-04-17 Ariel Silverstone Client authentication and data management system
US20080091800A1 (en) * 2006-10-13 2008-04-17 Xerox Corporation Local user interface support of remote services
US9697019B1 (en) 2006-10-17 2017-07-04 Manageiq, Inc. Adapt a virtual machine to comply with system enforced policies and derive an optimized variant of the adapted virtual machine
US8458695B2 (en) 2006-10-17 2013-06-04 Manageiq, Inc. Automatic optimization for virtual systems
US8949825B1 (en) 2006-10-17 2015-02-03 Manageiq, Inc. Enforcement of compliance policies in managed virtual systems
US8234640B1 (en) 2006-10-17 2012-07-31 Manageiq, Inc. Compliance-based adaptations in managed virtual systems
US8612971B1 (en) 2006-10-17 2013-12-17 Manageiq, Inc. Automatic optimization for virtual systems
US8949826B2 (en) * 2006-10-17 2015-02-03 Managelq, Inc. Control and management of virtual systems
US9038062B2 (en) * 2006-10-17 2015-05-19 Manageiq, Inc. Registering and accessing virtual systems for use in a managed system
US9086917B1 (en) 2006-10-17 2015-07-21 Manageiq, Inc. Registering and accessing virtual systems for use in a managed system
US8752045B2 (en) * 2006-10-17 2014-06-10 Manageiq, Inc. Methods and apparatus for using tags to control and manage assets
US9015703B2 (en) 2006-10-17 2015-04-21 Manageiq, Inc. Enforcement of compliance policies in managed virtual systems
US8234641B2 (en) 2006-10-17 2012-07-31 Managelq, Inc. Compliance-based adaptations in managed virtual systems
WO2008049457A1 (en) * 2006-10-23 2008-05-02 Real Enterprise Solutions Development B.V. Methods, programs and a system of providing remote access
US8732699B1 (en) 2006-10-27 2014-05-20 Hewlett-Packard Development Company, L.P. Migrating virtual machines between physical machines in a define group
US8296760B2 (en) * 2006-10-27 2012-10-23 Hewlett-Packard Development Company, L.P. Migrating a virtual machine from a first physical machine in response to receiving a command to lower a power mode of the first physical machine
US8185893B2 (en) * 2006-10-27 2012-05-22 Hewlett-Packard Development Company, L.P. Starting up at least one virtual machine in a physical machine by a load balancer
US9092250B1 (en) 2006-10-27 2015-07-28 Hewlett-Packard Development Company, L.P. Selecting one of plural layouts of virtual machines on physical machines
US7861108B2 (en) * 2006-10-27 2010-12-28 Hewlett-Packard Development Company, L.P. Restoring user states in dynamic computing environments
US8086710B2 (en) 2006-10-30 2011-12-27 Quest Software, Inc. Identity migration apparatus and method
US9218213B2 (en) 2006-10-31 2015-12-22 International Business Machines Corporation Dynamic placement of heterogeneous workloads
JP4629646B2 (ja) * 2006-11-01 2011-02-09 インターナショナル・ビジネス・マシーンズ・コーポレーション アプリケーションプログラムを生成するための装置、方法、及びプログラム
US9101820B2 (en) 2006-11-09 2015-08-11 Bally Gaming, Inc. System, method and apparatus to produce decks for and operate games played with playing cards
US8784212B2 (en) 2006-11-10 2014-07-22 Bally Gaming, Inc. Networked gaming environment employing different classes of gaming machines
US9508218B2 (en) 2006-11-10 2016-11-29 Bally Gaming, Inc. Gaming system download network architecture
US9111078B2 (en) 2006-11-10 2015-08-18 Bally Gaming, Inc. Package manager service in gaming system
US8920233B2 (en) 2006-11-10 2014-12-30 Bally Gaming, Inc. Assignment template and assignment bundle in a gaming configuration and download system
US8930461B2 (en) 2006-11-13 2015-01-06 Bally Gaming, Inc. Download and configuration management engine for gaming system
US9082258B2 (en) 2006-11-13 2015-07-14 Bally Gaming, Inc. Method and system for providing download and configuration job progress tracking and display via host user interface
US8347280B2 (en) 2006-11-13 2013-01-01 Bally Gaming, Inc. System and method for validating download or configuration assignment for an EGM or EGM collection
US8725801B2 (en) * 2006-11-21 2014-05-13 General Electric Company Systems and methods for image sharing in a healthcare setting while maintaining diagnostic image quality
US20080120570A1 (en) * 2006-11-22 2008-05-22 Bluetie, Inc. Methods for managing windows within an internet environment and systems thereof
US8281370B2 (en) * 2006-11-27 2012-10-02 Therap Services LLP Managing secure sharing of private information across security domains
US20080126446A1 (en) * 2006-11-27 2008-05-29 Storage Appliance Corporation Systems and methods for backing up user settings
US7761469B2 (en) * 2006-11-29 2010-07-20 Red Hat, Inc. Streamed attributes
US9135605B2 (en) * 2006-11-29 2015-09-15 Adobe Systems Incorporated Instant electronic meeting from within a current computer application
US8590002B1 (en) 2006-11-29 2013-11-19 Mcafee Inc. System, method and computer program product for maintaining a confidentiality of data on a network
US8621469B2 (en) * 2006-12-04 2013-12-31 Canon Kabushiki Kaisha Image processing job control system with access control ticket including function restriction based on user, time of request and upper limit on exceptional output count
JP4293234B2 (ja) * 2006-12-05 2009-07-08 日本電気株式会社 シンクライアントにおける接続管理方法及び接続管理サーバ
IL180020A (en) * 2006-12-12 2013-03-24 Waterfall Security Solutions Ltd Encryption -and decryption-enabled interfaces
US7765407B2 (en) * 2006-12-18 2010-07-27 Lenovo (Singapore) Pte. Ltd. Method and apparatus for providing centralized user authorization to allow secure sign-on to a computer system
US7991876B2 (en) * 2006-12-19 2011-08-02 International Business Machines Corporation Management of monitoring sessions between monitoring clients and monitoring target server
US8266103B1 (en) * 2006-12-21 2012-09-11 Emc Corporation Synchronizing resource type and property structures
US8065397B2 (en) 2006-12-26 2011-11-22 Axeda Acquisition Corporation Managing configurations of distributed devices
US8826032B1 (en) 2006-12-27 2014-09-02 Netapp, Inc. Systems and methods for network change discovery and host name resolution in storage network environments
US8539073B1 (en) 2006-12-29 2013-09-17 Google Inc. Startup of container applications
US7673113B2 (en) * 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
US8612547B1 (en) 2006-12-29 2013-12-17 Google Inc. Container interrupt services
US8248636B1 (en) 2006-12-29 2012-08-21 Google Inc. WYSIWYG printing for web based applications
US7895296B1 (en) 2006-12-29 2011-02-22 Google, Inc. Local storage for web based native applications
US8335817B1 (en) * 2006-12-29 2012-12-18 Google Inc. Message passing within a web based application framework
US9391826B1 (en) 2006-12-29 2016-07-12 Google Inc. Collaborative web based applications
US9384346B1 (en) 2006-12-29 2016-07-05 Google Inc. Local service access within a web based application framework
US20080163208A1 (en) * 2006-12-29 2008-07-03 Jeremy Burr Virtual machine creation for removable storage devices
US8108855B2 (en) * 2007-01-02 2012-01-31 International Business Machines Corporation Method and apparatus for deploying a set of virtual software resource templates to a set of nodes
US8327350B2 (en) * 2007-01-02 2012-12-04 International Business Machines Corporation Virtual resource templates
CN101542495B (zh) 2007-01-05 2014-10-22 Lg电子株式会社 用于传递资源的方法和用于提供信息的方法
US8100750B2 (en) * 2007-01-05 2012-01-24 Bally Gaming, Inc. Gaming machine with virtual user interface
US8103272B2 (en) * 2007-01-07 2012-01-24 Apple Inc. Techniques for database updates
US7805403B2 (en) 2007-01-07 2010-09-28 Apple Inc. Synchronization methods and systems
US8407289B2 (en) * 2007-01-08 2013-03-26 Cisco Technology, Inc. Methods and apparatuses for dynamically suggesting an application based on a collaboration session
US20080168174A1 (en) * 2007-01-09 2008-07-10 Manuel Jose Acosta Computer on demand
US9424154B2 (en) 2007-01-10 2016-08-23 Mcafee, Inc. Method of and system for computer system state checks
US8332929B1 (en) 2007-01-10 2012-12-11 Mcafee, Inc. Method and apparatus for process enforced configuration management
KR100877065B1 (ko) * 2007-01-12 2009-01-09 삼성전자주식회사 통신 프로토콜 결정 방법 및 장치
US8527982B1 (en) * 2007-01-12 2013-09-03 moka5. Inc. Auto install virtual machine monitor
IL180748A (en) 2007-01-16 2013-03-24 Waterfall Security Solutions Ltd Secure archive
US8274978B2 (en) * 2007-01-17 2012-09-25 Panasonic Corporation Systems and methods for reducing multicast traffic over a network
CN101231731B (zh) * 2007-01-25 2015-10-21 运软网络科技(上海)有限公司 一种应用虚拟化在公网上的通用商务方法及其迷你服务器
US8380880B2 (en) * 2007-02-02 2013-02-19 The Mathworks, Inc. Scalable architecture
US8533291B1 (en) * 2007-02-07 2013-09-10 Oracle America, Inc. Method and system for protecting publicly viewable web client reference to server resources and business logic
WO2008097202A1 (en) * 2007-02-09 2008-08-14 Agency For Science, Technology And Research A method and system for tamper proofing a system of interconnected electronic devices
US7975024B2 (en) * 2007-02-14 2011-07-05 Yakov Nudler Virtual personal computer access over multiple network sites
US20080201414A1 (en) * 2007-02-15 2008-08-21 Amir Husain Syed M Transferring a Virtual Machine from a Remote Server Computer for Local Execution by a Client Computer
US9043391B2 (en) 2007-02-15 2015-05-26 Citrix Systems, Inc. Capturing and restoring session state of a machine without using memory images
EP2013771B1 (en) 2007-02-16 2013-08-21 LG Electronics Inc. Method for managing domain using multi domain manager and domain system
JP4386926B2 (ja) * 2007-02-16 2009-12-16 富士通株式会社 暗号通信プログラム、暗号通信方法および暗号通信装置
US8365166B2 (en) * 2007-02-20 2013-01-29 Novell, Inc. System and method for automated provisioning of VMware image instances
US7949741B2 (en) * 2007-02-20 2011-05-24 Microsoft Corporation Printer user interface redirection over a terminal services session
US9661112B2 (en) * 2007-02-22 2017-05-23 International Business Machines Corporation System and methods for providing server virtualization assistance
US8201218B2 (en) 2007-02-28 2012-06-12 Microsoft Corporation Strategies for securely applying connection policies via a gateway
US9946982B2 (en) * 2007-02-28 2018-04-17 Red Hat, Inc. Web-based support subscriptions
US20090328193A1 (en) * 2007-07-20 2009-12-31 Hezi Moore System and Method for Implementing a Virtualized Security Platform
JP4337891B2 (ja) * 2007-03-01 2009-09-30 セイコーエプソン株式会社 記憶端末および情報処理システム
WO2008109761A2 (en) 2007-03-06 2008-09-12 Clearspring Technologies, Inc. Method and apparatus for data processing
US9009728B2 (en) 2007-03-06 2015-04-14 Addthis, Inc. Method and apparatus for widget and widget-container distribution control based on content rules
US7827237B2 (en) 2007-03-12 2010-11-02 Citrix Systems, Inc. Systems and methods for identifying long matches of data in a compression history
US8572160B2 (en) * 2007-03-12 2013-10-29 Citrix Systems, Inc. Systems and methods for script injection
US7870277B2 (en) * 2007-03-12 2011-01-11 Citrix Systems, Inc. Systems and methods for using object oriented expressions to configure application security policies
US7460038B2 (en) 2007-03-12 2008-12-02 Citrix Systems, Inc. Systems and methods of clustered sharing of compression histories
US9021140B2 (en) * 2007-03-12 2015-04-28 Citrix Systems, Inc. Systems and methods for error detection
US8490148B2 (en) 2007-03-12 2013-07-16 Citrix Systems, Inc Systems and methods for managing application security profiles
US7865585B2 (en) 2007-03-12 2011-01-04 Citrix Systems, Inc. Systems and methods for providing dynamic ad hoc proxy-cache hierarchies
US20080226082A1 (en) * 2007-03-12 2008-09-18 Storage Appliance Corporation Systems and methods for secure data backup
US7853679B2 (en) * 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring handling of undefined policy events
US7532134B2 (en) 2007-03-12 2009-05-12 Citrix Systems, Inc. Systems and methods for sharing compression histories between multiple devices
US8631147B2 (en) 2007-03-12 2014-01-14 Citrix Systems, Inc. Systems and methods for configuring policy bank invocations
US7619545B2 (en) 2007-03-12 2009-11-17 Citrix Systems, Inc. Systems and methods of using application and protocol specific parsing for compression
US8255570B2 (en) 2007-03-12 2012-08-28 Citrix Systems, Inc. Systems and methods of compression history expiration and synchronization
US7853678B2 (en) * 2007-03-12 2010-12-14 Citrix Systems, Inc. Systems and methods for configuring flow control of policy expressions
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
US20080228865A1 (en) * 2007-03-15 2008-09-18 Nazareno Brier Cruzada Electronic personal computing and videophone system consisting of a remote server system providing dynamic, subscription based virtual computing services & resources, a thin client hardware device connected to a television set and wireless keyboard & mouse, and a wireless mobile device (a Pocket PC Phone)
WO2008113641A1 (en) * 2007-03-19 2008-09-25 International Business Machines Corporation A method for logging of a remote control session
US7984158B2 (en) * 2007-03-20 2011-07-19 Microsoft Corporation Web service for coordinating actions of clients
US9105005B2 (en) * 2007-03-27 2015-08-11 Jianqing Wu Online computing system
JP2008243066A (ja) * 2007-03-28 2008-10-09 Canon Inc 情報処理装置及びその制御方法
US8135018B1 (en) 2007-03-29 2012-03-13 Qurio Holdings, Inc. Message propagation in a distributed virtual world
US8880582B2 (en) * 2007-03-30 2014-11-04 Hewlett-Packard Development Company, L.P. User access to a partitionable server
US20080243560A1 (en) * 2007-04-01 2008-10-02 Christopher Barendt Virtual cemetery with consecration
US20080250424A1 (en) * 2007-04-04 2008-10-09 Ms1 - Microsoft Corporation Seamless Window Implementation for Windows Presentation Foundation based Applications
US8116323B1 (en) * 2007-04-12 2012-02-14 Qurio Holdings, Inc. Methods for providing peer negotiation in a distributed virtual environment and related systems and computer program products
CN101291426B (zh) * 2007-04-18 2010-08-25 联想(北京)有限公司 第三方实时监控远程控制过程的方法和系统
US20080263126A1 (en) * 2007-04-18 2008-10-23 Nirali Sanghi Internet bridge for applications and web servers
US7743155B2 (en) * 2007-04-20 2010-06-22 Array Networks, Inc. Active-active operation for a cluster of SSL virtual private network (VPN) devices with load distribution
US8756293B2 (en) 2007-04-23 2014-06-17 Nholdings Sa Providing a user with virtual computing services
US20080034408A1 (en) * 2007-04-23 2008-02-07 Sachin Duggal Network-Based Computing Service On A Streamed Virtual Computer
TWI364208B (en) * 2007-04-23 2012-05-11 Inventec Corp Data updating method and electric device using the same
CN101296176B (zh) * 2007-04-25 2010-12-22 阿里巴巴集团控股有限公司 一种基于群集的数据处理方法和装置
US8621008B2 (en) 2007-04-26 2013-12-31 Mcafee, Inc. System, method and computer program product for performing an action based on an aspect of an electronic mail message thread
KR101415023B1 (ko) * 2007-04-26 2014-07-04 삼성전자주식회사 네트워크를 통한 정보 제공 방법 및 장치
US9438662B2 (en) * 2007-04-30 2016-09-06 Microsoft Technology Licensing, Llc Enabling secure remote assistance using a terminal services gateway
US9405585B2 (en) * 2007-04-30 2016-08-02 International Business Machines Corporation Management of heterogeneous workloads
JP5138359B2 (ja) * 2007-12-27 2013-02-06 エヌ・ティ・ティ アイティ株式会社 リモートアクセス方法
US7984143B2 (en) * 2007-05-11 2011-07-19 Spiceworks, Inc. Computer network software and hardware event monitoring and reporting system and method
US8909296B2 (en) * 2007-05-14 2014-12-09 Kopin Corporation Mobile wireless display software platform for controlling other systems and devices
US20080288498A1 (en) * 2007-05-14 2008-11-20 Hinshaw Foster D Network-attached storage devices
US7945638B2 (en) * 2007-05-17 2011-05-17 Oracle International Corporation Ubiquitous content subscription and delivery via a smart electronic paper device
US9231778B2 (en) * 2007-05-18 2016-01-05 Samsung Electronics Co., Ltd. Method and apparatus for managing control ownership for application of remote user interface server
US8000328B1 (en) 2007-05-22 2011-08-16 Qurio Holdings, Inc. Filtering messages in a distributed virtual world based on virtual space properties
US20220147634A1 (en) * 2007-05-22 2022-05-12 Computer Protection Ip, Llc Client authentication and data management system
US7895642B1 (en) * 2007-05-22 2011-02-22 Sprint Communications Company L.P. Tiered security services
JP5206674B2 (ja) * 2007-05-24 2013-06-12 日本電気株式会社 仮想マシン管理装置、仮想マシン管理方法および仮想マシン管理プログラム
US8533821B2 (en) 2007-05-25 2013-09-10 International Business Machines Corporation Detecting and defending against man-in-the-middle attacks
US8013804B2 (en) * 2007-05-30 2011-09-06 Lenovo (Singapore) Pte. Ltd, System and method for graphics remapping in hypervisor
US20080301770A1 (en) * 2007-05-31 2008-12-04 Kinder Nathan G Identity based virtual machine selector
JP4858313B2 (ja) * 2007-06-01 2012-01-18 富士ゼロックス株式会社 ワークスペース管理方式
US8640203B2 (en) 2007-06-04 2014-01-28 Rajesh G. Shakkarwar Methods and systems for the authentication of a user
US20080307504A1 (en) * 2007-06-09 2008-12-11 Pavel Cisler System connections and user interfaces
US8296833B2 (en) 2007-06-09 2012-10-23 Apple Inc. System connections and user interfaces
US20080307314A1 (en) * 2007-06-09 2008-12-11 Pavel Cisler System connections and user interfaces
US8266323B2 (en) * 2007-06-09 2012-09-11 Apple Inc. System connections and user interfaces
US20090030955A1 (en) * 2007-06-11 2009-01-29 Storage Appliance Corporation Automated data backup with graceful shutdown for vista-based system
US20090031298A1 (en) * 2007-06-11 2009-01-29 Jeffrey Brunet System and method for automated installation and/or launch of software
WO2008152967A1 (ja) * 2007-06-12 2008-12-18 Nec Corporation 情報処理装置、実行環境転送方法及びそのプログラム
US7990947B2 (en) 2007-06-12 2011-08-02 Robert W. Twitchell, Jr. Network watermark
US9769177B2 (en) * 2007-06-12 2017-09-19 Syracuse University Role-based access control to computing resources in an inter-organizational community
US20080313269A1 (en) * 2007-06-13 2008-12-18 Microsoft Corporation Remoting of Console Operating in a Multi-Session Environment
US8433656B1 (en) 2007-06-13 2013-04-30 Qurio Holdings, Inc. Group licenses for virtual objects in a distributed virtual world
US20080313309A1 (en) * 2007-06-18 2008-12-18 Pradipta Kumar Banerjee Client-server data transfer control
US20080320490A1 (en) * 2007-06-20 2008-12-25 Nokia Corporation Method, apparatus and computer program product for providing sub-process resource management
CN101330547A (zh) * 2007-06-20 2008-12-24 朗迅科技公司 在VoIP网络中分布的用于提供服务的媒体资源
US8127290B2 (en) * 2007-06-22 2012-02-28 Red Hat, Inc. Method and system for direct insertion of a virtual machine driver
US8429748B2 (en) * 2007-06-22 2013-04-23 Red Hat, Inc. Network traffic analysis using a dynamically updating ontological network description
US9727440B2 (en) 2007-06-22 2017-08-08 Red Hat, Inc. Automatic simulation of virtual machine performance
US9678803B2 (en) 2007-06-22 2017-06-13 Red Hat, Inc. Migration of network entities to a cloud infrastructure
US8191141B2 (en) 2007-06-22 2012-05-29 Red Hat, Inc. Method and system for cloaked observation and remediation of software attacks
US9354960B2 (en) 2010-12-27 2016-05-31 Red Hat, Inc. Assigning virtual machines to business application service groups based on ranking of the virtual machines
US8336108B2 (en) * 2007-06-22 2012-12-18 Red Hat, Inc. Method and system for collaboration involving enterprise nodes
US9477572B2 (en) 2007-06-22 2016-10-25 Red Hat, Inc. Performing predictive modeling of virtual machine relationships
US8949827B2 (en) * 2007-06-22 2015-02-03 Red Hat, Inc. Tracking a virtual machine
US8539570B2 (en) * 2007-06-22 2013-09-17 Red Hat, Inc. Method for managing a virtual machine
US8984504B2 (en) * 2007-06-22 2015-03-17 Red Hat, Inc. Method and system for determining a host machine by a virtual machine
US9569330B2 (en) 2007-06-22 2017-02-14 Red Hat, Inc. Performing dependency analysis on nodes of a business application service group
KR100917687B1 (ko) * 2007-06-26 2009-09-21 문창선 가상 인터페이스를 제공하기 위한 시스템 및 방법
US7814154B1 (en) 2007-06-26 2010-10-12 Qurio Holdings, Inc. Message transformations in a distributed virtual world
US20090003387A1 (en) * 2007-06-27 2009-01-01 Microsoft Corporation Synchronization Between Connection Manager and Extension Components
US8521501B2 (en) * 2007-06-27 2013-08-27 International Business Machines Corporation Real-time performance modeling of application in distributed environment and method of use
US20090006537A1 (en) * 2007-06-29 2009-01-01 Microsoft Corporation Virtual Desktop Integration with Terminal Services
US8484578B2 (en) 2007-06-29 2013-07-09 Microsoft Corporation Communication between a document editor in-space user interface and a document editor out-space user interface
US8762880B2 (en) 2007-06-29 2014-06-24 Microsoft Corporation Exposing non-authoring features through document status information in an out-space user interface
US8341277B2 (en) * 2007-07-03 2012-12-25 International Business Machines Corporation System and method for connecting closed, secure production network
US8321556B1 (en) 2007-07-09 2012-11-27 The Nielsen Company (Us), Llc Method and system for collecting data on a wireless device
US8307358B1 (en) 2007-07-10 2012-11-06 Parallels IP Holdings GmbH Method and system for unattended installation of guest operating system
US8711851B1 (en) * 2007-07-19 2014-04-29 American Megatrends, Inc. Multi-protocol data transfers
US8307024B2 (en) * 2007-07-20 2012-11-06 Hewlett-Packard Development Company, L.P. Assisted peer-to-peer media streaming
WO2009018366A1 (en) * 2007-08-01 2009-02-05 Signacert. Inc. Method and apparatus for lifecycle integrity verification of virtual machines
US20090037496A1 (en) * 2007-08-01 2009-02-05 Chong Benedict T Diagnostic Virtual Appliance
US8374929B1 (en) * 2007-08-06 2013-02-12 Gogrid, LLC System and method for billing for hosted services
IL185224A0 (en) * 2007-08-13 2008-01-06 C S L Computing Solutions Lead System and method for managing a virtual machine environment
US7984449B2 (en) * 2007-08-15 2011-07-19 International Business Machines Corporation In-band communication with virtual machines via a hypervisor message bus
US20090046644A1 (en) * 2007-08-17 2009-02-19 Qualcomm Incorporated Service set manager for ad hoc mobile service provider
US9392445B2 (en) 2007-08-17 2016-07-12 Qualcomm Incorporated Handoff at an ad-hoc mobile service provider
US20090073943A1 (en) * 2007-08-17 2009-03-19 Qualcomm Incorporated Heterogeneous wireless ad hoc network
US8644206B2 (en) 2007-08-17 2014-02-04 Qualcomm Incorporated Ad hoc service provider configuration for broadcasting service information
US8199965B1 (en) 2007-08-17 2012-06-12 Mcafee, Inc. System, method, and computer program product for preventing image-related data loss
US8661211B2 (en) * 2007-08-27 2014-02-25 International Business Machines Corporation Method for migrating contents of a memory on a virtual machine
US8671256B2 (en) * 2007-08-27 2014-03-11 International Business Machines Corporation Migrating contents of a memory on a virtual machine
US9274949B2 (en) * 2007-08-27 2016-03-01 International Business Machines Corporation Tracking data updates during memory migration
US8694990B2 (en) * 2007-08-27 2014-04-08 International Business Machines Corporation Utilizing system configuration information to determine a data migration order
US20090063752A1 (en) * 2007-08-27 2009-03-05 International Business Machines Corporation Utilizing data access patterns to determine a data migration order
US20090064287A1 (en) * 2007-08-28 2009-03-05 Rohati Systems, Inc. Application protection architecture with triangulated authorization
US20130276061A1 (en) 2007-09-05 2013-10-17 Gopi Krishna Chebiyyam System, method, and computer program product for preventing access to data with respect to a data access attempt associated with a remote data sharing session
IL187492A0 (en) * 2007-09-06 2008-02-09 Human Interface Security Ltd Information protection device
US8090847B2 (en) * 2008-05-02 2012-01-03 Microsoft Corporation Session broker extensibility application program interface
US8146098B2 (en) * 2007-09-07 2012-03-27 Manageiq, Inc. Method and apparatus for interfacing with a computer user via virtual thumbnails
JP5090834B2 (ja) * 2007-09-11 2012-12-05 株式会社リコー 情報処理装置及び認証制御プログラム
US8286082B2 (en) 2007-09-12 2012-10-09 Citrix Systems, Inc. Methods and systems for providing, by a remote machine, access to a desk band associated with a resource executing on a local machine
US8370802B2 (en) 2007-09-18 2013-02-05 International Business Machines Corporation Specifying an order for changing an operational state of software application components
CA2699565C (en) * 2007-09-20 2014-07-15 C&S Operations, Inc. Computer system with multiple terminals
US8127233B2 (en) * 2007-09-24 2012-02-28 Microsoft Corporation Remote user interface updates using difference and motion encoding
JP5194673B2 (ja) * 2007-09-26 2013-05-08 株式会社日立製作所 携帯端末、及び情報の送受信方法
US8782779B2 (en) * 2007-09-26 2014-07-15 Hewlett-Packard Development Company, L.P. System and method for achieving protected region within computer system
US20090089396A1 (en) * 2007-09-27 2009-04-02 Yuxi Sun Integrated Method of Enabling a Script-Embedded Web Browser to Interact with Drive-Based Contents
US8307443B2 (en) * 2007-09-28 2012-11-06 Microsoft Corporation Securing anti-virus software with virtualization
US8688627B2 (en) * 2007-09-28 2014-04-01 Xcerion Aktiebolag Transaction propagation in a networking environment
JP5082722B2 (ja) * 2007-09-28 2012-11-28 ブラザー工業株式会社 画像表示装置及び画像表示システム
US8446607B2 (en) * 2007-10-01 2013-05-21 Mcafee, Inc. Method and system for policy based monitoring and blocking of printing activities on local and network printers
JP4586840B2 (ja) * 2007-10-03 2010-11-24 コニカミノルタビジネステクノロジーズ株式会社 画像送信装置、画像送信システム及び画像送信方法
WO2009045299A1 (en) 2007-10-03 2009-04-09 Virtela Communications, Inc. Virtualized application acceleration infrastructure
US8209378B2 (en) 2007-10-04 2012-06-26 Clearspring Technologies, Inc. Methods and apparatus for widget sharing between content aggregation points
US9128741B2 (en) * 2007-10-05 2015-09-08 Mcafee, Inc. System, method, and computer program product for conditionally preventing use of hardware virtualization
US7769828B2 (en) * 2007-10-05 2010-08-03 International Business Machines Corporation System for provisioning time sharing option (TSO) and interactive productivity system facility (ISPF) services in a network environment
US8619877B2 (en) * 2007-10-11 2013-12-31 Microsoft Corporation Optimized key frame caching for remote interface rendering
US8121423B2 (en) * 2007-10-12 2012-02-21 Microsoft Corporation Remote user interface raster segment motion detection and encoding
US8106909B2 (en) * 2007-10-13 2012-01-31 Microsoft Corporation Common key frame caching for a remote user interface
US8539098B2 (en) * 2007-10-17 2013-09-17 Dispersive Networks, Inc. Multiplexed client server (MCS) communications and systems
WO2009052452A2 (en) * 2007-10-17 2009-04-23 Dispersive Networks Inc. Virtual dispersive routing
US8560634B2 (en) * 2007-10-17 2013-10-15 Dispersive Networks, Inc. Apparatus, systems and methods utilizing dispersive networking
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
WO2009052529A1 (en) * 2007-10-20 2009-04-23 Citrix Systems, Inc. Methods and systems for remoting three dimensional graphical data
EP2201486A2 (en) * 2007-10-20 2010-06-30 Citrix Systems, Inc. Systems and methods for folder redirection
US20090158299A1 (en) * 2007-10-31 2009-06-18 Carter Ernst B System for and method of uniform synchronization between multiple kernels running on single computer systems with multiple CPUs installed
KR20090044437A (ko) * 2007-10-31 2009-05-07 성균관대학교산학협력단 홈 네트워크 환경에서 이동 에이전트의 접근 제어 방법 및시스템
US8195931B1 (en) 2007-10-31 2012-06-05 Mcafee, Inc. Application change control
US9613487B2 (en) 2007-11-02 2017-04-04 Bally Gaming, Inc. Game related systems, methods, and articles that combine virtual and physical elements
US20090235248A1 (en) * 2007-11-07 2009-09-17 Avocent Corporation System and Method for Managing Virtual Hard Drives in a Virtual Machine Environment
US8616958B2 (en) 2007-11-12 2013-12-31 Bally Gaming, Inc. Discovery method and system for dynamically locating networked gaming components and resources
US20090132816A1 (en) * 2007-11-15 2009-05-21 Lockheed Martin Corporation PC on USB drive or cell phone
US8930945B2 (en) * 2007-11-15 2015-01-06 Novell, Inc. Environment managers via virtual machines
JP4906686B2 (ja) * 2007-11-19 2012-03-28 三菱電機株式会社 仮想マシンサーバサイジング装置及び仮想マシンサーバサイジング方法及び仮想マシンサーバサイジングプログラム
US8505029B1 (en) * 2007-11-26 2013-08-06 Adobe Systems Incorporated Virtual machine communication
US8407688B2 (en) 2007-11-27 2013-03-26 Managelq, Inc. Methods and apparatus for storing and transmitting historical configuration data associated with information technology assets
US8418173B2 (en) 2007-11-27 2013-04-09 Manageiq, Inc. Locating an unauthorized virtual machine and bypassing locator code by adjusting a boot pointer of a managed virtual machine in authorized environment
US8098598B1 (en) 2007-11-27 2012-01-17 Sprint Communications Company L.P. Emulating a removable mass storage device
US8341626B1 (en) 2007-11-30 2012-12-25 Hewlett-Packard Development Company, L. P. Migration of a virtual machine in response to regional environment effects
JP2009139990A (ja) * 2007-12-03 2009-06-25 Internatl Business Mach Corp <Ibm> 情報の不正取得を防止する技術
WO2009071107A1 (de) * 2007-12-05 2009-06-11 Siemens Aktiengesellscahft Virtuelle zugangskontrolle auf eine datenspeichereinheit
US7930264B2 (en) * 2007-12-06 2011-04-19 First Data Corporation Multi-module authentication platform
US20090158216A1 (en) * 2007-12-14 2009-06-18 Sony Corporation Method and system for setting up a computer system at startup
US8775577B1 (en) 2007-12-18 2014-07-08 Amazon Technologies, Inc. System and method for configuration management service
EP2238535A4 (en) * 2007-12-20 2011-03-09 Virtual Computer Inc SYSTEMS AND METHODS FOR VIRTUAL COMPUTER MANAGEMENT
US8539551B2 (en) * 2007-12-20 2013-09-17 Fujitsu Limited Trusted virtual machine as a client
US20110040812A1 (en) * 2007-12-20 2011-02-17 Virtual Computer, Inc. Layered Virtual File System
US8572370B1 (en) * 2007-12-21 2013-10-29 Parallels IP Holdings GmbH Accessing a remote virtual environment without user authentication
JP5387415B2 (ja) * 2007-12-26 2014-01-15 日本電気株式会社 仮想計算機システム、ポリシ強制システム、ポリシ強制方法及び仮想計算機制御用プログラム
EP2248003A1 (en) 2007-12-31 2010-11-10 Netapp, Inc. System and method for automatic storage load balancing in virtual server environments
US20090178126A1 (en) * 2008-01-03 2009-07-09 Sterling Du Systems and methods for providing user-friendly computer services
WO2009120984A1 (en) 2008-03-28 2009-10-01 Kopin Corporation Handheld wireless display device having high-resolution display suitable for use as a mobile internet device
US8355671B2 (en) 2008-01-04 2013-01-15 Kopin Corporation Method and apparatus for transporting video signal over Bluetooth wireless interface
US8353774B2 (en) 2008-01-04 2013-01-15 Wms Gaming, Inc. Sharing resources in wagering game systems
US8510808B2 (en) * 2008-01-08 2013-08-13 Microsoft Corporation Associating computing devices with common credentials
US7689700B2 (en) * 2008-01-08 2010-03-30 Microsoft Corporation Configuration of a peer group
US8898321B2 (en) * 2008-01-09 2014-11-25 Microsoft Corporation Remote device communication platform user interface
US8789151B2 (en) * 2008-01-09 2014-07-22 Microsoft Corporation Remote device communication platform
US8185894B1 (en) * 2008-01-10 2012-05-22 Hewlett-Packard Development Company, L.P. Training a virtual machine placement controller
EP2235639B1 (en) * 2008-01-17 2015-12-23 Qualcomm Incorporated Network message transformation device and methods thereof
US7478436B1 (en) * 2008-01-17 2009-01-13 International Business Machines Corporation System and method for providing last log-in screen shots for security confirmation
US8630415B2 (en) * 2008-01-25 2014-01-14 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for authentication service application processes during service reallocation in high availability clusters
JP5365526B2 (ja) * 2008-01-25 2013-12-11 富士通株式会社 情報処理装置、情報処理システム、コンピュータプログラム及び情報処理方法
US8769660B2 (en) 2008-01-26 2014-07-01 Citrix Systems, Inc. Systems and methods for proxying cookies for SSL VPN clientless sessions
US9965638B2 (en) * 2008-01-28 2018-05-08 Adobe Systems Incorporated Rights application within document-based conferencing
US20090193067A1 (en) * 2008-01-30 2009-07-30 Microsoft Corporation Server-based recalculation of vector graphics
US8515075B1 (en) 2008-01-31 2013-08-20 Mcafee, Inc. Method of and system for malicious software detection using critical address space protection
US9116715B2 (en) * 2008-02-04 2015-08-25 Rightscale, Inc. Systems and methods for efficiently booting and configuring virtual servers
US8060585B2 (en) * 2008-02-06 2011-11-15 Qualcomm Incorporated Self service distribution configuration framework
US8996890B2 (en) * 2008-02-07 2015-03-31 Dell Products L.P. Method for power conservation in virtualized environments
US8156503B2 (en) * 2008-02-12 2012-04-10 International Business Machines Corporation System, method and computer program product for accessing a memory space allocated to a virtual machine
JP5205075B2 (ja) * 2008-02-13 2013-06-05 パナソニック株式会社 暗号処理方法、暗号処理装置、復号処理方法および復号処理装置
DE102008009116A1 (de) * 2008-02-14 2009-08-20 Bizerba Gmbh & Co Kg Wägesystem
EP3905077A1 (en) * 2008-02-15 2021-11-03 Citrix Systems Inc. Systems and methods for secure handling of secure attention sequences
US20090210512A1 (en) * 2008-02-15 2009-08-20 Chanan Steinhart System, method, and program product for creating and sharing digital image output data across a network
US9076342B2 (en) 2008-02-19 2015-07-07 Architecture Technology Corporation Automated execution and evaluation of network-based training exercises
US8959248B2 (en) * 2008-02-22 2015-02-17 Microsoft Corporation Personal computing environment with virtual computing device
EP2248041B1 (en) 2008-02-26 2015-04-29 VMWare, Inc. Extending server-based desktop virtual machine architecture to client machines
US8645839B2 (en) * 2008-02-26 2014-02-04 Red Hat, Inc. Online desktop distribution
JP5078671B2 (ja) * 2008-02-28 2012-11-21 キヤノン株式会社 情報処理装置、情報処理システム及び情報処理方法
US8683062B2 (en) * 2008-02-28 2014-03-25 Microsoft Corporation Centralized publishing of network resources
US8161160B2 (en) * 2008-02-28 2012-04-17 Microsoft Corporation XML-based web feed for web access of remote resources
US7987211B2 (en) * 2008-02-29 2011-07-26 Dell Products L.P. System and method for automated deployment of an information handling system
US8495126B2 (en) * 2008-02-29 2013-07-23 Dell Products L.P. System and method for managing the deployment of an information handling system
US20090222813A1 (en) * 2008-02-29 2009-09-03 Dell Products L. P. System and Method for Automated Configuration of an Information Handling System
US20090222879A1 (en) * 2008-03-03 2009-09-03 Microsoft Corporation Super policy in information protection systems
US7852849B2 (en) * 2008-03-04 2010-12-14 Bridgewater Systems Corp. Providing dynamic quality of service for virtual private networks
US20090228654A1 (en) * 2008-03-06 2009-09-10 Quantum Corporation, A Delaware Corporation Media Cartridge Resident Auto-Sensing/Loading Archive Software
US9084231B2 (en) * 2008-03-13 2015-07-14 Qualcomm Incorporated Methods and apparatus for acquiring and using multiple connection identifiers
JP2009223442A (ja) * 2008-03-13 2009-10-01 Hitachi Ltd ストレージシステム
US20090235177A1 (en) * 2008-03-14 2009-09-17 Microsoft Corporation Multi-monitor remote desktop environment user interface
US8893285B2 (en) 2008-03-14 2014-11-18 Mcafee, Inc. Securing data using integrated host-based data loss agent with encryption detection
US8954551B2 (en) * 2008-03-17 2015-02-10 Microsoft Corporation Virtualization of groups of devices
US8171115B2 (en) * 2008-03-18 2012-05-01 Microsoft Corporation Resource equalization for inter- and intra- data center operations
US8489995B2 (en) 2008-03-18 2013-07-16 Rightscale, Inc. Systems and methods for efficiently managing and configuring virtual servers
US9306796B1 (en) * 2008-03-18 2016-04-05 Mcafee, Inc. System, method, and computer program product for dynamically configuring a virtual environment for identifying unwanted data
US9037608B1 (en) * 2008-03-21 2015-05-19 Symantec Corporation Monitoring application behavior by detecting file access category changes
US8255536B2 (en) * 2008-03-21 2012-08-28 Microsoft Corporation Bandwidth and latency controller
US8539565B2 (en) 2008-03-21 2013-09-17 Microsoft Corporation Load balancing in server computer systems
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
US8176482B1 (en) * 2008-03-28 2012-05-08 Symantec Corporation Methods and systems for inserting software applications into images
US8620146B1 (en) * 2008-03-28 2013-12-31 Theresa Coleman Picture-in-picture video system for virtual exercise, instruction and entertainment
US7979260B1 (en) * 2008-03-31 2011-07-12 Symantec Corporation Simulating PXE booting for virtualized machines
US8312547B1 (en) * 2008-03-31 2012-11-13 Symantec Corporation Anti-malware scanning in a portable application virtualized environment
US8261254B2 (en) 2008-03-31 2012-09-04 Symantec Corporation Dynamic insertion and removal of virtual software sub-layers
US20090249219A1 (en) * 2008-03-31 2009-10-01 Best Steven F Providing a Shared Desktop Interface of Multiple Computer Terminals
US8646052B2 (en) * 2008-03-31 2014-02-04 Intel Corporation Method and apparatus for providing a secure display window inside the primary display
US9588781B2 (en) 2008-03-31 2017-03-07 Microsoft Technology Licensing, Llc Associating command surfaces with multiple active components
US8549347B1 (en) 2010-12-20 2013-10-01 Amazon Technologies, Inc. Techniques for network replication
US8281363B1 (en) * 2008-03-31 2012-10-02 Symantec Corporation Methods and systems for enforcing network access control in a virtual environment
US8135838B2 (en) 2008-04-08 2012-03-13 Geminare Incorporated System and method for providing data and application continuity in a computer system
JP5047870B2 (ja) * 2008-04-17 2012-10-10 株式会社日立製作所 マスタ管理システム、マスタ管理方法、およびマスタ管理プログラム
US8756660B2 (en) * 2008-04-17 2014-06-17 Microsoft Corporation Enabling two-factor authentication for terminal services
US8615502B2 (en) 2008-04-18 2013-12-24 Mcafee, Inc. Method of and system for reverse mapping vnode pointers
US8689292B2 (en) * 2008-04-21 2014-04-01 Api Technologies Corp. Method and systems for dynamically providing communities of interest on an end user workstation
JP2011524559A (ja) * 2008-04-22 2011-09-01 バークレイズ・キャピタル・インコーポレーテッド 安全なリモートコンピュータのタスク自動化のためのシステム及び方法
DE102008020832B3 (de) * 2008-04-25 2009-11-19 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Konzept zur effizienten Verteilung einer Zugangsberechtigungsinformation
EP2274674A1 (en) * 2008-04-25 2011-01-19 VMWare, Inc. Linking virtualized application namespaces at runtime
US9483911B2 (en) 2008-04-30 2016-11-01 Bally Gaming, Inc. Information distribution in gaming networks
US9005034B2 (en) 2008-04-30 2015-04-14 Bally Gaming, Inc. Systems and methods for out-of-band gaming machine management
US8856657B2 (en) * 2008-04-30 2014-10-07 Bally Gaming, Inc. User interface for managing network download and configuration tasks
US20090276774A1 (en) * 2008-05-01 2009-11-05 Junji Kinoshita Access control for virtual machines in an information system
US8473594B2 (en) 2008-05-02 2013-06-25 Skytap Multitenant hosted virtual machine infrastructure
US9720674B1 (en) * 2008-05-05 2017-08-01 Open Invention Network, Llc Automating application of software patches to a server having a virtualization layer
US8364983B2 (en) 2008-05-08 2013-01-29 Microsoft Corporation Corralling virtual machines with encryption keys
US8793478B2 (en) * 2008-05-14 2014-07-29 Dell Products, Lp Grid computing resources and a method of use thereof
US8667556B2 (en) 2008-05-19 2014-03-04 Cisco Technology, Inc. Method and apparatus for building and managing policies
US8094560B2 (en) 2008-05-19 2012-01-10 Cisco Technology, Inc. Multi-stage multi-core processing of network packets
US8677453B2 (en) 2008-05-19 2014-03-18 Cisco Technology, Inc. Highly parallel evaluation of XACML policies
CN102037710B (zh) * 2008-05-19 2014-04-02 思杰系统有限公司 用于远程处理多媒体插件调用的方法和系统
US20130054426A1 (en) * 2008-05-20 2013-02-28 Verizon Patent And Licensing Inc. System and Method for Customer Provisioning in a Utility Computing Platform
US8484355B1 (en) 2008-05-20 2013-07-09 Verizon Patent And Licensing Inc. System and method for customer provisioning in a utility computing platform
US8005851B2 (en) * 2008-05-21 2011-08-23 Microsoft Corporation Streaming virtual disk for virtual applications
US9459927B2 (en) * 2008-05-22 2016-10-04 Alcatel Lucent Central office based virtual personal computer
US8195774B2 (en) 2008-05-23 2012-06-05 Vmware, Inc. Distributed virtual switch for virtualized computer systems
US8713177B2 (en) * 2008-05-30 2014-04-29 Red Hat, Inc. Remote management of networked systems using secure modular platform
US9443377B2 (en) 2008-05-30 2016-09-13 Bally Gaming, Inc. Web pages for gaming devices
US8406748B2 (en) 2009-01-28 2013-03-26 Headwater Partners I Llc Adaptive ambient services
US8275830B2 (en) 2009-01-28 2012-09-25 Headwater Partners I Llc Device assisted CDR creation, aggregation, mediation and billing
US8626115B2 (en) 2009-01-28 2014-01-07 Headwater Partners I Llc Wireless network service interfaces
US8340634B2 (en) 2009-01-28 2012-12-25 Headwater Partners I, Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US8589541B2 (en) 2009-01-28 2013-11-19 Headwater Partners I Llc Device-assisted services for protecting network capacity
US8924469B2 (en) 2008-06-05 2014-12-30 Headwater Partners I Llc Enterprise access control and accounting allocation for access networks
US8402111B2 (en) 2009-01-28 2013-03-19 Headwater Partners I, Llc Device assisted services install
US8346225B2 (en) 2009-01-28 2013-01-01 Headwater Partners I, Llc Quality of service for device assisted services
US8832777B2 (en) 2009-03-02 2014-09-09 Headwater Partners I Llc Adapting network policies based on device service processor configuration
US8924543B2 (en) 2009-01-28 2014-12-30 Headwater Partners I Llc Service design center for device assisted services
US8548428B2 (en) 2009-01-28 2013-10-01 Headwater Partners I Llc Device group partitions and settlement platform
US8725123B2 (en) 2008-06-05 2014-05-13 Headwater Partners I Llc Communications device with secure data path processing agents
US8898293B2 (en) 2009-01-28 2014-11-25 Headwater Partners I Llc Service offer set publishing to device agent with on-device service selection
US7870274B1 (en) * 2008-06-05 2011-01-11 Sprint Communications Company L.P. Plug-in file sharing
US8326958B1 (en) 2009-01-28 2012-12-04 Headwater Partners I, Llc Service activation tracking system
US8635335B2 (en) 2009-01-28 2014-01-21 Headwater Partners I Llc System and method for wireless network offloading
US8391834B2 (en) 2009-01-28 2013-03-05 Headwater Partners I Llc Security techniques for device assisted services
US9154386B2 (en) * 2008-06-06 2015-10-06 Tdi Technologies, Inc. Using metadata analysis for monitoring, alerting, and remediation
US20090307305A1 (en) * 2008-06-10 2009-12-10 Entropic Communications, Inc. Network allocation
US9489647B2 (en) 2008-06-19 2016-11-08 Csc Agility Platform, Inc. System and method for a cloud computing abstraction with self-service portal for publishing resources
EP2316071A4 (en) 2008-06-19 2011-08-17 Servicemesh Inc CLOUD DATA PROCESSING GATEWAY, CLOUD DATA PROCESSING HYPERVISOR, AND METHOD FOR IMPLEMENTING THEM
US10411975B2 (en) 2013-03-15 2019-09-10 Csc Agility Platform, Inc. System and method for a cloud computing abstraction with multi-tier deployment policy
US8261322B2 (en) 2008-06-19 2012-09-04 Microsoft Corporation Home networking web-based service portal
US8949936B2 (en) * 2008-06-19 2015-02-03 Microsoft Technology Licensing, Llc Hosted network device user interface
US9069599B2 (en) 2008-06-19 2015-06-30 Servicemesh, Inc. System and method for a cloud computing abstraction layer with security zone facilities
US9100246B1 (en) 2008-06-19 2015-08-04 Symantec Corporation Distributed application virtualization
US9665850B2 (en) 2008-06-20 2017-05-30 Microsoft Technology Licensing, Llc Synchronized conversation-centric message list and message reading pane
CN102067101B (zh) * 2008-06-20 2013-07-24 惠普开发有限公司 低层级初始化器
US20090328077A1 (en) * 2008-06-25 2009-12-31 International Business Machines Corporation Software Appliances not Requiring Virtual Machines
US20090323799A1 (en) * 2008-06-25 2009-12-31 Stmicroelectronics, Inc. System and method for rendering a high-performance virtual desktop using compression technology
US8443093B2 (en) * 2008-06-25 2013-05-14 Hewlett-Packard Development Company, L.P. Connection management system for multiple connections
US20090327904A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Presenting dynamic folders
US8612862B2 (en) * 2008-06-27 2013-12-17 Microsoft Corporation Integrated client for access to remote resources
US7941539B2 (en) * 2008-06-30 2011-05-10 Oracle America, Inc. Method and system for creating a virtual router in a blade chassis to maintain connectivity
US9219733B2 (en) * 2008-06-30 2015-12-22 Microsoft Technology Licensing, Llc Software-based aliasing for accessing multiple shared resources on a single remote host
US8151099B2 (en) * 2008-07-01 2012-04-03 Caterpillar Inc. Virtualized service tool and virtualized control tool
US8055784B2 (en) * 2008-07-07 2011-11-08 Disney Enterprises, Inc. Content navigation module for managing delivery of content to computing devices and method therefor
US8762429B1 (en) * 2008-07-09 2014-06-24 Sprint Communications Company L.P. File location application programming interface
WO2010006187A2 (en) * 2008-07-11 2010-01-14 Bally Gaming, Inc. Integration gateway
US8307203B2 (en) * 2008-07-14 2012-11-06 Riverbed Technology, Inc. Methods and systems for secure communications using a local certification authority
US8745601B1 (en) * 2008-07-17 2014-06-03 Apple Inc. Methods and systems for using data structures for operating systems
US8516564B2 (en) * 2008-07-18 2013-08-20 International Business Machines Corporation Secure user interaction using virtualization
US9361089B2 (en) * 2008-07-22 2016-06-07 International Business Machines Corporation Secure patch updates of a virtual machine image in a virtualization data processing system
US8978104B1 (en) 2008-07-23 2015-03-10 United Services Automobile Association (Usaa) Access control center workflow and approval
US8271528B1 (en) * 2008-07-25 2012-09-18 United Services Automobile Association (Usaa) Database for access control center
JP5222651B2 (ja) * 2008-07-30 2013-06-26 株式会社日立製作所 仮想計算機システムおよび仮想計算機システムの制御方法
US10887399B2 (en) 2008-07-30 2021-01-05 Mcafee, Llc System, method, and computer program product for managing a connection between a device and a network
DE102008035601A1 (de) * 2008-07-31 2010-02-04 Walter, Thomas, Dr.-Ing. System zum Verwalten von Dateien
GB2473797A (en) * 2008-07-31 2011-03-23 Hewlett Packard Development Co Selectively re-mapping a network topology
CN101645004A (zh) * 2008-08-04 2010-02-10 优诺威讯国际有限公司 视窗显示的方法
US8201175B2 (en) * 2008-08-05 2012-06-12 International Business Machines Corporation Creating and associating a virtual pseudo TTY with a running process
US9077684B1 (en) 2008-08-06 2015-07-07 Mcafee, Inc. System, method, and computer program product for determining whether an electronic mail message is compliant with an etiquette policy
US8776038B2 (en) 2008-08-07 2014-07-08 Code Systems Corporation Method and system for configuration of virtualized software applications
US8434093B2 (en) 2008-08-07 2013-04-30 Code Systems Corporation Method and system for virtualization of software applications
US9104662B2 (en) * 2008-08-08 2015-08-11 Oracle International Corporation Method and system for implementing parallel transformations of records
US8260751B2 (en) * 2008-08-12 2012-09-04 Tdi Technologies, Inc. Log file time sequence stamping
US8634703B1 (en) * 2008-08-12 2014-01-21 Tivo Inc. Real-time DVR usage and reporting system
US8356338B1 (en) 2008-08-13 2013-01-15 Sprint Communications Company L.P. Wireless drive file peering
US8261342B2 (en) * 2008-08-20 2012-09-04 Reliant Security Payment card industry (PCI) compliant architecture and associated methodology of managing a service infrastructure
US8797233B2 (en) * 2008-08-20 2014-08-05 The Regents Of The University Of California Systems, methods, and devices for dynamic management of data streams updating displays
US9100297B2 (en) 2008-08-20 2015-08-04 Red Hat, Inc. Registering new machines in a software provisioning environment
US8543935B2 (en) * 2008-08-20 2013-09-24 Red Hat, Inc. Full-screen heterogeneous desktop display and control
US8336047B2 (en) * 2008-08-25 2012-12-18 International Business Machines Corporation Provisioning virtual resources using name resolution
US20100057865A1 (en) * 2008-09-04 2010-03-04 International Business Machines Corporation Transferable Debug Session in a Team Environment
JP2010066931A (ja) * 2008-09-09 2010-03-25 Fujitsu Ltd 負荷分散機能を有した情報処理装置
US8707397B1 (en) 2008-09-10 2014-04-22 United Services Automobile Association Access control center auto launch
US20100064228A1 (en) * 2008-09-11 2010-03-11 Ely Tsern Expandable system architecture comprising a handheld computer device that dynamically generates different user environments with secondary devices with displays of various form factors
US8065714B2 (en) * 2008-09-12 2011-11-22 Hytrust, Inc. Methods and systems for securely managing virtualization platform
US20100070546A1 (en) * 2008-09-12 2010-03-18 Meyer Daniel P Providing Local File Storage within a Java Server Environment
US8239357B1 (en) * 2008-09-12 2012-08-07 Ryan, LLC Method and system for extracting information from electronic data sources
US8661513B2 (en) * 2008-09-12 2014-02-25 Hewlett-Packard Development Company, L.P. Selection and application of roles and systems based on username and layout ID
KR101069500B1 (ko) * 2008-09-12 2011-09-30 포항공과대학교 산학협력단 네크워크 시스템에서 가상화 및 신뢰 플랫폼 모듈을 이용한데이터 보안 처리 방법 및 기록매체
US20100100605A1 (en) * 2008-09-15 2010-04-22 Allen Stewart O Methods and apparatus for management of inter-widget interactions
US8255806B2 (en) * 2008-09-15 2012-08-28 Vmware, Inc. Unified secure virtual machine player and remote desktop client
US7941549B2 (en) * 2008-09-16 2011-05-10 Microsoft Corporation Protocol exchange and policy enforcement for a terminal server session
US8850525B1 (en) 2008-09-17 2014-09-30 United Services Automobile Association (Usaa) Access control center auto configuration
US8588418B2 (en) 2008-09-22 2013-11-19 Sprint Communications Company L.P. User level security for an emulated removable mass storage device
US8645559B2 (en) * 2008-09-22 2014-02-04 Microsoft Corporation Redirection of multiple remote devices
US8286220B2 (en) * 2008-09-23 2012-10-09 Zscaler, Inc. Browser access control
US8468535B1 (en) 2008-09-23 2013-06-18 Gogrid, LLC Automated system and method to provision and allocate hosting resources
US8521926B2 (en) * 2008-09-25 2013-08-27 Aten International Co., Ltd. Remote desktop control system using USB interface and method thereof
US8516079B2 (en) * 2008-09-25 2013-08-20 Aten International Co., Ltd. Remote desktop control system using USB interface and method thereof
US20100082702A1 (en) * 2008-09-29 2010-04-01 Honeywell International Inc. Dynamic vehicle information management
US20100082733A1 (en) * 2008-09-30 2010-04-01 Microsoft Corporation Extensible remote programmatic access to user interface
US9880891B2 (en) * 2008-09-30 2018-01-30 Hewlett-Packard Development Company, L.P. Assignment and failover of resources
US8396819B2 (en) * 2008-09-30 2013-03-12 Lockheed Martin Corp Unique interface in service oriented architecture
US8732308B1 (en) * 2008-10-01 2014-05-20 Hewlett-Packard Development Company, L. P. Coordinated management in virtualized systems using management brokers and management channels
US20100088397A1 (en) * 2008-10-03 2010-04-08 Joe Jaudon Systems for dynamically updating virtual desktops or virtual applications
US20100088360A1 (en) * 2008-10-03 2010-04-08 Joe Jaudon Methods for dynamically updating virtual desktops or virtual applications
US8713091B2 (en) * 2008-10-03 2014-04-29 Microsoft Corporation Network based JIT on a priori knowledge of a set of disparate clients
US20100088698A1 (en) * 2008-10-03 2010-04-08 Ravishankar Krishnamurthy Techniques for managing communication sessions
JP2010093585A (ja) * 2008-10-08 2010-04-22 Fujitsu Ltd ネットワーク接続制御プログラム及び方法、ネットワーク接続プログラム及び方法、認証装置
US8271974B2 (en) * 2008-10-08 2012-09-18 Kaavo Inc. Cloud computing lifecycle management for N-tier applications
US8005984B2 (en) * 2008-10-09 2011-08-23 International Business Machines Corporation Flexible procedure for quiescing multiplexed client
US8161023B2 (en) * 2008-10-13 2012-04-17 Internatioanal Business Machines Corporation Inserting a PDF shared resource back into a PDF statement
US7805516B2 (en) * 2008-10-14 2010-09-28 Dell Products L.P. Enabling throttling of resources on a virtualization enabled information handling system
US8479015B2 (en) * 2008-10-17 2013-07-02 Oracle International Corporation Virtual image management
US8260873B1 (en) 2008-10-22 2012-09-04 Qurio Holdings, Inc. Method and system for grouping user devices based on dual proximity
IL194943A0 (en) * 2008-10-27 2009-09-22 Human Interface Security Ltd Verification of data transmitted by computer
GB2479068B (en) 2008-10-28 2013-10-02 Hewlett Packard Development Co File type association in a remote computing session
US20100107257A1 (en) * 2008-10-29 2010-04-29 International Business Machines Corporation System, method and program product for detecting presence of malicious software running on a computer system
US8842313B2 (en) * 2008-10-30 2014-09-23 Xerox Corporation System and method for managing a print job in a printing system
US8407316B2 (en) * 2008-10-30 2013-03-26 Xerox Corporation System and method for managing a print job in a printing system
EP2182696A1 (fr) * 2008-10-31 2010-05-05 Gemalto SA Procédé d'établissement d'une liaison entre les applications d'une carte d'authentification d'un abonné et un réseau IMS
US9069774B1 (en) * 2008-11-04 2015-06-30 Infoblox Inc. Graphical visualization and management of networks
US8149431B2 (en) * 2008-11-07 2012-04-03 Citrix Systems, Inc. Systems and methods for managing printer settings in a networked computing environment
US8566821B2 (en) * 2008-11-11 2013-10-22 Netapp Inc. Cloning virtual machines
US8266213B2 (en) 2008-11-14 2012-09-11 Bally Gaming, Inc. Apparatus, method, and system to provide a multiple processor architecture for server-based gaming
US9542222B2 (en) * 2008-11-14 2017-01-10 Oracle International Corporation Resource broker system for dynamically deploying and managing software services in a virtual environment based on resource usage and service level agreement
US8260926B2 (en) 2008-11-25 2012-09-04 Citrix Systems, Inc. Systems and methods for GSLB site persistence
US20100131667A1 (en) * 2008-11-25 2010-05-27 Infineon Technologies Ag Executable Communication Protocol Description Method and Apparatus
US9009329B2 (en) * 2008-11-25 2015-04-14 Microsoft Technology Licensing, Llc Platform for enabling terminal services virtualization
JP5856482B2 (ja) * 2008-11-26 2016-02-09 カルガリー・サイエンティフィック・インコーポレイテッドCalgary Scientific Inc. 画像アーカイブおよび通信システムネットワークにおけるデータ通信
US8782204B2 (en) * 2008-11-28 2014-07-15 Red Hat, Inc. Monitoring hardware resources in a software provisioning environment
CN101753594B (zh) * 2008-11-28 2014-03-12 国际商业机器公司 一种激活虚拟机的方法和装置
US9135024B2 (en) * 2008-11-30 2015-09-15 Red Hat Israel, Ltd. Playing multimedia content at remote graphics display client
US8250182B2 (en) * 2008-11-30 2012-08-21 Red Hat Israel, Ltd. Dynamic loading between a server and a client
US8806611B2 (en) * 2008-12-02 2014-08-12 At&T Intellectual Property I, L.P. Message administration system
US8931087B1 (en) * 2008-12-03 2015-01-06 Verizon Patent And Licensing Inc. Reconfigurable virtualized remote computer security system
US20100146039A1 (en) * 2008-12-08 2010-06-10 Dell Products L.P. System and Method for Providing Access to a Shared System Image
US8239938B2 (en) * 2008-12-08 2012-08-07 Nvidia Corporation Centralized device virtualization layer for heterogeneous processing units
CN101447992B (zh) * 2008-12-08 2011-04-06 西安西电捷通无线网络通信股份有限公司 一种基于三元对等鉴别的可信网络连接实现方法
US8447977B2 (en) * 2008-12-09 2013-05-21 Canon Kabushiki Kaisha Authenticating a device with a server over a network
US8413210B2 (en) * 2008-12-09 2013-04-02 Microsoft Corporation Credential sharing between multiple client applications
US8180905B2 (en) * 2008-12-09 2012-05-15 Microsoft Corporation User-mode based remote desktop protocol (RDP) encoding architecture
US9021522B2 (en) * 2008-12-10 2015-04-28 Microsoft Technology Licensing, Llc Concurrent interactive television for network connected devices
US8544003B1 (en) 2008-12-11 2013-09-24 Mcafee, Inc. System and method for managing virtual machine configurations
US8312268B2 (en) 2008-12-12 2012-11-13 International Business Machines Corporation Virtual machine
US8464256B1 (en) 2009-04-10 2013-06-11 Open Invention Network, Llc System and method for hierarchical interception with isolated environments
US9197706B2 (en) * 2008-12-16 2015-11-24 Qualcomm Incorporated Apparatus and method for bundling application services with inbuilt connectivity management
KR101062654B1 (ko) 2008-12-16 2011-09-06 한국전자통신연구원 이동 단말 환경에서 가상 머신을 이용한 지속적인 데스크톱제공 시스템 및 방법
US20100205099A1 (en) * 2008-12-16 2010-08-12 Kalle Ahmavaara System and methods to facilitate connections to access networks
KR101489466B1 (ko) 2008-12-17 2015-02-03 삼성전자 주식회사 프로세스 마이그레이션을 관리하는 장치 및 방법
US20110055299A1 (en) * 2008-12-18 2011-03-03 Virtual Computer, Inc. Managing User Data in a Layered Virtual Workspace
US9270785B2 (en) * 2008-12-18 2016-02-23 Citrix Systems, Inc. System and method for a distributed virtual desktop infrastructure
US9237175B2 (en) * 2008-12-22 2016-01-12 Microsoft Technology Licensing, Llc Internet protocol (IP) address virtualization for terminal server sessions
US9547653B1 (en) 2008-12-23 2017-01-17 Spring Communications Company L.P. Wireless drive file backup
KR101224717B1 (ko) * 2008-12-26 2013-01-21 에스케이플래닛 주식회사 소프트웨어 라이센스 보호 방법과 그를 위한 시스템, 서버,단말기 및 컴퓨터로 읽을 수 있는 기록매체
US8930423B1 (en) * 2008-12-30 2015-01-06 Symantec Corporation Method and system for restoring encrypted files from a virtual machine image
FR2940688B1 (fr) * 2008-12-30 2011-02-25 Sagem Comm Systeme comprenant un serveur et un terminal munis d'interfaces graphiques communiquant via un protocole de partage d'images
US9240978B2 (en) * 2008-12-31 2016-01-19 Verizon Patent And Licensing Inc. Communication system having message encryption
US8126985B1 (en) 2008-12-31 2012-02-28 Qurio Holdings, Inc. Prioritizing virtual object downloads in a distributed virtual environment
JP4263234B1 (ja) * 2009-01-08 2009-05-13 株式会社東芝 携帯端末
WO2010082192A1 (en) * 2009-01-14 2010-07-22 Aspect Magnet Technologies Ltd. Layout storing-communicating and replacing means for providing a pre-stored layout to a computer
US20100180206A1 (en) * 2009-01-15 2010-07-15 NexAira, Inc. Systems and methods for iconic graphical user interface and embedded device manager
US8645689B2 (en) * 2009-01-16 2014-02-04 Microsoft Corporation Stateless agent
US20100185843A1 (en) * 2009-01-20 2010-07-22 Microsoft Corporation Hardware encrypting storage device with physically separable key storage device
US20100198872A1 (en) * 2009-01-25 2010-08-05 Thomas Norwin Walter System for the Management of Files
US20100188224A1 (en) * 2009-01-26 2010-07-29 Cheng Loong Corporation. Method for searching electronic data and system thereof
US8224885B1 (en) 2009-01-26 2012-07-17 Teradici Corporation Method and system for remote computing session management
US9270559B2 (en) 2009-01-28 2016-02-23 Headwater Partners I Llc Service policy implementation for an end-user device having a control application or a proxy agent for routing an application traffic flow
US11546472B2 (en) 2009-01-28 2023-01-03 Virtual Hold Technology Solutions, Llc System and method for a cloud callback platform
US9565707B2 (en) 2009-01-28 2017-02-07 Headwater Partners I Llc Wireless end-user device with wireless data attribution to multiple personas
US8793758B2 (en) 2009-01-28 2014-07-29 Headwater Partners I Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US10484858B2 (en) 2009-01-28 2019-11-19 Headwater Research Llc Enhanced roaming services and converged carrier networks with device assisted services and a proxy
US9351193B2 (en) 2009-01-28 2016-05-24 Headwater Partners I Llc Intermediate networking devices
US10326800B2 (en) 2009-01-28 2019-06-18 Headwater Research Llc Wireless network service interfaces
US8351898B2 (en) 2009-01-28 2013-01-08 Headwater Partners I Llc Verifiable device assisted service usage billing with integrated accounting, mediation accounting, and multi-account
US10237757B2 (en) 2009-01-28 2019-03-19 Headwater Research Llc System and method for wireless network offloading
US9253663B2 (en) 2009-01-28 2016-02-02 Headwater Partners I Llc Controlling mobile device communications on a roaming network based on device state
US10264138B2 (en) 2009-01-28 2019-04-16 Headwater Research Llc Mobile device and service management
US10200541B2 (en) 2009-01-28 2019-02-05 Headwater Research Llc Wireless end-user device with divided user space/kernel space traffic policy system
US9955332B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Method for child wireless device activation to subscriber account of a master wireless device
US9392462B2 (en) 2009-01-28 2016-07-12 Headwater Partners I Llc Mobile end-user device with agent limiting wireless data communication for specified background applications based on a stored policy
US10064055B2 (en) 2009-01-28 2018-08-28 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US10783581B2 (en) 2009-01-28 2020-09-22 Headwater Research Llc Wireless end-user device providing ambient or sponsored services
US9578182B2 (en) 2009-01-28 2017-02-21 Headwater Partners I Llc Mobile device and service management
US9557889B2 (en) 2009-01-28 2017-01-31 Headwater Partners I Llc Service plan design, user interfaces, application programming interfaces, and device management
US9647918B2 (en) 2009-01-28 2017-05-09 Headwater Research Llc Mobile device and method attributing media services network usage to requesting application
US10798252B2 (en) 2009-01-28 2020-10-06 Headwater Research Llc System and method for providing user notifications
US8606911B2 (en) 2009-03-02 2013-12-10 Headwater Partners I Llc Flow tagging for service policy implementation
US11218854B2 (en) 2009-01-28 2022-01-04 Headwater Research Llc Service plan design, user interfaces, application programming interfaces, and device management
US11665282B2 (en) 2009-01-28 2023-05-30 Virtual Hold Technology Solutions, Llc System and method for secure transitory data storage and management
US9706061B2 (en) 2009-01-28 2017-07-11 Headwater Partners I Llc Service design center for device assisted services
US10715342B2 (en) 2009-01-28 2020-07-14 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US10779177B2 (en) 2009-01-28 2020-09-15 Headwater Research Llc Device group partitions and settlement platform
US8893009B2 (en) 2009-01-28 2014-11-18 Headwater Partners I Llc End user device that secures an association of application to service policy with an application certificate check
US10492102B2 (en) 2009-01-28 2019-11-26 Headwater Research Llc Intermediate networking devices
US10057775B2 (en) 2009-01-28 2018-08-21 Headwater Research Llc Virtualized policy and charging system
US9572019B2 (en) 2009-01-28 2017-02-14 Headwater Partners LLC Service selection set published to device agent with on-device service selection
US10841839B2 (en) 2009-01-28 2020-11-17 Headwater Research Llc Security, fraud detection, and fraud mitigation in device-assisted services systems
US9755842B2 (en) 2009-01-28 2017-09-05 Headwater Research Llc Managing service user discovery and service launch object placement on a device
US8745191B2 (en) 2009-01-28 2014-06-03 Headwater Partners I Llc System and method for providing user notifications
US9954975B2 (en) 2009-01-28 2018-04-24 Headwater Research Llc Enhanced curfew and protection associated with a device group
US10248996B2 (en) 2009-01-28 2019-04-02 Headwater Research Llc Method for operating a wireless end-user device mobile payment agent
US9980146B2 (en) 2009-01-28 2018-05-22 Headwater Research Llc Communications device with secure data path processing agents
US9858559B2 (en) 2009-01-28 2018-01-02 Headwater Research Llc Network service plan design
JP5245869B2 (ja) * 2009-01-29 2013-07-24 富士通株式会社 情報処理装置、情報処理方法及びコンピュータプログラム
JP5112523B2 (ja) 2009-02-09 2013-01-09 株式会社日立製作所 ストレージシステムにおける通信経路の設定方法、及び管理装置
US8681780B2 (en) * 2009-02-12 2014-03-25 International Business Machines Corporation Establishing electronically authenticated internet voice connections
US8707288B2 (en) * 2009-02-13 2014-04-22 Mobitv, Inc. System for automatic management of applications on remote devices
US8112392B1 (en) 2009-02-13 2012-02-07 Symantec Corporation Methods and systems for creating snapshots of virtualized applications
US9325789B2 (en) * 2009-02-17 2016-04-26 International Business Machines Corporation Distributed server election with imperfect clock synchronization
US9215279B1 (en) 2009-02-17 2015-12-15 Netapp, Inc. Servicing of storage device software components of nodes of a cluster storage system
US20100211769A1 (en) * 2009-02-19 2010-08-19 Subramonian Shankar Concurrent Execution of a Smartphone Operating System and a Desktop Operating System
US9292557B2 (en) * 2009-02-27 2016-03-22 Red Hat Israel, Ltd. Managing virtual machines using hierarchical labeling
US20100223558A1 (en) * 2009-02-27 2010-09-02 International Business Machines Corporation Remote desktop connection to any private desktop to tam e-sso access agent
US9313105B2 (en) * 2009-02-27 2016-04-12 Red Hat, Inc. Network management using secure mesh command and control framework
US9558195B2 (en) 2009-02-27 2017-01-31 Red Hat, Inc. Depopulation of user data from network
US8407700B2 (en) 2009-03-03 2013-03-26 Symantec Corporation Methods and systems for merging virtualization sublayers
US10079716B2 (en) * 2009-03-04 2018-09-18 Amazon Technologies, Inc. User controlled environment updates in server cluster
EP2406923B1 (en) * 2009-03-10 2015-05-06 Telefonaktiebolaget L M Ericsson (PUBL) System and methods for a managed application server restart
EP2228719A1 (en) 2009-03-11 2010-09-15 Zimory GmbH Method of executing a virtual machine, computing system and computer program
US20100235750A1 (en) * 2009-03-12 2010-09-16 Bryce Douglas Noland System, method and program product for a graphical interface
US20160320938A9 (en) * 2009-03-17 2016-11-03 Litera Technologies, LLC System and Method for the Auto-Detection and Presentation of Pre-Set Configurations for Multiple Monitor Layout Display
US8402458B1 (en) 2009-03-18 2013-03-19 Symantec Corporation Methods and systems for converting non-layered-software-application installations into layered installations
US8959510B2 (en) * 2009-03-19 2015-02-17 Red Hat, Inc. Providing a trusted environment for provisioning a virtual machine
JP5293580B2 (ja) * 2009-03-19 2013-09-18 日本電気株式会社 ウェブサービスシステム、ウェブサービス方法及びプログラム
US20100242101A1 (en) * 2009-03-20 2010-09-23 Reese Jr George Edward Method and system for securely managing access and encryption credentials in a shared virtualization environment
WO2010109681A1 (ja) * 2009-03-25 2010-09-30 株式会社日立製作所 コンピュータシステム、コンピュータシステムのリソース資源管理サーバ、及びコンピュータシステムのリソース管理方法
US8738764B1 (en) 2009-03-26 2014-05-27 Symantec Corporation Methods and systems for controlling communications
US9201593B2 (en) * 2009-03-27 2015-12-01 Qualcomm Incorporated System and method of managing displays at a portable computing device and a portable computing device docking station
US9128669B2 (en) * 2009-03-27 2015-09-08 Qualcomm Incorporated System and method of managing security between a portable computing device and a portable computing device docking station
US20100250789A1 (en) * 2009-03-27 2010-09-30 Qualcomm Incorporated System and method of managing memory at a portable computing device and a portable computing device docking station
US20100250818A1 (en) * 2009-03-27 2010-09-30 Qualcomm Incorporated System and method of providing wireless connectivity between a portable computing device and a portable computing device docking station
US8653785B2 (en) 2009-03-27 2014-02-18 Qualcomm Incorporated System and method of managing power at a portable computing device and a portable computing device docking station
US20100251243A1 (en) * 2009-03-27 2010-09-30 Qualcomm Incorporated System and method of managing the execution of applications at a portable computing device and a portable computing device docking station
US20100250817A1 (en) * 2009-03-27 2010-09-30 Qualcomm Incorporated System and method of managing data communication at a portable computing device and a portable computing device docking station
US8707061B2 (en) * 2009-03-27 2014-04-22 Qualcomm Incorporated System and method of providing scalable computing between a portable computing device and a portable computing device docking station
JP5476764B2 (ja) * 2009-03-30 2014-04-23 富士通株式会社 サーバ装置、計算機システム、プログラム及び仮想計算機移動方法
US8612994B1 (en) 2009-03-30 2013-12-17 Symantec Corporation Methods and systems for activating and deactivating virtualization layers
US8332365B2 (en) 2009-03-31 2012-12-11 Amazon Technologies, Inc. Cloning and recovery of data volumes
US8713060B2 (en) 2009-03-31 2014-04-29 Amazon Technologies, Inc. Control service for relational data management
US9705888B2 (en) 2009-03-31 2017-07-11 Amazon Technologies, Inc. Managing security groups for data instances
US9934320B2 (en) 2009-03-31 2018-04-03 International Business Machines Corporation Method and apparatus for using proxy objects on webpage overlays to provide alternative webpage actions
US9207984B2 (en) * 2009-03-31 2015-12-08 Amazon Technologies, Inc. Monitoring and automatic scaling of data volumes
CA3204215A1 (en) 2009-04-01 2010-10-07 Nicira, Inc. Method and apparatus for implementing and managing virtual switches
US9158912B2 (en) * 2009-04-01 2015-10-13 Dell Products L.P. Method and apparatus for a virtual machine hosting network with user devices
US8117613B2 (en) * 2009-04-08 2012-02-14 Microsoft Corporation Optimized virtual machine migration mechanism
US9577893B1 (en) * 2009-04-10 2017-02-21 Open Invention Network Llc System and method for cached streaming application isolation
US8555360B1 (en) * 2009-04-10 2013-10-08 Open Invention Network Llc System and method for on-line and off-line streaming application isolation
US8418236B1 (en) * 2009-04-10 2013-04-09 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
US9762701B1 (en) * 2009-04-10 2017-09-12 Open Invention Network Llc System and method for cached streaming application isolation
US10419504B1 (en) 2009-04-10 2019-09-17 Open Invention Network Llc System and method for streaming application isolation
US8533859B2 (en) 2009-04-13 2013-09-10 Aventyn, Inc. System and method for software protection and secure software distribution
US9124952B2 (en) * 2009-04-14 2015-09-01 Dell Products L.P. Virtualization based conditional access tuner module for providing secure linear and non-linear content services
US20100268762A1 (en) * 2009-04-15 2010-10-21 Wyse Technology Inc. System and method for scrolling a remote application
US8676926B2 (en) * 2009-04-15 2014-03-18 Wyse Technology L.L.C. System and method for handling remote drawing commands
US9448815B2 (en) * 2009-04-15 2016-09-20 Wyse Technology L.L.C. Server-side computing from a remote client device
US9578113B2 (en) 2009-04-15 2017-02-21 Wyse Technology L.L.C. Method and apparatus for transferring remote session data
US8863237B2 (en) * 2009-04-15 2014-10-14 Wyse Technology L.L.C. Remote-session-to-go method and apparatus
US9553953B2 (en) 2009-04-15 2017-01-24 Dell Products L.P. Method and apparatus for extending capabilities of a virtualization domain to support features available in a normal desktop application
US20100269162A1 (en) 2009-04-15 2010-10-21 Jose Bravo Website authentication
US9189124B2 (en) * 2009-04-15 2015-11-17 Wyse Technology L.L.C. Custom pointer features for touch-screen on remote client devices
US8069217B2 (en) * 2009-04-16 2011-11-29 Dell Products L.P. System and method for providing access to a shared system image
US9367512B2 (en) * 2009-04-22 2016-06-14 Aventura Hq, Inc. Systems and methods for dynamically updating virtual desktops or virtual applications in a standard computing environment
US8234332B2 (en) 2009-04-22 2012-07-31 Aventura Hq, Inc. Systems and methods for updating computer memory and file locations within virtual computing environments
US8902242B2 (en) * 2009-04-23 2014-12-02 Vmware, Inc. Method and system for identifying drawing primitives for selective transmission to a remote display
EP2243738A1 (de) * 2009-04-24 2010-10-27 Inventio AG Verfahren zur Kommunikation mit einer Aufzugsanlage
CN102460391B (zh) * 2009-05-01 2015-04-22 思杰系统有限公司 用于在应用传送结构中提供虚拟设备的系统和方法
US9459936B2 (en) 2009-05-01 2016-10-04 Kaazing Corporation Enterprise client-server system and methods of providing web application support through distributed emulation of websocket communications
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
US9432356B1 (en) 2009-05-05 2016-08-30 Amazon Technologies, Inc. Host identity bootstrapping
JP2012526314A (ja) 2009-05-08 2012-10-25 ゾケム オーワイ 行動およびコンテキストデータを分析するためのシステムおよび方法
US9588803B2 (en) 2009-05-11 2017-03-07 Microsoft Technology Licensing, Llc Executing native-code applications in a browser
US8627074B1 (en) * 2009-05-12 2014-01-07 Marvell International Ltd. Secure block acknowledgement mechanism for use in communication networks
US8538919B1 (en) 2009-05-16 2013-09-17 Eric H. Nielsen System, method, and computer program for real time remote recovery of virtual computing machines
BRPI1010897A2 (pt) * 2009-05-19 2019-02-19 Nholdings Sa método e sistema para prover um dispositivo local com serviços de computador de um provedor remoto e método e sistema para anunciar um usuário de uma máquina virtual hospedada por um servido remoto
US9829950B2 (en) * 2009-05-26 2017-11-28 Lenovo Enterprise Solutions (Singapore) PTE., LTD. Power management in a virtual machine farm at the local virtual machine platform level by a platform hypervisor extended with farm management server functions
US9179367B2 (en) 2009-05-26 2015-11-03 Qualcomm Incorporated Maximizing service provider utility in a heterogeneous wireless ad-hoc network
JP5423149B2 (ja) * 2009-05-28 2014-02-19 日本電気株式会社 閲覧情報収集システム、閲覧情報収集方法、サーバ、及び、プログラム
US9134987B2 (en) 2009-05-29 2015-09-15 Red Hat, Inc. Retiring target machines by a provisioning server
US8527466B2 (en) * 2009-05-31 2013-09-03 Red Hat Israel, Ltd. Handling temporary files of a virtual machine
US8943498B2 (en) * 2009-05-31 2015-01-27 Red Hat Israel, Ltd. Method and apparatus for swapping virtual machine memory
US8473958B2 (en) * 2009-05-31 2013-06-25 Red Hat Israel, Ltd. Adjusting client display devices based on settings included in a notification from remote virtual machine host prior to connection establishment
EP2438710A2 (en) * 2009-06-04 2012-04-11 BAE SYSTEMS plc System and method of analysing transfer of data over at least one network
US20100311393A1 (en) * 2009-06-08 2010-12-09 Castleman Mark Methods and apparatus for distributing, storing, and replaying directives within a network
US20100313244A1 (en) * 2009-06-08 2010-12-09 Castleman Mark Methods and apparatus for distributing, storing, and replaying directives within a network
WO2010144428A1 (en) * 2009-06-08 2010-12-16 Swakker Llc Methods and apparatus for distributing, storing, and replaying directives within a network
US8286084B2 (en) 2009-06-08 2012-10-09 Swakker Llc Methods and apparatus for remote interaction using a partitioned display
US20100313249A1 (en) * 2009-06-08 2010-12-09 Castleman Mark Methods and apparatus for distributing, storing, and replaying directives within a network
US20100310193A1 (en) * 2009-06-08 2010-12-09 Castleman Mark Methods and apparatus for selecting and/or displaying images of perspective views of an object at a communication device
US9330282B2 (en) * 2009-06-10 2016-05-03 Microsoft Technology Licensing, Llc Instruction cards for storage devices
US8650562B2 (en) * 2009-06-12 2014-02-11 International Business Machines Corporation Method and apparatus for scalable monitoring of virtual machine environments combining base virtual machine and single monitoring agent for measuring common characteristics and individual virtual machines measuring individualized characteristics
US9141412B2 (en) 2009-06-16 2015-09-22 Microsoft Technology Licensing, Llc Terminal services application virtualization for compatibility
US8970448B2 (en) * 2009-06-18 2015-03-03 Hiperwall, Inc. Systems, methods, and devices for manipulation of images on tiled displays
US8989705B1 (en) 2009-06-18 2015-03-24 Sprint Communications Company L.P. Secure placement of centralized media controller application in mobile access terminal
US9135599B2 (en) * 2009-06-18 2015-09-15 Microsoft Technology Licensing, Llc Smart notebook
CN102714618B (zh) * 2009-06-22 2015-05-13 思杰系统有限公司 用于平台速率限制的系统和方法
US8219676B2 (en) 2009-06-22 2012-07-10 Citrix Systems, Inc. Systems and methods for web logging of trace data in a multi-core system
US9104757B2 (en) * 2009-06-24 2015-08-11 Red Hat Israel, Ltd. Interactive search monitoring in a virtual machine environment
US20100328418A1 (en) * 2009-06-25 2010-12-30 Yair Winkler Method for real-time remote presentation and control of a visual page from a mobile terminal during a video call
US8438256B2 (en) 2009-06-26 2013-05-07 Vmware, Inc. Migrating functionality in virtualized mobile devices
US8244559B2 (en) * 2009-06-26 2012-08-14 Microsoft Corporation Cloud computing resource broker
US20100332544A1 (en) * 2009-06-29 2010-12-30 Collins Mark A Surrogate Management Capabilities For Heterogeneous Systems Management Support
US20100332551A1 (en) * 2009-06-29 2010-12-30 Dell Products L.P. Multi-Tiered Caching Architecture For Systems Management
WO2011002436A1 (en) * 2009-06-29 2011-01-06 Hewlett-Packard Development Company, L.P. Hypervisor-based management of local and remote virtual memory pages
US9229850B1 (en) * 2009-06-30 2016-01-05 Emc Corporation Mapping data storage and virtual machines
US20110004878A1 (en) * 2009-06-30 2011-01-06 Hubert Divoux Methods and systems for selecting a desktop execution location
US8239781B2 (en) * 2009-06-30 2012-08-07 Sap Ag Drag and drop of an application component to desktop
CN101938368A (zh) * 2009-06-30 2011-01-05 国际商业机器公司 刀片服务器系统中的虚拟机管理器和虚拟机处理方法
US9130903B2 (en) * 2009-07-01 2015-09-08 Citrix Systems, Inc. Unified out of band management system for desktop and server sessions
US8990433B2 (en) * 2009-07-01 2015-03-24 Riverbed Technology, Inc. Defining network traffic processing flows between virtual machines
US8255984B1 (en) 2009-07-01 2012-08-28 Quest Software, Inc. Single sign-on system for shared resource environments
JP5458708B2 (ja) * 2009-07-09 2014-04-02 株式会社リコー 画像処理装置、表示制御方法、及び表示制御プログラム
US8346721B2 (en) * 2009-07-15 2013-01-01 International Business Machines Corporation Apparatus and method to replicate remote virtual volumes to local physical volumes
US8578374B2 (en) * 2009-07-16 2013-11-05 Ca, Inc. System and method for managing virtual machines
US9372711B2 (en) 2009-07-20 2016-06-21 Google Technology Holdings LLC System and method for initiating a multi-environment operating system
US9348633B2 (en) 2009-07-20 2016-05-24 Google Technology Holdings LLC Multi-environment operating system
US9389877B2 (en) 2009-07-20 2016-07-12 Google Technology Holdings LLC Multi-environment operating system
US9367331B2 (en) 2009-07-20 2016-06-14 Google Technology Holdings LLC Multi-environment operating system
US9569240B2 (en) * 2009-07-21 2017-02-14 Adobe Systems Incorporated Method and system to provision and manage a computing application hosted by a virtual instance of a machine
JP5365399B2 (ja) * 2009-07-27 2013-12-11 富士通株式会社 スクリーンセーバ制御システム、画像処理装置、画像表示装置、スクリーンセーバ制御方法、及びコンピュータプログラム
US8060480B2 (en) * 2009-07-27 2011-11-15 Sap Ag Processing substantial amounts of data using a database
US20110028209A1 (en) * 2009-07-30 2011-02-03 Microsoft Corporation Controlling content access
US20110029971A1 (en) * 2009-07-30 2011-02-03 Fujitsu Limited Information processing apparatus, image processing method and computer program
EP2460088A4 (en) * 2009-07-31 2014-07-23 Hewlett Packard Development Co VIRTUAL MACHINE CONTROL
US9959131B2 (en) * 2009-08-03 2018-05-01 Quantum Corporation Systems and methods for providing a file system viewing of a storeage environment
US7865937B1 (en) 2009-08-05 2011-01-04 Daon Holdings Limited Methods and systems for authenticating users
US8443202B2 (en) 2009-08-05 2013-05-14 Daon Holdings Limited Methods and systems for authenticating users
US7685629B1 (en) 2009-08-05 2010-03-23 Daon Holdings Limited Methods and systems for authenticating users
US20110035802A1 (en) * 2009-08-07 2011-02-10 Microsoft Corporation Representing virtual object priority based on relationships
US8532967B2 (en) * 2009-08-14 2013-09-10 Schlumberger Technology Corporation Executing a utility in a distributed computing system based on an integrated model
US8418227B2 (en) * 2009-08-21 2013-04-09 Verizon Patent And Licensing, Inc. Keystroke logger for Unix-based systems
US8341627B2 (en) 2009-08-21 2012-12-25 Mcafee, Inc. Method and system for providing user space address protection from writable memory area in a virtual environment
US8381284B2 (en) * 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
US9495190B2 (en) * 2009-08-24 2016-11-15 Microsoft Technology Licensing, Llc Entropy pools for virtual machines
US8099397B2 (en) * 2009-08-26 2012-01-17 International Business Machines Corporation Apparatus, system, and method for improved portable document format (“PDF”) document archiving
US9043454B2 (en) * 2009-08-26 2015-05-26 Red Hat Israel, Ltd. Auto suspense of virtual machine on client disconnection
CN101998629B (zh) * 2009-08-28 2014-05-21 国际商业机器公司 搜索虚拟资源的位置的方法、装置和系统
US8881140B1 (en) 2009-09-04 2014-11-04 Symantec Corporation Systems and methods for virtualizing software associated with external computer hardware devices
US8386731B2 (en) * 2009-09-14 2013-02-26 Vmware, Inc. Method and system for optimizing live migration of persistent data of virtual machine using disk I/O heuristics
US9143597B2 (en) * 2009-09-21 2015-09-22 Avaya Inc. Method for telephony client synchronization in telephone virtualization
US9338273B2 (en) * 2009-09-22 2016-05-10 Avaya Inc. Method for telephony client synchronization in telephone virtualization
US11132237B2 (en) * 2009-09-24 2021-09-28 Oracle International Corporation System and method for usage-based application licensing in a hypervisor virtual execution environment
US8718611B2 (en) * 2009-09-30 2014-05-06 Avaya Inc. Method for the selection of an active software environment of a virtualized telecommunications terminal
US9135283B2 (en) 2009-10-07 2015-09-15 Amazon Technologies, Inc. Self-service configuration for data environment
US20110082938A1 (en) * 2009-10-07 2011-04-07 Joe Jaudon Systems and methods for dynamically updating a user interface within a virtual computing environment
US8938524B2 (en) 2011-01-27 2015-01-20 Wyse Technology L.L.C. Comparing and provisioning configurations for a client having a windows-based embedded image
US8560604B2 (en) 2009-10-08 2013-10-15 Hola Networks Ltd. System and method for providing faster and more efficient data communication
US8620879B2 (en) * 2009-10-13 2013-12-31 Google Inc. Cloud based file storage service
WO2011046422A1 (en) * 2009-10-13 2011-04-21 Mimos Berhad Method and network infrastructure for establishing dynamic trusted execution environment
US8812482B1 (en) 2009-10-16 2014-08-19 Vikas Kapoor Apparatuses, methods and systems for a data translator
US9672281B1 (en) 2009-10-16 2017-06-06 Iqor US. Inc. Apparatuses, methods and systems for a call searcher
US8593671B2 (en) * 2009-10-16 2013-11-26 Xerox Corporation System and method for controlling usage of printer resources
US8707303B2 (en) * 2009-10-22 2014-04-22 Hewlett-Packard Development Company, L.P. Dynamic virtualization and policy-based access control of removable storage devices in a virtualized environment
US8676753B2 (en) 2009-10-26 2014-03-18 Amazon Technologies, Inc. Monitoring of replicated data instances
US8074107B2 (en) 2009-10-26 2011-12-06 Amazon Technologies, Inc. Failover and recovery for replicated data instances
US8335765B2 (en) 2009-10-26 2012-12-18 Amazon Technologies, Inc. Provisioning and managing replicated data instances
US9003517B2 (en) 2009-10-28 2015-04-07 Microsoft Technology Licensing, Llc Isolation and presentation of untrusted data
US9122537B2 (en) * 2009-10-30 2015-09-01 Cisco Technology, Inc. Balancing server load according to availability of physical resources based on the detection of out-of-sequence packets
US8621460B2 (en) * 2009-11-02 2013-12-31 International Business Machines Corporation Endpoint-hosted hypervisor management
US9552497B2 (en) 2009-11-10 2017-01-24 Mcafee, Inc. System and method for preventing data loss using virtual machine wrapped applications
US8356054B2 (en) * 2009-11-10 2013-01-15 International Business Machines Corporation Management of resources in a host system
US20110112819A1 (en) * 2009-11-11 2011-05-12 Sony Corporation User interface systems and methods between a portable device and a computer
WO2011060306A2 (en) 2009-11-12 2011-05-19 Salesforce.Com, Inc. Enterprise level business information networking for changes in a database
US20110119609A1 (en) * 2009-11-16 2011-05-19 Apple Inc. Docking User Interface Elements
US8707194B1 (en) * 2009-11-20 2014-04-22 Amazon Technologies, Inc. System and method for decentralized performance monitoring of host systems
DE102009054114A1 (de) * 2009-11-20 2011-05-26 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum Zugreifen auf Steuerungsdaten gemäß einer bereitgestellten Rechteinformation
US9094426B2 (en) 2009-11-20 2015-07-28 Avaya Inc. Method for telecommunications device synchronization
US10133773B2 (en) * 2009-11-20 2018-11-20 Mastercard International Incorporated Methods and systems for indirectly retrieving account data from data storage devices
US8438360B2 (en) * 2009-11-23 2013-05-07 Symantec Corporation Distributed storage through a volume device architecture
US8819848B2 (en) * 2009-11-24 2014-08-26 Comcast Interactive Media, Llc Method for scalable access control decisions
US8392497B2 (en) 2009-11-25 2013-03-05 Framehawk, LLC Systems and algorithm for interfacing with a virtualized computing service over a network using a lightweight client
US20110126197A1 (en) * 2009-11-25 2011-05-26 Novell, Inc. System and method for controlling cloud and virtualized data centers in an intelligent workload management system
US8386207B2 (en) 2009-11-30 2013-02-26 International Business Machines Corporation Open-service based test execution frameworks
US8966112B1 (en) 2009-11-30 2015-02-24 Dell Software Inc. Network protocol proxy
US8909916B2 (en) * 2009-11-30 2014-12-09 Red Hat, Inc. Using a PKCS module for opening multiple databases
US9274848B2 (en) * 2009-12-03 2016-03-01 International Business Machines Corporation Optimizing cloud service delivery within a cloud computing environment
US9104438B2 (en) * 2009-12-03 2015-08-11 International Business Machines Corporation Mapping computer desktop objects to cloud services within a cloud computing environment
US8615584B2 (en) * 2009-12-03 2013-12-24 International Business Machines Corporation Reserving services within a cloud computing environment
US8683609B2 (en) 2009-12-04 2014-03-25 International Business Machines Corporation Mobile phone and IP address correlation service
US9203747B1 (en) 2009-12-07 2015-12-01 Amazon Technologies, Inc. Providing virtual networking device functionality for managed computer networks
US7937438B1 (en) 2009-12-07 2011-05-03 Amazon Technologies, Inc. Using virtual networking devices to manage external connections
US8995301B1 (en) 2009-12-07 2015-03-31 Amazon Technologies, Inc. Using virtual networking devices to manage routing cost information
US9036504B1 (en) 2009-12-07 2015-05-19 Amazon Technologies, Inc. Using virtual networking devices and routing information to associate network addresses with computing nodes
US8850426B2 (en) * 2009-12-13 2014-09-30 International Business Machines Corporation Managing remote deployment of a virtual machine and service request to be processed by the virtual machines based on network bandwith and storage connectivity
US9055080B2 (en) * 2009-12-14 2015-06-09 Citrix Systems, Inc. Systems and methods for service isolation
EP3001326B1 (en) * 2009-12-14 2017-07-26 Citrix Systems Inc. Methods and systems for communicating between trusted and non-trusted virtual machines
US8898663B2 (en) * 2009-12-16 2014-11-25 Symantec Corporation Storage visibility in virtual environments
JP5371726B2 (ja) 2009-12-16 2013-12-18 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及びプログラム
EP2513821A4 (en) * 2009-12-17 2015-05-27 Nat Ict Australia Ltd RELIABLE WRITING OF DATABASE LOG DATA
US20110154376A1 (en) * 2009-12-17 2011-06-23 Microsoft Corporation Use of Web Services API to Identify Responsive Content Items
US8949408B2 (en) 2009-12-18 2015-02-03 Microsoft Corporation Session monitoring of virtual desktops in a virtual machine farm
US20110154214A1 (en) * 2009-12-18 2011-06-23 Microsoft Corporation Offloading Content Retrieval And Decoding In Pluggable Content-Handling Systems
US8370510B2 (en) * 2009-12-18 2013-02-05 Microsoft Corporation Remote application presentation over a public network connection
US20110154023A1 (en) * 2009-12-21 2011-06-23 Smith Ned M Protected device management
KR101651202B1 (ko) * 2009-12-21 2016-08-26 삼성전자주식회사 가상화 장치 및 가상화 장치의 동작 방법
US8438626B2 (en) * 2009-12-23 2013-05-07 Citrix Systems, Inc. Systems and methods for processing application firewall session information on owner core in multiple core system
US7991859B1 (en) 2009-12-28 2011-08-02 Amazon Technologies, Inc. Using virtual networking devices to connect managed computer networks
US8224971B1 (en) * 2009-12-28 2012-07-17 Amazon Technologies, Inc. Using virtual networking devices and routing information to initiate external actions
US7953865B1 (en) 2009-12-28 2011-05-31 Amazon Technologies, Inc. Using virtual networking devices to manage routing communications between connected computer networks
US8626475B1 (en) 2009-12-29 2014-01-07 Comsol Ab System and method for accessing a multiphysics modeling system via a design system user interface
US8584228B1 (en) 2009-12-29 2013-11-12 Amazon Technologies, Inc. Packet authentication and encryption in virtual networks
US11610037B2 (en) 2009-12-29 2023-03-21 Comsol Ab System and method for accessing settings in a multiphysics modeling system using a model tree
US8887172B2 (en) * 2009-12-31 2014-11-11 Microsoft Corporation Virtualized management of remote presentation sessions using virtual machines having load above or below thresholds
US20110162087A1 (en) * 2009-12-31 2011-06-30 Microsoft Corporation Virtualizing remote presentation session client licensing with a server-based broker
US9170847B2 (en) * 2010-01-08 2015-10-27 Sauce Labs, Inc. Real time verification of web applications
US8954958B2 (en) 2010-01-11 2015-02-10 Code Systems Corporation Method of configuring a virtual application
US9363691B1 (en) * 2010-01-13 2016-06-07 Sprint Communications Company L.P. Application transfer negotiation for a media device
CN102129361B (zh) * 2010-01-13 2015-07-15 宏正自动科技股份有限公司 多分割画面的集中显示系统与方法
US8959217B2 (en) * 2010-01-15 2015-02-17 Joyent, Inc. Managing workloads and hardware resources in a cloud resource
US20110179383A1 (en) * 2010-01-18 2011-07-21 Robert Paul Morris Methods, systems, and computer program products for automatically selecting objects in a plurality of objects
WO2011091056A1 (en) * 2010-01-19 2011-07-28 Servicemesh, Inc. System and method for a cloud computing abstraction layer
CN102130975A (zh) * 2010-01-20 2011-07-20 中兴通讯股份有限公司 一种用身份标识在公共设备上接入网络的方法及系统
US9137338B2 (en) * 2010-01-22 2015-09-15 Microsoft Technology Licensing, Llc Multi-link remote protocol
US8463918B2 (en) 2010-01-22 2013-06-11 Microsoft Corporation Loss tolerant protocol for remoting desktop graphics
US8301746B2 (en) * 2010-01-26 2012-10-30 International Business Machines Corporation Method and system for abstracting non-functional requirements based deployment of virtual machines
US9274821B2 (en) 2010-01-27 2016-03-01 Vmware, Inc. Independent access to virtual machine desktop content
US9477531B2 (en) * 2010-01-27 2016-10-25 Vmware, Inc. Accessing virtual disk content of a virtual machine without running a virtual desktop
US8959183B2 (en) 2010-01-27 2015-02-17 Code Systems Corporation System for downloading and executing a virtual application
US9104517B2 (en) 2010-01-27 2015-08-11 Code Systems Corporation System for downloading and executing a virtual application
US8392838B2 (en) * 2010-01-27 2013-03-05 Vmware, Inc. Accessing virtual disk content of a virtual machine using a control virtual machine
US9009219B2 (en) 2010-01-27 2015-04-14 Vmware, Inc. Native viewer use for service results from a remote desktop
US9229748B2 (en) 2010-01-29 2016-01-05 Code Systems Corporation Method and system for improving startup performance and interoperability of a virtual application
US8645977B2 (en) * 2010-02-04 2014-02-04 Microsoft Corporation Extensible application virtualization subsystems
US8413137B2 (en) 2010-02-04 2013-04-02 Storage Appliance Corporation Automated network backup peripheral device and method
US8607229B2 (en) * 2010-02-05 2013-12-10 Riverbed Technology, Inc. Correcting packet timestamps in virtualized environments
US8874914B2 (en) * 2010-02-05 2014-10-28 Accenture Global Services Limited Secure and automated credential information transfer mechanism
US20110202572A1 (en) * 2010-02-12 2011-08-18 Kinson Kin Sang Ho Systems and methods for independently managing clinical documents and patient manifests at a datacenter
US9350702B2 (en) * 2010-02-17 2016-05-24 Hewlett Packard Enterprise Development Lp Virtual insertion into a network
US8495193B2 (en) * 2010-02-23 2013-07-23 Microsoft Corporation Centralized management tool for remote presentation session server farms
US8468455B2 (en) * 2010-02-24 2013-06-18 Novell, Inc. System and method for providing virtual desktop extensions on a client desktop
US8862178B2 (en) * 2010-02-24 2014-10-14 Qualcomm Incorporated Methods and systems for managing participation in multiple wireless networks
JP5477047B2 (ja) * 2010-02-25 2014-04-23 富士通株式会社 情報処理装置、仮想計算機接続方法、プログラム及び記録媒体
US8984621B2 (en) * 2010-02-27 2015-03-17 Novell, Inc. Techniques for secure access management in virtual environments
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
US8938808B1 (en) 2010-03-01 2015-01-20 Symantec Corporation Systems and methods for using virtualization to implement information rights management
US20110219331A1 (en) * 2010-03-02 2011-09-08 International Business Machines Corporation Window resize on remote desktops
US8615014B2 (en) * 2010-03-03 2013-12-24 Iwebgate Technology Limited System and method for multiple concurrent virtual networks
US9425986B2 (en) 2010-03-03 2016-08-23 Iwebgate Technology Limited System and method for multiple concurrent virtual networks
US8869141B2 (en) * 2010-03-09 2014-10-21 Avistar Communications Corp. Scalable high-performance interactive real-time media architectures for virtual desktop environments
US8572710B2 (en) * 2010-03-18 2013-10-29 Microsoft Corporation Pluggable token provider model to implement authentication across multiple web services
US8365020B2 (en) 2010-03-18 2013-01-29 Red Hat Israel, Ltd. Mechanism for saving crash dump files of a virtual machine on a designated disk
US8826030B2 (en) 2010-03-22 2014-09-02 Daon Holdings Limited Methods and systems for authenticating users
US8887227B2 (en) * 2010-03-23 2014-11-11 Citrix Systems, Inc. Network policy implementation for a multi-virtual machine appliance within a virtualization environtment
US8583875B1 (en) 2010-07-13 2013-11-12 Vmware, Inc. Efficient readable ballooning of guest memory by backing balloon pages with a shared page
US20110238402A1 (en) * 2010-03-23 2011-09-29 Fujitsu Limited System and methods for remote maintenance in an electronic network with multiple clients
CN102202075B (zh) * 2010-03-26 2013-12-04 联想(北京)有限公司 数据共享方法及便携终端
US9367341B2 (en) 2010-03-30 2016-06-14 Red Hat Israel, Ltd. Encrypting and decrypting virtual disk content using a single user sign-on
CN102209097A (zh) * 2010-03-31 2011-10-05 英业达股份有限公司 储存局域网络的储存资源的调配系统
US8756598B1 (en) * 2010-03-31 2014-06-17 Netapp, Inc. Diskless virtual machine cloning by separately cloning a virtual drive and configuration data of a source virtual machine for combination into a cloned virtual machine
WO2011123840A2 (en) * 2010-04-01 2011-10-06 Citrix Systems, Inc. Interacting with remote applications displayed within a virtual desktop of a tablet computing device
US8886806B2 (en) 2010-04-07 2014-11-11 Accenture Global Services Limited Generic control layer in a cloud environment
JP5576697B2 (ja) * 2010-04-14 2014-08-20 オリンパス株式会社 サービス利用端末、サービス提供端末、サービス利用端末の制御方法、サービス提供端末の制御方法およびサービス提供システム
EP2378473A3 (en) * 2010-04-15 2011-12-07 HTC Corporation File download method for mobile device, server and mobile device thereof, and computer-readable medium
US8887054B2 (en) * 2010-04-15 2014-11-11 Hewlett-Packard Development Company, L.P. Application selection user interface
US8763009B2 (en) 2010-04-17 2014-06-24 Code Systems Corporation Method of hosting a first application in a second application
US9443078B2 (en) 2010-04-20 2016-09-13 International Business Machines Corporation Secure access to a virtual machine
CN102238571B (zh) * 2010-04-27 2014-01-01 中兴通讯股份有限公司 物联网m2m业务处理的装置、系统以及方法
US8353013B2 (en) * 2010-04-28 2013-01-08 Bmc Software, Inc. Authorized application services via an XML message protocol
US8555377B2 (en) * 2010-04-29 2013-10-08 High Cloud Security Secure virtual machine
US9270663B2 (en) 2010-04-30 2016-02-23 T-Central, Inc. System and method to enable PKI- and PMI-based distributed locking of content and distributed unlocking of protected content and/or scoring of users and/or scoring of end-entity access means—added
US20120284506A1 (en) * 2010-04-30 2012-11-08 T-Central, Inc. Methods and apparatus for preventing crimeware attacks
US9356916B2 (en) 2010-04-30 2016-05-31 T-Central, Inc. System and method to use a cloud-based platform supported by an API to authenticate remote users and to provide PKI- and PMI-based distributed locking of content and distributed unlocking of protected content
US8473967B2 (en) * 2010-04-30 2013-06-25 Positron Telecommunication Systems Systems and methods for providing a client-side application programming interface to access a networked telecommunication resource
US9244700B2 (en) * 2010-05-09 2016-01-26 Citrix Systems, Inc. Methods and systems for delivering applications from a desktop operating system
US8893004B2 (en) * 2010-05-12 2014-11-18 International Business Machines Corporation User interface proxy method and system
US8468172B2 (en) * 2010-05-14 2013-06-18 Sap Ag Integrated application server and data server processes with matching data formats
US8443077B1 (en) 2010-05-20 2013-05-14 Gogrid, LLC System and method for managing disk volumes in a hosting system
US8771064B2 (en) 2010-05-26 2014-07-08 Aristocrat Technologies Australia Pty Limited Gaming system and a method of gaming
US9239909B2 (en) 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
WO2011149558A2 (en) 2010-05-28 2011-12-01 Abelow Daniel H Reality alternate
US8972980B2 (en) * 2010-05-28 2015-03-03 Bromium, Inc. Automated provisioning of secure virtual execution environment using virtual machine templates based on requested activity
US9135038B1 (en) 2010-05-28 2015-09-15 Bromium, Inc. Mapping free memory pages maintained by a guest operating system to a shared zero page within a machine frame
US9148428B1 (en) 2011-05-25 2015-09-29 Bromium, Inc. Seamless management of untrusted data using virtual machines
US9558051B1 (en) 2010-05-28 2017-01-31 Bormium, Inc. Inter-process communication router within a virtualized environment
US10095530B1 (en) 2010-05-28 2018-10-09 Bromium, Inc. Transferring control of potentially malicious bit sets to secure micro-virtual machine
US9116733B2 (en) 2010-05-28 2015-08-25 Bromium, Inc. Automated provisioning of secure virtual execution environment using virtual machine templates based on requested activity
US9386021B1 (en) 2011-05-25 2016-07-05 Bromium, Inc. Restricting network access to untrusted virtual machines
US8752047B2 (en) 2010-05-28 2014-06-10 Bromium, Inc. Automated management of virtual machines to process untrusted data based on client policy information
US9104837B1 (en) 2012-06-18 2015-08-11 Bromium, Inc. Exposing subset of host file systems to restricted virtual machines based on upon performing user-initiated actions against host files
US8990584B2 (en) 2010-05-28 2015-03-24 Dell Products, Lp System and method for supporting task oriented devices in a client hosted virtualization system
US10310696B1 (en) 2010-05-28 2019-06-04 Bromium, Inc. Supporting a consistent user interface within a virtualized environment
US9767274B2 (en) 2011-11-22 2017-09-19 Bromium, Inc. Approaches for efficient physical to virtual disk conversion
US8938774B2 (en) * 2010-05-28 2015-01-20 Dell Products, Lp System and method for I/O port assignment and security policy application in a client hosted virtualization system
US20110307831A1 (en) * 2010-06-10 2011-12-15 Microsoft Corporation User-Controlled Application Access to Resources
US8839238B2 (en) * 2010-06-11 2014-09-16 International Business Machines Corporation Dynamic virtual machine shutdown without service interruptions
US8700723B2 (en) * 2010-06-15 2014-04-15 Netzyn, Inc. Hierarchical display-server system and method
US9891931B2 (en) * 2010-06-15 2018-02-13 Microsoft Technology Licensing, Llc Techniques for efficient remote presentation session connectivity and routing
US8589472B2 (en) * 2010-06-22 2013-11-19 International Business Machines Corporation Agent system for reducing server resource usage
US8539039B2 (en) * 2010-06-22 2013-09-17 Splashtop Inc. Remote server environment
JP5896382B2 (ja) 2010-06-24 2016-03-30 ザ ニールセン カンパニー (ユーエス) エルエルシー ノンパラメトリック、多次元、空間的および一時的な人間の挙動または広範な技術的観測値を処理するネットワークサーバー装置構成およびそれに関連する方法
US8789189B2 (en) 2010-06-24 2014-07-22 NeurallQ, Inc. System and method for sampling forensic data of unauthorized activities using executability states
US9106697B2 (en) * 2010-06-24 2015-08-11 NeurallQ, Inc. System and method for identifying unauthorized activities on a computer system using a data structure model
TWI439856B (zh) * 2010-06-30 2014-06-01 Ibm 具故障備援以管理共享資源之方法與多電腦系統
US9218359B2 (en) 2010-07-02 2015-12-22 Code Systems Corporation Method and system for profiling virtual application resource utilization patterns by executing virtualized application
US9680750B2 (en) 2010-07-06 2017-06-13 Nicira, Inc. Use of tunnels to hide network addresses
US10103939B2 (en) 2010-07-06 2018-10-16 Nicira, Inc. Network control apparatus and method for populating logical datapath sets
US8958292B2 (en) 2010-07-06 2015-02-17 Nicira, Inc. Network control apparatus and method with port security controls
US8964528B2 (en) 2010-07-06 2015-02-24 Nicira, Inc. Method and apparatus for robust packet distribution among hierarchical managed switching elements
US9525647B2 (en) 2010-07-06 2016-12-20 Nicira, Inc. Network control apparatus and method for creating and modifying logical switching elements
CA3022462C (en) * 2010-07-09 2020-10-27 State Street Corporation Systems and methods for private cloud computing
US8713067B1 (en) * 2010-07-09 2014-04-29 Open Invention Network, Llc Stable file system
US9323921B2 (en) 2010-07-13 2016-04-26 Microsoft Technology Licensing, Llc Ultra-low cost sandboxing for application appliances
TWI423039B (zh) * 2010-07-23 2014-01-11 Quanta Comp Inc 伺服器系統與其操作方法
US9058088B2 (en) * 2010-07-23 2015-06-16 Libera, Inc. Methods and systems for operating a remote computer application from a thin client
WO2013015835A1 (en) 2011-07-22 2013-01-31 Seven Networks, Inc. Mobile application traffic optimization
US9075635B1 (en) 2010-07-26 2015-07-07 Symantec Corporation Systems and methods for merging virtual layers
US8938800B2 (en) 2010-07-28 2015-01-20 Mcafee, Inc. System and method for network level protection against malicious software
US8925101B2 (en) 2010-07-28 2014-12-30 Mcafee, Inc. System and method for local protection against malicious software
JP5678508B2 (ja) * 2010-07-29 2015-03-04 日本電気株式会社 シンクライアントシステム、管理サーバ、仮想マシン作成管理方法及び仮想マシン作成管理プログラム
KR101212828B1 (ko) * 2010-07-29 2012-12-14 삼성에스디에스 주식회사 가상머신의 보안 강화를 위한 단말장치, 서버 및 방법
CN101909058B (zh) * 2010-07-30 2013-01-16 天维讯达无线电设备检测(北京)有限责任公司 一种适合可信连接架构的平台鉴别策略管理方法及系统
US8892608B2 (en) 2010-07-30 2014-11-18 Apollo Education Group, Inc. Highly reliable cross-session web application instrumentation
US9158650B2 (en) * 2010-08-04 2015-10-13 BoxTone, Inc. Mobile application performance management
US9560035B2 (en) * 2010-08-04 2017-01-31 At&T Mobility Ii Llc Systems, devices, methods and computer program products for establishing network connections between service providers and applications that run natively on devices
US8918499B2 (en) * 2010-08-09 2014-12-23 International Business Machines Corporation Method and system for end-to-end quality of service in virtualized desktop systems
US8370899B2 (en) * 2010-08-11 2013-02-05 Emc Corporation Disposable browser for commercial banking
WO2012023152A2 (en) * 2010-08-19 2012-02-23 Ineda Systems Pvt. Ltd Multi-processor electronic systems
US8340685B2 (en) 2010-08-25 2012-12-25 The Nielsen Company (Us), Llc Methods, systems and apparatus to generate market segmentation data with anonymous location data
US9043706B2 (en) 2010-08-31 2015-05-26 Anders Nancke-Krogh System and method for using state replication between application instances to provide a collaborative desktop environment
US8549003B1 (en) 2010-09-12 2013-10-01 Mcafee, Inc. System and method for clustering host inventories
US20120066679A1 (en) * 2010-09-13 2012-03-15 Startforce, Inc. Disposable virtual desktop for transient use by multiple users
CN101938490B (zh) * 2010-09-17 2013-01-09 浙江大学 一种移动互联网设备上的远程控制验证方法
JP5672893B2 (ja) * 2010-09-21 2015-02-18 日本電気株式会社 シンクライアントシステム、管理サーバ、クライアント環境管理方法及びプログラム
US8595289B2 (en) 2010-09-21 2013-11-26 Telefonaktiebolaget L M Ericsson (Publ) Cloud phone with distributed processing
US20120072898A1 (en) * 2010-09-21 2012-03-22 Startforce, Inc. On-premise deployment of virtual desktop service servers
US9547295B2 (en) * 2010-09-24 2017-01-17 Fisher-Rosemount Systems, Inc. Methods and apparatus to display process control device information
US10805331B2 (en) 2010-09-24 2020-10-13 BitSight Technologies, Inc. Information technology security assessment system
US20120079566A1 (en) * 2010-09-25 2012-03-29 Barranco Roger L Secure out-of-band management of computing devices over a communications network
CN101964789B (zh) * 2010-09-26 2013-11-20 飞天诚信科技股份有限公司 安全访问受保护资源的方法及系统
US9160693B2 (en) 2010-09-27 2015-10-13 Blackberry Limited Method, apparatus and system for accessing applications and content across a plurality of computers
US20120079043A1 (en) * 2010-09-27 2012-03-29 Research In Motion Limited Method, apparatus and system for accessing an application across a plurality of computers
US8959173B1 (en) * 2010-09-30 2015-02-17 Emc Corporation Non-disruptive load-balancing of virtual machines between data centers
US8505083B2 (en) * 2010-09-30 2013-08-06 Microsoft Corporation Remote resources single sign on
US9384029B1 (en) * 2010-09-30 2016-07-05 Amazon Technologies, Inc. Managing virtual computing nodes
US8103906B1 (en) * 2010-10-01 2012-01-24 Massoud Alibakhsh System and method for providing total real-time redundancy for a plurality of client-server systems
US9355004B2 (en) * 2010-10-05 2016-05-31 Red Hat Israel, Ltd. Installing monitoring utilities using universal performance monitor
US9524224B2 (en) 2010-10-05 2016-12-20 Red Hat Israel, Ltd. Customized monitoring of system activities
US9235442B2 (en) 2010-10-05 2016-01-12 Accenture Global Services Limited System and method for cloud enterprise services
US8990562B2 (en) * 2010-10-08 2015-03-24 Microsoft Technology Licensing, Llc Secure deployment of provable identity for dynamic application environments
US20120089650A1 (en) * 2010-10-08 2012-04-12 Spectra Logic Corporation System and method for a storage system
US8850262B2 (en) * 2010-10-12 2014-09-30 International Business Machines Corporation Inter-processor failure detection and recovery
US20120089978A1 (en) * 2010-10-12 2012-04-12 I O Interconnect, Ltd. Method for managing applications of portable devices
US20120092693A1 (en) * 2010-10-18 2012-04-19 Aventura Hq, Inc. Centralized print driver distribution in a distributed printing environment
US9021015B2 (en) 2010-10-18 2015-04-28 Code Systems Corporation Method and system for publishing virtual applications to a web server
US9304614B2 (en) 2010-10-20 2016-04-05 Salesforce.Com, Inc. Framework for custom actions on an information feed
US8983536B2 (en) 2010-10-22 2015-03-17 Google Technology Holdings LLC Resource management in a multi-operating environment
US20120102153A1 (en) 2010-10-25 2012-04-26 Salesforce.Com, Inc. Triggering actions in an information feed system
JP2012093899A (ja) * 2010-10-26 2012-05-17 Hitachi Ltd 計算機システム、シミュレーション方法、及びプログラム
US8832686B2 (en) 2010-10-29 2014-09-09 Microsoft Corporation Inherited product activation for virtual machines
US9209976B2 (en) * 2010-10-29 2015-12-08 Code Systems Corporation Method and system for restricting execution of virtual applications to a managed process environment
US9225766B2 (en) * 2010-10-29 2015-12-29 Sears Brands, L.L.C. Systems and methods for providing smart appliances
US8812806B2 (en) 2010-10-29 2014-08-19 Netapp, Inc. Method and system for non-disruptive migration
US8756696B1 (en) 2010-10-30 2014-06-17 Sra International, Inc. System and method for providing a virtualized secure data containment service with a networked environment
US8924964B2 (en) 2010-11-01 2014-12-30 Microsoft Corporation Dynamic allocation and assignment of virtual environment
US9886323B2 (en) 2010-11-01 2018-02-06 Vmware, Inc. Graphical user interface for managing virtual machines
US8356100B2 (en) * 2010-11-08 2013-01-15 Google Inc. Full-duplex bi-directional communication over a remote procedure call based communications protocol, and applications thereof
CN102457512B (zh) * 2010-11-08 2016-03-16 中标软件有限公司 一种瘦客户端服务器虚拟化方法及虚拟瘦客户端服务器
US8656453B2 (en) * 2010-11-10 2014-02-18 Software Ag Security systems and/or methods for cloud computing environments
US20120117227A1 (en) * 2010-11-10 2012-05-10 Sony Corporation Method and apparatus for obtaining feedback from a device
JP5412585B2 (ja) * 2010-11-12 2014-02-12 株式会社日立製作所 サーバ装置、リソース管理方法およびプログラム
KR101697979B1 (ko) * 2010-11-23 2017-01-19 삼성전자주식회사 네트워크로 연결 가능한 기기에서 데이터를 동기화하기 위한 장치 및 방법
US8826407B2 (en) 2010-11-24 2014-09-02 Skai, Inc. System and method for access control and identity management
US8924560B2 (en) * 2010-11-29 2014-12-30 At&T Intellectual Property I, L.P. Optimized game server relocation environment
CN102487380B (zh) * 2010-12-01 2016-09-07 中兴通讯股份有限公司 桌面虚拟化终端托管方法及系统
US8681981B2 (en) * 2010-12-03 2014-03-25 Motorola Solutions, Inc. Method and apparatus for transmitting voice communications related to a multimedia session
CN102571832B (zh) * 2010-12-07 2016-03-02 财团法人资讯工业策进会 资源共享系统与方法
US8699499B2 (en) 2010-12-08 2014-04-15 At&T Intellectual Property I, L.P. Methods and apparatus to provision cloud computing network elements
TW201224754A (en) * 2010-12-08 2012-06-16 Quanta Comp Inc Portable electronic apparatus and control method thereof
KR101591371B1 (ko) * 2010-12-09 2016-02-18 한국전자통신연구원 클라우드 컴퓨팅 기반 가상 머신의 개인화 정보를 관리하기 위한 시스템 및 그 방법
US8607158B2 (en) * 2010-12-09 2013-12-10 International Business Machines Corporation Content presentation in remote monitoring sessions for information technology systems
US9245047B2 (en) * 2010-12-10 2016-01-26 Wyse Technology L.L.C. Methods and systems for facilitating a remote desktop session utilizing a remote desktop client common interface
US8949726B2 (en) 2010-12-10 2015-02-03 Wyse Technology L.L.C. Methods and systems for conducting a remote desktop session via HTML that supports a 2D canvas and dynamic drawing
US9395885B1 (en) 2010-12-10 2016-07-19 Wyse Technology L.L.C. Methods and systems for a remote desktop session utilizing HTTP header
US8601133B1 (en) 2010-12-14 2013-12-03 Juniper Networks, Inc. Highly scalable data center architecture with address resolution protocol (ARP)-free servers
US9128803B2 (en) 2010-12-15 2015-09-08 Microsoft Technology Licensing, Llc Application model for implementing composite applications
US8903705B2 (en) * 2010-12-17 2014-12-02 Microsoft Corporation Application compatibility shims for minimal client computers
US8990362B2 (en) * 2010-12-17 2015-03-24 Microsoft Technology Licensing, Llc Virtual machine provisioning engine
US9288230B2 (en) 2010-12-20 2016-03-15 Qualcomm Incorporated Methods and apparatus for providing or receiving data connectivity
US8473584B2 (en) * 2010-12-20 2013-06-25 Sap Ag Revocable indication of session termination
FR2969440B1 (fr) * 2010-12-21 2013-08-16 Oberthur Technologies Dispositif electronique et procede de communication
US9363102B1 (en) * 2010-12-21 2016-06-07 Amazon Technologies, Inc. Methods and apparatus for implementing anycast flow stickiness in stateful sessions
CN102685196A (zh) * 2010-12-22 2012-09-19 北京华夏未来信息技术有限公司 在虚拟应用环境下改善用户体验的方法及虚拟应用系统
US8806360B2 (en) 2010-12-22 2014-08-12 International Business Machines Corporation Computing resource management in information technology systems
US8689123B2 (en) 2010-12-23 2014-04-01 Microsoft Corporation Application reporting in an application-selectable user interface
US20120166619A1 (en) * 2010-12-23 2012-06-28 Microsoft Corporation Licensing and metering of virtualized applications
US8931037B2 (en) * 2010-12-27 2015-01-06 Microsoft Corporation Policy-based access to virtualized applications
US9094379B1 (en) 2010-12-29 2015-07-28 Amazon Technologies, Inc. Transparent client-side cryptography for network applications
US8607067B1 (en) * 2011-03-01 2013-12-10 Amazon Technologies, Inc. Techniques for attesting to information
US8538020B1 (en) * 2010-12-29 2013-09-17 Amazon Technologies, Inc. Hybrid client-server cryptography for network applications
US8583911B1 (en) 2010-12-29 2013-11-12 Amazon Technologies, Inc. Network application encryption with server-side key management
WO2012092261A2 (en) 2010-12-29 2012-07-05 Citrix Systems, Inc. Systems and methods for multi-level tagging of encrypted items for additional security and efficient encrypted item determination
US8938534B2 (en) 2010-12-30 2015-01-20 Ss8 Networks, Inc. Automatic provisioning of new users of interest for capture on a communication network
US9058323B2 (en) 2010-12-30 2015-06-16 Ss8 Networks, Inc. System for accessing a set of communication and transaction data associated with a user of interest sourced from multiple different network carriers and for enabling multiple analysts to independently and confidentially access the set of communication and transaction data
US9009217B1 (en) * 2011-01-06 2015-04-14 Amazon Technologies, Inc. Interaction with a virtual network
US9104514B2 (en) * 2011-01-11 2015-08-11 International Business Machines Corporation Automated deployment of applications with tenant-isolation requirements
US8955110B1 (en) 2011-01-14 2015-02-10 Robert W. Twitchell, Jr. IP jamming systems utilizing virtual dispersive networking
US8429191B2 (en) 2011-01-14 2013-04-23 International Business Machines Corporation Domain based isolation of objects
US9075993B2 (en) 2011-01-24 2015-07-07 Mcafee, Inc. System and method for selectively grouping and managing program files
US8751778B2 (en) 2011-01-27 2014-06-10 Wyse Technology L.L.C. Generating, validating and applying custom extensible markup language (XML) configuration on a client having a windows-based embedded image
US8495183B2 (en) 2011-01-27 2013-07-23 Wyse Technology Inc. State-based provisioning of a client having a windows-based embedded image
US9037633B2 (en) 2011-01-27 2015-05-19 Wyse Technology L.L.C. Transferring configuration data from a public cloud server and applying onto a mobile client
US8560818B2 (en) * 2011-01-27 2013-10-15 Wyse Technolgoy Inc. Automatic retrieval, parsing and application of configuration for a specific-purpose client having a windows-based embedded image with a write-filter
US8825990B2 (en) 2011-01-27 2014-09-02 Wyse Technology L.L.C. Configuring and customizing a specific-purpose client having a windows-based embedded image using extensible markup language (XML) configuration
US8700888B2 (en) 2011-01-27 2014-04-15 Wyse Technology L.L.C. Specific-purpose client with configuration history for self-provisioning of configuration and obviating reinstallation of embedded image
US8725997B2 (en) 2011-01-27 2014-05-13 Wyse Technology L.L.C. Self-provisioning of configuration for a specific-purpose client having a windows-based embedded image with a write-filter
US8941659B1 (en) 2011-01-28 2015-01-27 Rescon Ltd Medical symptoms tracking apparatus, methods and systems
US8863232B1 (en) 2011-02-04 2014-10-14 hopTo Inc. System for and methods of controlling user access to applications and/or programs of a computer
US8549145B2 (en) * 2011-02-08 2013-10-01 Aventura Hq, Inc. Pre-access location-based rule initiation in a virtual computing environment
US9288117B1 (en) 2011-02-08 2016-03-15 Gogrid, LLC System and method for managing virtual and dedicated servers
US20120204235A1 (en) * 2011-02-08 2012-08-09 Joe Jaudon Updating Resource Access Permissions in a Virtual Computing Environment
US10003672B2 (en) * 2011-02-09 2018-06-19 Cisco Technology, Inc. Apparatus, systems and methods for deployment of interactive desktop applications on distributed infrastructures
US10067787B2 (en) 2011-02-10 2018-09-04 Architecture Technology Corporation Configurable forensic investigative tool
US9292329B2 (en) * 2011-02-10 2016-03-22 Microsoft Technology Licensing, Llc Virtual switch interceptor
US10057298B2 (en) 2011-02-10 2018-08-21 Architecture Technology Corporation Configurable investigative tool
EP2487857B1 (de) * 2011-02-10 2015-10-21 Deutsche Telekom AG Verfahren zur darbietung eines sicheren internetzugangs
US9413750B2 (en) * 2011-02-11 2016-08-09 Oracle International Corporation Facilitating single sign-on (SSO) across multiple browser instance
US9264435B2 (en) * 2011-02-15 2016-02-16 Boingo Wireless, Inc. Apparatus and methods for access solutions to wireless and wired networks
US20120260304A1 (en) * 2011-02-15 2012-10-11 Webroot Inc. Methods and apparatus for agent-based malware management
US20120210399A1 (en) * 2011-02-16 2012-08-16 Waldeck Technology, Llc Location-enabled access control lists for real-world devices
US9112830B2 (en) 2011-02-23 2015-08-18 Mcafee, Inc. System and method for interlocking a host and a gateway
US9021005B2 (en) * 2011-03-04 2015-04-28 Mformation Software Technologies Llc System and method to provide remote device management for mobile virtualized platforms
US8566838B2 (en) 2011-03-11 2013-10-22 Novell, Inc. Techniques for workload coordination
US8555276B2 (en) 2011-03-11 2013-10-08 Joyent, Inc. Systems and methods for transparently optimizing workloads
US9116725B1 (en) 2011-03-15 2015-08-25 Symantec Corporation Systems and methods for using virtualization of operating-system-level components to facilitate software testing
US8417578B1 (en) 2011-03-17 2013-04-09 Amazon Technologies, Inc. Customizing component configurations for utility computing
US8959569B2 (en) 2011-03-18 2015-02-17 Juniper Networks, Inc. Security enforcement in virtualized systems
CN103430165A (zh) * 2011-03-18 2013-12-04 惠普发展公司,有限责任合伙企业 使用虚拟机与客户端计算设备共享移动计算设备的互联网能力
US8542810B2 (en) * 2011-03-21 2013-09-24 Microsoft Corporation Automatic rejoining of conferences
US9473485B2 (en) 2011-03-21 2016-10-18 Blue Cedar Networks, Inc. Secure single sign-on for a group of wrapped applications on a computing device and runtime credential sharing
US8769305B2 (en) * 2011-03-21 2014-07-01 Moncana Corporation Secure execution of unsecured apps on a device
US8955142B2 (en) * 2011-03-21 2015-02-10 Mocana Corporation Secure execution of unsecured apps on a device
US8812868B2 (en) 2011-03-21 2014-08-19 Mocana Corporation Secure execution of unsecured apps on a device
US9396325B2 (en) 2011-03-21 2016-07-19 Mocana Corporation Provisioning an app on a device and implementing a keystore
US9383800B2 (en) * 2011-03-22 2016-07-05 International Business Machines Corporation Managing a portal application
US8972485B1 (en) * 2011-03-22 2015-03-03 Cisco Technology, Inc. Distributing execution of applications between a local client system and a remote virtual environment
US20120246740A1 (en) * 2011-03-22 2012-09-27 Brooker Marc J Strong rights management for computing application functionality
US8694993B1 (en) * 2011-03-31 2014-04-08 Emc Corporation Virtualization platform for secured communications between a user device and an application server
JP5699756B2 (ja) * 2011-03-31 2015-04-15 富士通株式会社 情報処理装置及び情報処理装置制御方法
CN102143230A (zh) * 2011-04-01 2011-08-03 广州杰赛科技股份有限公司 云终端认证及登录云计算系统中虚拟机的方法及登录系统
US8972612B2 (en) 2011-04-05 2015-03-03 SSB Networks, Inc. Collecting asymmetric data and proxy data on a communication network
US9154826B2 (en) 2011-04-06 2015-10-06 Headwater Partners Ii Llc Distributing content and service launch objects to mobile devices
WO2012142088A1 (en) * 2011-04-12 2012-10-18 Citrix Systems, Inc. Server remotely executing an application using geographic location data of a mobile device
US8838988B2 (en) 2011-04-12 2014-09-16 International Business Machines Corporation Verification of transactional integrity
US8892707B2 (en) 2011-04-13 2014-11-18 Netapp, Inc. Identification of virtual applications for backup in a cloud computing system
US20120284777A1 (en) * 2011-04-15 2012-11-08 Eugenio Caballero Herrero Jose Method for managing data in m2m systems
US8875240B2 (en) 2011-04-18 2014-10-28 Bank Of America Corporation Tenant data center for establishing a virtual machine in a cloud environment
CN102761564B (zh) 2011-04-25 2015-04-22 阿里巴巴集团控股有限公司 图形共享方法、系统与终端
CO6430045A1 (es) * 2011-04-26 2012-04-30 Azuan Technologies S A Mecanismo para aseguramiento de transacciones electronicas
US20120278747A1 (en) * 2011-04-28 2012-11-01 Motorola Mobility, Inc. Method and apparatus for user interface in a system having two operating system environments
US8612738B2 (en) 2011-04-28 2013-12-17 Dell Products L.P. System and method for automated network configuration
US8990824B2 (en) 2011-04-28 2015-03-24 Dell Products L.P. System and method for automated virtual network configuration
US9354900B2 (en) 2011-04-28 2016-05-31 Google Technology Holdings LLC Method and apparatus for presenting a window in a system having two operating system environments
US8544069B1 (en) * 2011-04-29 2013-09-24 Intuit Inc. Methods systems and articles of manufacture for implementing user access to remote resources
US8375439B2 (en) 2011-04-29 2013-02-12 International Business Machines Corporation Domain aware time-based logins
US9043452B2 (en) 2011-05-04 2015-05-26 Nicira, Inc. Network control apparatus and method for port isolation
US9524531B2 (en) 2011-05-09 2016-12-20 Microsoft Technology Licensing, Llc Extensibility features for electronic communications
US9237127B2 (en) * 2011-05-12 2016-01-12 Airmagnet, Inc. Method and apparatus for dynamic host operating system firewall configuration
US9495183B2 (en) 2011-05-16 2016-11-15 Microsoft Technology Licensing, Llc Instruction set emulation for guest operating systems
US8776055B2 (en) 2011-05-18 2014-07-08 Vmware, Inc. Combining profiles based on priorities
CN102204210A (zh) * 2011-05-18 2011-09-28 华为技术有限公司 启动应用的方法、服务器和系统
WO2012159059A1 (en) * 2011-05-18 2012-11-22 Citrix Systems, Inc. Systems and methods for secure handling of data
US8998544B1 (en) * 2011-05-20 2015-04-07 Amazon Technologies, Inc. Load balancer
JP2012243254A (ja) * 2011-05-24 2012-12-10 Intelligent Willpower Corp バーチャルマシン提供システム
US9921860B1 (en) * 2011-05-25 2018-03-20 Bromium, Inc. Isolation of applications within a virtual machine
US8839245B1 (en) 2012-06-18 2014-09-16 Bromium, Inc. Transferring files using a virtualized application
US10546118B1 (en) 2011-05-25 2020-01-28 Hewlett-Packard Development Company, L.P. Using a profile to provide selective access to resources in performing file operations
US10846396B1 (en) 2011-05-25 2020-11-24 Hewlett-Packard Development Company, L.P. Downloading data in a dedicated virtual machine
US9843665B2 (en) * 2011-05-27 2017-12-12 Microsoft Technology Licensing, Llc Display of immersive and desktop shells
US20120304283A1 (en) * 2011-05-27 2012-11-29 Microsoft Corporation Brokered item access for isolated applications
US10417018B2 (en) 2011-05-27 2019-09-17 Microsoft Technology Licensing, Llc Navigation of immersive and desktop shells
US9158445B2 (en) 2011-05-27 2015-10-13 Microsoft Technology Licensing, Llc Managing an immersive interface in a multi-application immersive environment
US9104307B2 (en) 2011-05-27 2015-08-11 Microsoft Technology Licensing, Llc Multi-application environment
TW201249135A (en) * 2011-05-30 2012-12-01 Wistron Corp Remote management method and remote management system
CN102215230B (zh) * 2011-06-02 2014-04-16 首都师范大学 Sparc v8监控软件中总线协议无关通信方法
US9935848B2 (en) 2011-06-03 2018-04-03 Oracle International Corporation System and method for supporting subnet manager (SM) level robust handling of unkown management key in an infiniband (IB) network
US8839275B1 (en) 2011-06-06 2014-09-16 Proximal Data, Inc. Method for intercepting input/output requests and responses
US9058716B2 (en) 2011-06-06 2015-06-16 Bally Gaming, Inc. Remote game play in a wireless gaming environment
US9063691B2 (en) 2011-06-07 2015-06-23 National Instruments Corporation Zero client device with multi-boot capability supporting multiple zero client protocols
US8656013B2 (en) * 2011-06-14 2014-02-18 Sony Computer Entertainment America Llc Real-time data monitoring based on data push
US8706869B2 (en) * 2011-06-14 2014-04-22 International Business Machines Corporation Distributed cloud placement software
US9600350B2 (en) * 2011-06-16 2017-03-21 Vmware, Inc. Delivery of a user interface using hypertext transfer protocol
US9191454B2 (en) * 2011-06-27 2015-11-17 Microsoft Technology Licensing, Llc Host enabled management channel
US8880657B1 (en) 2011-06-28 2014-11-04 Gogrid, LLC System and method for configuring and managing virtual grids
US9058336B1 (en) 2011-06-30 2015-06-16 Emc Corporation Managing virtual datacenters with tool that maintains communications with a virtual data center that is moved
US10264058B1 (en) 2011-06-30 2019-04-16 Emc Corporation Defining virtual application templates
US10042657B1 (en) 2011-06-30 2018-08-07 Emc Corporation Provisioning virtual applciations from virtual application templates
US9323820B1 (en) 2011-06-30 2016-04-26 Emc Corporation Virtual datacenter redundancy
US8769058B1 (en) * 2011-06-30 2014-07-01 Emc Corporation Provisioning interfacing virtual machines to separate virtual datacenters
US9282142B1 (en) 2011-06-30 2016-03-08 Emc Corporation Transferring virtual datacenters between hosting locations while maintaining communication with a gateway server following the transfer
KR101507919B1 (ko) * 2011-07-01 2015-04-07 한국전자통신연구원 가상 데스크탑 서비스를 위한 방법 및 장치
US9258703B2 (en) * 2011-07-05 2016-02-09 Texas Instruments Incorporated Method, system and computer program product for wirelessly connecting a device to a network
US9634849B2 (en) 2011-07-11 2017-04-25 Oracle International Corporation System and method for using a packet process proxy to support a flooding mechanism in a middleware machine environment
US10983747B2 (en) 2011-07-15 2021-04-20 Vmware, Inc. Remote desktop mirroring
US10976981B2 (en) 2011-07-15 2021-04-13 Vmware, Inc. Remote desktop exporting
US9443225B2 (en) 2011-07-18 2016-09-13 Salesforce.Com, Inc. Computer implemented methods and apparatus for presentation of feed items in an information feed to be displayed on a display device
US9594579B2 (en) 2011-07-29 2017-03-14 Hewlett Packard Enterprise Development Lp Migrating virtual machines
US9053444B2 (en) 2011-08-09 2015-06-09 Mobileframe, Llc Deploying applications in a smart thin client server
US20130042312A1 (en) * 2011-08-09 2013-02-14 Mobileframe Llc Authentication in a smart thin client server
US9049174B2 (en) 2011-08-09 2015-06-02 Mobileframe, Llc Maintaining sessions in a smart thin client server
US8655955B2 (en) 2011-08-18 2014-02-18 International Business Machines Corporation Stream processing using a client-server architecture
US9158561B2 (en) 2011-08-18 2015-10-13 Vmware, Inc. Systems and methods for modifying an operating system for a virtual machine
US9549045B2 (en) 2011-08-29 2017-01-17 Vmware, Inc. Sharing remote sessions of a user interface and/or graphics of a computer
US9514242B2 (en) 2011-08-29 2016-12-06 Vmware, Inc. Presenting dynamically changing images in a limited rendering environment
US8798982B2 (en) * 2011-08-30 2014-08-05 Nec Corporation Information processing device, information processing method, and program
US8898459B2 (en) 2011-08-31 2014-11-25 At&T Intellectual Property I, L.P. Policy configuration for mobile device applications
US8918841B2 (en) * 2011-08-31 2014-12-23 At&T Intellectual Property I, L.P. Hardware interface access control for mobile applications
US20130055255A1 (en) * 2011-08-31 2013-02-28 Rovi Technologies Corporation Systems and methods for common application platforms utilizing shared services
US8799647B2 (en) 2011-08-31 2014-08-05 Sonic Ip, Inc. Systems and methods for application identification
US20130057587A1 (en) 2011-09-01 2013-03-07 Microsoft Corporation Arranging tiles
US8745157B2 (en) 2011-09-02 2014-06-03 Trading Technologies International, Inc. Order feed message stream integrity
US8924507B2 (en) * 2011-09-02 2014-12-30 Microsoft Corporation Cross-frame progressive spoiling support for reduced network bandwidth usage
US10031636B2 (en) 2011-09-08 2018-07-24 Microsoft Technology Licensing, Llc Remoting desktop displays using move regions
US9965151B2 (en) 2011-09-09 2018-05-08 Cloudon Ltd. Systems and methods for graphical user interface interaction with cloud-based applications
US10063430B2 (en) 2011-09-09 2018-08-28 Cloudon Ltd. Systems and methods for workspace interaction with cloud-based applications
US9594881B2 (en) 2011-09-09 2017-03-14 Mcafee, Inc. System and method for passive threat detection using virtual memory inspection
US9886189B2 (en) 2011-09-09 2018-02-06 Cloudon Ltd. Systems and methods for object-based interaction with cloud-based applications
US9606629B2 (en) 2011-09-09 2017-03-28 Cloudon Ltd. Systems and methods for gesture interaction with cloud-based applications
CN104185844B (zh) * 2011-09-09 2018-06-05 石器公司 基于远程桌面协议的密钥共享方法和装置
US9146670B2 (en) 2011-09-10 2015-09-29 Microsoft Technology Licensing, Llc Progressively indicating new content in an application-selectable user interface
US8843646B2 (en) 2011-09-12 2014-09-23 Microsoft Corporation Multi-desktop interaction using nested remote desktop sessions
US9146785B2 (en) 2011-09-14 2015-09-29 Microsoft Technology Licensing, Llc Application acceleration in a virtualized environment
US8898672B2 (en) 2011-09-14 2014-11-25 Alcatel Lucent Method and apparatus for providing isolated virtual space
US8438635B2 (en) 2011-09-15 2013-05-07 Microsoft Corporation Single sign-on for remote desktops
US20130074064A1 (en) * 2011-09-15 2013-03-21 Microsoft Corporation Automated infrastructure provisioning
US8798086B2 (en) * 2011-09-23 2014-08-05 Alcatel Lucent Time-preserved transmissions in asynchronous virtual machine replication
GB2494920B8 (en) * 2011-09-26 2014-02-19 Validsoft Uk Ltd Network connection method
US8930529B1 (en) 2011-09-27 2015-01-06 Palo Alto Networks, Inc. Policy enforcement with dynamic address object
US20130080932A1 (en) 2011-09-27 2013-03-28 Sanjiv Sirpal Secondary single screen mode activation through user interface toggle
US9047109B1 (en) 2012-06-20 2015-06-02 Palo Alto Networks, Inc. Policy enforcement in virtualized environment
US9537891B1 (en) 2011-09-27 2017-01-03 Palo Alto Networks, Inc. Policy enforcement based on dynamically attribute-based matched network objects
US9886312B2 (en) * 2011-09-28 2018-02-06 Microsoft Technology Licensing, Llc Dynamic provisioning of virtual video memory based on virtual video controller configuration
US9037511B2 (en) * 2011-09-29 2015-05-19 Amazon Technologies, Inc. Implementation of secure communications in a support system
US20140040979A1 (en) 2011-10-11 2014-02-06 Citrix Systems, Inc. Policy-Based Application Management
US9215225B2 (en) 2013-03-29 2015-12-15 Citrix Systems, Inc. Mobile device locking with context
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US20140053234A1 (en) 2011-10-11 2014-02-20 Citrix Systems, Inc. Policy-Based Application Management
US20140032733A1 (en) 2011-10-11 2014-01-30 Citrix Systems, Inc. Policy-Based Application Management
US9529996B2 (en) 2011-10-11 2016-12-27 Citrix Systems, Inc. Controlling mobile device access to enterprise resources
US9280377B2 (en) 2013-03-29 2016-03-08 Citrix Systems, Inc. Application with multiple operation modes
US8973144B2 (en) 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US9069586B2 (en) 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US20130093776A1 (en) * 2011-10-14 2013-04-18 Microsoft Corporation Delivering a Single End User Experience to a Client from Multiple Servers
EP2767066A2 (en) * 2011-10-14 2014-08-20 Open Text S.A. System and method for secure content sharing and synchronization
US8726359B2 (en) 2011-10-14 2014-05-13 Sony Corporation Method and system for content distribution management
US8800024B2 (en) 2011-10-17 2014-08-05 Mcafee, Inc. System and method for host-initiated firewall discovery in a network environment
US8930492B2 (en) 2011-10-17 2015-01-06 Blackberry Limited Method and electronic device for content sharing
US8713668B2 (en) 2011-10-17 2014-04-29 Mcafee, Inc. System and method for redirected firewall discovery in a network environment
US9189753B2 (en) * 2011-10-24 2015-11-17 Blackberry Limited Multiplatform management system and method for mobile devices
US9529995B2 (en) 2011-11-08 2016-12-27 Varmour Networks, Inc. Auto discovery of virtual machines
CN103107905B (zh) * 2011-11-14 2017-08-04 华为技术有限公司 异常处理方法、装置和客户端
US9313100B1 (en) 2011-11-14 2016-04-12 Amazon Technologies, Inc. Remote browsing session management
US8832374B1 (en) * 2011-11-14 2014-09-09 Union Supply Company, Inc. Providing electronic content to residents of controlled-environment facilities
EP2748713B1 (en) 2011-11-15 2021-08-25 Nicira Inc. Load balancing and destination network address translation middleboxes
US20130125009A1 (en) * 2011-11-16 2013-05-16 International Business Machines Corporation Remote desktop localized content sharing
US9529829B1 (en) * 2011-11-18 2016-12-27 Veritas Technologies Llc System and method to facilitate the use of processed data from a storage system to perform tasks
TWI478063B (zh) * 2011-11-21 2015-03-21 Inst Information Industry 於虛擬機器提供應用程式之系統以及方法以及儲存其之電腦可讀取記錄媒體
US8893261B2 (en) 2011-11-22 2014-11-18 Vmware, Inc. Method and system for VPN isolation using network namespaces
CN103139052A (zh) * 2011-11-28 2013-06-05 中国北车股份有限公司大连电力牵引研发中心 Can-以太网通信网关、数据处理方法和系统
CA2873923A1 (en) * 2011-11-29 2013-06-06 Bruce Ross Layered security for age verification and transaction authorization
US9612724B2 (en) * 2011-11-29 2017-04-04 Citrix Systems, Inc. Integrating native user interface components on a mobile device
WO2013078548A1 (en) * 2011-12-02 2013-06-06 Groupe Iweb Inc. System and method for automatically configuring and updating a virtual server
US20130152194A1 (en) * 2011-12-07 2013-06-13 Computer Associates Think, Inc. System, method and software for controlling access to virtual machine consoles
US8584254B2 (en) * 2011-12-08 2013-11-12 Microsoft Corporation Data access reporting platform for secure active monitoring
WO2013086124A1 (en) * 2011-12-09 2013-06-13 Kubisys Inc. Hybrid virtual computing environments
US9164544B2 (en) 2011-12-09 2015-10-20 Z124 Unified desktop: laptop dock, hardware configuration
US10282221B2 (en) 2011-12-09 2019-05-07 International Business Machines Corporation Controlling usage of virtual disks before their attachment to virtual machines
US9413538B2 (en) 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US9389933B2 (en) 2011-12-12 2016-07-12 Microsoft Technology Licensing, Llc Facilitating system service request interactions for hardware-protected applications
US8977735B2 (en) 2011-12-12 2015-03-10 Rackspace Us, Inc. Providing a database as a service in a multi-tenant environment
US20130148493A1 (en) * 2011-12-13 2013-06-13 Avaya Inc. Providing an Alternative Media Channel in a Virtual Media System
US10103875B1 (en) 2011-12-20 2018-10-16 Amazon Technologies, Inc. Authentication through a secret holding proxy
US10165036B1 (en) * 2011-12-21 2018-12-25 Amazon Technologies, Inc. Network resource remote process execution
US9288524B2 (en) * 2011-12-21 2016-03-15 Sony Corporation Using TV over VPN to present remote device application graphics
US20140317537A1 (en) * 2011-12-22 2014-10-23 Tencent Technology (Shenzhen) Company Limited Browser based application program extension method and device
US8938712B2 (en) * 2011-12-22 2015-01-20 International Business Machines Corporation Cross-platform virtual machine and method
US9330188B1 (en) 2011-12-22 2016-05-03 Amazon Technologies, Inc. Shared browsing sessions
JP5784482B2 (ja) 2011-12-28 2015-09-24 株式会社東芝 情報処理装置および通信制御方法
JP2013137649A (ja) * 2011-12-28 2013-07-11 Toshiba Corp 情報処理装置および仮想マシンの制御方法
US8782224B2 (en) 2011-12-29 2014-07-15 Joyent, Inc. Systems and methods for time-based dynamic allocation of resource management
US8555339B2 (en) * 2012-01-06 2013-10-08 International Business Machines Corporation Identifying guests in web meetings
US20130185772A1 (en) * 2012-01-12 2013-07-18 Aventura Hq, Inc. Dynamically updating a session based on location data from an authentication device
US8974305B2 (en) 2012-01-18 2015-03-10 Bally Gaming, Inc. Network gaming architecture, gaming systems, and related methods
US9120007B2 (en) 2012-01-18 2015-09-01 Bally Gaming, Inc. Network gaming architecture, gaming systems, and related methods
US10257315B2 (en) * 2012-01-23 2019-04-09 Facebook, Inc. Secure proxied data retrieval from third-party services
US9336321B1 (en) 2012-01-26 2016-05-10 Amazon Technologies, Inc. Remote browsing and searching
US8839087B1 (en) 2012-01-26 2014-09-16 Amazon Technologies, Inc. Remote browsing and searching
US8725650B2 (en) * 2012-01-26 2014-05-13 Microsoft Corporation Document template licensing
US9973385B2 (en) * 2012-01-31 2018-05-15 Hewlett Packard Enterprise Development Lp Remote server configuration
US9396041B2 (en) * 2012-02-01 2016-07-19 Google Technology Holdings LLC Optimization of resource usage in a multi-environment computing system
US9852010B2 (en) 2012-02-03 2017-12-26 Microsoft Technology Licensing, Llc Decoupling partitioning for scalability
US10860384B2 (en) * 2012-02-03 2020-12-08 Microsoft Technology Licensing, Llc Managing partitions in a scalable environment
JP5850324B2 (ja) * 2012-02-05 2016-02-03 株式会社応用電子 シンクライアントシステム
US8712631B2 (en) * 2012-02-09 2014-04-29 Nordic Capital Partners, LLC System and method for access of user accounts on remote servers
US9832036B2 (en) 2012-02-09 2017-11-28 Keystone Integrations Llc Dual-mode vehicular controller
US9110729B2 (en) * 2012-02-17 2015-08-18 International Business Machines Corporation Host system admission control
US9015809B2 (en) 2012-02-20 2015-04-21 Blackberry Limited Establishing connectivity between an enterprise security perimeter of a device and an enterprise
US9137210B1 (en) 2012-02-21 2015-09-15 Amazon Technologies, Inc. Remote browsing session management
US9721091B2 (en) * 2012-02-28 2017-08-01 Red Hat Israel, Ltd. Guest-driven host execution
US8844036B2 (en) * 2012-03-02 2014-09-23 Sri International Method and system for application-based policy monitoring and enforcement on a mobile device
JP5978659B2 (ja) * 2012-03-06 2016-08-24 日本電気株式会社 シンクライアントシステム、管理サーバ、業務環境設定方法、及び業務環境設定プログラム
US20130238785A1 (en) * 2012-03-06 2013-09-12 Rackspace Us, Inc. System and Method for Metadata Discovery and Metadata-Aware Scheduling
JP5503678B2 (ja) * 2012-03-07 2014-05-28 株式会社Nttドコモ ホスト提供システム及びホスト提供方法
US8745722B2 (en) * 2012-03-09 2014-06-03 Wapice Oy Managing remote network addresses in communications
JP5606477B2 (ja) * 2012-03-13 2014-10-15 株式会社東芝 クライアント管理システム
US8667594B1 (en) 2012-03-13 2014-03-04 Bromium, Inc. Securing file trust with file format conversions
US9245108B1 (en) 2012-03-13 2016-01-26 Bromium, Inc. Dynamic adjustment of the file format to identify untrusted files
US8824750B2 (en) * 2012-03-19 2014-09-02 Next Level Security Systems, Inc. Distributive facial matching and notification system
US20130254762A1 (en) * 2012-03-21 2013-09-26 Verizon Patent And Licensing Inc. Providing redundant virtual machines in a cloud computing environment
JP6095091B2 (ja) * 2012-03-24 2017-03-15 日本電気株式会社 情報処理システム、情報処理方法、情報処理装置およびその制御方法と制御プログラム
CN103368981B (zh) * 2012-03-26 2016-08-03 英顺源(重庆)科技有限公司 具有分层数据处理架构的虚拟桌面管理系统及方法
US8739257B1 (en) * 2012-03-28 2014-05-27 Emc Corporation Managing authentication of virtual clients
JP5891900B2 (ja) 2012-03-29 2016-03-23 富士通株式会社 アクセス制御方法、サーバ装置およびストレージ装置
US10528994B2 (en) * 2012-03-29 2020-01-07 International Business Machines Corporation Allocation of application licenses within cloud or infrastructure
CN104205050B (zh) * 2012-03-30 2019-02-15 英特尔公司 访问远程机器上的设备
US8990520B1 (en) * 2012-03-30 2015-03-24 Emc Corporation Global memory as non-volatile random access memory for guest operating systems
US8739272B1 (en) 2012-04-02 2014-05-27 Mcafee, Inc. System and method for interlocking a host and a gateway
US8712407B1 (en) 2012-04-05 2014-04-29 Sprint Communications Company L.P. Multiple secure elements in mobile electronic device with near field communication capability
KR101609812B1 (ko) * 2012-04-09 2016-04-20 엠파이어 테크놀로지 디벨롭먼트 엘엘씨 프로세싱 로드 분배
US9716802B2 (en) 2012-04-12 2017-07-25 Hewlett-Packard Development Company, L.P. Content model for a printer interface
US9129124B2 (en) * 2012-04-12 2015-09-08 Hewlett-Packard Development Company, L.P. Dynamic provisioning of virtual systems
US9053603B2 (en) 2012-04-17 2015-06-09 Igt Cloud based virtual environment authentication
US9462081B2 (en) * 2012-04-17 2016-10-04 Igt Cloud based virtual environment validation
US20130275968A1 (en) * 2012-04-17 2013-10-17 Petio Petev Application management methods and systems
US20130282869A1 (en) * 2012-04-24 2013-10-24 Nokia Corporation Method, apparatus, and computer program product for scheduling file uploads
US8583920B1 (en) 2012-04-25 2013-11-12 Citrix Systems, Inc. Secure administration of virtual machines
US10152409B2 (en) 2012-04-30 2018-12-11 Vmware, Inc. Hybrid in-heap out-of-heap ballooning for java virtual machines
US9852054B2 (en) 2012-04-30 2017-12-26 Vmware, Inc. Elastic caching for Java virtual machines
US9210162B2 (en) 2012-05-02 2015-12-08 Microsoft Technology Licensing, Llc Certificate based connection to cloud virtual machine
US9417753B2 (en) 2012-05-02 2016-08-16 Google Technology Holdings LLC Method and apparatus for providing contextual information between operating system environments
US9442526B2 (en) 2012-05-04 2016-09-13 JPMorgan Chase, Bank, N.A. System and method for mobile device docking station
US9436220B2 (en) 2012-05-04 2016-09-06 Jpmorgan Chase Bank, N.A. System and method for mobile device docking station
US9027024B2 (en) 2012-05-09 2015-05-05 Rackspace Us, Inc. Market-based virtual machine allocation
US9594818B2 (en) 2012-05-10 2017-03-14 Oracle International Corporation System and method for supporting dry-run mode in a network environment
US9027102B2 (en) 2012-05-11 2015-05-05 Sprint Communications Company L.P. Web server bypass of backend process on near field communications and secure element chips
US9535749B2 (en) * 2012-05-11 2017-01-03 Infosys Limited Methods for managing work load bursts and devices thereof
US10936591B2 (en) 2012-05-15 2021-03-02 Microsoft Technology Licensing, Llc Idempotent command execution
US9342325B2 (en) 2012-05-17 2016-05-17 Google Technology Holdings LLC Synchronizing launch-configuration information between first and second application environments that are operable on a multi-modal device
US9749038B2 (en) 2012-05-21 2017-08-29 Qualcomm Incorporated System and method for wireless docking utilizing a wireless docking profile
US9419848B1 (en) 2012-05-25 2016-08-16 hopTo Inc. System for and method of providing a document sharing service in combination with remote access to document applications
US8713658B1 (en) 2012-05-25 2014-04-29 Graphon Corporation System for and method of providing single sign-on (SSO) capability in an application publishing environment
US8862181B1 (en) 2012-05-29 2014-10-14 Sprint Communications Company L.P. Electronic purchase transaction trust infrastructure
US9311119B2 (en) * 2012-05-30 2016-04-12 Red Hat, Inc. Reconfiguring virtual machines
US10169000B2 (en) * 2012-05-30 2019-01-01 Red Hat Israel, Ltd. Provisioning composite applications using secure parameter access
US9015203B2 (en) 2012-05-31 2015-04-21 Vmware, Inc. Balloon object feedback for Java Virtual Machines
US9990217B2 (en) * 2012-05-31 2018-06-05 Red Hat, Inc. Hypervisor printer emulation for virtual machines
US20130326063A1 (en) * 2012-05-31 2013-12-05 Lloyd Leon Burch Techniques for workload discovery and organization
US9021566B1 (en) * 2012-05-31 2015-04-28 Starnet Communications Corporation Apparatus and method to securely connect to and manage X11 applications on a remote system through an HTTP client
US8561142B1 (en) * 2012-06-01 2013-10-15 Symantec Corporation Clustered device access control based on physical and temporal proximity to the user
US8966093B2 (en) * 2012-06-04 2015-02-24 Cisco Technology, Inc. Seamless hand-off of combined unified communications and virtual desktop infrastructure sessions
US10084818B1 (en) * 2012-06-07 2018-09-25 Amazon Technologies, Inc. Flexibly configurable data modification services
US10075471B2 (en) 2012-06-07 2018-09-11 Amazon Technologies, Inc. Data loss prevention techniques
US9286491B2 (en) 2012-06-07 2016-03-15 Amazon Technologies, Inc. Virtual service provider zones
CN102750178B (zh) * 2012-06-08 2015-04-29 华为技术有限公司 通信设备硬件资源的虚拟化管理方法及相关装置
US20130332587A1 (en) * 2012-06-11 2013-12-12 International Business Machines Corporation Method and a system for on-boarding, administration and communication between cloud providers and tenants in a share-all multi-tenancy environment
US9805197B2 (en) * 2012-06-11 2017-10-31 Ent. Services Development Corporation Lp Secure host operating system running a virtual guest operating system
US9940228B2 (en) 2012-06-14 2018-04-10 Vmware, Inc. Proactive memory reclamation for java virtual machines
US8782768B2 (en) * 2012-06-15 2014-07-15 Vmware, Inc. Systems and methods for accessing a virtual desktop
US9438466B1 (en) * 2012-06-15 2016-09-06 Juniper Networks, Inc. Migrating virtual machines between oversubscribed and undersubscribed compute devices
US9442859B1 (en) 2012-06-17 2016-09-13 Samsung Electronics Co., Ltd. Method for asynchronous population of data caches used with mass storage devices
US10095662B1 (en) 2012-06-18 2018-10-09 Bromium, Inc. Synchronizing resources of a virtualized browser
US9201850B1 (en) 2012-06-18 2015-12-01 Bromium, Inc. Composing the display of a virtualized web browser
US11023088B2 (en) 2012-06-18 2021-06-01 Hewlett-Packard Development Company, L.P. Composing the display of a virtualized web browser
US9727534B1 (en) 2012-06-18 2017-08-08 Bromium, Inc. Synchronizing cookie data using a virtualized browser
US9384026B1 (en) 2012-06-18 2016-07-05 Bromium, Inc. Sharing and injecting cookies into virtual machines for retrieving requested web pages
US9734131B1 (en) 2012-06-18 2017-08-15 Bromium, Inc. Synchronizing history data across a virtualized web browser
US9183031B2 (en) 2012-06-19 2015-11-10 Bank Of America Corporation Provisioning of a virtual machine by using a secured zone of a cloud environment
US9239868B2 (en) 2012-06-19 2016-01-19 Microsoft Technology Licensing, Llc Virtual session management and reestablishment
JP5342044B1 (ja) * 2012-06-22 2013-11-13 株式会社東芝 情報処理装置、情報処理方法およびプログラム
US9104552B1 (en) 2012-06-23 2015-08-11 Samsung Electronics Co., Ltd. Method for the use of shadow ghost lists to prevent excessive wear on FLASH based cache devices
US9282898B2 (en) 2012-06-25 2016-03-15 Sprint Communications Company L.P. End-to-end trusted communications infrastructure
TWI470550B (zh) * 2012-06-26 2015-01-21 Wistron Corp 虛擬機器的通信方法以及伺服端系統
WO2014000787A1 (en) * 2012-06-27 2014-01-03 Qatar Foundation An arrangement configured to migrate a virtual machine in the event of an attack
US9066230B1 (en) 2012-06-27 2015-06-23 Sprint Communications Company L.P. Trusted policy and charging enforcement function
US9842001B2 (en) * 2012-06-27 2017-12-12 International Business Machines Corporation System level acceleration server
US9436493B1 (en) * 2012-06-28 2016-09-06 Amazon Technologies, Inc. Distributed computing environment software configuration
WO2014005053A1 (en) * 2012-06-29 2014-01-03 Avocent Huntsville Corp. System and method for single kvm client accommodating multiple different video compression technologies
US8997094B2 (en) * 2012-06-29 2015-03-31 Pulse Secure, Llc Migrating virtual machines between computing devices
US9047463B2 (en) * 2012-06-29 2015-06-02 Sri International Method and system for protecting data flow at a mobile device
US9489471B2 (en) 2012-06-29 2016-11-08 Dell Products L.P. Flash redirection with caching
US9354764B2 (en) 2012-06-29 2016-05-31 Dell Products L.P. Playback of flash content at a client by redirecting execution of a script by a flash redirection plugin at a server to a flash redirection browser at the client
US9626450B2 (en) 2012-06-29 2017-04-18 Dell Products L.P. Flash redirection with browser calls caching
US10061620B2 (en) * 2012-07-02 2018-08-28 Paypal, Inc. System and method for clustering of mobile devices and applications
US8649770B1 (en) 2012-07-02 2014-02-11 Sprint Communications Company, L.P. Extended trusted security zone radio modem
WO2014006949A1 (ja) * 2012-07-04 2014-01-09 ソフトバンクモバイル株式会社 端末及びその接続方法
US20140012704A1 (en) 2012-07-05 2014-01-09 Google Inc. Selecting a preferred payment instrument based on a merchant category
FI125393B (en) 2012-07-17 2015-09-30 Arm Finland Oy Procedure, device and system for use in a web service
US10469506B2 (en) * 2012-07-19 2019-11-05 Tecore, Inc. Systems and methods for communication control in a restricted environment
US8667607B2 (en) 2012-07-24 2014-03-04 Sprint Communications Company L.P. Trusted security zone access to peripheral devices
US9513950B2 (en) 2012-07-25 2016-12-06 Vmware, Inc. Dynamic resource configuration based on context
US9003037B2 (en) * 2012-07-25 2015-04-07 Vmware, Inc. Dynamic allocation of physical computing resources amongst virtual machines
US8863252B1 (en) 2012-07-25 2014-10-14 Sprint Communications Company L.P. Trusted access to third party applications systems and methods
US9251194B2 (en) 2012-07-26 2016-02-02 Microsoft Technology Licensing, Llc Automatic data request recovery after session failure
US8898109B2 (en) 2012-07-27 2014-11-25 Microsoft Corporation Automatic transaction retry after session failure
US8917826B2 (en) 2012-07-31 2014-12-23 International Business Machines Corporation Detecting man-in-the-middle attacks in electronic transactions using prompts
EP2696303B1 (en) * 2012-08-03 2017-05-10 Alcatel Lucent Mandatory access control (MAC) in virtual machines
CN103581265B (zh) * 2012-08-07 2017-08-29 深圳市傲冠软件股份有限公司 远程访问方法及系统
US9658895B2 (en) 2012-08-07 2017-05-23 Advanced Micro Devices, Inc. System and method for configuring boot-time parameters of nodes of a cloud computing system
US20140047095A1 (en) * 2012-08-07 2014-02-13 Advanced Micro Devices, Inc. System and method for tuning a cloud computing system
US9262231B2 (en) 2012-08-07 2016-02-16 Advanced Micro Devices, Inc. System and method for modifying a hardware configuration of a cloud computing system
US9152532B2 (en) 2012-08-07 2015-10-06 Advanced Micro Devices, Inc. System and method for configuring a cloud computing system with a synthetic test workload
US9032506B2 (en) * 2012-08-09 2015-05-12 Cisco Technology, Inc. Multiple application containerization in a single container
US9043788B2 (en) 2012-08-10 2015-05-26 Concurix Corporation Experiment manager for manycore systems
US20130080760A1 (en) * 2012-08-10 2013-03-28 Concurix Corporation Execution Environment with Feedback Loop
US9183412B2 (en) * 2012-08-10 2015-11-10 Sprint Communications Company L.P. Systems and methods for provisioning and using multiple trusted security zones on an electronic device
US8966462B2 (en) 2012-08-10 2015-02-24 Concurix Corporation Memory management parameters derived from system modeling
US8935689B2 (en) * 2012-08-13 2015-01-13 International Business Machines Corporation Concurrent embedded application update and migration
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US8656482B1 (en) 2012-08-20 2014-02-18 Bitdefender IPR Management Ltd. Secure communication using a trusted virtual machine
US10044522B1 (en) 2012-08-21 2018-08-07 Amazon Technologies Inc. Tree-oriented configuration management service
US9215180B1 (en) 2012-08-25 2015-12-15 Sprint Communications Company L.P. File retrieval in real-time brokering of digital content
US8954588B1 (en) 2012-08-25 2015-02-10 Sprint Communications Company L.P. Reservations in real-time brokering of digital content delivery
US9015068B1 (en) 2012-08-25 2015-04-21 Sprint Communications Company L.P. Framework for real-time brokering of digital content delivery
US9203905B1 (en) * 2012-08-27 2015-12-01 Google Inc. Sessionization of visitor activity
US9621667B2 (en) * 2012-08-27 2017-04-11 Adobe Systems Incorporated Streaming media with a server identified at runtime
US9170845B2 (en) * 2012-08-28 2015-10-27 Vce Company, Llc Deployed application factory reset
US8984186B2 (en) * 2012-08-29 2015-03-17 Google Inc. Augmenting capabilities of a host device
US9697093B2 (en) 2012-09-05 2017-07-04 Veritas Technologies Llc Techniques for recovering a virtual machine
US9043789B2 (en) * 2012-09-05 2015-05-26 Red Hat Israel, Ltd. Managing safe removal of a passthrough device in a virtualization system
US8752140B1 (en) 2012-09-11 2014-06-10 Sprint Communications Company L.P. System and methods for trusted internet domain networking
CN103685399B (zh) * 2012-09-17 2018-03-23 腾讯科技(深圳)有限公司 一种登录类Unix虚拟容器的方法、装置和系统
CN103679060B (zh) * 2012-09-19 2018-03-27 腾讯科技(深圳)有限公司 加密方法及加密装置
US8635373B1 (en) * 2012-09-22 2014-01-21 Nest Labs, Inc. Subscription-Notification mechanisms for synchronization of distributed states
US9213515B2 (en) * 2012-09-24 2015-12-15 At&T Intellectual Property I, L.P. On-demand multi-screen computing
US9350762B2 (en) 2012-09-25 2016-05-24 Ss8 Networks, Inc. Intelligent feedback loop to iteratively reduce incoming network data for analysis
JP6066647B2 (ja) * 2012-09-27 2017-01-25 キヤノン株式会社 デバイス装置、その制御方法、およびそのプログラム
US8924972B2 (en) * 2012-09-27 2014-12-30 Oracle International Corporation Method and system for logging into a virtual environment executing on a host
US9282201B2 (en) * 2012-09-28 2016-03-08 Interactive Memories Inc. Methods for prioritizing activation of grid-based or object-based snap guides for snapping digital graphics to grids in a layout in an electronic interface
US9979960B2 (en) 2012-10-01 2018-05-22 Microsoft Technology Licensing, Llc Frame packing and unpacking between frames of chroma sampling formats with different chroma resolutions
US11774927B2 (en) 2012-10-08 2023-10-03 Fisher-Rosemount Systems, Inc. Methods and apparatus to provide a role-based user interface
US11216159B2 (en) 2012-10-08 2022-01-04 Fisher-Rosemount Systems, Inc. Configuration element for graphic elements
CN107678412B (zh) 2012-10-08 2020-05-15 费希尔-罗斯蒙特系统公司 用利用覆盖的派生和链接的定义配置图形元素对象的方法
US9501415B1 (en) * 2012-10-09 2016-11-22 Amazon Technologies, Inc. Image caching system to support fast scrolling of images in a graphical user interface
US20140108589A1 (en) * 2012-10-11 2014-04-17 Sanjeev Dhanda Testing an executable binary file using an injection proxy
US8745755B2 (en) 2012-10-12 2014-06-03 Citrix Systems, Inc. Controlling device access to enterprise resources in an orchestration framework for connected devices
US9516022B2 (en) 2012-10-14 2016-12-06 Getgo, Inc. Automated meeting room
US9635094B2 (en) 2012-10-15 2017-04-25 International Business Machines Corporation Capturing and replaying application sessions using resource files
US20140109171A1 (en) 2012-10-15 2014-04-17 Citrix Systems, Inc. Providing Virtualized Private Network tunnels
US8910239B2 (en) 2012-10-15 2014-12-09 Citrix Systems, Inc. Providing virtualized private network tunnels
US9251354B2 (en) * 2012-10-15 2016-02-02 Imprivata, Inc. Secure access supersession on shared workstations
US20140109176A1 (en) 2012-10-15 2014-04-17 Citrix Systems, Inc. Configuring and providing profiles that manage execution of mobile applications
US20140108793A1 (en) 2012-10-16 2014-04-17 Citrix Systems, Inc. Controlling mobile device access to secure data
US9606774B2 (en) 2012-10-16 2017-03-28 Citrix Systems, Inc. Wrapping an application with field-programmable business logic
US9971585B2 (en) 2012-10-16 2018-05-15 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
US9917865B2 (en) 2012-10-16 2018-03-13 Citrix Systems, Inc. Systems and methods for bridging between public and private clouds through multilevel API integration
US9081746B1 (en) * 2012-10-16 2015-07-14 Teradici Corporation Method for client configuration management in remote computing
US9170800B2 (en) 2012-10-16 2015-10-27 Citrix Systems, Inc. Application wrapping for application management framework
US9235464B2 (en) 2012-10-16 2016-01-12 Microsoft Technology Licensing, Llc Smart error recovery for database applications
US9239727B1 (en) * 2012-10-17 2016-01-19 Amazon Technologies, Inc. Configurable virtual machines
US10248453B2 (en) 2012-10-23 2019-04-02 Red Hat Israel, Ltd. Client live migration for a virtual machine
US9536108B2 (en) 2012-10-23 2017-01-03 International Business Machines Corporation Method and apparatus for generating privacy profiles
US20140115606A1 (en) * 2012-10-24 2014-04-24 OpenMobile World Wide, Inc. Multi-platform mobile and other computing devices and methods
US9032400B1 (en) * 2012-10-25 2015-05-12 Amazon Technologies, Inc. Opportunistic initiation of potentially invasive actions
US9354907B1 (en) 2012-10-26 2016-05-31 Veritas Technologies Llc Optimized restore of virtual machine and virtual disk data
US9317721B2 (en) * 2012-10-31 2016-04-19 Google Inc. Privacy aware camera and device status indicator system
US9374351B1 (en) 2012-11-02 2016-06-21 Wyse Technology L.L.C. Virtual desktop accelerator support for network gateway
US9069766B2 (en) 2012-11-02 2015-06-30 Microsoft Technology Licensing, Llc Content-based isolation for computing device security
US9992185B1 (en) * 2012-11-02 2018-06-05 Wyse Technology L.L.C. Virtual desktop accelerator support for network gateway
US9485233B1 (en) 2012-11-02 2016-11-01 Wyse Technology L.L.C. Virtual desktop accelerator support for network gateway
US9058219B2 (en) 2012-11-02 2015-06-16 Amazon Technologies, Inc. Custom resources in a resource stack
US10051019B1 (en) 2012-11-09 2018-08-14 Wells Fargo Bank, N.A. System and method for session management
US8782809B2 (en) * 2012-11-09 2014-07-15 International Business Machines Corporation Limiting information leakage and piracy due to virtual machine cloning
US9307059B2 (en) * 2012-11-09 2016-04-05 Sap Se Retry mechanism for data loading from on-premise datasource to cloud
US9535720B2 (en) 2012-11-13 2017-01-03 International Business Machines Corporation System for capturing and replaying screen gestures
GB2507816A (en) * 2012-11-13 2014-05-14 Ibm Calculating timeout for remote task execution from network delays and processing duration on local application/hardware replica
CN103812913B (zh) * 2012-11-14 2017-11-10 新华三技术有限公司 一种基于虚拟网络计算的远程访问方法和装置
US10474735B2 (en) 2012-11-19 2019-11-12 Acoustic, L.P. Dynamic zooming of content with overlays
US9191336B2 (en) * 2012-11-20 2015-11-17 The Directv Group, Inc. Method and apparatus for data traffic distribution among independent processing centers
WO2014081867A2 (en) 2012-11-20 2014-05-30 Ikonopedia, Inc. Secure data transmission
US10447818B2 (en) * 2012-11-21 2019-10-15 Qatar Foundation Methods, remote access systems, client computing devices, and server devices for use in remote access systems
US9189643B2 (en) 2012-11-26 2015-11-17 International Business Machines Corporation Client based resource isolation with domains
CN102968331B (zh) * 2012-11-27 2016-08-10 中标软件有限公司 一种虚拟机管理系统及其文件访问方法
US9426184B2 (en) * 2012-11-27 2016-08-23 Qualcomm Incorporated Dockee-centric wireless docking
CN103853949A (zh) * 2012-12-04 2014-06-11 中山大学深圳研究院 一个异构的计算机环境上进行用户身份验证的方法
WO2014086030A1 (zh) 2012-12-07 2014-06-12 华为技术有限公司 多媒体重定向方法以及多媒体服务器以及计算机系统
US9189285B2 (en) 2012-12-14 2015-11-17 Microsoft Technology Licensing, Llc Scalable services deployment
FR3000339A1 (fr) * 2012-12-20 2014-06-27 France Telecom Procede de traitement de requetes d'acces a des services de virtualisation informatique, passerelle de virtualisation et navigateur web
US9141400B2 (en) * 2012-12-21 2015-09-22 Unisys Corporation Technique for deploying operating systems in a virtualized environment
CN107402891B (zh) * 2012-12-25 2020-12-22 华为技术有限公司 确定共享虚拟内存页面管理模式的方法和相关设备
US8973146B2 (en) 2012-12-27 2015-03-03 Mcafee, Inc. Herd based scan avoidance system in a network environment
WO2014103308A1 (ja) * 2012-12-28 2014-07-03 パナソニック株式会社 制御方法
CN103916412B (zh) * 2012-12-31 2018-04-06 深圳市傲冠软件股份有限公司 一种it设备远程运维的方法和系统
CA2838356A1 (en) * 2012-12-31 2014-06-30 Aastra Technologies Limited Remote vpn provisioning of an endpoint
EP2941714B1 (en) * 2013-01-02 2020-05-13 Cisco Technology, Inc. Method and apparatus for identifying computing resource trajectory
US10284668B2 (en) * 2013-01-09 2019-05-07 Red Hat Israel, Ltd. Managing a logical client for an application
US8904388B2 (en) * 2013-01-10 2014-12-02 Vce Company, Llc Scripting language executor service for applications
US9110757B2 (en) * 2013-01-14 2015-08-18 Vmware, Inc. Techniques for performing virtual machine software upgrades using virtual disk swapping
WO2014112981A1 (en) * 2013-01-15 2014-07-24 Empire Technology Development, Llc Function-targeted virtual machine switching
JP5956613B2 (ja) * 2013-01-17 2016-07-27 株式会社日立製作所 計算機システム、及びプログラム
US20140208194A1 (en) * 2013-01-22 2014-07-24 Michael O'Leary Device and system for securely executing electronic documents
US9128777B2 (en) * 2013-01-28 2015-09-08 Google Inc. Operating and maintaining a cluster of machines
US9332019B2 (en) * 2013-01-30 2016-05-03 International Business Machines Corporation Establishment of a trust index to enable connections from unknown devices
WO2014120227A1 (en) * 2013-01-31 2014-08-07 Hewlett-Packard Development Company, L.P. Remotely executing operations of an application using a schema that provides for executable scripts in a nodal hierarchy
US9298502B2 (en) 2013-01-31 2016-03-29 Empire Technology Development Llc Pausing virtual machines using API signaling
US9578664B1 (en) 2013-02-07 2017-02-21 Sprint Communications Company L.P. Trusted signaling in 3GPP interfaces in a network function virtualization wireless communication system
US9161227B1 (en) 2013-02-07 2015-10-13 Sprint Communications Company L.P. Trusted signaling in long term evolution (LTE) 4G wireless communication
US9336013B2 (en) 2013-02-08 2016-05-10 Automatic Data Capture Technologies Group, Inc. Systems and methods for metadata-driven command processor and structured program transfer protocol
US9495401B2 (en) 2013-02-08 2016-11-15 Douglas T. Migliori Database-driven entity framework for internet of things
US11940999B2 (en) 2013-02-08 2024-03-26 Douglas T. Migliori Metadata-driven computing system
US8997080B2 (en) 2013-02-11 2015-03-31 Citrix Systems, Inc. System updates with personal virtual disks
CN104981816B (zh) * 2013-02-19 2018-02-13 索尼电脑娱乐公司 信息处理系统
US9092767B1 (en) 2013-03-04 2015-07-28 Google Inc. Selecting a preferred payment instrument
US9104840B1 (en) 2013-03-05 2015-08-11 Sprint Communications Company L.P. Trusted security zone watermark
US9069608B2 (en) * 2013-03-06 2015-06-30 Vmware, Inc. Method and system for providing a roaming remote desktop
US9521188B1 (en) * 2013-03-07 2016-12-13 Amazon Technologies, Inc. Scheduled execution of instances
DE102014103016A1 (de) * 2013-03-07 2014-09-11 Aristotle International, Inc. Globales Identifizierungs-(ID-) und Altersverifizierungssystem und -verfahren
US9251115B2 (en) * 2013-03-07 2016-02-02 Citrix Systems, Inc. Dynamic configuration in cloud computing environments
US9002982B2 (en) * 2013-03-11 2015-04-07 Amazon Technologies, Inc. Automated desktop placement
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
US10142406B2 (en) * 2013-03-11 2018-11-27 Amazon Technologies, Inc. Automated data center selection
US10325105B2 (en) * 2013-03-12 2019-06-18 Green Hills Software Llc Single-chip virtualizing and obfuscating storage system for portable computing devices
US9292713B2 (en) * 2013-03-13 2016-03-22 Intel Corporation Tiered access to on chip features
US8881977B1 (en) 2013-03-13 2014-11-11 Sprint Communications Company L.P. Point-of-sale and automated teller machine transactions using trusted mobile access device
US9886290B2 (en) * 2013-03-13 2018-02-06 Microsoft Technology Licensing, Llc Component loading based on user preferences
US9565202B1 (en) * 2013-03-13 2017-02-07 Fireeye, Inc. System and method for detecting exfiltration content
US9806933B2 (en) 2013-03-13 2017-10-31 Microsoft Technology Licensing, Llc Component loading based on user interactions
US9613208B1 (en) 2013-03-13 2017-04-04 Sprint Communications Company L.P. Trusted security zone enhanced with trusted hardware drivers
US8677359B1 (en) 2013-03-14 2014-03-18 Joyent, Inc. Compute-centric object stores and methods of use
WO2014159862A1 (en) 2013-03-14 2014-10-02 Headwater Partners I Llc Automated credential porting for mobile devices
US9049186B1 (en) 2013-03-14 2015-06-02 Sprint Communications Company L.P. Trusted security zone re-provisioning and re-use capability for refurbished mobile devices
US8826279B1 (en) 2013-03-14 2014-09-02 Joyent, Inc. Instruction set architecture for compute-based object stores
US8881279B2 (en) 2013-03-14 2014-11-04 Joyent, Inc. Systems and methods for zone-based intrusion detection
US8943284B2 (en) 2013-03-14 2015-01-27 Joyent, Inc. Systems and methods for integrating compute resources in a storage area network
US9104456B2 (en) 2013-03-14 2015-08-11 Joyent, Inc. Zone management of compute-centric object stores
US9049013B2 (en) 2013-03-14 2015-06-02 Sprint Communications Company L.P. Trusted security zone containers for the protection and confidentiality of trusted service manager data
US9191388B1 (en) 2013-03-15 2015-11-17 Sprint Communications Company L.P. Trusted security zone communication addressing on an electronic device
EP3910876A1 (en) 2013-03-15 2021-11-17 Assa Abloy Ab Method, system, and device for generating, storing, using, and validating nfc tags and data
US9092238B2 (en) 2013-03-15 2015-07-28 Joyent, Inc. Versioning schemes for compute-centric object stores
US8984592B1 (en) 2013-03-15 2015-03-17 Sprint Communications Company L.P. Enablement of a trusted security zone authentication for remote mobile device management systems and methods
US9135324B1 (en) * 2013-03-15 2015-09-15 Ca, Inc. System and method for analysis of process data and discovery of situational and complex applications
US8775485B1 (en) 2013-03-15 2014-07-08 Joyent, Inc. Object store management operations within compute-centric object stores
US8793688B1 (en) * 2013-03-15 2014-07-29 Joyent, Inc. Systems and methods for double hulled virtualization operations
US9665474B2 (en) 2013-03-15 2017-05-30 Microsoft Technology Licensing, Llc Relationships derived from trace data
US9374363B1 (en) 2013-03-15 2016-06-21 Sprint Communications Company L.P. Restricting access of a portable communication device to confidential data or applications via a remote network based on event triggers generated by the portable communication device
US9021585B1 (en) 2013-03-15 2015-04-28 Sprint Communications Company L.P. JTAG fuse vulnerability determination and protection using a trusted execution environment
US20140282103A1 (en) 2013-03-16 2014-09-18 Jerry Alan Crandall Data sharing
US9516127B2 (en) 2013-03-25 2016-12-06 Seven Networks, Llc Intelligent alarm manipulator and resource tracker
US8813179B1 (en) 2013-03-29 2014-08-19 Citrix Systems, Inc. Providing mobile device management functionalities
US8910264B2 (en) 2013-03-29 2014-12-09 Citrix Systems, Inc. Providing mobile device management functionalities
US9985850B2 (en) 2013-03-29 2018-05-29 Citrix Systems, Inc. Providing mobile device management functionalities
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
US9413736B2 (en) 2013-03-29 2016-08-09 Citrix Systems, Inc. Providing an enterprise application store
US9455886B2 (en) 2013-03-29 2016-09-27 Citrix Systems, Inc. Providing mobile device management functionalities
US9171243B1 (en) 2013-04-04 2015-10-27 Sprint Communications Company L.P. System for managing a digest of biographical information stored in a radio frequency identity chip coupled to a mobile communication device
US9324016B1 (en) 2013-04-04 2016-04-26 Sprint Communications Company L.P. Digest of biographical information for an electronic device with static and dynamic portions
US9454723B1 (en) 2013-04-04 2016-09-27 Sprint Communications Company L.P. Radio frequency identity (RFID) chip electrically and communicatively coupled to motherboard of mobile communication device
US9298930B2 (en) * 2013-04-08 2016-03-29 Blackberry Limited Generating a data audit trail for cross perimeter data transfer
US9838869B1 (en) 2013-04-10 2017-12-05 Sprint Communications Company L.P. Delivering digital content to a mobile device via a digital rights clearing house
US10306467B2 (en) * 2013-04-11 2019-05-28 Uniloc 2017 Llc Shared state among multiple devices
US9443088B1 (en) 2013-04-15 2016-09-13 Sprint Communications Company L.P. Protection for multimedia files pre-downloaded to a mobile device
JP6256904B2 (ja) * 2013-04-18 2018-01-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 処理の要求を振り分ける装置及び方法
US9729465B2 (en) * 2013-05-01 2017-08-08 Red Hat, Inc. Policy based application elasticity across heterogeneous computing infrastructure
KR101977441B1 (ko) 2013-05-08 2019-05-10 콘비다 와이어리스, 엘엘씨 가상화 브로커 및 콘텍스트 정보를 이용한 자원들의 가상화를 위한 방법 및 장치
US9729515B1 (en) * 2013-05-08 2017-08-08 Ca, Inc. System and method for managing secure communications for a virtual machine infrastructure
US9292323B2 (en) 2013-05-17 2016-03-22 Citrix Systems, Inc. Context aware virtual desktop
US9069952B1 (en) 2013-05-20 2015-06-30 Sprint Communications Company L.P. Method for enabling hardware assisted operating system region for safe execution of untrusted code using trusted transitional memory
US9292328B2 (en) 2013-05-24 2016-03-22 Bromium, Inc. Management of supervisor mode execution protection (SMEP) by a hypervisor
US9547619B2 (en) 2013-05-24 2017-01-17 Qualcomm Incorporated Wireless docking
US9461820B1 (en) * 2013-06-05 2016-10-04 Teradici Corporation Method and apparatus for providing a conditional single sign on
US9560519B1 (en) 2013-06-06 2017-01-31 Sprint Communications Company L.P. Mobile communication device profound identity brokering framework
US9489227B2 (en) * 2013-06-10 2016-11-08 Electronics And Telecommunications Research Institute Apparatus and method for virtual desktop service
KR102102169B1 (ko) * 2013-06-10 2020-05-29 한국전자통신연구원 가상 데스크탑 서비스를 위한 장치 및 가상 데스크탑 서비스 방법
US10152463B1 (en) 2013-06-13 2018-12-11 Amazon Technologies, Inc. System for profiling page browsing interactions
US9578137B1 (en) 2013-06-13 2017-02-21 Amazon Technologies, Inc. System for enhancing script execution performance
US9313188B2 (en) 2013-06-14 2016-04-12 Microsoft Technology Licensing, Llc Providing domain-joined remote applications in a cloud environment
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
US9398121B1 (en) * 2013-06-24 2016-07-19 Amazon Technologies, Inc. Selecting among virtual networking protocols
JP6303300B2 (ja) * 2013-06-25 2018-04-04 富士通株式会社 制御依頼方法、情報処理装置、システム、およびプログラム
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
US9961052B2 (en) * 2013-06-28 2018-05-01 Extreme Networks, Inc. Virtualized host ID key sharing
EP3017580B1 (en) 2013-07-01 2020-06-24 Assa Abloy AB Signatures for near field communications
US9990189B2 (en) 2013-07-03 2018-06-05 International Business Machines Corporation Method to optimize provisioning time with dynamically generated virtual disk contents
KR101715578B1 (ko) 2013-07-09 2017-03-13 화중과기대 범용 직렬 버스 (usb) 디바이스 액세스
US9183606B1 (en) 2013-07-10 2015-11-10 Sprint Communications Company L.P. Trusted processing location within a graphics processing unit
US9973965B2 (en) * 2013-07-12 2018-05-15 Seven Networks, Llc Transport protocol layer optimization for managing signaling and power consumption
US10664548B2 (en) 2013-07-12 2020-05-26 Trading Technologies International, Inc. Tailored messaging
US9354908B2 (en) 2013-07-17 2016-05-31 Veritas Technologies, LLC Instantly restoring virtual machines by providing read/write access to virtual disk before the virtual disk is completely restored
EP3025483B1 (en) * 2013-07-25 2022-09-21 Convida Wireless, LLC End-to-end m2m service layer sessions
GB2516833A (en) * 2013-07-31 2015-02-11 Ibm Running software application with dynamic action delegation
US9710386B1 (en) 2013-08-07 2017-07-18 Veritas Technologies Systems and methods for prefetching subsequent data segments in response to determining that requests for data originate from a sequential-access computing job
US9208339B1 (en) 2013-08-12 2015-12-08 Sprint Communications Company L.P. Verifying Applications in Virtual Environments Using a Trusted Security Zone
US9092248B1 (en) 2013-08-21 2015-07-28 Symantec Corporation Systems and methods for restoring distributed applications within virtual data centers
US10289742B2 (en) 2013-08-22 2019-05-14 Sensoriant, Inc. Method and system for addressing the problem of discovering relevant services and applications that are available over the internet or other communications network
US10771936B2 (en) 2013-08-22 2020-09-08 Sensoriant, Inc. System and method of creating abstractions of real and virtual environments and objects subject to latency constraints
US10698930B2 (en) 2013-08-22 2020-06-30 Sensoriant, Inc. Assignment of application (apps) and relevant services to specific locations, dates and times
US9215227B2 (en) * 2013-08-23 2015-12-15 Unisys Corporation Systems and methods for network communications
US9241044B2 (en) 2013-08-28 2016-01-19 Hola Networks, Ltd. System and method for improving internet communication by using intermediate nodes
CN103457945A (zh) * 2013-08-28 2013-12-18 中国科学院信息工程研究所 入侵检测方法及系统
US9098303B2 (en) * 2013-09-04 2015-08-04 Red Hat, Inc. Portable computing device providing operating system for host devices
US8682999B1 (en) * 2013-09-05 2014-03-25 NCS Technologies, Inc. Systems and methods providing a mobile zero client
US9438615B2 (en) 2013-09-09 2016-09-06 BitSight Technologies, Inc. Security risk management
US11126476B2 (en) 2013-09-10 2021-09-21 Vmware, Inc. Selectively filtering applications from an application volume
US9633210B2 (en) 2013-09-13 2017-04-25 Microsoft Technology Licensing, Llc Keying infrastructure
GB2534715B (en) * 2013-09-18 2021-05-12 Toshiba Res Europe Limited Method and system for establishing a network connection
GB2518367B (en) 2013-09-18 2020-07-22 Ibm Authorized remote access to an operating system hosted by a virtual machine
US9118650B1 (en) * 2013-09-23 2015-08-25 Amazon Technologies, Inc. Persistent connections for email web applications
US10115174B2 (en) * 2013-09-24 2018-10-30 2236008 Ontario Inc. System and method for forwarding an application user interface
US10089458B2 (en) * 2013-09-26 2018-10-02 Citrix Systems, Inc. Separate, disposable execution environment for accessing unverified content
US10761895B2 (en) 2013-09-26 2020-09-01 Vmware, Inc. Selective allocation of physical computing resources amongst virtual machines based on user attribute values contained in user profiles
WO2015047433A1 (en) * 2013-09-27 2015-04-02 Mcafee, Inc. Task-context architecture for efficient data sharing
CN104516703B (zh) * 2013-09-30 2018-02-16 中国电信股份有限公司 在安卓终端上实现虚拟桌面屏幕分辨率自动适配的方法和系统
WO2015053924A1 (en) * 2013-10-10 2015-04-16 Jvl Ventures, Llc Systems, methods, and computer program products for storing and managing program data
US9378391B2 (en) * 2013-10-11 2016-06-28 Centrify Corporation Method and apparatus for creating switchable desktops with separate authorizations
KR20150042643A (ko) * 2013-10-11 2015-04-21 삼성전자주식회사 Vdi 환경에서 가상 서버와 접속을 위한 단말 장치 및 방법
CN103501345B (zh) * 2013-10-12 2016-11-09 成都阜特科技股份有限公司 一种远程集中控制系统的控制方法
CN104579724A (zh) * 2013-10-16 2015-04-29 宇宙互联有限公司 安装控制系统及方法
KR102102168B1 (ko) * 2013-10-21 2020-04-21 한국전자통신연구원 가상 데스크탑 서비스 장치 및 방법
WO2015060831A1 (en) * 2013-10-22 2015-04-30 Citrix Systems Inc. Method and system for displaying graphics for a local virtual machine
US10127062B2 (en) 2013-10-22 2018-11-13 Citrix Systems, Inc. Displaying graphics for local virtual machine by allocating textual buffer
WO2015060857A1 (en) 2013-10-24 2015-04-30 Mcafee, Inc. Agent assisted malicious application blocking in a network environment
CN104580314A (zh) * 2013-10-24 2015-04-29 中国移动通信集团广东有限公司 一种云计算系统数据隔离的方法、装置及终端
US9628550B1 (en) * 2013-10-24 2017-04-18 Ca, Inc. Lightweight software management shell
US9185626B1 (en) 2013-10-29 2015-11-10 Sprint Communications Company L.P. Secure peer-to-peer call forking facilitated by trusted 3rd party voice server provisioning
US9191522B1 (en) 2013-11-08 2015-11-17 Sprint Communications Company L.P. Billing varied service based on tier
US9161325B1 (en) 2013-11-20 2015-10-13 Sprint Communications Company L.P. Subscriber identity module virtualization
CN103618780B (zh) * 2013-11-22 2017-10-10 华为技术有限公司 一种实现多虚拟机挂载外设部件的方法及装置
US9532103B2 (en) * 2013-12-16 2016-12-27 Vmware, Inc. Multi-user support for set top boxes and game consoles
CN103677959B (zh) * 2013-12-16 2017-05-31 国家计算机网络与信息安全管理中心 一种基于组播的虚拟机集群迁移方法及系统
JP6310689B2 (ja) * 2013-12-16 2018-04-11 株式会社日立製作所 管理サーバおよび管理サーバの制御方法
CN104717152B (zh) * 2013-12-17 2019-07-19 深圳市中兴微电子技术有限公司 一种实现接口缓存动态分配的方法和装置
US9671945B2 (en) * 2013-12-17 2017-06-06 American Megatrends, Inc. Techniques of launching virtual machine from thin client
CN104735023A (zh) * 2013-12-18 2015-06-24 国家计算机网络与信息安全管理中心 一种高性能的ssl代理装置及其方法
CN103701791B (zh) * 2013-12-20 2017-09-01 中电长城网际系统应用有限公司 一种基于虚拟桌面系统的虚拟桌面的操作方法
US10225352B2 (en) * 2013-12-20 2019-03-05 Sony Corporation Work sessions
US10599565B2 (en) 2013-12-24 2020-03-24 Hewlett-Packard Development Company, L.P. Hypervisor managing memory addressed above four gigabytes
US10742520B2 (en) * 2013-12-31 2020-08-11 Citrix Systems, Inc. Providing mobile device management functionalities
US9118655B1 (en) 2014-01-24 2015-08-25 Sprint Communications Company L.P. Trusted display and transmission of digital ticket documentation
KR101462829B1 (ko) * 2014-01-29 2014-11-21 (주) 퓨전데이타 가상화 정보 가공장치 및 방법
US10430614B2 (en) 2014-01-31 2019-10-01 Bromium, Inc. Automatic initiation of execution analysis
US9858572B2 (en) 2014-02-06 2018-01-02 Google Llc Dynamic alteration of track data
JP6412943B2 (ja) * 2014-02-07 2018-10-24 オラクル・インターナショナル・コーポレイション クラウドサービスカスタム実行環境
US9973472B2 (en) 2015-04-02 2018-05-15 Varmour Networks, Inc. Methods and systems for orchestrating physical and virtual switches to enforce security boundaries
US9560081B1 (en) 2016-06-24 2017-01-31 Varmour Networks, Inc. Data network microsegmentation
US10264025B2 (en) 2016-06-24 2019-04-16 Varmour Networks, Inc. Security policy generation for virtualization, bare-metal server, and cloud computing environments
US10545917B2 (en) 2014-02-19 2020-01-28 Snowflake Inc. Multi-range and runtime pruning
US10108686B2 (en) 2014-02-19 2018-10-23 Snowflake Computing Inc. Implementation of semi-structured data as a first-class database element
EP3108632B1 (en) * 2014-02-21 2018-01-10 Dell Products L.P. Generic transcoding service
WO2015130349A1 (en) 2014-02-27 2015-09-03 OpenMobile World Wide, Inc. In-process trapping for service substitution in hosted applicaitons executing on mobile devices with multi operating system environment
US9367673B2 (en) * 2014-03-03 2016-06-14 Ca, Inc. Privileged shared account password sanitation
US9800650B2 (en) * 2014-03-10 2017-10-24 Vmware, Inc. Resource management for multiple desktop configurations for supporting virtual desktops of different user classes
US10242185B1 (en) * 2014-03-21 2019-03-26 Fireeye, Inc. Dynamic guest image creation and rollback
US9350791B2 (en) 2014-03-21 2016-05-24 Ptc Inc. System and method of injecting states into message routing in a distributed computing environment
US20170134239A1 (en) * 2014-03-21 2017-05-11 Ptc Inc. Systems and methods for routing messages in distributed computing environments
US9226145B1 (en) 2014-03-28 2015-12-29 Sprint Communications Company L.P. Verification of mobile device integrity during activation
US10057325B2 (en) * 2014-03-31 2018-08-21 Nuvestack, Inc. Remote desktop infrastructure
US9940180B2 (en) * 2014-03-31 2018-04-10 Nicira, Inc. Using loopback interfaces of multiple TCP/IP stacks for communication between processes
US9832112B2 (en) * 2014-03-31 2017-11-28 Nicira, Inc. Using different TCP/IP stacks for different hypervisor services
US9729679B2 (en) 2014-03-31 2017-08-08 Nicira, Inc. Using different TCP/IP stacks for different tenants on a multi-tenant host
US9411975B2 (en) 2014-03-31 2016-08-09 Intel Corporation Methods and apparatus to securely share data
CA2945482A1 (en) * 2014-04-11 2015-10-15 Douglas T. MIGLIORI Database-driven entity framework for internet of things
US11416459B2 (en) 2014-04-11 2022-08-16 Douglas T. Migliori No-code, event-driven edge computing platform
US10459892B2 (en) 2014-04-23 2019-10-29 Qumulo, Inc. Filesystem hierarchical aggregate metrics
US9696983B2 (en) 2014-04-25 2017-07-04 Vmware, Inc. Dynamic updating of operating systems and applications using volume attachment
US9830593B2 (en) 2014-04-26 2017-11-28 Ss8 Networks, Inc. Cryptographic currency user directory data and enhanced peer-verification ledger synthesis through multi-modal cryptographic key-address mapping
US9483310B2 (en) * 2014-04-29 2016-11-01 Bluedata Software, Inc. Associating cache memory with a work process
US9602505B1 (en) * 2014-04-30 2017-03-21 Symantec Corporation Dynamic access control
US9223966B1 (en) 2014-05-04 2015-12-29 Symantec Corporation Systems and methods for replicating computing system environments
US9749333B2 (en) 2014-05-05 2017-08-29 Oliver Lloyd Pty Ltd Shared access appliance, device and process
US9906493B1 (en) 2014-05-07 2018-02-27 Skyport Systems, Inc. Method and system for verifying the integrity of computing devices
WO2015172107A1 (en) 2014-05-09 2015-11-12 Nutanix, Inc. Mechanism for providing external access to a secured networked virtualization environment
US10216531B2 (en) * 2014-05-12 2019-02-26 Netapp, Inc. Techniques for virtual machine shifting
US9841991B2 (en) 2014-05-12 2017-12-12 Netapp, Inc. Techniques for virtual machine migration
US10270819B2 (en) 2014-05-14 2019-04-23 Microsoft Technology Licensing, Llc System and method providing collaborative interaction
US9552473B2 (en) 2014-05-14 2017-01-24 Microsoft Technology Licensing, Llc Claiming data from a virtual whiteboard
US20150334138A1 (en) * 2014-05-14 2015-11-19 Microsoft Corporation Transferring content between graphical user interfaces
US9351098B2 (en) * 2014-05-19 2016-05-24 Lenovo (Singapore) Pte. Ltd. Providing access to and enabling functionality of first device based on communication with second device
CN104008320A (zh) * 2014-05-19 2014-08-27 惠州Tcl移动通信有限公司 基于人脸识别的使用权限和用户模式控制方法及系统
GB2530472A (en) * 2014-05-21 2016-03-30 Euronet Usa Llc Financial switching engine
US9467329B2 (en) * 2014-05-29 2016-10-11 Blackberry Limited Coordinating activity views across operating system domains
US9578131B2 (en) * 2014-06-12 2017-02-21 Empire Technology Development Llc Virtual machine migration based on communication from nodes
US9565227B1 (en) * 2014-06-16 2017-02-07 Teradici Corporation Composition control method for remote application delivery
US9338092B1 (en) 2014-06-20 2016-05-10 Amazon Technologies, Inc. Overlay networks for application groups
US10581737B1 (en) * 2014-06-20 2020-03-03 Amazon Technologies, Inc. Acceleration of data routing in an application group
US9830448B2 (en) * 2014-06-23 2017-11-28 Waratek Limited Enhanced security for java virtual machines
US9262200B2 (en) * 2014-06-25 2016-02-16 Independenceit, Inc. Methods and systems for provisioning a virtual resource in a mixed-use server
CN105338016B (zh) * 2014-06-27 2019-08-23 国际商业机器公司 数据高速缓存方法和装置以及资源请求响应方法和装置
EP3160092B1 (en) * 2014-06-28 2019-02-27 Huawei Technologies Co., Ltd. Method and device for network resource balancing
US9680873B1 (en) 2014-06-30 2017-06-13 Bromium, Inc. Trusted network detection
US11283866B2 (en) * 2014-07-07 2022-03-22 Citrix Systems, Inc. Providing remote access to applications through interface hooks
US11310312B2 (en) 2014-07-07 2022-04-19 Citrix Systems, Inc. Peer to peer remote application discovery
US9961059B2 (en) 2014-07-10 2018-05-01 Red Hat Israel, Ltd. Authenticator plugin interface
WO2016009245A1 (en) * 2014-07-15 2016-01-21 Assa Abloy Ab Cloud card application platform
US9729583B1 (en) 2016-06-10 2017-08-08 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US9230085B1 (en) 2014-07-29 2016-01-05 Sprint Communications Company L.P. Network based temporary trust extension to a remote or mobile device enabled via specialized cloud services
US10474485B2 (en) * 2014-08-07 2019-11-12 Vmware, Inc. Individualizing virtual hardware configurations of deployed desktop virtual machines using custom resource templates
US20160048309A1 (en) * 2014-08-12 2016-02-18 I/O Interconnect Inc. Method for automatically changing display version of website
US10152343B2 (en) 2014-08-13 2018-12-11 Hitachi, Ltd. Method and apparatus for managing IT infrastructure in cloud environments by migrating pairs of virtual machines
JP6217029B2 (ja) * 2014-08-19 2017-10-25 村田機械株式会社 無線通信システム、及び、無線基地局
US10824440B2 (en) * 2014-08-22 2020-11-03 Sensoriant, Inc. Deriving personalized experiences of smart environments
US10311122B1 (en) 2014-08-22 2019-06-04 Bromium, Inc. On-demand unprotected mode access
US10628186B2 (en) * 2014-09-08 2020-04-21 Wirepath Home Systems, Llc Method for electronic device virtualization and management
JP6152228B2 (ja) * 2014-09-12 2017-06-21 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 電子制御ユニット、車載ネットワークシステム及び車両用通信方法
US10097513B2 (en) * 2014-09-14 2018-10-09 Microsoft Technology Licensing, Llc Trusted execution environment extensible computing device interface
US10693946B2 (en) * 2014-09-16 2020-06-23 Amazon Technologies, Inc. Instance backed mobile devices
CN105205088A (zh) * 2014-09-19 2015-12-30 钟声 一种海量数据处理服务器集群软件系统
US11455181B1 (en) * 2014-09-19 2022-09-27 Amazon Technologies, Inc. Cross-network connector appliances
US20160085765A1 (en) * 2014-09-22 2016-03-24 Amazon Technologies, Inc. Computing environment selection techniques
US9836339B1 (en) 2014-09-24 2017-12-05 Amazon Technologies, Inc. Application programming interface as a service
CN105451258B (zh) * 2014-09-26 2019-10-25 优视科技有限公司 一种测试处理方法及装置
US10257184B1 (en) 2014-09-29 2019-04-09 Amazon Technologies, Inc. Assigning policies for accessing multiple computing resource services
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9600312B2 (en) 2014-09-30 2017-03-21 Amazon Technologies, Inc. Threading as a service
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9146764B1 (en) 2014-09-30 2015-09-29 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US9715402B2 (en) 2014-09-30 2017-07-25 Amazon Technologies, Inc. Dynamic code deployment and versioning
US9678773B1 (en) 2014-09-30 2017-06-13 Amazon Technologies, Inc. Low latency computational capacity provisioning
US9830193B1 (en) * 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
RU2610266C2 (ru) * 2014-10-07 2017-02-08 Общество С Ограниченной Ответственностью "Яндекс" Способ и система предоставления доступа к файлу для веб-ресурса
US9621357B2 (en) * 2014-10-16 2017-04-11 Verato, Inc. System and method for providing consent management
IL235175A (en) 2014-10-19 2017-08-31 Frenkel Lior Secure desktop remote control
US10567476B2 (en) * 2014-10-30 2020-02-18 Amazon Technologies, Inc. Rule-based action triggering in a provider network
CN105592121B (zh) * 2014-10-31 2018-10-02 中国科学院声学研究所 一种rdp数据采集装置及方法
EP3215941A4 (en) * 2014-11-05 2018-04-25 NCS Technologies Inc. Zero client device with cached connections
CN104468550B (zh) * 2014-11-28 2018-10-19 华为技术有限公司 一种Windows桌面的用户登录方法、设备及系统
US9495193B2 (en) * 2014-12-05 2016-11-15 International Business Machines Corporation Monitoring hypervisor and provisioned instances of hosted virtual machines using monitoring templates
US9413626B2 (en) 2014-12-05 2016-08-09 Amazon Technologies, Inc. Automatic management of resource sizing
US10148528B2 (en) 2014-12-05 2018-12-04 Accenture Global Services Limited Cloud computing placement and provisioning architecture
CN107645407B (zh) * 2014-12-08 2021-02-12 华为技术有限公司 一种适配QoS的方法和装置
US9582309B2 (en) 2014-12-09 2017-02-28 Vmware, Inc. Allocating cost of disk usage to a linked clone virtual machine based on a parameter of usage
US9710296B2 (en) 2014-12-09 2017-07-18 Vmware, Inc. Allocating cost of disk usage to a linked clone virtual machine
US9754027B2 (en) * 2014-12-12 2017-09-05 International Business Machines Corporation Implementation of data protection policies in ETL landscapes
US10503920B2 (en) * 2014-12-15 2019-12-10 Vaultize Technologies Private Limited Methods and systems for management of data stored in discrete data containers
EP3234792B1 (en) 2014-12-15 2023-06-07 Royal Bank Of Canada Verification of data processes in a network of computing resources
US11165714B2 (en) 2014-12-15 2021-11-02 Royal Bank Of Canada Verification of data processes in a network of computing resources
US10348837B2 (en) * 2014-12-16 2019-07-09 Citrix Systems, Inc. Methods and systems for connecting devices to applications and desktops that are receiving maintenance
US9940456B2 (en) * 2014-12-16 2018-04-10 Intel Corporation Using trusted execution environments for security of code and data
US9721024B2 (en) * 2014-12-19 2017-08-01 Facebook, Inc. Searching for ideograms in an online social network
CN105791073B (zh) * 2014-12-23 2019-07-19 华为技术有限公司 一种虚拟化网络中业务部署的方法和装置
US9525707B2 (en) * 2014-12-23 2016-12-20 Mcafee, Inc. Incident response tool using a data exchange layer system
CN104486350B (zh) * 2014-12-24 2017-11-10 电子科技大学 一种基于用户行为的网络内容加速方法
US11075976B2 (en) * 2014-12-24 2021-07-27 Vmware, Inc. Remoting application user interfaces
JP6880549B2 (ja) * 2014-12-25 2021-06-02 株式会社リコー 情報処理システム、画像処理装置、情報処理方法、および情報処理プログラム
US10091111B2 (en) * 2014-12-31 2018-10-02 Vidscale Services, Inc. Methods and systems for an end-to-end solution to deliver content in a network
US10148727B2 (en) * 2014-12-31 2018-12-04 Vidscale Services, Inc. Methods and systems for an end-to-end solution to deliver content in a network
CA2973367A1 (en) 2015-01-07 2016-07-14 Countertack Inc. System and method for monitoring a computer system using machine interpretable code
US9779232B1 (en) 2015-01-14 2017-10-03 Sprint Communications Company L.P. Trusted code generation and verification to prevent fraud from maleficent external devices that capture data
US9087001B1 (en) * 2015-01-16 2015-07-21 Storagecraft Technology Corporation Virtualizing multiple networked machines using a predetermined network recovery policy
US11182713B2 (en) 2015-01-24 2021-11-23 Vmware, Inc. Methods and systems to optimize operating system license costs in a virtual data center
US9838868B1 (en) 2015-01-26 2017-12-05 Sprint Communications Company L.P. Mated universal serial bus (USB) wireless dongles configured with destination addresses
JP2016139273A (ja) * 2015-01-27 2016-08-04 富士通株式会社 連携システム、連携プログラムおよび連携方法
US10025932B2 (en) * 2015-01-30 2018-07-17 Microsoft Technology Licensing, Llc Portable security device
US9733967B2 (en) 2015-02-04 2017-08-15 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US9588790B1 (en) 2015-02-04 2017-03-07 Amazon Technologies, Inc. Stateful virtual compute system
US10891383B2 (en) 2015-02-11 2021-01-12 British Telecommunications Public Limited Company Validating computer resource usage
TWI552077B (zh) * 2015-02-12 2016-10-01 國立中央大學 虛擬機器即時轉移方法
US9954936B2 (en) * 2015-03-02 2018-04-24 International Business Machines Corporation Migrating legacy applications to a multi-tenant computing environment
US9516063B2 (en) * 2015-03-10 2016-12-06 Raytheon Company System, method, and computer-readable medium for performing automated security validation on a virtual machine
US9438634B1 (en) 2015-03-13 2016-09-06 Varmour Networks, Inc. Microsegmented networks that implement vulnerability scanning
US9609026B2 (en) * 2015-03-13 2017-03-28 Varmour Networks, Inc. Segmented networks that implement scanning
US9467476B1 (en) 2015-03-13 2016-10-11 Varmour Networks, Inc. Context aware microsegmentation
US10178070B2 (en) 2015-03-13 2019-01-08 Varmour Networks, Inc. Methods and systems for providing security to distributed microservices
US10193929B2 (en) 2015-03-13 2019-01-29 Varmour Networks, Inc. Methods and systems for improving analytics in distributed networks
CN104811473B (zh) * 2015-03-18 2018-03-02 华为技术有限公司 一种创建虚拟非易失性存储介质的方法、系统及管理系统
US9582298B2 (en) * 2015-03-20 2017-02-28 Amazon Technologies, Inc. Executing commands within virtual machine instances
US9380027B1 (en) 2015-03-30 2016-06-28 Varmour Networks, Inc. Conditional declarative policies
US10834065B1 (en) * 2015-03-31 2020-11-10 F5 Networks, Inc. Methods for SSL protected NTLM re-authentication and devices thereof
US9525697B2 (en) 2015-04-02 2016-12-20 Varmour Networks, Inc. Delivering security functions to distributed networks
US10581755B2 (en) 2015-04-03 2020-03-03 Nicira, Inc. Provisioning network services in a software defined data center
US9473945B1 (en) 2015-04-07 2016-10-18 Sprint Communications Company L.P. Infrastructure for secure short message transmission
US9930103B2 (en) * 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US20180113663A1 (en) * 2015-04-13 2018-04-26 Barco N.V. Browser based display system for displaying image data
US10320793B2 (en) * 2015-04-21 2019-06-11 Jail Education Solutions, Inc Device, system and method for providing incentives including technology use and technology-based work
EP3089080A1 (en) * 2015-04-27 2016-11-02 Universität Zürich Networks and hierarchical routing fabrics with heterogeneous memory structures for scalable event-driven computing systems
US10067490B2 (en) * 2015-05-08 2018-09-04 Ciambella Ltd. Method and apparatus for modifying behavior of code for a controller-based device
WO2016181423A1 (en) * 2015-05-11 2016-11-17 Nec Corporation Communication apparaus, system, method, and program
US11057446B2 (en) 2015-05-14 2021-07-06 Bright Data Ltd. System and method for streaming content from multiple servers
WO2016183795A1 (en) 2015-05-19 2016-11-24 Guangzhou Ucweb Computer Technology Co., Ltd. Method, apparatus for loading a resource in a web page on a device
US10082941B2 (en) * 2015-05-20 2018-09-25 Vmware, Inc. Optimizing window move actions for remoted applications
US20160342434A1 (en) * 2015-05-20 2016-11-24 Blackberry Limited Methods and systems for virtualization of portable electronic devices
US10560535B2 (en) * 2015-05-21 2020-02-11 Dell Products, Lp System and method for live migration of remote desktop session host sessions without data loss
WO2016197069A1 (en) 2015-06-05 2016-12-08 Nutanix, Inc. Architecture for managing i/o and storage for a virtualization environment using executable containers and virtual machines
US10671470B2 (en) * 2015-06-11 2020-06-02 Instana, Inc. Application performance management system with dynamic discovery and extension
US20160373405A1 (en) 2015-06-16 2016-12-22 Amazon Technologies, Inc. Managing dynamic ip address assignments
US9697046B2 (en) * 2015-06-19 2017-07-04 Vmware, Inc. Managing resource reservations in a highly parallel application
US9887978B2 (en) * 2015-06-23 2018-02-06 Veritas Technologies Llc System and method for centralized configuration and authentication
US9716710B2 (en) * 2015-06-26 2017-07-25 Intel Corporation Technologies for virtualized access to security services provided by a converged manageability and security engine
US10599662B2 (en) 2015-06-26 2020-03-24 Mcafee, Llc Query engine for remote endpoint information retrieval
US10382426B2 (en) * 2015-07-02 2019-08-13 Adobe Inc. Authentication context transfer for accessing computing resources via single sign-on with single use access tokens
US9723026B2 (en) 2015-07-09 2017-08-01 Cisco Technology, Inc. Managing network resource access using session context
WO2017008084A1 (en) 2015-07-09 2017-01-12 Sensoriant, Inc. Method and system for creating adaptive user interfaces using user provided and controlled data
US9875130B2 (en) 2015-07-13 2018-01-23 International Business Machines Corporation Customizing mirror virtual machine(s)
US9986040B2 (en) 2015-07-21 2018-05-29 Amadeus S.A.S. Communications management system with a separate peripherals server
US9843568B2 (en) * 2015-07-22 2017-12-12 Here Global B.V. Method and apparatus for generating an intelligent primary key facilitating faster object retrieval
US9853946B2 (en) * 2015-07-22 2017-12-26 Splunk Inc. Security compliance for cloud-based machine data acquisition and search system
US10803766B1 (en) 2015-07-28 2020-10-13 Architecture Technology Corporation Modular training of network-based training exercises
US10083624B2 (en) 2015-07-28 2018-09-25 Architecture Technology Corporation Real-time monitoring of network-based training exercises
US10956614B2 (en) 2015-07-31 2021-03-23 British Telecommunications Public Limited Company Expendable access control
US10853750B2 (en) 2015-07-31 2020-12-01 British Telecommunications Public Limited Company Controlled resource provisioning in distributed computing environments
US11347876B2 (en) 2015-07-31 2022-05-31 British Telecommunications Public Limited Company Access control
US10394586B2 (en) 2015-08-13 2019-08-27 Red Hat Israel, Ltd. Using capability indicators to indicate support for guest driven surprise removal of virtual PCI devices
CN105100109B (zh) * 2015-08-19 2019-05-24 华为技术有限公司 一种部署安全访问控制策略的方法及装置
US9853913B2 (en) 2015-08-25 2017-12-26 Accenture Global Services Limited Multi-cloud network proxy for control and normalization of tagging data
US10075537B2 (en) 2015-08-27 2018-09-11 Accenture Global Services Limited Action execution architecture for virtual machines
US11709799B2 (en) * 2015-08-29 2023-07-25 Vmware, Inc. Content or file based application virtualization using a cache
US10484459B2 (en) * 2015-09-03 2019-11-19 Nvidia Corporation Dynamically providing host input control for streaming applications
US9819679B1 (en) 2015-09-14 2017-11-14 Sprint Communications Company L.P. Hardware assisted provenance proof of named data networking associated to device data, addresses, services, and servers
US10296580B1 (en) 2015-09-18 2019-05-21 Amazon Technologies, Inc. Delivering parsed content items
US9977912B1 (en) * 2015-09-21 2018-05-22 EMC IP Holding Company LLC Processing backup data based on file system authentication
US10270671B2 (en) * 2015-09-22 2019-04-23 Microsoft Technology Licensing, Llc External process user interface isolation and monitoring
US9747123B2 (en) * 2015-09-25 2017-08-29 Intel Corporation Technologies for multi-level virtualization
US10127210B1 (en) 2015-09-25 2018-11-13 Amazon Technologies, Inc. Content rendering
US10601894B1 (en) 2015-09-28 2020-03-24 Amazon Technologies, Inc. Vector-based encoding for content rendering
US10241983B1 (en) 2015-09-28 2019-03-26 Amazon Technologies, Inc. Vector-based encoding for content rendering
US9928108B1 (en) 2015-09-29 2018-03-27 Amazon Technologies, Inc. Metaevent handling for on-demand code execution environments
US10042660B2 (en) 2015-09-30 2018-08-07 Amazon Technologies, Inc. Management of periodic requests for compute capacity
US10389795B2 (en) 2015-10-09 2019-08-20 Microsoft Technology Licensing, Llc Distributed extension execution in computing systems
US9762563B2 (en) * 2015-10-14 2017-09-12 FullArmor Corporation Resource access system and method
US10164971B2 (en) * 2015-10-22 2018-12-25 Oracle International Corporation End user initiated access server authenticity check
US20180309851A1 (en) * 2015-10-28 2018-10-25 Nec Corporation Server terminal device, client terminal device, thin client system, control method, and program recording medium
JP6724630B2 (ja) * 2015-10-30 2020-07-15 株式会社リコー 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム
WO2017073049A1 (en) * 2015-10-30 2017-05-04 Ricoh Company, Ltd. Information processing system, information processing apparatus, method for processing information, and information processing program
US10282719B1 (en) 2015-11-12 2019-05-07 Sprint Communications Company L.P. Secure and trusted device-based billing and charging process using privilege for network proxy authentication and audit
US9772872B2 (en) 2015-11-13 2017-09-26 International Business Machines Corporation Virtual machine collaborative scheduling
JP2016053975A (ja) * 2015-11-17 2016-04-14 株式会社応用電子 シンクライアントシステム
US10216529B1 (en) * 2015-11-19 2019-02-26 Virtuozzo International Gmbh Method and system for sharing driver pages
US9817992B1 (en) 2015-11-20 2017-11-14 Sprint Communications Company Lp. System and method for secure USIM wireless network access
US10097999B2 (en) 2015-12-07 2018-10-09 International Business Machines Corporation Satisfying virtual machine security criteria using remote sensor devices
CN105516010B (zh) * 2015-12-09 2019-02-05 联想(北京)有限公司 一种信息处理方法和电子设备
US10191758B2 (en) 2015-12-09 2019-01-29 Varmour Networks, Inc. Directing data traffic between intra-server virtual machines
US10341345B1 (en) 2015-12-15 2019-07-02 Amazon Technologies, Inc. Network browser configuration
US10348797B1 (en) * 2015-12-15 2019-07-09 Amazon Technologies, Inc. Network browser configuration
US10268814B1 (en) * 2015-12-16 2019-04-23 Western Digital Technologies, Inc. Providing secure access to digital storage devices
US10013267B1 (en) 2015-12-16 2018-07-03 Amazon Technologies, Inc. Pre-triggers for code execution environments
US9811434B1 (en) 2015-12-16 2017-11-07 Amazon Technologies, Inc. Predictive management of on-demand code execution
US10754701B1 (en) 2015-12-16 2020-08-25 Amazon Technologies, Inc. Executing user-defined code in response to determining that resources expected to be utilized comply with resource restrictions
US9864624B2 (en) 2015-12-21 2018-01-09 International Business Machines Corporation Software-defined computing system remote support
US10002026B1 (en) 2015-12-21 2018-06-19 Amazon Technologies, Inc. Acquisition and maintenance of dedicated, reserved, and variable compute capacity
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10037424B1 (en) * 2015-12-22 2018-07-31 Amazon Technologies, Inc. Isolated virtual environments for untrusted applications
US11265362B1 (en) * 2015-12-28 2022-03-01 Ted Tabacco Mobile application streaming platform
US10083054B2 (en) * 2015-12-28 2018-09-25 Amazon Technologies, Inc. Application-based computing resource management
US10404697B1 (en) 2015-12-28 2019-09-03 Symantec Corporation Systems and methods for using vehicles as information sources for knowledge-based authentication
CN106937282B (zh) * 2015-12-29 2020-12-18 北界创想(北京)软件有限公司 基于移动终端的vpn接入方法及系统
US10326733B2 (en) * 2015-12-30 2019-06-18 Symantec Corporation Systems and methods for facilitating single sign-on for multiple devices
US10069681B2 (en) * 2015-12-31 2018-09-04 Amazon Technologies, Inc. FPGA-enabled compute instances
US9396251B1 (en) * 2016-01-07 2016-07-19 International Business Machines Corporation Detecting and tracking virtual containers
US10075532B2 (en) * 2016-01-12 2018-09-11 Jens Schmidt Method and system for controlling remote session on computer systems
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
US10324745B2 (en) * 2016-02-01 2019-06-18 Airwatch, Llc Thin client with managed profile-specific remote virtual machines
US20170230419A1 (en) 2016-02-08 2017-08-10 Hytrust, Inc. Harmonized governance system for heterogeneous agile information technology environments
US11544049B2 (en) 2016-02-12 2023-01-03 Nutanix, Inc. Virtualized file server disaster recovery
IL250010B (en) 2016-02-14 2020-04-30 Waterfall Security Solutions Ltd Secure connection with protected facilities
JP6376154B2 (ja) 2016-02-24 2018-08-22 コニカミノルタ株式会社 画像処理システム、情報処理装置、画像処理装置及びプログラム
US10146664B2 (en) * 2016-02-25 2018-12-04 Dell Products, Lp Virtual test environment for webpages with automation features
US10116533B1 (en) 2016-02-26 2018-10-30 Skyport Systems, Inc. Method and system for logging events of computing devices
US10419283B1 (en) * 2016-03-01 2019-09-17 VCE IP Holding Company LLC Methods, systems, and computer readable mediums for template-based provisioning of distributed computing systems
JP6762368B2 (ja) 2016-03-04 2020-09-30 コンヴィーダ ワイヤレス, エルエルシー サービス層における要求処理
US9866459B1 (en) * 2016-03-04 2018-01-09 Amazon Technologies, Inc. Origin failover for live streaming
US10848808B2 (en) * 2016-03-08 2020-11-24 Eagle Eye Networks, Inc. Apparatus for sharing private video streams with public service agencies
EP3402160B1 (en) * 2016-03-15 2020-04-29 Huawei Technologies Co., Ltd. Service processing method and apparatus
US9990222B2 (en) * 2016-03-18 2018-06-05 Airwatch Llc Enforcing compliance rules against hypervisor and virtual machine using host management component
CN105786596B (zh) * 2016-03-21 2018-04-13 山东省计算中心(国家超级计算济南中心) 一种从64位Windows10操作系统的内存镜像文件中获取对象信息的方法
US10691547B1 (en) * 2016-03-21 2020-06-23 EMC IP Holding Company LLC Backup and recovery for end-user computing in virtual desktop environments
US10797977B2 (en) * 2016-03-22 2020-10-06 Citrix Systems, Inc. Robust suspension and resumption of desktop virtualization
US10564829B2 (en) 2016-03-25 2020-02-18 Vmware, Inc. Optimizing window resize actions for remoted applications
JP6871943B2 (ja) 2016-03-28 2021-05-19 オラクル・インターナショナル・コーポレイション モバイルクラウドサービスのための予め形成された命令
US10162672B2 (en) 2016-03-30 2018-12-25 Amazon Technologies, Inc. Generating data streams from pre-existing data sets
WO2017167548A1 (en) 2016-03-30 2017-10-05 British Telecommunications Public Limited Company Assured application services
WO2017167549A1 (en) 2016-03-30 2017-10-05 British Telecommunications Public Limited Company Untrusted code distribution
EP3437007B1 (en) 2016-03-30 2021-04-28 British Telecommunications public limited company Cryptocurrencies malware based detection
WO2017167544A1 (en) 2016-03-30 2017-10-05 British Telecommunications Public Limited Company Detecting computer security threats
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
WO2017167545A1 (en) 2016-03-30 2017-10-05 British Telecommunications Public Limited Company Network traffic threat identification
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
WO2017168408A1 (en) * 2016-03-31 2017-10-05 Cloud Of Things, Ltd System and method for remotely troubleshooting network connection problems
US11004125B2 (en) 2016-04-01 2021-05-11 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US11244367B2 (en) 2016-04-01 2022-02-08 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US20220164840A1 (en) 2016-04-01 2022-05-26 OneTrust, LLC Data processing systems and methods for integrating privacy information management systems with data loss prevention tools or other tools for privacy design
US10706447B2 (en) 2016-04-01 2020-07-07 OneTrust, LLC Data processing systems and communication systems and methods for the efficient generation of privacy risk assessments
US10523598B2 (en) 2016-04-04 2019-12-31 Futurewei Technologies, Inc. Multi-path virtual switching
US10200461B2 (en) * 2016-04-07 2019-02-05 Virtustream Ip Holding Company Llc Virtualized capacity management
WO2017178519A1 (en) * 2016-04-13 2017-10-19 Barco N.V. Display system for displaying image data
US9817592B1 (en) 2016-04-27 2017-11-14 Netapp, Inc. Using an intermediate virtual disk format for virtual disk conversion
EP3247084B1 (en) 2016-05-17 2019-02-27 Nolve Developments S.L. Server and method for providing secure access to web-based services
US10176008B2 (en) * 2016-05-19 2019-01-08 Airwatch, Llc Loading and running virtual working environments in a mobile device management system
US11218418B2 (en) 2016-05-20 2022-01-04 Nutanix, Inc. Scalable leadership election in a multi-processing computing environment
US10334075B2 (en) * 2016-05-23 2019-06-25 Citrix Systems, Inc. Virtual browser integration
US9948673B2 (en) 2016-05-26 2018-04-17 Visa International Service Association Reliable timestamp credential
US20180032465A1 (en) * 2016-05-27 2018-02-01 I/O Interconnect, Ltd. Method for providing graphical panel of docking device and docking device thereof
US10616311B2 (en) 2016-06-03 2020-04-07 At&T Intellectual Property I, L.P. Facilitating management of communications systems
US11675929B2 (en) 2016-06-10 2023-06-13 OneTrust, LLC Data processing consent sharing systems and related methods
US11222139B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems and methods for automatic discovery and assessment of mobile software development kits
US10503926B2 (en) 2016-06-10 2019-12-10 OneTrust, LLC Consent receipt management systems and related methods
US11100444B2 (en) 2016-06-10 2021-08-24 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US11520928B2 (en) 2016-06-10 2022-12-06 OneTrust, LLC Data processing systems for generating personal data receipts and related methods
US10796260B2 (en) 2016-06-10 2020-10-06 OneTrust, LLC Privacy management systems and methods
US10848523B2 (en) 2016-06-10 2020-11-24 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10769301B2 (en) 2016-06-10 2020-09-08 OneTrust, LLC Data processing systems for webform crawling to map processing activities and related methods
US11222309B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for generating and populating a data inventory
US10607028B2 (en) 2016-06-10 2020-03-31 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US11341447B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Privacy management systems and methods
US10885485B2 (en) 2016-06-10 2021-01-05 OneTrust, LLC Privacy management systems and methods
US10282700B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11586700B2 (en) 2016-06-10 2023-02-21 OneTrust, LLC Data processing systems and methods for automatically blocking the use of tracking tools
US10284604B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing and scanning systems for generating and populating a data inventory
US11328092B2 (en) 2016-06-10 2022-05-10 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US10944725B2 (en) 2016-06-10 2021-03-09 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US10997318B2 (en) 2016-06-10 2021-05-04 OneTrust, LLC Data processing systems for generating and populating a data inventory for processing data access requests
US11294939B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US10572686B2 (en) 2016-06-10 2020-02-25 OneTrust, LLC Consent receipt management systems and related methods
US10762236B2 (en) 2016-06-10 2020-09-01 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11481710B2 (en) 2016-06-10 2022-10-25 OneTrust, LLC Privacy management systems and methods
US11023842B2 (en) 2016-06-10 2021-06-01 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US10282559B2 (en) 2016-06-10 2019-05-07 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US11157600B2 (en) 2016-06-10 2021-10-26 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11416589B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11200341B2 (en) 2016-06-10 2021-12-14 OneTrust, LLC Consent receipt management systems and related methods
US10565236B1 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11227247B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems and methods for bundled privacy policies
US10706131B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems and methods for efficiently assessing the risk of privacy campaigns
US10873606B2 (en) 2016-06-10 2020-12-22 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11416590B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10242228B2 (en) 2016-06-10 2019-03-26 OneTrust, LLC Data processing systems for measuring privacy maturity within an organization
US11418492B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for using a data model to select a target data asset in a data migration
US11038925B2 (en) 2016-06-10 2021-06-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10798133B2 (en) 2016-06-10 2020-10-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11188862B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Privacy management systems and methods
US11295316B2 (en) 2016-06-10 2022-04-05 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US10776514B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Data processing systems for the identification and deletion of personal data in computer systems
US11025675B2 (en) 2016-06-10 2021-06-01 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US10726158B2 (en) 2016-06-10 2020-07-28 OneTrust, LLC Consent receipt management and automated process blocking systems and related methods
US11354435B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for data testing to confirm data deletion and related methods
US11651104B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Consent receipt management systems and related methods
US10853501B2 (en) 2016-06-10 2020-12-01 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US10949565B2 (en) 2016-06-10 2021-03-16 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11238390B2 (en) 2016-06-10 2022-02-01 OneTrust, LLC Privacy management systems and methods
US10713387B2 (en) 2016-06-10 2020-07-14 OneTrust, LLC Consent conversion optimization systems and related methods
US10740487B2 (en) 2016-06-10 2020-08-11 OneTrust, LLC Data processing systems and methods for populating and maintaining a centralized database of personal data
US11416109B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US10467432B2 (en) 2016-06-10 2019-11-05 OneTrust, LLC Data processing systems for use in automatically generating, populating, and submitting data subject access requests
US10318761B2 (en) 2016-06-10 2019-06-11 OneTrust, LLC Data processing systems and methods for auditing data request compliance
US11188615B2 (en) 2016-06-10 2021-11-30 OneTrust, LLC Data processing consent capture systems and related methods
US11301796B2 (en) 2016-06-10 2022-04-12 OneTrust, LLC Data processing systems and methods for customizing privacy training
US10706379B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems for automatic preparation for remediation and related methods
US11475136B2 (en) 2016-06-10 2022-10-18 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11438386B2 (en) 2016-06-10 2022-09-06 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11210420B2 (en) 2016-06-10 2021-12-28 OneTrust, LLC Data subject access request processing systems and related methods
US10169609B1 (en) 2016-06-10 2019-01-01 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10896394B2 (en) 2016-06-10 2021-01-19 OneTrust, LLC Privacy management systems and methods
US10708305B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Automated data processing systems and methods for automatically processing requests for privacy-related information
US10776518B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Consent receipt management systems and related methods
US11392720B2 (en) 2016-06-10 2022-07-19 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US11222142B2 (en) 2016-06-10 2022-01-11 OneTrust, LLC Data processing systems for validating authorization for personal data collection, storage, and processing
US10706176B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data-processing consent refresh, re-prompt, and recapture systems and related methods
US11636171B2 (en) 2016-06-10 2023-04-25 OneTrust, LLC Data processing user interface monitoring systems and related methods
US10846433B2 (en) 2016-06-10 2020-11-24 OneTrust, LLC Data processing consent management systems and related methods
US11354434B2 (en) 2016-06-10 2022-06-07 OneTrust, LLC Data processing systems for verification of consent and notice processing and related methods
US10997315B2 (en) 2016-06-10 2021-05-04 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10706174B2 (en) 2016-06-10 2020-07-07 OneTrust, LLC Data processing systems for prioritizing data subject access requests for fulfillment and related methods
US10678945B2 (en) 2016-06-10 2020-06-09 OneTrust, LLC Consent receipt management systems and related methods
US11146566B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10585968B2 (en) 2016-06-10 2020-03-10 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10949170B2 (en) * 2016-06-10 2021-03-16 OneTrust, LLC Data processing systems for integration of consumer feedback with data subject access requests and related methods
US11343284B2 (en) 2016-06-10 2022-05-24 OneTrust, LLC Data processing systems and methods for performing privacy assessments and monitoring of new versions of computer code for privacy compliance
US11228620B2 (en) 2016-06-10 2022-01-18 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US10496846B1 (en) 2016-06-10 2019-12-03 OneTrust, LLC Data processing and communications systems and methods for the efficient implementation of privacy by design
US10909488B2 (en) 2016-06-10 2021-02-02 OneTrust, LLC Data processing systems for assessing readiness for responding to privacy-related incidents
US11336697B2 (en) 2016-06-10 2022-05-17 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11151233B2 (en) 2016-06-10 2021-10-19 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11087260B2 (en) 2016-06-10 2021-08-10 OneTrust, LLC Data processing systems and methods for customizing privacy training
US10510031B2 (en) 2016-06-10 2019-12-17 OneTrust, LLC Data processing systems for identifying, assessing, and remediating data processing risks using data modeling techniques
US11727141B2 (en) 2016-06-10 2023-08-15 OneTrust, LLC Data processing systems and methods for synching privacy-related user consent across multiple computing devices
US11416798B2 (en) 2016-06-10 2022-08-16 OneTrust, LLC Data processing systems and methods for providing training in a vendor procurement process
US11366909B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11138299B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing and scanning systems for assessing vendor risk
US11544667B2 (en) 2016-06-10 2023-01-03 OneTrust, LLC Data processing systems for generating and populating a data inventory
US11134086B2 (en) 2016-06-10 2021-09-28 OneTrust, LLC Consent conversion optimization systems and related methods
US10803200B2 (en) 2016-06-10 2020-10-13 OneTrust, LLC Data processing systems for processing and managing data subject access in a distributed environment
US10839102B2 (en) 2016-06-10 2020-11-17 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US10606916B2 (en) 2016-06-10 2020-03-31 OneTrust, LLC Data processing user interface monitoring systems and related methods
US11074367B2 (en) 2016-06-10 2021-07-27 OneTrust, LLC Data processing systems for identity validation for consumer rights requests and related methods
US10416966B2 (en) 2016-06-10 2019-09-17 OneTrust, LLC Data processing systems for identity validation of data subject access requests and related methods
US11651106B2 (en) 2016-06-10 2023-05-16 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US10565397B1 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for fulfilling data subject access requests and related methods
US11461500B2 (en) 2016-06-10 2022-10-04 OneTrust, LLC Data processing systems for cookie compliance testing with website scanning and related methods
US11562097B2 (en) 2016-06-10 2023-01-24 OneTrust, LLC Data processing systems for central consent repository and related methods
US11144622B2 (en) 2016-06-10 2021-10-12 OneTrust, LLC Privacy management systems and methods
US10592692B2 (en) 2016-06-10 2020-03-17 OneTrust, LLC Data processing systems for central consent repository and related methods
US11138242B2 (en) 2016-06-10 2021-10-05 OneTrust, LLC Data processing systems and methods for automatically detecting and documenting privacy-related aspects of computer software
US10592648B2 (en) 2016-06-10 2020-03-17 OneTrust, LLC Consent receipt management systems and related methods
US10776517B2 (en) 2016-06-10 2020-09-15 OneTrust, LLC Data processing systems for calculating and communicating cost of fulfilling data subject access requests and related methods
US10783256B2 (en) 2016-06-10 2020-09-22 OneTrust, LLC Data processing systems for data transfer risk identification and related methods
US11366786B2 (en) 2016-06-10 2022-06-21 OneTrust, LLC Data processing systems for processing data subject access requests
US10565161B2 (en) 2016-06-10 2020-02-18 OneTrust, LLC Data processing systems for processing data subject access requests
US11057356B2 (en) 2016-06-10 2021-07-06 OneTrust, LLC Automated data processing systems and methods for automatically processing data subject access requests using a chatbot
US10878127B2 (en) 2016-06-10 2020-12-29 OneTrust, LLC Data subject access request processing systems and related methods
US11277448B2 (en) 2016-06-10 2022-03-15 OneTrust, LLC Data processing systems for data-transfer risk identification, cross-border visualization generation, and related methods
US11625502B2 (en) 2016-06-10 2023-04-11 OneTrust, LLC Data processing systems for identifying and modifying processes that are subject to data subject access requests
US10685140B2 (en) 2016-06-10 2020-06-16 OneTrust, LLC Consent receipt management systems and related methods
US10909265B2 (en) 2016-06-10 2021-02-02 OneTrust, LLC Application privacy scanning systems and related methods
US11403377B2 (en) 2016-06-10 2022-08-02 OneTrust, LLC Privacy management systems and methods
CN109644089B (zh) 2016-06-15 2022-04-26 康维达无线有限责任公司 用于新无线电的无许可上行链路传输
US10708067B2 (en) * 2016-06-18 2020-07-07 Intel Corporation Platform attestation and registration for servers
US20170371519A1 (en) * 2016-06-22 2017-12-28 Vmware, Inc. Automatic Document Handling with On-Demand Application Mounting
WO2017219362A1 (zh) * 2016-06-24 2017-12-28 阿贝尔环球国际有限公司 终端装置及其终端操作系统与云端装置及其云端操作系统
US9787639B1 (en) 2016-06-24 2017-10-10 Varmour Networks, Inc. Granular segmentation using events
US10375114B1 (en) 2016-06-27 2019-08-06 Symantec Corporation Systems and methods for enforcing access-control policies
US10778636B2 (en) * 2016-06-28 2020-09-15 ColorTokens, Inc. Dynamic credential based addressing
US10282229B2 (en) 2016-06-28 2019-05-07 Amazon Technologies, Inc. Asynchronous task management in an on-demand network code execution environment
US10462184B1 (en) 2016-06-28 2019-10-29 Symantec Corporation Systems and methods for enforcing access-control policies in an arbitrary physical space
US10102040B2 (en) 2016-06-29 2018-10-16 Amazon Technologies, Inc Adjusting variable limit on concurrent code executions
US10203990B2 (en) 2016-06-30 2019-02-12 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10277708B2 (en) 2016-06-30 2019-04-30 Amazon Technologies, Inc. On-demand network code execution with cross-account aliases
US10755334B2 (en) 2016-06-30 2020-08-25 Varmour Networks, Inc. Systems and methods for continually scoring and segmenting open opportunities using client data and product predictors
US10171445B2 (en) * 2016-06-30 2019-01-01 International Business Machines Corporation Secure virtualized servers
US10467045B1 (en) 2016-07-07 2019-11-05 Binaris Inc On-demand isolated execution of specific tasks
EP3482566B1 (en) 2016-07-08 2024-02-28 InterDigital Madison Patent Holdings, SAS Systems and methods for region-of-interest tone remapping
US10251056B2 (en) 2016-07-13 2019-04-02 Motorola Mobility Llc Electronic device with gesture actuation of companion devices, and corresponding systems and methods
US11243567B2 (en) * 2016-07-13 2022-02-08 Motorola Mobility Llc Deformable electronic device and methods and systems for reconfiguring presentation data and actuation elements
US10372892B2 (en) 2016-07-13 2019-08-06 Motorola Mobility Llc Electronic device with gesture actuation of companion devices, and corresponding systems and methods
US10878771B2 (en) 2016-07-13 2020-12-29 Motorola Mobility Llc Deformable electronic device and methods and systems for display remediation to compensate performance degradation
US10437780B2 (en) 2016-07-14 2019-10-08 Snowflake Inc. Data pruning based on metadata
CN107657172A (zh) * 2016-07-25 2018-02-02 腾讯科技(深圳)有限公司 代码处理方法、装置及系统
US10341332B2 (en) * 2016-07-26 2019-07-02 International Business Machines Corporation System and method for providing persistent user identification
JP6789712B2 (ja) * 2016-08-01 2020-11-25 キヤノン株式会社 画像形成装置及びその制御方法、並びにプログラム
RU2626550C1 (ru) * 2016-08-09 2017-07-28 Акционерное Общество "Научно-Исследовательский Институт Микроэлектронной Аппаратуры "Прогресс" Программно-аппаратная платформа и способ ее реализации для беспроводных средств связи
US10303899B2 (en) * 2016-08-11 2019-05-28 Intel Corporation Secure public cloud with protected guest-verified host control
US10614229B2 (en) 2016-08-24 2020-04-07 International Business Machines Corporation Security and privacy controls for remote-access support services
CN106354546B (zh) * 2016-08-29 2019-11-22 北京奇虎科技有限公司 虚拟机远程控制方法和系统
US10581807B2 (en) * 2016-08-29 2020-03-03 International Business Machines Corporation Using dispersal techniques to securely store cryptographic resources and respond to attacks
CN107797845B (zh) * 2016-09-07 2021-06-15 华为技术有限公司 用于访问容器的方法和装置
CN106790341B (zh) * 2016-09-08 2019-11-22 大连海事大学 移动Web服务应用的自适应部署方法
US10572276B2 (en) * 2016-09-12 2020-02-25 International Business Machines Corporation Window management based on a set of computing resources in a stream computing environment
US10536387B2 (en) 2016-09-12 2020-01-14 International Business Machines Corporation Window management based on an indication of congestion in a stream computing environment
CN107846433A (zh) * 2016-09-19 2018-03-27 阿里巴巴集团控股有限公司 一种会话信息同步的方法、装置和系统
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US10061613B1 (en) 2016-09-23 2018-08-28 Amazon Technologies, Inc. Idempotent task execution in on-demand network code execution systems
US10469457B1 (en) 2016-09-26 2019-11-05 Symantec Corporation Systems and methods for securely sharing cloud-service credentials within a network of computing devices
US11119813B1 (en) 2016-09-30 2021-09-14 Amazon Technologies, Inc. Mapreduce implementation using an on-demand network code execution system
US10476900B2 (en) * 2016-09-30 2019-11-12 McAFEE, LLC. Safe sharing of sensitive data
CN109997114B (zh) * 2016-10-07 2023-09-29 康维达无线有限责任公司 用于通用互通和可扩展性的服务层资源管理
US10368080B2 (en) 2016-10-21 2019-07-30 Microsoft Technology Licensing, Llc Selective upsampling or refresh of chroma sample values
CN107977272A (zh) * 2016-10-25 2018-05-01 腾讯科技(深圳)有限公司 应用运行的方法及装置
US10791103B2 (en) * 2016-10-28 2020-09-29 Vmware, Inc. Adapting remote display protocols to remote applications
US10334052B2 (en) * 2016-10-28 2019-06-25 Caterpillar Inc. System and method for communicating negotiated groups of parameters
EP3520243A2 (en) 2016-11-03 2019-08-07 Convida Wireless, LLC Frame structure in nr
US10785311B2 (en) * 2016-11-08 2020-09-22 Pearson Education, Inc. Secure cloud-managed content delivery computer ecosystem
US10270692B1 (en) * 2016-11-10 2019-04-23 Juniper Networks, Inc. Establishing a connection to multiple network devices using a single internet protocol (IP) address
US10313474B1 (en) * 2016-11-14 2019-06-04 Parallels International Gmbh System and method of load balancing by offloading redundant queries to client devices
US11064267B2 (en) 2016-11-14 2021-07-13 Google Llc Systems and methods for providing interactive streaming media
US10649679B2 (en) 2016-11-23 2020-05-12 Nutanix, Inc. Containerized application extensions in distributed storage systems
US20180145984A1 (en) * 2016-11-24 2018-05-24 Rajender Duggal System and method for providing security solutions to protect enterprise critical assets
CN106506521B (zh) * 2016-11-28 2020-08-07 腾讯科技(深圳)有限公司 资源访问控制方法和装置
CN106789952B (zh) * 2016-11-30 2020-05-15 用友优普信息技术有限公司 一种局域网服务互联网化的方法和系统
US10728090B2 (en) 2016-12-02 2020-07-28 Nutanix, Inc. Configuring network segmentation for a virtualization environment
US11568073B2 (en) 2016-12-02 2023-01-31 Nutanix, Inc. Handling permissions for virtualized file servers
US11562034B2 (en) 2016-12-02 2023-01-24 Nutanix, Inc. Transparent referrals for distributed file servers
US10824455B2 (en) 2016-12-02 2020-11-03 Nutanix, Inc. Virtualized server systems and methods including load balancing for virtualized file servers
US11294777B2 (en) 2016-12-05 2022-04-05 Nutanix, Inc. Disaster recovery for distributed file servers, including metadata fixers
US11288239B2 (en) 2016-12-06 2022-03-29 Nutanix, Inc. Cloning virtualized file servers
US11281484B2 (en) 2016-12-06 2022-03-22 Nutanix, Inc. Virtualized server systems and methods including scaling of file system virtual machines
CN106888202B (zh) * 2016-12-08 2020-02-21 阿里巴巴集团控股有限公司 授权登录方法及装置
US10095729B2 (en) 2016-12-09 2018-10-09 Qumulo, Inc. Managing storage quotas in a shared storage system
CN108205504B (zh) * 2016-12-16 2021-01-12 广州杰赛科技股份有限公司 终端usb映射方法、虚拟机usb映射方法及系统
US10873565B2 (en) * 2016-12-22 2020-12-22 Nicira, Inc. Micro-segmentation of virtual computing elements
CN112860479A (zh) 2016-12-26 2021-05-28 华为技术有限公司 存储数据的方法及云数据中心
US10367639B2 (en) * 2016-12-29 2019-07-30 Intel Corporation Graphics processor with encrypted kernels
CN108279850B (zh) * 2017-01-06 2021-05-14 普天信息技术有限公司 一种数据资源的存储方法
WO2018136619A1 (en) * 2017-01-18 2018-07-26 Sensoriant, Inc. Deriving personalized experiences of smart environments
US10860342B2 (en) * 2017-01-30 2020-12-08 Citrix Systems, Inc. Computer system providing cloud-based session prelaunch features and related methods
US11243293B2 (en) * 2017-02-07 2022-02-08 Samsung Electronics Company, Ltd. Radar-based system for sensing touch and in-the-air interactions
US10761911B2 (en) 2017-02-13 2020-09-01 Nutanix, Inc. Asynchronous application interactions in distributed systems
US11765406B2 (en) 2017-02-17 2023-09-19 Interdigital Madison Patent Holdings, Sas Systems and methods for selective object-of-interest zooming in streaming video
US10445126B2 (en) * 2017-02-21 2019-10-15 Red Hat, Inc. Preloading enhanced application startup
WO2018154570A1 (en) * 2017-02-21 2018-08-30 Privacy Software Solutions Ltd. A method and system for creating multi mobilephone environments and numbers on a single handset with a single sim-card
US10599483B1 (en) * 2017-03-01 2020-03-24 Amazon Technologies, Inc. Decentralized task execution bypassing an execution service
US10554495B2 (en) 2017-03-13 2020-02-04 International Business Machines Corporation Sending hardware specific soft metrics for each of a plurality of computing devices based on a plain language user policy
EP3596593A4 (en) 2017-03-14 2021-01-27 Ciambella Ltd. METHOD AND APPARATUS DESIGNED TO AUTOMATICALLY GENERATE AND INCORPORATE CODE IN DEVELOPMENT ENVIRONMENTS
US10812981B1 (en) 2017-03-22 2020-10-20 NortonLifeLock, Inc. Systems and methods for certifying geolocation coordinates of computing devices
JP2020516982A (ja) * 2017-03-28 2020-06-11 クラウドジャンパー コーポレーション セッションサーバへのウェイクオンデマンド・アクセスを提供するための方法およびシステム
WO2018183526A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking, full-mesh data center network having optical permutors
US10637685B2 (en) 2017-03-29 2020-04-28 Fungible, Inc. Non-blocking any-to-any data center network having multiplexed packet spraying within access node groups
WO2018183542A1 (en) 2017-03-29 2018-10-04 Fungible, Inc. Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths
EP3382591B1 (en) 2017-03-30 2020-03-25 British Telecommunications public limited company Hierarchical temporal memory for expendable access control
US11586751B2 (en) 2017-03-30 2023-02-21 British Telecommunications Public Limited Company Hierarchical temporal memory for access control
WO2018178034A1 (en) 2017-03-30 2018-10-04 British Telecommunications Public Limited Company Anomaly detection for computer systems
US10565112B2 (en) 2017-04-10 2020-02-18 Fungible, Inc. Relay consistent memory management in a multiple processor system
US10635851B2 (en) * 2017-04-13 2020-04-28 Sap Se Virtualized server side rendering
AU2018255484B2 (en) * 2017-04-18 2023-02-23 Bankvault Pty Ltd Virtual machines - computer implemented security methods and systems
US10754971B2 (en) * 2017-04-21 2020-08-25 Google Llc Referenced access control list
US10783235B1 (en) * 2017-05-04 2020-09-22 Amazon Technologies, Inc. Secure remote access of computing resources
EP3622446A1 (en) 2017-05-08 2020-03-18 British Telecommunications Public Limited Company Load balancing of machine learning algorithms
US11823017B2 (en) 2017-05-08 2023-11-21 British Telecommunications Public Limited Company Interoperation of machine learning algorithms
WO2018206408A1 (en) 2017-05-08 2018-11-15 British Telecommunications Public Limited Company Management of interoperating machine leaning algorithms
WO2018206406A1 (en) 2017-05-08 2018-11-15 British Telecommunications Public Limited Company Adaptation of machine learning algorithms
CN107147714A (zh) * 2017-05-09 2017-09-08 郑州云海信息技术有限公司 一种给物理网卡分配cpu资源的中断请求装置及方法
US10560404B2 (en) * 2017-06-14 2020-02-11 Citrix Systems, Inc. Real-time cloud-based messaging system
US10013577B1 (en) 2017-06-16 2018-07-03 OneTrust, LLC Data processing systems for identifying whether cookies contain personally identifying information
EP3418833B1 (de) * 2017-06-20 2021-04-07 Siemens Aktiengesellschaft Verfahren und anordnung zum zugriff eines ersten computers auf eine virtuelle maschine eines zweiten computers
US10121001B1 (en) 2017-06-21 2018-11-06 Qualcomm Incorporated System and method for monolithic scheduling in a portable computing device using a hypervisor
US10425380B2 (en) 2017-06-22 2019-09-24 BitSight Technologies, Inc. Methods for mapping IP addresses and domains to organizations using user activity data
US10681000B2 (en) 2017-06-30 2020-06-09 Nicira, Inc. Assignment of unique physical network addresses for logical network addresses
US10637800B2 (en) 2017-06-30 2020-04-28 Nicira, Inc Replacement of logical network addresses with physical network addresses
CN107391276B (zh) * 2017-07-05 2018-09-28 腾讯科技(深圳)有限公司 分布式监听方法、监听控制装置及系统
US10621001B1 (en) 2017-07-06 2020-04-14 Binaris Inc Systems and methods for efficiently expediting execution of tasks in isolated environments
US10417043B1 (en) 2017-07-06 2019-09-17 Binaris Inc Systems and methods for executing tasks adaptively
CN110892380B (zh) 2017-07-10 2023-08-11 芬基波尔有限责任公司 用于流处理的数据处理单元
EP3625939A1 (en) 2017-07-10 2020-03-25 Fungible, Inc. Access node for data centers
US10499249B1 (en) 2017-07-11 2019-12-03 Sprint Communications Company L.P. Data link layer trust signaling in communication network
CN109286598B (zh) * 2017-07-20 2020-12-01 中国科学院声学研究所 一种tls通道加密的rdp协议明文数据采集系统及方法
US11240207B2 (en) 2017-08-11 2022-02-01 L3 Technologies, Inc. Network isolation
US10585692B2 (en) 2017-08-15 2020-03-10 International Business Machines Corporation Enhancing virtual machine performance using autonomics
US11601467B2 (en) 2017-08-24 2023-03-07 L3 Technologies, Inc. Service provider advanced threat protection
US11190374B2 (en) 2017-08-28 2021-11-30 Bright Data Ltd. System and method for improving content fetching by selecting tunnel devices
LT3767493T (lt) 2017-08-28 2023-03-10 Bright Data Ltd. Būdas pagerinti turinio parsisiuntimą, naudojant tunelinius įrenginius
US10560528B2 (en) 2017-08-29 2020-02-11 Western Digital Technologies, Inc. Cloud-based management of access to a data storage system on a local network
US20190082051A1 (en) * 2017-09-13 2019-03-14 Teleperformance Se Dynamic computing environment allocation for contact center interaction
CN107632877A (zh) * 2017-09-15 2018-01-26 湖南新云网科技有限公司 Vdi与voi架构虚拟机融合系统及启动方法
US11687654B2 (en) * 2017-09-15 2023-06-27 Intel Corporation Providing isolation in virtualized systems using trust domains
US10599453B1 (en) * 2017-09-25 2020-03-24 Amazon Technologies, Inc. Dynamic content generation with on-demand code execution
US11178104B2 (en) 2017-09-26 2021-11-16 L3 Technologies, Inc. Network isolation with cloud networks
US11223601B2 (en) 2017-09-28 2022-01-11 L3 Technologies, Inc. Network isolation for collaboration software
US10445086B2 (en) 2017-09-28 2019-10-15 At&T Intellectual Property I, L.P. Virtualization platform for creating, deploying, modifying, and relocating applications
US11552987B2 (en) * 2017-09-28 2023-01-10 L3 Technologies, Inc. Systems and methods for command and control protection
US11184323B2 (en) 2017-09-28 2021-11-23 L3 Technologies, Inc Threat isolation using a plurality of containers
US11336619B2 (en) 2017-09-28 2022-05-17 L3 Technologies, Inc. Host process and memory separation
US10931669B2 (en) * 2017-09-28 2021-02-23 L3 Technologies, Inc. Endpoint protection and authentication
US11374906B2 (en) 2017-09-28 2022-06-28 L3 Technologies, Inc. Data exfiltration system and methods
WO2019068010A1 (en) 2017-09-29 2019-04-04 Fungible, Inc. VIRTUAL MATRIX OF NETWORK ACCESS NODES CONFIGURED DYNAMICALLY ON AN UNDERLYING NETWORK
CN111164938A (zh) 2017-09-29 2020-05-15 芬基波尔有限责任公司 使用选择性多路径分组流喷射的弹性网络通信
US10853093B2 (en) * 2017-09-29 2020-12-01 Dell Products L.P. Application profiling via loopback methods
US10375019B2 (en) 2017-10-06 2019-08-06 Stealthpath, Inc. Methods for internet communication security
US10374803B2 (en) 2017-10-06 2019-08-06 Stealthpath, Inc. Methods for internet communication security
US10367811B2 (en) 2017-10-06 2019-07-30 Stealthpath, Inc. Methods for internet communication security
US10630642B2 (en) 2017-10-06 2020-04-21 Stealthpath, Inc. Methods for internet communication security
US10361859B2 (en) 2017-10-06 2019-07-23 Stealthpath, Inc. Methods for internet communication security
US10397186B2 (en) 2017-10-06 2019-08-27 Stealthpath, Inc. Methods for internet communication security
WO2019071126A1 (en) * 2017-10-06 2019-04-11 Stealthpath, Inc. INTERNET COMMUNICATION SECURITY METHODS
CN109656646B (zh) * 2017-10-11 2022-05-24 阿里巴巴集团控股有限公司 一种远程桌面控制方法、装置、设备及虚拟化芯片
US11539686B2 (en) * 2017-10-12 2022-12-27 Mx Technologies, Inc. Data aggregation management based on credentials
CN107844302B (zh) * 2017-10-18 2020-12-11 上海瀚之友信息技术服务有限公司 一种基于虚拟机的生产环境模拟系统
US10498653B2 (en) * 2017-10-19 2019-12-03 International Business Machines Corporation Encryption prioritization for distributed streaming applications
US11170096B2 (en) 2017-10-23 2021-11-09 L3 Technologies, Inc. Configurable internet isolation and security for mobile devices
US11550898B2 (en) 2017-10-23 2023-01-10 L3 Technologies, Inc. Browser application implementing sandbox based internet isolation
US11120125B2 (en) 2017-10-23 2021-09-14 L3 Technologies, Inc. Configurable internet isolation and security for laptops and similar devices
US10552188B2 (en) * 2017-11-01 2020-02-04 Alibaba Group Holding Limited Virtual private cloud services with physical machine servers and virtual machines
ES2853487T3 (es) * 2017-11-17 2021-09-16 Asustek Comp Inc Método y aparato para el comportamiento de monitoreo del equipo de usuario (UE) para la recuperación del haz en un sistema de comunicación inalámbrico
WO2019104090A1 (en) 2017-11-21 2019-05-31 Fungible, Inc. Work unit stack data structures in multiple core processor system for stream data processing
US10630480B2 (en) * 2017-11-29 2020-04-21 Oracle International Corporation Trusted client security factor-based authorizations at a server
US10802861B2 (en) * 2017-11-30 2020-10-13 International Busienss Machines Corporation Accessing host services for virtual guest operating systems
US10680969B1 (en) * 2017-12-08 2020-06-09 Amazon Technologies, Inc. Methods and apparatus for allocating host resources to virtual machines
US10747844B2 (en) * 2017-12-12 2020-08-18 Tesla, Inc. Systems and methods for converting a matrix input to a vectorized input for a matrix processor
US10564946B1 (en) 2017-12-13 2020-02-18 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10303492B1 (en) 2017-12-13 2019-05-28 Amazon Technologies, Inc. Managing custom runtimes in an on-demand code execution system
FI127806B (en) * 2017-12-22 2019-02-28 Prosys Opc Oy A method, system and computer software for managing OPC UA server capacity
JP2019117571A (ja) * 2017-12-27 2019-07-18 シャープ株式会社 情報処理装置、情報処理システム、情報処理方法及びプログラム
CN108600284B (zh) * 2017-12-28 2021-05-14 武汉噢易云计算股份有限公司 一种基于Ceph的虚拟机高可用实现方法及系统
TWI647935B (zh) * 2017-12-28 2019-01-11 中華電信股份有限公司 節省骨幹網路頻寬的系統與方法
US11621994B2 (en) 2018-01-08 2023-04-04 Hewlett-Packard Development Company, L.P. Brokering servers based on remote access performance
CN108256309B (zh) * 2018-01-10 2020-01-03 飞天诚信科技股份有限公司 硬件登录windows10以上系统的实现方法及装置
CN108415769A (zh) * 2018-01-14 2018-08-17 长沙开雅电子科技有限公司 一种存储系统cpu加速处理数据请求指令实现方法
CN108245132B (zh) * 2018-01-15 2020-07-14 浙江大学 一种基于蓝牙的医疗可穿戴设备智能交互方法
CN110099080B (zh) * 2018-01-29 2022-05-06 阿里巴巴集团控股有限公司 设备联网激活方法、装置和云端网络设备
US10540288B2 (en) 2018-02-02 2020-01-21 Fungible, Inc. Efficient work unit processing in a multicore system
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10572375B1 (en) 2018-02-05 2020-02-25 Amazon Technologies, Inc. Detecting parameter validity in code including cross-service calls
US10353678B1 (en) 2018-02-05 2019-07-16 Amazon Technologies, Inc. Detecting code characteristic alterations due to cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10257219B1 (en) 2018-03-12 2019-04-09 BitSight Technologies, Inc. Correlated risk in cybersecurity
US10277924B1 (en) 2018-03-22 2019-04-30 Amazon Technologies, Inc. Stitching content streams together
CN108519883A (zh) * 2018-03-26 2018-09-11 平安普惠企业管理有限公司 参数修改方法、装置、终端设备及存储介质
JP7033978B2 (ja) * 2018-03-28 2022-03-11 株式会社トプコン 測量機の遠隔操作システム
US10812520B2 (en) 2018-04-17 2020-10-20 BitSight Technologies, Inc. Systems and methods for external detection of misconfigured systems
US20190327159A1 (en) * 2018-04-20 2019-10-24 Nutanix, Inc. Systems and methods for identifying and displaying logon duration metrics
WO2019209893A1 (en) * 2018-04-23 2019-10-31 SCRRD, Inc. Operating system on a computing system
US11086826B2 (en) 2018-04-30 2021-08-10 Nutanix, Inc. Virtualized server systems and methods including domain joining techniques
US10855755B2 (en) * 2018-05-04 2020-12-01 Citrix Systems, Inc. WebRTC API redirection with fallbacks
US11824785B2 (en) 2018-05-04 2023-11-21 Citrix Systems, Inc. Systems and methods for remote computing session display based upon user input event prioritization
EP3835955A1 (en) 2018-05-04 2021-06-16 Citrix Systems, Inc. Computer system providing improved transfer protocol for remote computing using multiple virtual channels having different forward error correction levels.
US11206251B2 (en) * 2018-05-11 2021-12-21 Sony Mobile Communications Inc. System and method for communicating information about a serviceable item
US11238012B1 (en) * 2018-05-15 2022-02-01 Splunk Inc. Log data extraction from data chunks of an isolated execution environment
US11194609B1 (en) 2018-05-23 2021-12-07 Open Invention Network Llc Onboarding VNFs which include VNFCs that are composed of independently manageable software modules
US11057385B2 (en) * 2018-05-24 2021-07-06 Nicira, Inc. Methods to restrict network file access in guest virtual machines using in-guest agents
CN108762934B (zh) * 2018-06-02 2021-09-07 武汉泽塔云科技股份有限公司 远程图形传输系统、方法及云服务器
US11360936B2 (en) 2018-06-08 2022-06-14 Qumulo, Inc. Managing per object snapshot coverage in filesystems
US10817604B1 (en) 2018-06-19 2020-10-27 Architecture Technology Corporation Systems and methods for processing source codes to detect non-malicious faults
US10749890B1 (en) 2018-06-19 2020-08-18 Architecture Technology Corporation Systems and methods for improving the ranking and prioritization of attack-related events
US11012427B2 (en) * 2018-06-21 2021-05-18 EMC IP Holding Company LLC RSA trusted networks: RSA packet frames for advanced networking switches
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
CN109120588B (zh) * 2018-06-29 2021-04-09 华为技术有限公司 获取验证信息的方法和数据中心
US10877774B2 (en) * 2018-07-17 2020-12-29 Sap Se Cloud integration of application runtime
US11194680B2 (en) 2018-07-20 2021-12-07 Nutanix, Inc. Two node clusters recovery on a failure
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
CN110851750B (zh) * 2018-08-01 2022-07-22 北京国双科技有限公司 一种数据获取方法及装置
CN109086120A (zh) * 2018-08-03 2018-12-25 北京奇虎科技有限公司 虚拟机资源的管理方法、装置及计算设备
US11055115B1 (en) * 2018-08-09 2021-07-06 Parallels International Gmbh Virtual machine conversion in distributed system of remote desktops
US11258848B1 (en) * 2018-08-09 2022-02-22 Amazon Technologies, Inc. Load balancing requests such that target resources serve a single client
CN109120616B (zh) * 2018-08-16 2021-12-21 上海达梦数据库有限公司 一种身份认证方法、装置、代理服务端和存储介质
CN109151582A (zh) * 2018-08-16 2019-01-04 海信电子科技(深圳)有限公司 基于Linux机顶盒的多应用管理方法、装置及终端
US11025641B2 (en) * 2018-08-21 2021-06-01 Bank Of America Corporation System for optimizing access control for server privilege
US11356452B2 (en) 2018-09-05 2022-06-07 Corelogic Solutions, Llc System, computer program product and method for risk evaluation of API login and use
US10803202B2 (en) 2018-09-07 2020-10-13 OneTrust, LLC Data processing systems for orphaned data identification and deletion and related methods
US11144675B2 (en) 2018-09-07 2021-10-12 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US11544409B2 (en) 2018-09-07 2023-01-03 OneTrust, LLC Data processing systems and methods for automatically protecting sensitive data within privacy management systems
US10765952B2 (en) 2018-09-21 2020-09-08 Sony Interactive Entertainment LLC System-level multiplayer matchmaking
KR20210066856A (ko) 2018-09-27 2021-06-07 콘비다 와이어리스, 엘엘씨 새로운 라디오의 비허가 스펙트럼들에서의 부대역 동작들
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11188622B2 (en) 2018-09-28 2021-11-30 Daniel Chien Systems and methods for computer security
US10695671B2 (en) 2018-09-28 2020-06-30 Sony Interactive Entertainment LLC Establishing and managing multiplayer sessions
US11537627B1 (en) 2018-09-28 2022-12-27 Splunk Inc. Information technology networked cloud service monitoring
CN109710905B (zh) * 2018-09-30 2023-04-28 天津字节跳动科技有限公司 文档协同编辑方法、装置、存储介质及电子设备
US10719362B2 (en) * 2018-10-10 2020-07-21 Oracle International Corporation Managing multiple isolated execution contexts in a single process
US10963621B2 (en) 2018-10-10 2021-03-30 Citrix Systems, Inc. Management of remote access user application layouts
US11582287B2 (en) 2018-10-12 2023-02-14 Connectwise, Llc Hidden desktop session for remote access
US11200323B2 (en) 2018-10-17 2021-12-14 BitSight Technologies, Inc. Systems and methods for forecasting cybersecurity ratings based on event-rate scenarios
US10521583B1 (en) 2018-10-25 2019-12-31 BitSight Technologies, Inc. Systems and methods for remote detection of software through browser webinjects
CN109522760B (zh) * 2018-10-29 2020-08-14 北京博衍思创信息科技有限公司 一种基于硬件控制逻辑的数据转发控制方法及系统
US11770447B2 (en) 2018-10-31 2023-09-26 Nutanix, Inc. Managing high-availability file servers
US11057373B2 (en) 2018-11-16 2021-07-06 Bank Of America Corporation System for authentication using channel dependent one-time passwords
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US10929175B2 (en) * 2018-11-21 2021-02-23 Fungible, Inc. Service chaining hardware accelerators within a data stream processing integrated circuit
CN109302425B (zh) * 2018-11-28 2021-02-26 河北省科学院应用数学研究所 身份认证方法及终端设备
CN109614429B (zh) * 2018-12-03 2023-04-07 北京安华金和科技有限公司 基于内核驱动实现应用访问和数据库访问行为关联的方法
US11782881B2 (en) * 2018-12-05 2023-10-10 Vmware, Inc. Recommending remotely executed applications for opening files
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US10534758B1 (en) 2018-12-20 2020-01-14 Qumulo, Inc. File system cache tiers
CN109726050B (zh) * 2018-12-28 2021-01-26 杭州迪普科技股份有限公司 一种进程修复的方法和装置
US11429713B1 (en) 2019-01-24 2022-08-30 Architecture Technology Corporation Artificial intelligence modeling for cyber-attack simulation protocols
US11151092B2 (en) 2019-01-30 2021-10-19 Qumulo, Inc. Data replication in distributed file systems
US11128654B1 (en) 2019-02-04 2021-09-21 Architecture Technology Corporation Systems and methods for unified hierarchical cybersecurity
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11477185B2 (en) * 2019-02-15 2022-10-18 Xiid Corporation Method and system for single sign-on authentication
US10713181B1 (en) * 2019-02-21 2020-07-14 Virtuozzo International Gmbh Method and system for sharing driver pages
EP3750079A4 (en) 2019-02-25 2022-01-12 Bright Data Ltd SYSTEM AND METHOD FOR URL EXTRACTION CHALLENGE MECHANISM
WO2020176110A1 (en) * 2019-02-28 2020-09-03 Hewlett-Packard Development Company, L.P. Access to firmware settings with asymmetric cryptography
US11438435B2 (en) * 2019-03-01 2022-09-06 Microsoft Technology Licensing, Llc User interaction and task management using multiple devices
US11829277B2 (en) * 2019-03-21 2023-11-28 Dish Network Technologies India Private Limited Systems and methods for remote debugging
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11943229B2 (en) * 2019-03-29 2024-03-26 Innoplexus Ag System and method of managing access to remote digital platforms
WO2020202135A2 (en) 2019-04-02 2020-10-08 Luminati Networks Ltd. System and method for managing non-direct url fetching service
US10986089B2 (en) * 2019-04-11 2021-04-20 Kas Kasravi Virtual mobile device system and method thereof
US11016797B2 (en) * 2019-04-12 2021-05-25 Ghost Locomotion Inc. Device security across multiple operating system modalities
CN110086661B (zh) * 2019-04-18 2022-02-25 绿盟科技集团股份有限公司 一种识别虚拟终端的方法及装置
US11949677B2 (en) * 2019-04-23 2024-04-02 Microsoft Technology Licensing, Llc Resource access based on audio signal
US11887505B1 (en) 2019-04-24 2024-01-30 Architecture Technology Corporation System for deploying and monitoring network-based training exercises
US10659388B1 (en) 2019-05-01 2020-05-19 Bank Of America Corporation Transaction processing throttle with dynamic transaction load balancing and transaction starvation prevention
US11258773B2 (en) * 2019-05-13 2022-02-22 Verizon Patent And Licensing Inc. System and method for providing a privacy layer to secure client data in a network
US11134079B2 (en) 2019-05-21 2021-09-28 International Business Machines Corporation Cognitive behavioral and environmental access
US11138328B2 (en) * 2019-05-30 2021-10-05 Bank Of America Corporation Controlling access to secure information resources using rotational datasets and dynamically configurable data containers
US11863580B2 (en) 2019-05-31 2024-01-02 Varmour Networks, Inc. Modeling application dependencies to identify operational risk
US11310284B2 (en) 2019-05-31 2022-04-19 Varmour Networks, Inc. Validation of cloud security policies
US11711374B2 (en) 2019-05-31 2023-07-25 Varmour Networks, Inc. Systems and methods for understanding identity and organizational access to applications within an enterprise environment
US11290493B2 (en) 2019-05-31 2022-03-29 Varmour Networks, Inc. Template-driven intent-based security
US11575563B2 (en) 2019-05-31 2023-02-07 Varmour Networks, Inc. Cloud security management
US11290494B2 (en) 2019-05-31 2022-03-29 Varmour Networks, Inc. Reliability prediction for cloud security policies
US11442599B2 (en) 2019-06-07 2022-09-13 Microsoft Technology Licensing, Llc Systems and methods for hosting a browser within another browser
US11570004B2 (en) * 2019-06-13 2023-01-31 Fidelity Information Services, Llc Dynamic self-defined API via digital signatures
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11620389B2 (en) 2019-06-24 2023-04-04 University Of Maryland Baltimore County Method and system for reducing false positives in static source code analysis reports using machine learning and classification techniques
CN110266705B (zh) * 2019-06-25 2020-10-02 珠海格力电器股份有限公司 一种控制方法及系统
US11403405B1 (en) 2019-06-27 2022-08-02 Architecture Technology Corporation Portable vulnerability identification tool for embedded non-IP devices
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
CN110365756B (zh) * 2019-06-28 2021-09-14 联想(北京)有限公司 一种访问方法、电子设备及计算机存储介质
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
CN110321515B (zh) * 2019-07-12 2021-07-27 北京字节跳动网络技术有限公司 网页数据存储方法、装置、设备及存储介质
US10726136B1 (en) 2019-07-17 2020-07-28 BitSight Technologies, Inc. Systems and methods for generating security improvement plans for entities
US11093262B2 (en) 2019-07-29 2021-08-17 Motorola Mobility Llc Electronic devices and corresponding methods for switching between normal and privacy modes of operation
US11288399B2 (en) * 2019-08-05 2022-03-29 Visa International Service Association Cryptographically secure dynamic third party resources
US11095735B2 (en) 2019-08-06 2021-08-17 Tealium Inc. Configuration of event data communication in computer networks
US11027196B2 (en) * 2019-09-04 2021-06-08 Take-Two Interactive Software, Inc. System and method for managing transactions in a multiplayer network gaming environment
US11113375B2 (en) 2019-09-09 2021-09-07 Motorola Mobility Llc Electronic devices with proximity authentication and gaze actuation of companion electronic devices and corresponding methods
US11237878B2 (en) * 2019-09-09 2022-02-01 Microsoft Technology Licensing, Llc Transforming system calls in a distributed architecture
US11218301B1 (en) 2019-09-10 2022-01-04 Wells Fargo Bank, N.A. Systems and methods for post-quantum cryptography communications channels
US11552793B1 (en) 2019-09-10 2023-01-10 Wells Fargo Bank, N.A. Systems and methods for post-quantum cryptography communications channels
US11218300B1 (en) 2019-09-10 2022-01-04 Wells Fargo Bank, N.A. Systems and methods for post-quantum cryptography communications channels
US10848382B1 (en) 2019-09-26 2020-11-24 BitSight Technologies, Inc. Systems and methods for network asset discovery and association thereof with entities
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11558423B2 (en) 2019-09-27 2023-01-17 Stealthpath, Inc. Methods for zero trust security with high quality of service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11032244B2 (en) 2019-09-30 2021-06-08 BitSight Technologies, Inc. Systems and methods for determining asset importance in security risk management
US11444974B1 (en) 2019-10-23 2022-09-13 Architecture Technology Corporation Systems and methods for cyber-physical threat modeling
US11803658B1 (en) * 2019-10-29 2023-10-31 United Services Automobile Association (Usaa) Data access control
US11354402B2 (en) * 2019-11-01 2022-06-07 Microsoft Technology Licensing, Llc Virtual environment type validation for policy enforcement
CN110826069B (zh) * 2019-11-05 2022-09-30 深信服科技股份有限公司 一种病毒处理方法、装置、设备及存储介质
CN111079104B (zh) * 2019-11-21 2023-07-11 腾讯科技(深圳)有限公司 一种权限控制方法、装置、设备及存储介质
US11297147B2 (en) * 2019-11-22 2022-04-05 Amazon Technologies, Inc. Managed data export to a remote network from edge devices
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
CN111132373B (zh) * 2019-12-05 2023-08-04 北京小米移动软件有限公司 网络连接方法、装置及设备
US11677754B2 (en) * 2019-12-09 2023-06-13 Daniel Chien Access control systems and methods
US11146656B2 (en) 2019-12-20 2021-10-12 Tealium Inc. Feature activation control and data prefetching with network-connected mobile devices
WO2021137855A1 (en) * 2019-12-31 2021-07-08 Safe12, Inc. Methods and apparatus for protecting computer data using hidden wireless data communications
US11503075B1 (en) 2020-01-14 2022-11-15 Architecture Technology Corporation Systems and methods for continuous compliance of nodes
US11249770B2 (en) * 2020-01-16 2022-02-15 Vmware, Inc. Connected provisioning
US10795796B1 (en) 2020-01-24 2020-10-06 Qumulo, Inc. Predictive performance analysis for file systems
US10860372B1 (en) 2020-01-24 2020-12-08 Qumulo, Inc. Managing throughput fairness and quality of service in file systems
US11151001B2 (en) 2020-01-28 2021-10-19 Qumulo, Inc. Recovery checkpoints for distributed file systems
US10791140B1 (en) 2020-01-29 2020-09-29 BitSight Technologies, Inc. Systems and methods for assessing cybersecurity state of entities based on computer network characterization
US10893067B1 (en) 2020-01-31 2021-01-12 BitSight Technologies, Inc. Systems and methods for rapidly generating security ratings
US11893064B2 (en) * 2020-02-05 2024-02-06 EMC IP Holding Company LLC Reliably maintaining strict consistency in cluster wide state of opened files in a distributed file system cluster exposing a global namespace
US10764298B1 (en) 2020-02-26 2020-09-01 BitSight Technologies, Inc. Systems and methods for improving a security profile of an entity based on peer security profiles
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11457057B2 (en) * 2020-03-11 2022-09-27 Microsoft Technology Licensing, Llc Systems and methods for establishing highly secure and resilient persistent communication connections
CN111338829B (zh) * 2020-03-26 2023-09-15 口碑(上海)信息技术有限公司 远程过程调用服务的调用方法及装置
US11829499B2 (en) * 2020-03-26 2023-11-28 Bank Of America Corporation Securing PIN information using obfuscation by applying extra security layer
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system
CN111416874A (zh) * 2020-04-02 2020-07-14 腾讯科技(深圳)有限公司 用于会话重建或共享的方法、装置及系统
US11740918B2 (en) * 2020-04-02 2023-08-29 Vmware, Inc. Method for accessing application logs within virtual machines based on operator-defined criteria
US11294693B2 (en) * 2020-04-14 2022-04-05 Ncr Corporation Virtualized transaction terminal platform
CN113542825B (zh) * 2020-04-20 2022-10-11 华为技术有限公司 投屏显示方法、系统、终端设备和存储介质
US11768809B2 (en) 2020-05-08 2023-09-26 Nutanix, Inc. Managing incremental snapshots for fast leader node bring-up
US11216553B1 (en) 2020-05-14 2022-01-04 Rapid7, Inc. Machine scanning system with distributed credential storage
US11023585B1 (en) 2020-05-27 2021-06-01 BitSight Technologies, Inc. Systems and methods for managing cybersecurity alerts
US11196817B1 (en) * 2020-06-03 2021-12-07 Dell Products L.P. Intelligently managing resource utilization in desktop virtualization environments
US11893199B2 (en) * 2020-06-10 2024-02-06 Microsoft Technology Licensing, Llc Systems and methods for viewing incompatible web pages via remote browser instances
US11611540B2 (en) * 2020-07-01 2023-03-21 Vmware, Inc. Protection of authentication data of a server cluster
US11861388B2 (en) * 2020-07-06 2024-01-02 Frame Platform, Inc. User profile management for non-domain joined instance virtual machines
WO2022011142A1 (en) 2020-07-08 2022-01-13 OneTrust, LLC Systems and methods for targeted data discovery
US11595426B2 (en) * 2020-07-24 2023-02-28 Vmware, Inc. Risk based virtual workspace delivery
WO2022023982A1 (en) * 2020-07-27 2022-02-03 Promethean Limited Computer module plugin conversion systems and related methods
US11444976B2 (en) 2020-07-28 2022-09-13 OneTrust, LLC Systems and methods for automatically blocking the use of tracking tools
WO2022032072A1 (en) 2020-08-06 2022-02-10 OneTrust, LLC Data processing systems and methods for automatically redacting unstructured data from a data subject access request
RU2767710C2 (ru) * 2020-08-24 2022-03-18 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения удаленного управления средством удаленного администрирования с использованием сигнатур
US11012482B1 (en) 2020-08-28 2021-05-18 Tmrw Foundation Ip S. À R.L. Spatially aware multimedia router system and method
US20220070235A1 (en) 2020-08-28 2022-03-03 Tmrw Foundation Ip S.Àr.L. System and method enabling interactions in virtual environments with virtual presence
WO2022060860A1 (en) 2020-09-15 2022-03-24 OneTrust, LLC Data processing systems and methods for detecting tools for the automatic blocking of consent requests
US11474839B2 (en) * 2020-09-15 2022-10-18 Dell Products L.P. Systems and methods for connection broker free remote desktop connections in a virtual desktop environment
US20230334158A1 (en) 2020-09-21 2023-10-19 OneTrust, LLC Data processing systems and methods for automatically detecting target data transfers and target data processing
US11019106B1 (en) 2020-09-22 2021-05-25 Netskope, Inc. Remotely accessed controlled contained environment
US11601474B2 (en) 2020-09-28 2023-03-07 Vmware, Inc. Network virtualization infrastructure with divided user responsibilities
US11775481B2 (en) 2020-09-30 2023-10-03 Qumulo, Inc. User interfaces for managing distributed file systems
CN112232000B (zh) * 2020-10-23 2021-08-10 海光信息技术股份有限公司 跨多个验证域的验证系统、验证方法、验证设备
US20220129295A1 (en) 2020-10-25 2022-04-28 Meta Platforms, Inc. Server-side hosted environment for a cloud gaming system
CN114531385B (zh) * 2020-10-31 2022-12-27 华为技术有限公司 发送报文的方法、装置及系统
WO2022099023A1 (en) 2020-11-06 2022-05-12 OneTrust, LLC Systems and methods for identifying data processing activities based on data discovery results
CN112613691B (zh) * 2020-11-09 2022-07-29 贵州电网有限责任公司 芯片化继电保护通用装置
US11106825B1 (en) 2020-11-10 2021-08-31 Netskope, Inc. Predetermined credential system for remote administrative operating system (OS) authorization and policy control
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11379253B2 (en) 2020-11-30 2022-07-05 International Business Machines Corporation Training chatbots for remote troubleshooting
CN114598664A (zh) * 2020-12-03 2022-06-07 武汉斗鱼鱼乐网络科技有限公司 一种任务执行方法及相关装置
US11122073B1 (en) 2020-12-11 2021-09-14 BitSight Technologies, Inc. Systems and methods for cybersecurity risk mitigation and management
US11876817B2 (en) 2020-12-23 2024-01-16 Varmour Networks, Inc. Modeling queue-based message-oriented middleware relationships in a security system
US11818152B2 (en) 2020-12-23 2023-11-14 Varmour Networks, Inc. Modeling topic-based message-oriented middleware within a security system
US11687528B2 (en) 2021-01-25 2023-06-27 OneTrust, LLC Systems and methods for discovery, classification, and indexing of data in a native computing system
US11157458B1 (en) 2021-01-28 2021-10-26 Qumulo, Inc. Replicating files in distributed file systems using object-based data storage
US11777978B2 (en) 2021-01-29 2023-10-03 Varmour Networks, Inc. Methods and systems for accurately assessing application access risk
US11442906B2 (en) 2021-02-04 2022-09-13 OneTrust, LLC Managing custom attributes for domain objects defined within microservices
WO2022170254A1 (en) 2021-02-08 2022-08-11 OneTrust, LLC Data processing systems and methods for anonymizing data samples in classification analysis
WO2022173912A1 (en) 2021-02-10 2022-08-18 OneTrust, LLC Systems and methods for mitigating risks of third-party computing system functionality integration into a first-party computing system
US11775348B2 (en) 2021-02-17 2023-10-03 OneTrust, LLC Managing custom workflows for domain objects defined within microservices
WO2022178219A1 (en) 2021-02-18 2022-08-25 OneTrust, LLC Selective redaction of media content
US11461241B2 (en) 2021-03-03 2022-10-04 Qumulo, Inc. Storage tier management for file systems
US11645384B2 (en) * 2021-03-03 2023-05-09 Bank Of America Corporation System for electronic data obfuscation and protection using independent destructible data objects
EP4305539A1 (en) 2021-03-08 2024-01-17 OneTrust, LLC Data transfer discovery and analysis systems and related methods
US11132126B1 (en) 2021-03-16 2021-09-28 Qumulo, Inc. Backup services for distributed file systems in cloud computing environments
US11567660B2 (en) 2021-03-16 2023-01-31 Qumulo, Inc. Managing cloud storage for distributed file systems
US11762782B2 (en) * 2021-03-19 2023-09-19 Dell Products, L.P. Caching system and method for a workspace environment
CN113221078B (zh) * 2021-03-25 2024-03-12 贵州大学 一种针对即时通信系统信息截屏外泄的水印追踪方法
US11669361B1 (en) * 2021-04-01 2023-06-06 Ai-Blockchain, Inc. System, method and program product for optimizing computer processing power in cloud computing systems
US11632365B2 (en) * 2021-04-15 2023-04-18 Jpmorgan Chase Bank, N.A. System and method for smart authentication
US11562078B2 (en) 2021-04-16 2023-01-24 OneTrust, LLC Assessing and managing computational risk involved with integrating third party computing functionality within a computing system
US11706209B2 (en) * 2021-04-29 2023-07-18 Delinea Inc. Method and apparatus for securely managing computer process access to network resources through delegated system credentials
WO2022232019A1 (en) * 2021-04-30 2022-11-03 Zebra Technologies Corporation Enhanced device discovery to support multiple clients and high data bandwidth
CN115309479A (zh) * 2021-05-04 2022-11-08 维萨国际服务协会 提供用于执行数据交易的动态端点的计算机实施的方法和系统
US11888956B2 (en) 2021-06-11 2024-01-30 Microsoft Technology Licensing, Llc Paginated data transfer techniques
US11669255B2 (en) 2021-06-30 2023-06-06 Qumulo, Inc. Distributed resource caching by reallocation of storage caching using tokens and agents with non-depleted cache allocations
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US11734316B2 (en) 2021-07-08 2023-08-22 Varmour Networks, Inc. Relationship-based search in a computing environment
US11941421B1 (en) 2021-07-09 2024-03-26 Splunk Inc. Evaluating and scaling a collection of isolated execution environments at a particular geographic location
US20230015697A1 (en) * 2021-07-13 2023-01-19 Citrix Systems, Inc. Application programming interface (api) authorization
US20230023723A1 (en) * 2021-07-26 2023-01-26 Cisco Technology, Inc. Transparent security and policy enforcement for low-code orchestration
US11456923B1 (en) * 2021-07-28 2022-09-27 Hewlett Packard Enterprise Development Lp System and method for facilitating a dynamic policy engine with recursive key selection
US11294604B1 (en) 2021-10-22 2022-04-05 Qumulo, Inc. Serverless disk drives based on cloud storage
US11722560B2 (en) * 2021-10-26 2023-08-08 Vmware, Inc. Reconciling host cluster membership during recovery
US20230134511A1 (en) * 2021-11-01 2023-05-04 Bank Of America Corporation Apparatus and methods for automating password generators
US11354273B1 (en) 2021-11-18 2022-06-07 Qumulo, Inc. Managing usable storage space in distributed file systems
US11922192B2 (en) 2021-12-14 2024-03-05 International Business Machines Corporation Enhancing server virtualization through host sessions
CN115016886B (zh) * 2021-12-31 2023-04-11 荣耀终端有限公司 业务处理方法和装置
US11588702B1 (en) * 2022-01-12 2023-02-21 Ciena Corporation 3D visualization of multi-layer networks including network topology and encapsulation
US20230229413A1 (en) * 2022-01-14 2023-07-20 Dell Products L.P. Intelligent management of software deployment based on code change
US20230269290A1 (en) * 2022-01-20 2023-08-24 Servicenow, Inc. Nested Request-Response Protocol Network Communications
US11656926B1 (en) 2022-01-26 2023-05-23 Bank Of America Corporation Systems and methods for automatically applying configuration changes to computing clusters
US11599508B1 (en) 2022-01-31 2023-03-07 Qumulo, Inc. Integrating distributed file systems with object stores
US20230245503A1 (en) * 2022-02-02 2023-08-03 The Boeing Company Smart digital twin for monitoring a machine
US20230254301A1 (en) * 2022-02-07 2023-08-10 Elasticsearch B.V. Auto-Configuration of Security Features in Distributed System with Minimal User Interaction
US11799971B2 (en) 2022-02-17 2023-10-24 Bank Of America Corporation Systems and methods for session migration between devices
CN114595020B (zh) * 2022-02-25 2023-12-19 深圳盛显科技有限公司 基于钩子技术的分屏显示方法、装置、系统及存储介质
TWI812072B (zh) * 2022-03-16 2023-08-11 緯創資通股份有限公司 視窗排列方法及視窗排列系統
CN114598471A (zh) * 2022-03-18 2022-06-07 北京启明星辰信息安全技术有限公司 一种连接发起主机到控制器的单包授权种子分发方法及装置
CN114726518B (zh) * 2022-03-31 2023-05-26 阿里云计算有限公司 用于云网络系统的通信方法、装置、系统及存储介质
US11620142B1 (en) 2022-06-03 2023-04-04 OneTrust, LLC Generating and customizing user interfaces for demonstrating functions of interactive user environments
US11776507B1 (en) 2022-07-20 2023-10-03 Ivan Svirid Systems and methods for reducing display latency
TWI816510B (zh) * 2022-08-15 2023-09-21 中華電信股份有限公司 軟體組件使用之授權系統、方法及電腦可讀媒介
WO2024065247A1 (en) * 2022-09-28 2024-04-04 Citrix Systems, Inc. On-demand virtual secure session
US11722150B1 (en) 2022-09-28 2023-08-08 Qumulo, Inc. Error resistant write-ahead log
US11729269B1 (en) 2022-10-26 2023-08-15 Qumulo, Inc. Bandwidth management in distributed file systems
CN115543971B (zh) * 2022-11-29 2023-03-31 天津南大通用数据技术股份有限公司 一种mpp数据库实现高可用的方法
CN116074048B (zh) * 2022-12-20 2023-11-14 广州辰创科技发展有限公司 一种高速物联智能网关设备系统
US11934660B1 (en) 2023-11-07 2024-03-19 Qumulo, Inc. Tiered data storage with ephemeral and persistent tiers
US11921677B1 (en) 2023-11-07 2024-03-05 Qumulo, Inc. Sharing namespaces across file system clusters

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463459B1 (en) * 1999-01-22 2002-10-08 Wall Data Incorporated System and method for executing commands associated with specific virtual desktop
US20030014669A1 (en) * 2001-07-10 2003-01-16 Caceres Maximiliano Gerardo Automated computer system security compromise
CN1953391A (zh) * 2005-10-20 2007-04-25 联想(北京)有限公司 计算机管理系统以及计算机管理方法

Family Cites Families (229)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US555385A (en) 1896-02-25 Island
US555414A (en) * 1896-02-25 Heating-stove
US754633A (en) * 1903-04-28 1904-03-15 Lewis Ash Wrench.
US4564903A (en) * 1983-10-05 1986-01-14 International Business Machines Corporation Partitioned multiprocessor programming system
US4779189A (en) 1985-06-28 1988-10-18 International Business Machines Corporation Peripheral subsystem initialization method and apparatus
US5737622A (en) * 1986-04-14 1998-04-07 National Instruments Corporation Method and apparatus for more efficient function synchronization in a data flow program
US5175852A (en) 1987-02-13 1992-12-29 International Business Machines Corporation Distributed file access structure lock
US5202971A (en) * 1987-02-13 1993-04-13 International Business Machines Corporation System for file and record locking between nodes in a distributed data processing environment maintaining one copy of each file lock
US5187790A (en) * 1989-06-29 1993-02-16 Digital Equipment Corporation Server impersonation of client processes in an object based computer operating system
US5129084A (en) * 1989-06-29 1992-07-07 Digital Equipment Corporation Object container transfer system and method in an object based computer operating system
US5297283A (en) * 1989-06-29 1994-03-22 Digital Equipment Corporation Object transferring system and method in an object based computer operating system
US5057996A (en) 1989-06-29 1991-10-15 Digital Equipment Corporation Waitable object creation system and method in an object based computer operating system
CA2041992A1 (en) 1990-05-18 1991-11-19 Yeshayahu Artsy Routing objects on action paths in a distributed computing system
AU639802B2 (en) 1990-08-14 1993-08-05 Oracle International Corporation Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment
US5437033A (en) * 1990-11-16 1995-07-25 Hitachi, Ltd. System for recovery from a virtual machine monitor failure with a continuous guest dispatched to a nonguest mode
US5249290A (en) 1991-02-22 1993-09-28 At&T Bell Laboratories Method of and apparatus for operating a client/server computer network
EP0546682A3 (en) * 1991-12-12 1993-12-08 Ibm Parent class shadowing
US5504677A (en) * 1992-10-15 1996-04-02 Pollin; Robert E. Automated payment system
US5437025A (en) * 1993-01-26 1995-07-25 International Business Machines Corporation System and method for run time configuration of objects in an object oriented computing environment
JP2576762B2 (ja) 1993-06-30 1997-01-29 日本電気株式会社 リング網のノード間情報収集方式
US5794207A (en) 1996-09-04 1998-08-11 Walker Asset Management Limited Partnership Method and apparatus for a cryptographically assisted commercial network system designed to facilitate buyer-driven conditional purchase offers
US5844553A (en) 1993-08-30 1998-12-01 Hewlett-Packard Company Mechanism to control and use window events among applications in concurrent computing
US5555385A (en) 1993-10-27 1996-09-10 International Business Machines Corporation Allocation of address spaces within virtual machine compute system
US5553242A (en) 1993-11-03 1996-09-03 Wang Laboratories, Inc. Client/server connection sharing
US5515508A (en) * 1993-12-17 1996-05-07 Taligent, Inc. Client server system and method of operation including a dynamically configurable protocol stack
US5499343A (en) * 1993-12-17 1996-03-12 Taligent, Inc. Object-oriented networking system with dynamically configurable communication links
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
US5596745A (en) * 1994-05-16 1997-01-21 International Business Machines Corporation System and procedure for concurrent database access by multiple user applications through shared connection processes
US5557346A (en) * 1994-08-11 1996-09-17 Trusted Information Systems, Inc. System and method for key escrow encryption
US5557765A (en) 1994-08-11 1996-09-17 Trusted Information Systems, Inc. System and method for data recovery
US5586312A (en) 1994-10-11 1996-12-17 Unisys Corporation Method and apparatus for using an independent transaction processing application as a service routine
US5555414A (en) 1994-12-14 1996-09-10 International Business Machines Corporation Multiprocessing system including gating of host I/O and external enablement to guest enablement at polling intervals
EP0718784B1 (en) * 1994-12-20 2003-08-27 Sun Microsystems, Inc. Method and system for the retrieval of personalized information
US5557748A (en) 1995-02-03 1996-09-17 Intel Corporation Dynamic network configuration
US6272632B1 (en) 1995-02-21 2001-08-07 Network Associates, Inc. System and method for controlling access to a user secret using a key recovery field
US7272639B1 (en) * 1995-06-07 2007-09-18 Soverain Software Llc Internet server access control and monitoring systems
US5774668A (en) 1995-06-07 1998-06-30 Microsoft Corporation System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing
US5734865A (en) * 1995-06-07 1998-03-31 Bull Hn Information Systems Inc. Virtual local area network well-known port routing mechanism for mult--emulators in an open system environment
US5996026A (en) 1995-09-05 1999-11-30 Hitachi, Ltd. Method and apparatus for connecting i/o channels between sub-channels and devices through virtual machines controlled by a hypervisor using ID and configuration information
US5826027A (en) * 1995-10-11 1998-10-20 Citrix Systems, Inc. Method for supporting an extensible and dynamically bindable protocol stack in a distrubited process system
US5802306A (en) 1995-10-31 1998-09-01 International Business Machines Corporation Supporting multiple client-server sessions from a protocol stack associated with a single physical adapter through use of a plurality of logical adapters
US5729734A (en) * 1995-11-03 1998-03-17 Apple Computer, Inc. File privilege administration apparatus and methods
US5793763A (en) * 1995-11-03 1998-08-11 Cisco Technology, Inc. Security system for network address translation systems
US6437803B1 (en) * 1998-05-29 2002-08-20 Citrix Systems, Inc. System and method for combining local and remote windows into a single desktop environment
US6088515A (en) * 1995-11-13 2000-07-11 Citrix Systems Inc Method and apparatus for making a hypermedium interactive
US6161126A (en) 1995-12-13 2000-12-12 Immersion Corporation Implementing force feedback over the World Wide Web and other computer networks
US5706437A (en) * 1995-12-29 1998-01-06 Mci Communications Corporation System and method for accessing a service on a services network
US5938733A (en) 1996-03-08 1999-08-17 International Business Machines Corporation Object oriented representation of network requests in a client server model
US5764915A (en) * 1996-03-08 1998-06-09 International Business Machines Corporation Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack
US5838910A (en) 1996-03-14 1998-11-17 Domenikos; Steven D. Systems and methods for executing application programs from a memory device linked to a server at an internet site
US6304893B1 (en) 1996-07-01 2001-10-16 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system
US6272556B1 (en) 1996-07-01 2001-08-07 Sun Microsystems, Inc. Object-oriented system, method and article of manufacture for migrating a client-server application (#5)
US5828840A (en) 1996-08-06 1998-10-27 Verifone, Inc. Server for starting client application on client if client is network terminal and initiating client application on server if client is non network terminal
US5979757A (en) * 1996-09-05 1999-11-09 Symbol Technologies, Inc. Method and system for presenting item information using a portable data terminal
US5884046A (en) * 1996-10-23 1999-03-16 Pluris, Inc. Apparatus and method for sharing data and routing messages between a plurality of workstations in a local area network
US5879570A (en) * 1997-01-14 1999-03-09 Seagate Technology, Inc. One piece flexure for a hard disc file head with selective nickel plating
US5983268A (en) 1997-01-14 1999-11-09 Netmind Technologies, Inc. Spreadsheet user-interface for an internet-document change-detection tool
US6026440A (en) * 1997-01-27 2000-02-15 International Business Machines Corporation Web server account manager plug-in for monitoring resources
US5930801A (en) 1997-03-07 1999-07-27 Xerox Corporation Shared-data environment in which each file has independent security properties
US6092147A (en) * 1997-04-15 2000-07-18 Sun Microsystems, Inc. Virtual machine with securely distributed bytecode verification
US6324177B1 (en) 1997-05-02 2001-11-27 Cisco Technology Method and apparatus for managing connections based on a client IP address
US5983190A (en) 1997-05-19 1999-11-09 Microsoft Corporation Client server animation system for managing interactive user interface characters
US6158007A (en) 1997-09-17 2000-12-05 Jahanshah Moreh Security system for event based middleware
US5848410A (en) 1997-10-08 1998-12-08 Hewlett Packard Company System and method for selective and continuous index generation
US5999179A (en) 1997-11-17 1999-12-07 Fujitsu Limited Platform independent computer network management client
US5860068A (en) * 1997-12-04 1999-01-12 Petabyte Corporation Method and system for custom manufacture and delivery of a data product
US6339595B1 (en) * 1997-12-23 2002-01-15 Cisco Technology, Inc. Peer-model support for virtual private networks with potentially overlapping addresses
JP3937548B2 (ja) 1997-12-29 2007-06-27 カシオ計算機株式会社 データアクセス制御装置およびそのプログラム記録媒体
AU3085799A (en) 1998-03-12 1999-09-27 Dmw Worldwide, Inc. Operational system for operating on client defined rules
US6253224B1 (en) * 1998-03-24 2001-06-26 International Business Machines Corporation Method and system for providing a hardware machine function in a protected virtual machine
US6681238B1 (en) * 1998-03-24 2004-01-20 International Business Machines Corporation Method and system for providing a hardware machine function in a protected virtual machine
US6484174B1 (en) 1998-04-20 2002-11-19 Sun Microsystems, Inc. Method and apparatus for session management and user authentication
US6256637B1 (en) * 1998-05-05 2001-07-03 Gemstone Systems, Inc. Transactional virtual machine architecture
US6108712A (en) 1998-05-05 2000-08-22 International Business Machines Corp. Client-server system with central application management and providing export agent capability for retrofitting existing hardware and applications into the system
US6772350B1 (en) 1998-05-15 2004-08-03 E.Piphany, Inc. System and method for controlling access to resources in a distributed environment
US6275942B1 (en) 1998-05-20 2001-08-14 Network Associates, Inc. System, method and computer program product for automatic response to computer system misuse using active response modules
US6157953A (en) 1998-07-28 2000-12-05 Sun Microsystems, Inc. Authentication and access control in a management console program for managing services in a computer network
US6272677B1 (en) * 1998-08-28 2001-08-07 International Business Machines Corporation Method and system for automatic detection and distribution of code version updates
US6516315B1 (en) * 1998-11-05 2003-02-04 Neuvis, Inc. Method for controlling access to information
US6571245B2 (en) * 1998-12-07 2003-05-27 Magically, Inc. Virtual desktop in a computer network
US6550012B1 (en) * 1998-12-11 2003-04-15 Network Associates, Inc. Active firewall system and methodology
US6510466B1 (en) * 1998-12-14 2003-01-21 International Business Machines Corporation Methods, systems and computer program products for centralized management of application programs on a network
US6564327B1 (en) 1998-12-23 2003-05-13 Worldcom, Inc. Method of and system for controlling internet access
US6643690B2 (en) * 1998-12-29 2003-11-04 Citrix Systems, Inc. Apparatus and method for determining a program neighborhood for a client node in a client-server network
US6675196B1 (en) 1999-01-08 2004-01-06 Amazon.Com, Inc. Universal protocol for enabling a device to discover and utilize the services of another device
JP2000215181A (ja) * 1999-01-21 2000-08-04 Fujitsu Ltd ネットワ―クコンピュ―タシステム及び代理コンパイルサ―バ装置
US6345241B1 (en) * 1999-02-19 2002-02-05 International Business Machines Corporation Method and apparatus for simulation of data in a virtual environment using a queued direct input-output device
JP4276698B2 (ja) 1999-04-20 2009-06-10 富士通株式会社 データ通信システムおよび記録媒体
US6519643B1 (en) 1999-04-29 2003-02-11 Attachmate Corporation Method and system for a session allocation manager (“SAM”)
US6966060B1 (en) 1999-07-02 2005-11-15 Microsoft Corporation Method and system for remote client installation
US6691232B1 (en) * 1999-08-05 2004-02-10 Sun Microsystems, Inc. Security architecture with environment sensitive credential sufficiency evaluation
US6915344B1 (en) * 1999-11-30 2005-07-05 Microsoft Corporation Server stress-testing response verification
US7546353B2 (en) * 1999-12-02 2009-06-09 Western Digital Technologies, Inc. Managed peer-to-peer applications, systems and methods for distributed data access and storage
US7340499B1 (en) * 1999-12-03 2008-03-04 Sun Microsystems, Inc. Dynamic embedding of literal object data in supplied instance of information object
US6766457B1 (en) * 1999-12-07 2004-07-20 Unisys Corporation Method for controlling access to a multiplicity of objects using a customizable object-oriented access control hook
US20020065864A1 (en) * 2000-03-03 2002-05-30 Hartsell Neal D. Systems and method for resource tracking in information management environments
US20020174227A1 (en) 2000-03-03 2002-11-21 Hartsell Neal D. Systems and methods for prioritization in information management environments
US20030236837A1 (en) 2000-03-03 2003-12-25 Johnson Scott C. Content delivery system providing accelerate content delivery
US20020059274A1 (en) * 2000-03-03 2002-05-16 Hartsell Neal D. Systems and methods for configuration of information management systems
US20020107990A1 (en) 2000-03-03 2002-08-08 Surgient Networks, Inc. Network connected computing system including network switch
US20020105972A1 (en) 2000-03-03 2002-08-08 Richter Roger K. Interprocess communications within a network node using switch fabric
US20030236919A1 (en) 2000-03-03 2003-12-25 Johnson Scott C. Network connected computing system
US20020133593A1 (en) 2000-03-03 2002-09-19 Johnson Scott C. Systems and methods for the deterministic management of information
US20020049841A1 (en) * 2000-03-03 2002-04-25 Johnson Scott C Systems and methods for providing differentiated service in information management environments
US20020108059A1 (en) 2000-03-03 2002-08-08 Canion Rodney S. Network security accelerator
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
US20020107989A1 (en) 2000-03-03 2002-08-08 Johnson Scott C. Network endpoint system with accelerated data path
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
US20020116452A1 (en) 2000-03-03 2002-08-22 Surgient Networks, Inc. Network connected computing system including storage system
US20030236861A1 (en) 2000-03-03 2003-12-25 Johnson Scott C. Network content delivery system with peer to peer processing components
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
US6738811B1 (en) * 2000-03-31 2004-05-18 Supermicro Computer, Inc. Method and architecture for monitoring the health of servers across data networks
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
US6748436B1 (en) * 2000-05-04 2004-06-08 International Business Machines Corporation System, method and program for management of users, groups, servers and resources in a heterogeneous network environment
US7185192B1 (en) * 2000-07-07 2007-02-27 Emc Corporation Methods and apparatus for controlling access to a resource
US7337217B2 (en) * 2000-07-21 2008-02-26 Samsung Electronics Co., Ltd. Architecture for home network on world wide web
US7065637B1 (en) * 2000-08-24 2006-06-20 Veritas Operating Corporating System for configuration of dynamic computing environments using a visual interface
EP1364296A4 (en) 2000-09-12 2004-09-15 Netmotion Wireless Inc METHOD AND DEVICE FOR PROVIDING MOBILE AND OTHER INTERRUPTED CONDUCTIVITY IN A DATA PROCESSING ENVIRONMENT
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
CA2424568A1 (en) * 2000-10-02 2002-04-11 Learning Tree International Inc. Method and system for hands-on e-learning
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
US7133923B2 (en) 2000-12-11 2006-11-07 Acme Packet, Inc. System and method for assisting in controlling real-time transport protocol flow through multiple networks via screening
US7299276B1 (en) 2000-12-14 2007-11-20 Cisco Technology, Inc. Technique for monitoring health of network device using data format verification
US7451196B1 (en) * 2000-12-15 2008-11-11 Stream Theory, Inc. Method and system for executing a software application in a virtual environment
US20020087668A1 (en) * 2000-12-29 2002-07-04 San Martin Raul S. Automatic upgrade of live network devices
US7043752B2 (en) * 2001-01-12 2006-05-09 Siemens Medical Solutions Health Services Corporation System and user interface supporting concurrent application initiation and interoperability
DE50107821D1 (de) * 2001-01-12 2005-12-01 Siemens Ag Verfahren und Vorrichtung zum rechnergestützten Überwachen eines Telekommunikationsnetzes
US7143437B2 (en) 2001-01-12 2006-11-28 Siemens Medical Solutions Health Services Corporation System and user interface for managing user access to network compatible applications
US6546077B2 (en) * 2001-01-17 2003-04-08 Medtronic Ave, Inc. Miniature X-ray device and method of its manufacture
US7092987B2 (en) * 2001-02-13 2006-08-15 Educational Testing Service Remote computer capabilities querying and certification
US7185364B2 (en) * 2001-03-21 2007-02-27 Oracle International Corporation Access system interface
US8019835B2 (en) 2001-04-20 2011-09-13 Hewlett-Packard Development Company, L.P. Automated provisioning of computing networks using a network database data model
US7028305B2 (en) 2001-05-16 2006-04-11 Softricity, Inc. Operating system abstraction and protection layer
US7640153B2 (en) 2001-06-04 2009-12-29 Hewlett-Packard Development Company, L.P. Networked client-server architecture for transparently transforming and executing applications
WO2002103521A1 (en) * 2001-06-19 2002-12-27 Cable & Wireless Internet Services, Inc. Real-time streaming media measurement system and method
US7536546B2 (en) * 2001-08-28 2009-05-19 Acme Packet, Inc. System and method for providing encryption for rerouting of real time multi-media flows
US7257815B2 (en) * 2001-09-05 2007-08-14 Microsoft Corporation Methods and system of managing concurrent access to multiple resources
US6880002B2 (en) * 2001-09-05 2005-04-12 Surgient, Inc. Virtualized logical server cloud providing non-deterministic allocation of logical attributes of logical servers to physical resources
US7350194B1 (en) * 2001-09-24 2008-03-25 Oracle Corporation Techniques for debugging computer programs involving multiple computing machines
US7330872B2 (en) * 2001-10-02 2008-02-12 Citrix Systems, Inc. Method for distributed program execution with web-based file-type association
US6983370B2 (en) * 2001-11-27 2006-01-03 Motorola, Inc. System for providing continuity between messaging clients and method therefor
KR100429514B1 (ko) * 2001-12-12 2004-05-03 삼성전자주식회사 네트워크관리프로토콜에 있어 정보 보관용관리정보베이스의 데이터베이스 억세스방법 및 시스템
AUPR947701A0 (en) * 2001-12-14 2002-01-24 Activesky, Inc. Digital multimedia publishing system for wireless devices
US7016343B1 (en) * 2001-12-28 2006-03-21 Cisco Technology, Inc. PSTN call routing control features applied to a VoIP
US20040039594A1 (en) * 2002-01-09 2004-02-26 Innerpresence Networks, Inc. Systems and methods for dynamically generating licenses in a rights management system
GB2384874B (en) * 2002-01-31 2005-12-21 Hewlett Packard Co Apparatus for setting access requirements
US7284067B2 (en) 2002-02-20 2007-10-16 Hewlett-Packard Development Company, L.P. Method for integrated load balancing among peer servers
US7287075B2 (en) 2002-02-22 2007-10-23 Bea Systems, Inc. System for monitoring managed server health
US20030172138A1 (en) 2002-03-11 2003-09-11 Mccormack Jonathan I. System and method for managing two or more electronic devices
US7577722B1 (en) * 2002-04-05 2009-08-18 Vmware, Inc. Provisioning of computer systems using virtual machines
US6993686B1 (en) * 2002-04-30 2006-01-31 Cisco Technology, Inc. System health monitoring and recovery
AU2003239385A1 (en) * 2002-05-10 2003-11-11 Richard R. Reisman Method and apparatus for browsing using multiple coordinated device
US7139798B2 (en) 2002-05-17 2006-11-21 Groove Networks, Inc. Method and apparatus for connecting a secure peer-to-peer collaboration system to an external system
US7363363B2 (en) 2002-05-17 2008-04-22 Xds, Inc. System and method for provisioning universal stateless digital and computing services
US7367044B2 (en) 2002-06-14 2008-04-29 Clink Systems, Ltd. System and method for network operation
US7454458B2 (en) 2002-06-24 2008-11-18 Ntt Docomo, Inc. Method and system for application load balancing
EP1388812A1 (en) 2002-07-04 2004-02-11 Ronald E. Dr. Kates Method for training a learning-capable system
US7546372B2 (en) * 2002-07-11 2009-06-09 Ibeam Systems, Inc. System and method for providing to multiple user computers concurrent telephonic access to multiple remote devices
US7519910B2 (en) * 2002-10-10 2009-04-14 International Business Machines Corporation Method for transferring files from one machine to another using adjacent desktop displays in a virtual network
US7249187B2 (en) * 2002-11-27 2007-07-24 Symantec Corporation Enforcement of compliance with network security policies
US7363500B2 (en) * 2002-12-03 2008-04-22 Juniper Networks, Inc. Tunneled authentication protocol for preventing man-in-the-middle attacks
US20060294238A1 (en) * 2002-12-16 2006-12-28 Naik Vijay K Policy-based hierarchical management of shared resources in a grid environment
US7117448B2 (en) * 2002-12-17 2006-10-03 International Business Machines Corporation System and method for determining desktop functionality based on workstation and user roles
US6798755B2 (en) * 2002-12-31 2004-09-28 Motorola, Inc. Apparatus and method for controlling and managing individual directed sessions in a communications system
US7937551B2 (en) 2003-01-21 2011-05-03 Dell Products L.P. Storage systems having differentiated storage pools
US20040181476A1 (en) * 2003-03-13 2004-09-16 Smith William R. Dynamic network resource brokering
US7779405B2 (en) * 2003-03-14 2010-08-17 At&T Intellectual Property I, L.P. Run-time determination of application delivery
WO2004090672A2 (en) * 2003-04-02 2004-10-21 Network Clarity, Inc. Methods and systems for controlling network infrastructure devices
US20050003810A1 (en) * 2003-05-28 2005-01-06 Sun Microsystems, Inc. Method and system for optimizing software program start-up time
US7251732B2 (en) * 2003-06-18 2007-07-31 Microsoft Corporation Password synchronization in a sign-on management system
US8238696B2 (en) * 2003-08-21 2012-08-07 Microsoft Corporation Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system
US8131739B2 (en) * 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
AU2004271525B2 (en) 2003-08-21 2010-01-21 Microsoft Technology Licensing, Llc Systems and methods for providing synchronization services for units of information manageable by a hardware/software interface system
JP2007521533A (ja) 2003-08-21 2007-08-02 マイクロソフト コーポレーション アプリケーションプログラムをアイテムベースのストレージプラットフォームとインターフェースするためのシステムおよび方法
US7529811B2 (en) * 2003-08-21 2009-05-05 Microsoft Corporation Systems and methods for the implementation of a core schema for providing a top-level structure for organizing units of information manageable by a hardware/software interface system
WO2005029313A1 (en) 2003-08-21 2005-03-31 Microsoft Corporation Systems and methods for data modeling in an item-based storage platform
US7353499B2 (en) * 2003-09-25 2008-04-01 Sun Microsystems, Inc. Multiple instruction dispatch tables for application program obfuscation
US20060008256A1 (en) * 2003-10-01 2006-01-12 Khedouri Robert K Audio visual player apparatus and system and method of content distribution using the same
US7594018B2 (en) 2003-10-10 2009-09-22 Citrix Systems, Inc. Methods and apparatus for providing access to persistent application sessions
US7136931B2 (en) 2003-10-20 2006-11-14 Hewlett-Packard Development Company, L.P. Method and system for identifying the health of virtual routers
US7523116B2 (en) * 2003-10-30 2009-04-21 International Business Machines Corporation Selection of optimal execution environment for software applications
US20050125739A1 (en) * 2003-11-20 2005-06-09 Thompson Jeffrey W. Virtual desktop manager system and method
US7430598B2 (en) 2003-11-25 2008-09-30 Microsoft Corporation Systems and methods for health monitor alert management for networked systems
US7827590B2 (en) * 2003-12-10 2010-11-02 Aventail Llc Controlling access to a set of resources in a network
US7356665B2 (en) * 2003-12-17 2008-04-08 International Business Machines Corporation Method and system for machine memory power and availability management in a processing system supporting multiple virtual machines
US20050177635A1 (en) * 2003-12-18 2005-08-11 Roland Schmidt System and method for allocating server resources
US20050198303A1 (en) * 2004-01-02 2005-09-08 Robert Knauerhase Dynamic virtual machine service provider allocation
US20050182834A1 (en) * 2004-01-20 2005-08-18 Black Chuck A. Network and network device health monitoring
US7555772B2 (en) 2004-01-26 2009-06-30 Juniper Networks, Inc. Wireless firewall with tear down messaging
US20050193396A1 (en) 2004-02-27 2005-09-01 Stafford-Fraser James Q. Computer network architecture and method of providing display data
US7720054B2 (en) 2004-03-02 2010-05-18 Cisco Technology, Inc. Router configured for outputting update messages specifying a detected attribute change of a connected active path according to a prescribed routing protocol
US7496847B2 (en) 2004-04-29 2009-02-24 International Business Machines Corporation Displaying a computer resource through a preferred browser
US7574709B2 (en) * 2004-04-30 2009-08-11 Microsoft Corporation VEX-virtual extension framework
US7313735B1 (en) 2004-04-30 2007-12-25 Sun Microsystems, Inc. In-line server health checking
US8972977B2 (en) * 2004-06-30 2015-03-03 Microsoft Technology Licensing, Llc Systems and methods for providing seamless software compatibility using virtual machines
US20060020937A1 (en) * 2004-07-21 2006-01-26 Softricity, Inc. System and method for extraction and creation of application meta-information within a software application repository
JP5021475B2 (ja) 2004-08-03 2012-09-05 マイクロソフト コーポレーション コンテキストポリシー制御によるアプリケーション間の関連付けの制御のためのシステムおよび方法
US7428754B2 (en) * 2004-08-17 2008-09-23 The Mitre Corporation System for secure computing using defense-in-depth architecture
JP4491308B2 (ja) 2004-09-24 2010-06-30 富士通株式会社 ネットワーク監視方法及びその装置
US7143223B2 (en) * 2004-10-14 2006-11-28 International Business Machines Corporation Method, system and program product for emulating an interrupt architecture within a data processing system
US7757231B2 (en) * 2004-12-10 2010-07-13 Intel Corporation System and method to deprivilege components of a virtual machine monitor
US8024568B2 (en) * 2005-01-28 2011-09-20 Citrix Systems, Inc. Method and system for verification of an endpoint security scan
US20060179476A1 (en) 2005-02-09 2006-08-10 International Business Machines Corporation Data security regulatory rule compliance
US7591014B2 (en) 2005-03-04 2009-09-15 Microsoft Corporation Program authentication on environment
US7774830B2 (en) 2005-03-14 2010-08-10 Microsoft Corporation Access control policy engine controlling access to resource based on any of multiple received types of security tokens
US7987306B2 (en) 2005-04-04 2011-07-26 Oracle America, Inc. Hiding system latencies in a throughput networking system
US7533189B2 (en) * 2005-06-21 2009-05-12 Microsoft Corporation Enabling a graphical window modification command to be applied to a remotely generated graphical window
US8375386B2 (en) * 2005-06-29 2013-02-12 Microsoft Corporation Failure management for a virtualized computing environment
US7681200B2 (en) * 2005-07-22 2010-03-16 Microsoft Corporation Secure hardware desktop buffer composition
US20070074071A1 (en) * 2005-09-27 2007-03-29 Michael Rothman Processor thermal management
US20070083620A1 (en) * 2005-10-07 2007-04-12 Pedersen Bradley J Methods for selecting between a predetermined number of execution methods for an application program
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
US7779034B2 (en) * 2005-10-07 2010-08-17 Citrix Systems, Inc. Method and system for accessing a remote file in a directory structure associated with an application program executing locally
US20070083610A1 (en) * 2005-10-07 2007-04-12 Treder Terry N Method and a system for accessing a plurality of files comprising an application program
AU2006303992A1 (en) * 2005-10-11 2007-04-26 Citrix Systems, Inc. Systems and methods for facilitating distributed authentication
US7899864B2 (en) * 2005-11-01 2011-03-01 Microsoft Corporation Multi-user terminal services accelerator
US7836303B2 (en) * 2005-12-09 2010-11-16 University Of Washington Web browser operating system
US20070150595A1 (en) * 2005-12-23 2007-06-28 Microsoft Corporation Identifying information services and schedule times to implement load management
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
US7606868B1 (en) * 2006-03-30 2009-10-20 Wmware, Inc. Universal file access architecture for a heterogeneous computing environment
US7571349B2 (en) * 2006-08-18 2009-08-04 Microsoft Corporation Configuration replication for system recovery and migration
US7597018B2 (en) 2007-04-11 2009-10-06 Rosemount Aerospace Inc. Pneumatic line isolation and heating for air data probes
JP4882845B2 (ja) 2007-04-19 2012-02-22 株式会社日立製作所 仮想計算機システム
JP5607531B2 (ja) * 2007-10-10 2014-10-15 スリーエム イノベイティブ プロパティズ カンパニー 基材をマスキング又は保護する物品及び方法
US8220029B2 (en) * 2007-11-13 2012-07-10 Samsung Electronics Co., Ltd. Method and system for enforcing trusted computing policies in a hypervisor security module architecture
US7865785B2 (en) 2008-02-13 2011-01-04 Honeywell International Inc. System and method for improving communications for systems having communications protocol enabled devices
US8046550B2 (en) * 2008-07-14 2011-10-25 Quest Software, Inc. Systems and methods for performing backup operations of virtual machine files

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6463459B1 (en) * 1999-01-22 2002-10-08 Wall Data Incorporated System and method for executing commands associated with specific virtual desktop
US20030014669A1 (en) * 2001-07-10 2003-01-16 Caceres Maximiliano Gerardo Automated computer system security compromise
CN1953391A (zh) * 2005-10-20 2007-04-25 联想(北京)有限公司 计算机管理系统以及计算机管理方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103685055A (zh) * 2013-12-25 2014-03-26 深圳供电局有限公司 电力系统跨区隔离数据均衡传输方法及跨区隔离器

Also Published As

Publication number Publication date
US20070180450A1 (en) 2007-08-02
US8355407B2 (en) 2013-01-15
US20070180449A1 (en) 2007-08-02
US7949677B2 (en) 2011-05-24
US20070180447A1 (en) 2007-08-02
US7954150B2 (en) 2011-05-31
US20070180448A1 (en) 2007-08-02
US20070186212A1 (en) 2007-08-09
US20070192329A1 (en) 2007-08-16
US20070180493A1 (en) 2007-08-02
US8010679B2 (en) 2011-08-30
US20070174410A1 (en) 2007-07-26
US20070171921A1 (en) 2007-07-26
US20070198656A1 (en) 2007-08-23
US8051180B2 (en) 2011-11-01
US8341270B2 (en) 2012-12-25
CN101410803A (zh) 2009-04-15
US7870153B2 (en) 2011-01-11
US20070179955A1 (en) 2007-08-02
US8341732B2 (en) 2012-12-25
US20070174429A1 (en) 2007-07-26
US8117314B2 (en) 2012-02-14

Similar Documents

Publication Publication Date Title
CN101410803B (zh) 用于提供对计算环境的访问的方法和系统
EP2375328A2 (en) Methods and Systems for Providing Access to a Computing Environment
CN102460389B (zh) 用于将应用启动到现有的隔离环境中的系统和方法
EP2369479A2 (en) Methods and systems for providing access to a computing environment
US20080301819A1 (en) Mobility device
CN102984159B (zh) 基于终端访问行为的安全接入逻辑控制方法及平台服务器
WO2007100942A2 (en) Methods and systems for providing access to a computing environment provided by a virtual machine executing in a hypervisor executing in a terminal services session
US20080244265A1 (en) Mobility device management server
CN102656562A (zh) 用于选择桌面执行位置的方法和系统
WO2005036305A2 (en) Mobility device
Pike et al. The Styx® architecture for distributed systems
Sehgal et al. Cloud computing with security
US11818183B2 (en) System and method for workspace sharing
Sehgal et al. Foundations of cloud computing and information security
Sehgal et al. Foundations of Cloud Computing
Sehgal et al. Foundations of Cloud Computing and Information Security
NAGY et al. Mobilizing Business Processes Security Issues and Advantages of Using Sap Mobile Infrastructure In The Development of Mobile Applications

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant