CN101689165A - 在虚拟环境中运行附加组件 - Google Patents

在虚拟环境中运行附加组件 Download PDF

Info

Publication number
CN101689165A
CN101689165A CN200880022209A CN200880022209A CN101689165A CN 101689165 A CN101689165 A CN 101689165A CN 200880022209 A CN200880022209 A CN 200880022209A CN 200880022209 A CN200880022209 A CN 200880022209A CN 101689165 A CN101689165 A CN 101689165A
Authority
CN
China
Prior art keywords
virtual environment
add
component
assemble
server
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN200880022209A
Other languages
English (en)
Other versions
CN101689165B (zh
Inventor
N·A·雅格布森
J·M·希恩
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN101689165A publication Critical patent/CN101689165A/zh
Application granted granted Critical
Publication of CN101689165B publication Critical patent/CN101689165B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • 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
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

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

Abstract

描述了用于在虚拟环境中运行附加组件的系统和方法。可以通过在主操作系统中的组件代理和在虚拟环境中运行的服务器进程之间建立通信链路来在该虚拟环境中执行附加组件。该服务器进程基于转发来自操作系统的命令的组件代理所转发的命令来执行附加组件。

Description

在虚拟环境中运行附加组件
背景
在应用程序虚拟化中,主操作系统在计算设备上创建模拟计算机环境和虚拟环境,以执行虚拟应用程序而无需在本地安装虚拟应用程序且无需改变主操作系统。虽然虚拟应用程序使用本地硬件资源本地地执行,并且可以与主操作系统交互,但是可以向主操作系统隐藏虚拟环境的各方面(例如注册表项、文件等)。
这是可能的,因为虚拟环境包含在计算设备上执行虚拟应用程序所需的各组件,诸如注册表项、文件、环境变量、用户界面元素、以及全局对象等。虚拟环境中的这些组件对于主操作系统而言是不可见的。诸如外壳扩展、插件等与虚拟应用程序相关联的附加组件对于主操作系统而言也是不可见的,因为主操作系统不能访问附加组件的注册表项或文件。结果,主操作系统一直不知道虚拟环境中可用的附加组件,并且不能使用虚拟环境中可用的附加组件所提供的功能。
概述
提供本概述以便以介绍与在虚拟环境中运行应用程序的附加组件相关的概念。这些概念在以下详细描述中进一步描述。本概述并不旨在标识出所要求保护的主题的必要特征,也不旨在用于确定所要求保护的主题的范围。
在一个实施例中,包括在操作系统中的组件代理与包括一个或多个虚拟应用程序的虚拟环境通信。附加组件与该一个或多个虚拟应用程序相关联,并且组件服务器进程接收由该组件代理转发的命令并且执行附加组件。
附图简述
参考附图描述了详细描述。在附图中,参考标号的最左位标识了该参考标号首次出现在其中的附图。在所有附图中使用相同的标号来指示相同的特征和组件。
图1示出了在一个实施例中用于在虚拟环境中运行附加组件的示例性系统。
图2示出了在另一实施例中用于在虚拟环境中运行附加组件的示例性系统。
图3示出了用于在虚拟环境中运行附加组件的示例性过程流程图。
图4示出了示例性的基于计算的设备。
详细描述
以下发明描述了用于在虚拟环境中运行附加组件的系统和方法。附加组件可以通过在主操作系统(即操作系统)和在虚拟环境中运行的服务器进程之间建立通信链路来在虚拟环境中执行。操作系统包括与在服务器进程中执行的附加组件进行通信的组件代理。所描述的系统和方法还允许通过网络按需访问和使用虚拟化的附加组件。
虽然所描述的用于在虚拟环境中运行附加组件的系统和方法的各方面可以在任何数量的不同计算系统、环境、和/或配置中实现,但是在以下示例性系统体系结构的上下文中描述各实施例。
图1示出了用于在虚拟环境中运行附加组件的示例性系统100。系统100可以是诸如个人计算机等独立计算设备的一部分或被包括在其中,或者可以作为若干计算设备的一部分来包括。附加组件可以是外壳(shell)扩展、插件、或可以向现有应用程序提供附加功能的任何其他类似的实体。为此,系统100包括计算设备上的操作系统102和虚拟环境104。在一个实现中,系统100可以在单个计算设备上实现,以便于在该计算设备上运行的一个或多个虚拟环境之间的资源共享。计算设备可以被实现为诸如台式计算设备、膝上型计算机、移动计算设备等任何已知的计算设备。
此外,操作系统102包括与虚拟环境104通信的组件代理106。虚拟环境104包括组件服务器进程108和诸如虚拟应用程序110等一个或多个虚拟应用程序。组件服务器进程108包括与虚拟应用程序相关联的一个或多个附加组件,诸如与虚拟应用程序110相关联的附加组件112。
为了访问由驻留在虚拟环境104中的附加组件112所提供的功能,组件代理106被配置成与组件服务器进程108通信以便执行附加组件112。为此,组件代理106可以使用诸如远程过程调用114等应用程序接口(API)来与组件服务器进程108通信。
在示例性操作中,对于虚拟环境104中可用的每个附加组件112,向操作系统102注册组件代理106。注册可以例如在计算设备上模拟虚拟环境104时执行。为了访问附加组件112,操作系统102调用对应的组件代理106。如果操作系统102首次调用组件代理106,则组件代理106在虚拟环境104中启动组件服务器进程108,并且使用远程过程调用114与组件服务器进程108通信。远程进程调用114允许在虚拟环境(例如虚拟环境104)中执行来自组件代理106的过程或命令,而无需为该交互提供显式的代码细节。
一个示例实施包括其中有多于一个虚拟环境在系统100中运行的情况,组件代理106检查在其中启动组件服务器进程108的虚拟环境(例如虚拟环境104)是否是正确的虚拟环境。为此,组件代理106确定对应的附加组件112在虚拟环境104中是否可用。一旦标识了正确的虚拟环境(例如虚拟环境104),则组件代理106在所标识的虚拟环境(例如虚拟环境104)中启动组件服务器进程108。在另一示例性实施例中,组件代理106使用足够的信息来注册以便直接连接到在适当的虚拟环境中运行的服务器。如果服务器没有在正确的虚拟环境中运行,则组件代理可以检测到这一点并且启动服务器。在又一示例性实施例中,组件代理106能够访问每个虚拟环境的清单,以确定在不启动虚拟环境内的服务器并且不与该服务器通信的情况下支持什么组件。
组件服务器进程108接收由组件代理106转发的命令并且相应地执行附加组件112。该命令可以包括用于在虚拟环境104中实现共同界面的指令,例如更新上下文菜单、共享菜单等。
如果操作系统102先前调用了组件代理106,并启动了组件服务器进程108,则组件服务器进程108直接将所有命令转发给附加组件112以供进一步的处理。例如,操作系统102可以是来自
Figure G2008800222090D00031
公司的
Figure G2008800222090D00032
操作系统,而附加组件112可以是在虚拟环境104中可用的操作系统外壳扩展。
Figure G2008800222090D00034
操作系统通过外壳扩展代理(例如组件代理106)与虚拟环境014交互,以便在服务器进程(例如组件服务器进程108)中创建外壳扩展(例如附加组件112)的对应实例。一旦创建了外壳扩展的实例,则
Figure G2008800222090D00035
操作系统通过经由外壳扩展代理(例如组件代理106)将所有命令转发给服务器进程(例如组件服务器进程108)、服务器进程进而将命令转发给外壳扩展来访问外壳扩展。
可以理解,当有若干虚拟环境在计算设备上运行时,可以使用类似的方法来运行附加组件。此外,每个虚拟环境可以具有在其上运行的若干虚拟应用程序以及附加组件。此外,可以有同一应用程序和附加组件的多个版本在计算设备上的不同虚拟环境中运行。
图2示出了在另一实施例中用于在虚拟环境中运行附加组件的示例性系统200。系统200可以被实现为诸如个人计算机等独立计算设备或在包括多个计算设备的服务器-客户机体系结构中实现。附加组件可以是外壳扩展、插件、或可以向现有应用程序提供附加功能的任何相似的实体。为此,系统200包括客户机设备上的操作系统202、虚拟环境204、和服务器组件206。在一示例中,虚拟环境204可以由主存在服务器组件206上的应用程序来模拟。
操作系统202包括与虚拟环境204通信的组件代理208。虚拟环境204包括组件服务器进程210、附加组件212、和诸如虚拟应用程序214等一个或多个虚拟化的应用程序。
此外,其他附加组件216可以被主存在服务器组件206上或主存在虚拟环境204中。同样,诸如在应用程序安装和执行期间其他附加组件216如何与操作系统(例如操作系统202)进行交互等信息可以被主存在服务器组件206上或主存在虚拟环境204中。服务器组件206也可以保存注册表设置的日志;文件;以及其他应用程序和操作系统相关变量。
操作系统202通过经由远程过程调用218通信来访问虚拟环境204中的附加组件212。为此,操作系统202可以使用各种引擎和技术来在组件代理208和虚拟环境204之间建立通信链路。
如参考图1所解释的,对于可以在虚拟环境204中执行的每个附加组件212,在操作系统202中注册相对应的组件代理208。为了使用由附加组件212所提供的功能,操作系统202调用相对应的组件代理208。如果操作系统202首次调用组件代理208,则组件代理208在虚拟环境204中启动组件服务器进程210并且使用远程过程调用218来与该组件服务器进程通信。否则,组件代理208直接将所有命令转发给组件服务器进程210以供进一步处理。
在存在多个虚拟环境的情况下,组件代理208检查组件服务器进程210是否在正确的虚拟环境,例如虚拟环境204中启动。为此,组件代理208确定虚拟环境是否包括相对应的附加组件212。组件服务器进程210在虚拟环境204中执行附加组件212,并且将来自组件代理208的所有命令转发给附加组件212。
此外,如果附加组件212不与由操作系统202所调用的组件代理相对应,则组件代理208可以在服务器组件206上的其它附加组件216中和/或在系统200可以连接或联网到的其他虚拟环境和系统中查找相对应的附加组件。
可以理解,上述实现也可以被扩展到在其他场景中在虚拟环境中运行附加组件。例如,在计算机网络上可以存在若干虚拟环境的场景中,其可以具有若干虚拟应用程序和在其上运行的相关联的附加组件。可以有同一应用程序和附加组件的多个版本在网络上的不同服务器设备中运行。此外,同一虚拟应用程序的具有不同配置的实例可以在同一计算设备上运行。
在另一示例性场景中,客户机设备可以访问与在实现服务器-客户机体系结构的网络上的服务器或客户机设备中所主存的虚拟应用程序相关联的附加组件。例如,客户机设备的操作系统202可以调用对应于包括在驻留在服务器组件206上的其它附加组件216中的附加组件的组件代理,其中服务器组件206驻留在分开的计算设备中。在这种情况下,操作系统202建立与查找服务器组件206中的附加组件的虚拟环境204的通信链路。如果该附加组件位于其他附加组件216中,则客户机设备可以经由虚拟环境204访问该附加组件216,而无需将该附加组件下载到客户机设备自身中。
在另一实现中,运行多个虚拟环境的客户机计算设备还可以访问来自存在于该客户机计算设备所连接到的网络上的其它虚拟环境的附加组件,以便于共享附加组件。
图3是示出在虚拟环境中运行附加组件的实现的示例性过程图300。过程图300被示为逻辑流程图中的表示可以用硬件、软件、固件或其组合实现的操作序列的步骤集合。描述该方法的次序并非旨在被解释为限制,并且任何数目的所描述的方法框可以按任何次序组合以实现该方法或替换方法。此外,可以从该方法中删除各个框而不背离本文中所描述的主题的精神和范围。
在软件上下文中,各框可以表示当由一个或多个处理器执行时完成所述操作的计算机指令。出于讨论的目的,参考图1中所示的系统100和图2中所示的系统200来描述过程300。
在框302处,操作系统调用对应于附加组件的组件代理以便使用该附加组件的功能。例如,操作系统102调用组件代理106。在另一示例中,操作系统202调用组件代理208。
在框304处,组件代理使用API来与虚拟环境相关联。例如,组件代理106可以使用RPC 114来与系统100中的虚拟环境104相关联;或者组件代理208可以使用RPC 218来与虚拟环境204相关联。
在框306处,组件代理确定相关联的虚拟环境是否是正确的虚拟环境。为此,组件代理检查虚拟环境是否包括操作系统所请求的相对应的附加组件。如果确定虚拟环境是正确的虚拟环境(即沿着自框306的“是”分支),则过程流程控制继续前进到框308。否则(即沿着自框306的“否”分支),过程流程控制继续前进到框304以便建立与另一虚拟环境的关联,直到找到正确的虚拟环境。例如,如果在虚拟环境104中未检测到附加组件112,则组件代理106在其他虚拟环境中查找附加组件112。在另一实现中,在系统200上遵循确定正确的虚拟环境的同一过程。
在框308处,一旦找到正确的虚拟环境,则组件代理在正确的虚拟环境中启动组件服务器进程。例如,组件代理106在确认附加组件112主存在虚拟环境104中之后,在虚拟环境104中启动组件服务器进程108。在另一实现中,在系统200上,组件代理208在虚拟环境204中启动组件服务器进程210。
对于某些实现,组件代理将使用足够的信息来注册以直接连接到在适当的虚拟环境中运行的服务器。如果服务器没有在正确的虚拟环境中运行,则组件代理可以检测到这一点并且启动该服务器。在其他实现中,组件代理能够访问每个虚拟环境的清单,以确定在不启动虚拟环境内的服务器并且不与该服务器通信情况下支持什么组件。
在框310处,在操作系统中的组件代理和虚拟环境中的组件服务器进程之间建立(即设立)通信链路,这样使得可以在操作系统和虚拟环境之间传递数据和命令。该通信链路可以使用RPC或任何其他公知技术来建立。例如,操作系统102可以在激活组件服务器进程210之后,建立通信链路以便与虚拟环境104交换数据和命令。在另一实现中,可以在系统200上使用相同的方法来建立通信链路。
在框312处,组件服务器进程在虚拟环境中创建对应于组件代理的附加组件的实例。此外,可以在一个或多个虚拟环境上创建附加组件的多于一个的实例。例如,组件服务器进程108响应于从组件代理106处接收到的通信来在虚拟环境104中创建附加组件112的实例。在另一实现中,可以使用针对系统100所描述的同一方法来在系统200中创建附加组件的实例。
在框314处,一旦创建了附加组件,则组件代理将来自操作系统的命令转发给组件服务器进程,组件服务器进程进而将这些命令转发给附加组件。由此,操作系统可以访问附加组件并且可以由附加组件来扩展。例如,一旦操作系统102在虚拟环境104中定位了附加组件112,则操作系统102可以使用由附加组件112所提供的功能。
示例性计算机环境
图4示出了可用于实现本文中所描述的技术或者可以整体或部分地代表本文中所描述的元素的示例性通用计算机环境400。例如,通用计算机环境可用于图1的系统100和图2的系统200,并且实现图3的过程300中所描述的步骤。
计算机环境400仅是计算环境的一个示例,而非旨在对计算机和网络体系结构的使用范围或功能提出任何限制。计算机环境400也不应被解释成对于在示例计算机环境400中所示出的任一组件或其组合有任何依赖或要求。
计算机环境400包括计算机402形式的通用的基于计算的设备。计算机402可以例如是台式计算机、手持式计算机、笔记本或膝上型计算机、服务器计算机、游戏控制台等。计算机402的组件可以包括但不限于一个或多个处理器或处理单元404、系统存储器406、和将包括处理器404在内的各系统组件耦合到系统存储器406的系统总线408。
系统总线408表示任何若干种类型的总线结构中的一个或多个,包括存储器总线或存储器控制器、外围总线、加速图形端口、和使用各种总线体系结构中的任意一种的处理器或局部总线。作为示例,这样的体系结构可以包括工业标准体系结构(ISA)总线、微通道体系结构(MSA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也称为夹层(Mezzanine)总线)。
计算机402通常包括各种计算机可读介质。这种介质可以是能由计算机402访问的任何可用介质,而且包含易失性和非易失性介质、可移动和不可移动介质。
系统存储器406包括诸如随机存取存储器(RAM)410等易失性形式的计算机存储介质,和/或诸如只读存储器(ROM)412等非易失性存储器形式的计算机存储介质。基本输入/输出系统(BIOS)414包含有助于诸如启动时在计算机410中的元件之间传递信息的基本例程,它通常被存储在ROM 412中。RAM410通常包含处理单元404可以立即访问和/或目前正在操作的数据和/或程序模块。
计算机402还可以包括其它可移动/不可移动、易失性/非易失性计算机存储介质。作为示例,图4示出了对不可移动、非易失性磁介质(未示出)进行读写的硬盘驱动器416,对可移动、非易失性磁盘420(例如“软盘”)进行读写的磁盘驱动器418,以及对诸如CD-ROM、DVD-ROM或其它光学介质等可移动、非易失性光盘424进行读写的光盘驱动器422。硬盘驱动器416、磁盘驱动器418和光盘驱动器422各自通过一个或多个数据介质接口426连接到系统总线408。另选地,硬盘驱动器416、磁盘驱动器418和光盘驱动器422可以通过一个或多个接口(未示出)连接到系统总线408
盘驱动器及其相关联的计算机可读介质向计算机402提供对计算机可读指令、数据结构、程序模块和其它数据的非易失性存储。尽管该示例示出了硬盘416、可移动磁盘420和可移动光盘424,然而可以理解,可储存可由计算机访问的数据的其它类型的计算机可读介质也可用来实现过示例性计算系统和环境,这些介质诸如磁带盒或其它磁存储设备、闪存卡、CD-ROM、数字多功能盘(DVD)或其它光存储、随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)等。
多个程序模块可储存在硬盘416、磁盘420、光盘424、ROM 412和/或RAM410中,作为示例,包括操作系统427、一个或多个应用程序428、其它程序模块430以及程序数据432。这些操作系统427、一个或多个应用程序428、其它程序模块430和程序数据432(或其某一组合)中的每一个可实现支持分布式文件系统的所有或部分常驻组件。
用户可以通过诸如键盘434和定点设备436(如,“鼠标”)等输入设备向计算机402输入命令和信息。其它输入设备438(未具体示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通过耦合至系统总线408的输入/输出接口440连接到处理单元404,但也可以通过其它接口和总线结构连接,如并行端口、游戏端口、或通用串行总线(USB)。
监视器442或其它类型的显示设备也通过接口,如视频适配器444连接到系统总线408。除监视器442之外,其它输出外围设备可包括诸如扬声器(未示出)和打印机446等组件,它们可通过输入/输出接口440连接到计算机402。
计算机402可以使用到一个或多个远程计算机,如远程基于计算的设备448的逻辑连接在网络化环境中操作。作为示例,远程基于计算的设备448可以是个人计算机、便携式计算机、服务器、路由器、网络计算机、对等设备或其它常见的网络节点等等。远程基于计算的设备448被示为可包括此处相对于计算机402所描述的许多或所有元件和特征的便携式计算机。
计算机402和远程计算机448之间的逻辑连接被描述为局域网(LAN)440和通用广域网(WAN)452。这类网络环境常见于办公室、企业范围计算机网络、内联网以及因特网。
当在LAN网络环境中实现时,计算机402通过网络接口或适配器444连接至局域网440。当在WAN网络环境中使用时,计算机402通常包括调制解调器446或用于通过广域网442建立通信的其它装置。调制解调器446可以对计算机102是内置或外置的,它可通过输入/输出接口440或其它适当的机制连接至系统总线408。可以理解,所示出的网络连接是示例性的,可以使用在计算机402和448建立通信链路的其它手段。
在诸如对计算环境400示出的网络化环境中,相对于计算机402描述的程序模块或其部分可储存在远程存储器存储设备中。作为示例,远程应用程序驻留在远程计算机448的存储器设备中。出于说明的目的,应用程序和诸如操作系统等其它可执行程序组件在此处被示出为离散的框,但可以认识到,这些程序和组件在不同的时刻驻留在基于计算的设备402的不同存储组件中,并由计算机的(诸)数据处理器来执行。
各个模块和技术可以在诸如程序模块等由一个或多个计算机或其它设备执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可以在各实施例中按需进行组合或分布。
这些模块和技术的实现可以被存储在某种形式的计算机可读介质中或者通过某种形式的计算机可读介质传输。计算机可读介质可以是可由计算机访问的任何可用介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任何方法或技术来实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储、磁带盒、磁带、磁盘存储或其它磁存储设备,或者可用于存储所需信息并且可由计算设备访问的任何其它介质。
另选地,框架的各部分可以用硬件或硬件、软件和/或固件的组合来实现。例如可以设计或编程一个或多个专用集成电路(ASIC)或可编程逻辑器件(PLD)来实现该框架的一个或多个部分。
结论
尽管用对结构特征和/或方法专用的语言描述了用于在虚拟环境中运行附加组件的各实施例,但可以理解,所附权利要求书的主题不必限于所描述的具体特征或动作。相反,这些具体特征和动作是作为用于在虚拟环境中运行附加组件的示例性实现来公开的。

Claims (20)

1.一种在一个或多个计算设备上实现的系统(200),包括:
操作系统(202);
包括在所述操作系统中的组件代理(208);
与所述组件代理通信的虚拟环境(204);
所述虚拟环境中的组件服务器进程(210);
所述虚拟环境中的一个或多个虚拟应用程序(214);以及
与所述一个或多个虚拟应用程序(214)相关联的一个或多个附加组件(212),其中所述组件服务器进程接收由所述组件代理转发的命令并且执行所述附加组件。
2.如权利要求1所述的系统,其特征在于,针对所述附加组件中的一个或多个向所述操作系统注册所述组件代理。
3.如权利要求2所述的系统,其特征在于,所述注册是在所述一个或多个计算设备上模拟所述虚拟环境时执行的。
4.如权利要求1所述的系统,其特征在于,所述操作系统调用所述组件代理来访问所述一个或多个附加组件。
5.如权利要求1所述的系统,其特征在于,所述组件代理检查在其中启动所述组件服务器进程的正确的虚拟环境,并且如果所述组件代理是使用足够的信息来注册的,则连接到在适当的虚拟环境中运行的服务器。
6.如权利要求1所述的系统,其特征在于,所述组件代理访问虚拟环境的清单以确定在不启动服务器的情况下所述组件代理所支持的组件。
7.如权利要求1所述的系统,其特征在于,所述一个或多个附加组件包括外壳扩展。
8.一种具有计算机可执行组件的计算机可读介质,所述计算机可执行组件包括:
组件代理(208)
与所述组件代理通信的虚拟环境(204);
包括在所述虚拟环境中的组件服务器进程(210);以及
所述组件服务器进程中的附加组件(212),其中所述附件向应用程序提供功能。
9.如权利要求8所述的计算机可读介质,其特征在于,所述虚拟环境是由服务器组件上的应用程序来模拟的。
10.如权利要求8所述的计算机可读介质,其特征在于,还包括含有关于所述附加组件与操作系统的交互的信息的服务器组件。
11.如权利要求10所述的计算机可读介质,其特征在于,所述服务器组件将以下中的一个或多个记入日志:注册表设置、文件、应用程序变量、和操作系统变量。
12.如权利要求8所述的计算机可读介质,其特征在于,还包括驻留在服务器组件上的应用程序的虚拟应用程序。
13.一种在虚拟环境中运行附加组件的方法(300),包括:
调用(302)对应于附加组件的组件代理,其中所述附加组件提供功能;
与所述虚拟环境相关联(304);
确定(306)所述虚拟环境是否是正确的虚拟环境;以及
如果确定所述虚拟环境是正确的,则启动(308)组件服务器进程。
14.如权利要求13所述的方法,其特征在于,在进行所述关联时使用应用程序接口。
15.如权利要求13所述的方法,其特征在于,所述确定包括检查所述虚拟环境是否包括所述对应的附加组件。
16.如权利要求13所述的方法,其特征在于,所述启动是在确认所述附加组件主存在所述虚拟环境中之后执行的。
17.如权利要求13所述的方法,其特征在于,还包括如果所述确定发现所述虚拟环境是不正确的,则查找正确的虚拟环境,以及如果所述组件代理是使用足够的信息注册的,则连接到在适当的虚拟环境中的运行的服务器。
18.如权利要求13所述的方法,其特征在于,所述组件代理访问虚拟环境的清单以确定在不启动服务器的情况下所述组件代理所支持的组件。
19.如权利要求13所述的方法,其特征在于,还包括在所述虚拟环境中创建对应于组件代理的所述附加组件的实例。
20.如权利要求15所述的方法,其特征在于,还包括从所述组件代理将命令转发给所述组件服务器进程,进而转发给所述附加组件。
CN2008800222090A 2007-06-27 2008-06-16 在虚拟环境中运行附加组件 Active CN101689165B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/769,022 US8612972B2 (en) 2007-06-27 2007-06-27 Running add-on components in virtual environments
US11/769,022 2007-06-27
PCT/US2008/067141 WO2009002751A2 (en) 2007-06-27 2008-06-16 Running add-on components in virtual environments

Publications (2)

Publication Number Publication Date
CN101689165A true CN101689165A (zh) 2010-03-31
CN101689165B CN101689165B (zh) 2013-07-24

Family

ID=40162388

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008800222090A Active CN101689165B (zh) 2007-06-27 2008-06-16 在虚拟环境中运行附加组件

Country Status (6)

Country Link
US (3) US8612972B2 (zh)
EP (1) EP2168050B1 (zh)
JP (1) JP5328054B2 (zh)
CN (1) CN101689165B (zh)
ES (1) ES2600478T3 (zh)
WO (1) WO2009002751A2 (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567078A (zh) * 2011-12-28 2012-07-11 成都市华为赛门铁克科技有限公司 一种注册表虚拟化方法及装置
CN106020935A (zh) * 2016-05-26 2016-10-12 国云科技股份有限公司 一种跨版本运行openstack组件服务的方法
CN106709327A (zh) * 2016-12-07 2017-05-24 深圳市君格科技有限公司 一种应用隐藏的方法及其移动终端
CN110096370A (zh) * 2012-12-14 2019-08-06 微软技术许可有限责任公司 用于虚拟环境的控制反转组件服务模型

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8612972B2 (en) 2007-06-27 2013-12-17 Microsoft Corporation Running add-on components in virtual environments
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
RU2555357C2 (ru) 2008-04-08 2015-07-10 Мерк Патент Гмбх Композиции, содержащие циклические пептиды, и способы их применения
US8789071B2 (en) * 2008-10-09 2014-07-22 International Business Machines Corporation Integrated extension framework
US8924963B2 (en) 2009-03-31 2014-12-30 Microsoft Corporation In-process intermediary to create virtual processes
EP2510456B1 (en) 2009-12-09 2017-10-18 Citrix Systems, Inc. Method and system for displaying, on a first machine, data associated with a drive of a second machine, without mapping the drive
US20120290913A1 (en) * 2009-12-14 2012-11-15 Yosef Benraz Computerized tool, system and method for remote access to a computer program
US10039978B2 (en) * 2010-09-13 2018-08-07 Sony Interactive Entertainment America Llc Add-on management systems
US9811528B2 (en) 2010-12-09 2017-11-07 Yosef Benraz Systems and methods for providing continuing access to a remote computer program
AU2012212356B2 (en) 2011-02-01 2016-10-06 Timeplay Inc. Systems and methods for interactive experiences and controllers therefor
US8510369B1 (en) * 2011-03-15 2013-08-13 Symantec Corporation Method and system for adding plug-in functionality to virtualized applications
US9117079B1 (en) * 2013-02-19 2015-08-25 Trend Micro Inc. Multiple application versions in a single virtual machine
US9811364B2 (en) * 2013-06-13 2017-11-07 Microsoft Technology Licensing, Llc Thread operation across virtualization contexts
KR102243793B1 (ko) * 2013-06-18 2021-04-26 시암벨라 리미티드 코드 가상화 및 원격 프로세스 호출 생성을 위한 방법 및 장치
CN106357646B (zh) * 2016-09-21 2019-12-31 苏州浪潮智能科技有限公司 一种用于存储管理软件的代理控制系统
US10824294B2 (en) 2016-10-25 2020-11-03 Microsoft Technology Licensing, Llc Three-dimensional resource integration system
US10990427B2 (en) * 2019-04-03 2021-04-27 Sap Se Extension application mechanisms through intra-process operation systems

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6286013B1 (en) 1993-04-01 2001-09-04 Microsoft Corporation Method and system for providing a common name space for long and short file names in an operating system
US5812129A (en) 1994-01-03 1998-09-22 International Business Machines Corp. Method and system for accessing functions of a user interface environment from processes running outside of the user interface environment
US5745752A (en) 1994-12-13 1998-04-28 Microsoft Corporation Dual namespace client having long and short filenames
US5831606A (en) 1994-12-13 1998-11-03 Microsoft Corporation Shell extensions for an operating system
US5617568A (en) 1994-12-14 1997-04-01 International Business Machines Corporation System and method for supporting file attributes on a distributed file system without native support therefor
US6061695A (en) 1996-12-06 2000-05-09 Microsoft Corporation Operating system shell having a windowing graphical user interface with a desktop displayed as a hypertext multimedia document
US6944819B2 (en) 1997-01-10 2005-09-13 Eastman-Kodak Company Computer method and apparatus for previewing files outside of an application program
US5915085A (en) 1997-02-28 1999-06-22 International Business Machines Corporation Multiple resource or security contexts in a multithreaded application
US6496847B1 (en) 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6256031B1 (en) 1998-06-26 2001-07-03 Microsoft Corporation Integration of physical and virtual namespace
JP2002527800A (ja) * 1998-10-02 2002-08-27 インターナショナル・ビジネス・マシーンズ・コーポレーション 会話ブラウザおよび会話システム
JP2000112797A (ja) 1998-10-02 2000-04-21 Nippon Telegr & Teleph Corp <Ntt> ビューディレクトリ処理方法および装置とビューディレクトリ処理プログラムを記録した記録媒体
US8099758B2 (en) 1999-05-12 2012-01-17 Microsoft Corporation Policy based composite file system and method
US6539396B1 (en) 1999-08-31 2003-03-25 Accenture Llp Multi-object identifier system and method for information service pattern environment
US6408298B1 (en) 1999-12-15 2002-06-18 Microsoft Corporation Methods and systems for copying and moving across virtual namespaces
US6879988B2 (en) 2000-03-09 2005-04-12 Pkware System and method for manipulating and managing computer archive files
US6738828B1 (en) 2000-07-06 2004-05-18 Nortel Networks Limited Name resolution protocol, system and method for resolving a flat name space to an address space
US6839721B2 (en) 2001-01-12 2005-01-04 Hewlett-Packard Development Company, L.P. Integration of a database into file management software for protecting, tracking, and retrieving data
US7207041B2 (en) 2001-06-28 2007-04-17 Tranzeo Wireless Technologies, Inc. Open platform architecture for shared resource access management
US6832280B2 (en) 2001-08-10 2004-12-14 Freescale Semiconductor, Inc. Data processing system having an adaptive priority controller
US7213236B2 (en) 2001-11-30 2007-05-01 Intrinsyc Software International, Inc. Method of bridging between .Net and Java
US20030126304A1 (en) 2001-12-31 2003-07-03 Wyatt David A. Method for attaching a resource to a parent within a global resource namespace
US7085853B2 (en) 2002-09-10 2006-08-01 Sun Microsystems, Inc. System and method for a distributed shell in a java environment
US7149738B2 (en) 2002-12-16 2006-12-12 International Business Machines Corporation Resource and data administration technologies for IT non-experts
US7243336B2 (en) 2002-12-17 2007-07-10 International Business Machines Corporation System and method of extending application types in a centrally managed desktop environment
US20040128544A1 (en) 2002-12-31 2004-07-01 International Business Machines Corporation Method and system for aligning trust relationships with namespaces and policies
US7222119B1 (en) 2003-02-14 2007-05-22 Google Inc. Namespace locking scheme
EP1650665B1 (en) 2003-07-24 2012-07-11 Panasonic Corporation File management method and information processing device
WO2005036806A2 (en) 2003-10-08 2005-04-21 Unisys Corporation Scalable partition memory mapping system
US20070061441A1 (en) 2003-10-08 2007-03-15 Landis John A Para-virtualized computer system with I/0 server partitions that map physical host hardware for access by guest partitions
US7237184B2 (en) 2003-12-18 2007-06-26 Microsoft Corporation Data property promotion system and method
US20050246453A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation Providing direct access to hardware from a virtual environment
US7574709B2 (en) 2004-04-30 2009-08-11 Microsoft Corporation VEX-virtual extension framework
US7203871B2 (en) 2004-06-03 2007-04-10 Cisco Technology, Inc. Arrangement in a network node for secure storage and retrieval of encoded data distributed among multiple network nodes
US7580826B2 (en) 2004-06-30 2009-08-25 Microsoft Corporation Systems and methods for development of emulated devices in a virtual machine environment
US8972977B2 (en) 2004-06-30 2015-03-03 Microsoft Technology Licensing, Llc Systems and methods for providing seamless software compatibility using virtual machines
JP5021475B2 (ja) 2004-08-03 2012-09-05 マイクロソフト コーポレーション コンテキストポリシー制御によるアプリケーション間の関連付けの制御のためのシステムおよび方法
JP2008538016A (ja) 2004-11-12 2008-10-02 メイク センス インコーポレイテッド 概念または項目を用いて知識相関を構成することによる知識発見技術
US7778963B2 (en) 2005-04-26 2010-08-17 Microsoft Corporation Constraint-based conflict handling for synchronization
US20060265508A1 (en) 2005-05-02 2006-11-23 Angel Franklin J System for administering a multiplicity of namespaces containing state information and services
US7467158B2 (en) 2005-06-10 2008-12-16 Microsoft Corporation Object virtualization
US7870230B2 (en) 2005-07-15 2011-01-11 International Business Machines Corporation Policy-based cluster quorum determination
US20070038697A1 (en) 2005-08-03 2007-02-15 Eyal Zimran Multi-protocol namespace server
JP2007150539A (ja) 2005-11-25 2007-06-14 Kyocera Mita Corp 画像読取装置
US8443358B1 (en) 2006-02-10 2013-05-14 Citrix Systems, Inc. Hot pluggable virtual machine
US8290949B2 (en) 2006-07-24 2012-10-16 International Business Machines Corporation Resource name reconciliation in a configuration database
US8719768B2 (en) 2006-08-22 2014-05-06 Dell Products L.P. Accretion of inter-namespace instances in multi-tenant CIMOM environment
JP5182095B2 (ja) 2006-11-06 2013-04-10 日本電気株式会社 資源情報提供システム、方法、資源情報提供装置、およびプログラム
US8307404B2 (en) 2007-04-16 2012-11-06 Microsoft Corporation Policy-management infrastructure
US8612972B2 (en) 2007-06-27 2013-12-17 Microsoft Corporation Running add-on components in virtual environments
US8862590B2 (en) 2007-06-29 2014-10-14 Microsoft Corporation Flexible namespace prioritization
US8635618B2 (en) 2007-11-20 2014-01-21 International Business Machines Corporation Method and system to identify conflicts in scheduling data center changes to assets utilizing task type plugin with conflict detection logic corresponding to the change request

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102567078A (zh) * 2011-12-28 2012-07-11 成都市华为赛门铁克科技有限公司 一种注册表虚拟化方法及装置
CN102567078B (zh) * 2011-12-28 2014-12-24 华为数字技术(成都)有限公司 一种注册表虚拟化方法及装置
CN110096370A (zh) * 2012-12-14 2019-08-06 微软技术许可有限责任公司 用于虚拟环境的控制反转组件服务模型
CN110096370B (zh) * 2012-12-14 2023-07-25 微软技术许可有限责任公司 用于虚拟环境的控制反转组件服务模型
CN106020935A (zh) * 2016-05-26 2016-10-12 国云科技股份有限公司 一种跨版本运行openstack组件服务的方法
CN106709327A (zh) * 2016-12-07 2017-05-24 深圳市君格科技有限公司 一种应用隐藏的方法及其移动终端

Also Published As

Publication number Publication date
EP2168050B1 (en) 2016-08-03
ES2600478T3 (es) 2017-02-09
EP2168050A2 (en) 2010-03-31
JP5328054B2 (ja) 2013-10-30
US20090007139A1 (en) 2009-01-01
US20140109092A1 (en) 2014-04-17
WO2009002751A2 (en) 2008-12-31
US9400665B2 (en) 2016-07-26
US8612972B2 (en) 2013-12-17
WO2009002751A3 (en) 2009-02-26
US10108441B2 (en) 2018-10-23
US20160196155A1 (en) 2016-07-07
EP2168050A4 (en) 2011-01-19
CN101689165B (zh) 2013-07-24
JP2010532050A (ja) 2010-09-30

Similar Documents

Publication Publication Date Title
CN101689165B (zh) 在虚拟环境中运行附加组件
KR100737521B1 (ko) 어플리케이션 상태 정보 수집 및 복원 방법 및 시스템
JP5758995B2 (ja) 仮想マシン間で分析の結果を共有するためのシステム、方法及びコンピュータ可読記憶媒体
KR101854975B1 (ko) 패키지 파일에 대한 기능 확장 방법 및 시스템
CN101026826B (zh) 用于提供在无线装置中使用的整体映像的系统和方法
US20100070971A1 (en) Method for enabling the installation of software applications on locked-down computers
CN101821729B (zh) 应用程序的远程自动供应和发布
CN1399194A (zh) 创建和使用具有选定功能的操作系统的方法和系统
JP5414814B2 (ja) ネットワーク環境におけるスペースのカスタマイズ
KR101587994B1 (ko) 하드디스크 가상화 방식의 클라우드 컴퓨팅 서비스 시스템
EP2310949A2 (en) Method and system for executing applications using native code modules
CN104396219A (zh) 用户专用漫游设置
US20170220396A1 (en) Fast and accurate identification of message-based api calls in application binaries
CN102257475A (zh) 用于使用预引导数据引导计算机系统的系统和方法
JP5070286B2 (ja) ネットワーク環境におけるスペースのカスタマイズ
JP2010500671A5 (zh)
JP4831317B2 (ja) Pci多段ブリッジ構成コンピュータにおけるacpiマシン語テーブル記述方法及び装置とそのプログラム
JP2019220152A (ja) イメージフィルタリング方法、電子機器および記録媒体
CN101876898A (zh) 一种com组件的注册方法及装置
JP2012133567A (ja) 情報処理装置、情報処理装置の制御方法、プログラム。
KR20180048518A (ko) 패키지 파일에 대한 기능 확장 방법 및 시스템
CN117472458B (zh) 系统功能优化配置方法、装置、电子设备及存储介质
KR20220124889A (ko) 스타트업을 위한 투자단계별 투자기관 매칭 방법 및 장치
CN117348875A (zh) 统一调度跨框架微组件的方法、装置、微前端架构及介质
CN114117278A (zh) 一种跳转方法、装置、设备及存储介质

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
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150508

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150508

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.