虚拟化集成调用以提供对虚拟命名空间中的资源的访问权的制作方法

文档序号:6534045阅读:254来源:国知局
虚拟化集成调用以提供对虚拟命名空间中的资源的访问权的制作方法
【专利摘要】在此揭示的是用于促进本机应用和虚拟化应用的集成的系统、方法和软件。从与本机命名空间相关联的本机应用内发起的调用被监视以寻找集成调用。集成调用涉及通过虚拟命名空间可访问的资源。一旦检测到集成调用,通过虚拟命名空间的方式向该集成调用提供对对应资源的访问权。
【专利说明】虚拟化集成调用以提供对虚拟命名空间中的资源的访问权

【背景技术】
[0001]应用虚拟化作为提供软件应用的有用的技术已经获得了越来越多的认可。应用虚拟化允许应用被安装到虚拟化环境内并从虚拟化环境内运行,因此将应用与主控操作系统和其它本机安装的应用隔离开。然而,本机应用和虚拟化应用之间的交互提供了很多挑战,其中包括本机应用内的组件访问虚拟环境内资源的能力。
[0002]当软件组件被加载在本机应用内时,该组件具有对与本机应用相关联的本机命名空间的可见性。然而,该组件可能需要与通过本机命名空间不可用但通过与虚拟环境相关联的虚拟命名空间来访问的资源进行交互。在一个示例中,web浏览器内的活动控件可对虚拟化应用作出调用,调用因活动控件不具备对虚拟命名空间(通过其虚拟化应用能够被访问)的访问权而失败。
[0003]改善本机应用与虚拟环境的集成的一种途径已经涉及代替需要虚拟命名空间的访问权的各组件而注册的各代理。调用特定组件,诸如控件,将启动能够代替它访问虚拟命名空间的代理。代理将随后加载虚拟环境内的原始组件。
[0004]概览
[0005]在此提供了用于促进本机应用内的组件与虚拟化环境的集成的系统、方法和软件。从与本机命名空间相关联的本机应用内发起的调用被监视以寻找集成调用。集成调用涉及通过虚拟命名空间能够访问的资源。一旦检测到集成调用,就以虚拟命名空间的方式向集成调用提供对对应资源的访问权。
[0006]提供本概览以便以简化形式介绍将在以下的技术公开中进一步描述的概念选择。本概览并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。

【专利附图】

【附图说明】
[0007]参考以下附图可以更好地理解本发明的许多方面。虽然结合这些附图描述了几种实现,但所述公开并不局限于在此所述的这些实现。相反,意图是要覆盖所有的替换方式、修改和等价物。
[0008]图1示出了一个实现中的集成环境,其中采用虚拟化进程。
[0009]图2示出了一个实现中的一个集成环境内采用的虚拟化进程。
[0010]图3示出了用于在集成环境中实现虚拟化进程的计算系统。
[0011]图4示出了一个实现中的一个计算环境,其中虚拟化进程可被采用。
[0012]图5示出了一个实现中的流程图,该流程图描述采用虚拟化进程的计算环境内的各元素之间的交互。
[0013]图6示出了一个实现中的流程图,该流程图描述采用虚拟化进程的计算环境内的各元素之间的交互。
[0014]图7示出了一个实现中的流程图,该流程图描述采用虚拟化进程的计算环境内的各元素之间的交互。
[0015]技术公开
[0016]在此描述的各实施例提供了本机应用和虚拟化应用之间的改善了的集成。具体而言,虚拟化涉及检查由在本机应用内运行的各组件发起的调用以标识集成调用。集成调用是由加载在本机命名空间中但是需要对通过虚拟命名空间能够获得的资源的访问权的各组件发起的那些调用。一旦标识了集成调用,则给予集成调用对虚拟命名空间的访问权,使得资源可为本机应用利用。
[0017]在涉及媒体管理应用的示例中,媒体管理应用包括用于从通信应用(诸如电子邮件)中将联系人导入媒体管理应用的控件组件。在此示例中,媒体管理应用被安装到本机环境和命名空间并在本机环境和命名空间内运行,而通信应用被安装在虚拟化环境内。
[0018]为了让控件组件获得对联系人的访问权,该控件组件需要对虚拟化环境中的虚拟命名空间的访问权。然而,该控件组件通常不具备对虚拟命名空间的可见性。开始时,随着控件组件对本机环境和虚拟环境两者内的各资源作出调用,虚拟化进程监视各调用以寻找需要对虚拟环境内的各资源(诸如包含联系人的数据结构)的访问权的集成调用。
[0019]一旦检测到集成调用,虚拟化进程就提供对虚拟命名空间的访问权使得集成调用可被解决。例如,联系人可从虚拟环境检索并加载到本机应用中。则虚拟化进程可任选地在控件组件将控制交回本机应用时被终止。此外,在控件组件下一次被调用时,虚拟化进程可被启用。
[0020]虽然前述示例涉及媒体管理应用和控件组件,应当理解虚拟化进程也可应用到其它类型的应用以及其它类型的组件。具有可虚拟化组件集成其中的其它本机应用的各示例包括:web浏览器应用、生产力应用、社交联网应用,和游戏应用,以及适合在本机环境内执行的任何其它类型的应用。可虚拟化组件的各示例包括,但不限于,控件组件、接口组件,和驱动器组件,以及许多其它类型的组件。
[0021]现在转到附图,图1 一 3示出虚拟化进程的一个实现。具体而言,图1示出了虚拟化进程可在其内实现的一个集成环境。图2示出了虚拟化进程中涉及的各步骤,而图3示出了其中集成环境和虚拟化进程可被实现的计算系统。
[0022]图4 一 7示出了虚拟化进程的另一个实现。具体而言,图4示出了另一个其内可实现虚拟化进程的集成环境,而图5 - 7示出了在实现虚拟化进程时该集成环境的各元素之间的交互。
[0023]现在详细参考图1,集成环境100包括本机命名空间101、虚拟命名空间111和虚拟化组件121。本机应用103和资源107通过本机命名空间101能够被访问。本机应用103包括调用组件105。包括资源115和资源117的虚拟应用113通过虚拟命名空间111能够被访问。示为对于本机命名空间101而言外部的虚拟化组件121,可以经由本机命名空间101被访问或不可经由本机命名空间101被访问。虚拟化组件121允许调用组件105访问虚拟命名空间111,如以下结合图2将更详细讨论。
[0024]本机应用103是能够在本机命名空间101内运行并加载可被虚拟化的组件(诸如调用组件105)的任何应用程序。本机应用103的各示例包括媒体管理应用、web浏览应用、生产力应用(诸如字处理器、电子表格、和演示应用)、通信应用(诸如电子邮件、电信、视频聊天,和即时消息收发应用),以及游戏应用。
[0025]调用组件105是能够在本机应用103内被集成并被虚拟化以获得对虚拟命名空间Ill的访问权的任何组件。调用组件105的各示例包括控件组件、接口组件、和驱动器组件、以及许多其它类型的组件。
[0026]资源107是通过本机命名空间101能够被访问的任何资源。资源107的各示例包括其它应用程序、操作系统组件、和数据文件、以及经由本机命名空间101能够访问的任何其它类型的资源。
[0027]虚拟应用113是通过虚拟命名空间111访问的任何应用程序。应当理解,虚拟应用113可以是任何应用程序但是被称为虚拟是因为它可通过虚拟命名空间111来被访问。虚拟应用113的各示例包括媒体管理应用、web浏览应用、生产力应用(诸如字处理器、电子表格、和演示应用)、通信应用(诸如电子邮件、电信、视频聊天,和即时消息收发应用),流水线化应用、和游戏应用、以及它们的任何组合或变型。资源115包括能够与虚拟应用113集成并通过虚拟命名空间111来被访问的任何资源。资源115的各实施例包括虚拟应用113的各子组件、与虚拟应用113相关联的数据文件,和与虚拟应用113相关联的通信或对象组件。
[0028]资源117是通过虚拟命名空间111能够被访问的任何资源。资源117的各示例包括其它应用程序、操作系统组件(诸如文件系统和注册表组件)、和数据文件、以及经由虚拟命名空间111能够访问的任何其它类型的资源。
[0029]在操作中,本机应用103可调用调用组件105。调用组件105被如此称呼是因为它能够作出涉及其它软件组件的调用以向本机应用103提供服务。调用组件105作出的该调用可能或可能不需要对虚拟命名空间111的访问权。例如,某些调用可能需要通过本机命名空间101对资源107或对其它资源(未示出)的访问权,而其它调用可能需要通过虚拟命名空间111对诸如那些虚拟应用113、资源115,或资源117的访问权。这些调用可针对那些其它组件直接作出,尽管应当理解,中间层或一系列调用可被作出以影响组件间通信。
[0030]由调用组件105作出的对通过本机命名空间101能够访问的其他各组件的调用可被容易地执行,因为被集成在本机应用103中并被本机应用103加载的调用组件105具有对本机命名空间101的可见性。然而,在没有对虚拟命名空间111的可见性的情况下,对虚拟应用113、资源115,或资源117作出的调用将失败。
[0031]先前,虚拟化组件121执行虚拟化进程200以虚拟化由调用组件105作出的需要对虚拟命名空间111的访问权的那些调用,在本文中称为集成调用。现在参见图2,虚拟化组件121监视由本机应用103作出的调用并检测由调用组件105发起的那些调用141(步骤201)。应当注意,本机应用103可包括作出调用的其它组件(未示出)。然而,虚拟化组件121能够仅监视由调用组件105作出的调用。换言之,不是集成在本机应用103内的全部组件需要为了可被虚拟化的调用而被监视。虚拟化组件121可被排他地与调用组件105链接,尽管应当理解虚拟化组件121可被链接到多个其它调用组件。
[0032]接着,虚拟化组件121检查由调用组件105发起的调用141,寻找可能需要对虚拟命名空间111的访问权的任何集成调用(步骤203)。在一个示例中,集成调用由设置在与调用相关联的线程上的虚拟化提示来标识,虚拟化提示的出现标识调用需要虚拟化。应当理解该提示是可继承的方面,它可被与调用相关联的线程创建的其它线程继承。在另一个示例中,由调用本身引用的信息可被处理以确定该调用是否应该被虚拟化。例如,由调用组件105作出的调用所引用的特定资源的身份可暗示该资源应该被虚拟化。应当理解,用于标识集成调用的其他技术可被采用并且不应当被限制在此处揭示的那些。
[0033]一旦检测到集成调用142,虚拟化组件121提供通过虚拟命名空间111对资源的访问权以解决集成调用(步骤205)。提供对虚拟命名空间111的访问权可通过执行重命名操作以使得由集成调用142标识的任何资源可在虚拟命名空间111内被定位来完成。另一个技术涉及使集成调用绕道。用于向集成调用提供对虚拟命名空间111的访问权的其他技术是可能的,并且不应该被限制在此处揭示的那些。不需要对虚拟命名空间111的访问权的任何其它调用143可被转发到本机命名空间101用于解决。
[0034]现在参照图3,计算系统300和相关联的讨论旨在提供对其中可实现虚拟化进程200和集成环境100的合适计算环境的简要概括描述。计算系统300的示例包括个人计算机、服务器计算机、客户端计算机、移动计算机、媒体设备、互联网用具、桌面计算机、膝上计算机、平板计算机、笔记本电脑、移动电话、智能电话、和个人数字助理,及其任何组合或变型。
[0035]计算系统300包括处理系统301、存储系统303、软件305、通信接口 307、和用户接口 309。处理系统301操作地与存储系统303、通信接口 307和用户接口 309耦合。处理系统302从存储系统303加载并执行包括虚拟化进程200的软件305。当概括而言由计算系统300执行时,且具体而言由处理系统301执行时,软件305指导计算系统300针对虚拟化进程200如本文所述地那样操作。
[0036]仍然参考图3,处理系统301可以包括从存储系统303中检索并执行软件305的微处理器以及其他电路。处理系统301可以在单个处理设备中实现,但也可以跨在执行程序指令中协作的多个处理设备或子系统分布。处理系统301的示例包括通用中央处理单元、专用处理器、和逻辑设备、以及任何其他类型的处理设备,处理设备的组合或其变型。
[0037]存储系统303可以包括可由处理系统301读取并能存储软件305的任意存储介质。存储系统303可包括易失性和非易失性、可移动和不可移动介质,它们以用于存储诸如计算机可读指令、数据结构、程序模块或其它数据这样的信息的任意方法或技术来实现。存储系统303可以被实现为单个存储设备,但也可以跨多个存储设备或子系统来实现。存储系统303可以包括附加元件,诸如能够与处理系统301通信的控制器。
[0038]存储介质的示例包括随机存取存储器、只读存储器、磁盘、光盘、闪存、虚拟存储器,和非虚拟存储器、磁带盒、磁带、磁盘存储或其它磁存储设备、或可被用于存储想要的信息并可被指令执行系统访问的任何其他介质,以及它们的任何组合或变型,或任何其它类型的存储介质。在一些实现中,存储介质可以是非瞬态存储介质。在一些实现中,所述存储介质的至少一部分可以是瞬态的。应该理解,存储介质决不是被传播的信号。
[0039]软件305包括来自图1的虚拟化组件121,其实现参考图2描述的虚拟化进程200。虚拟化组件121可用计算机程序指令(诸如检测指令、标识指令和虚拟化指令)来实现。在被计算系统300执行时,检测指令可指导计算系统300以检测从与本机命名空间101相关联的本机应用103内发起的调用。在被计算系统300执行时,标识指令可接着指导计算系统300以处理各调用的每一个以标识与通过虚拟命名空间111可访问的资源相关联的至少一个集成调用。在被计算系统300执行时,虚拟化指令可指导计算系统300以向集成调用提供通过虚拟命名空间111对资源的访问权。
[0040]除了虚拟化组件121之外,软件305可包括附加的进程、程序、或组件,诸如本机应用103、调用组件105、资源107、虚拟应用113、资源115、和资源117,以及操作系统软件或其它应用软件。软件305还可包括固件或能够被处理系统301执行的某些其它形式的机器可读处理指令。
[0041]一般而言,软件305在被加载到处理系统301中并被执行时,可将处理系统301和计算系统300整体从通用计算系统变换成被定制以促进本机应用与虚拟化应用及在此针对每个实现所描述的经由虚拟命名空间可访问的其它资源的集成的专用计算系统。
[0042]事实上,存储系统303上的编码软件305可变换存储系统303的物理结构。在本说明书的不同实现中,物理结构的具体变换可取决于各种因素。这样的各因素的示例可以包括,但不仅限于:用于实现存储系统303的存储介质以及计算机存储介质是作为主存储还是辅存储的技术。
[0043]例如,如果计算机存储介质被实现为基于半导体的存储器,则当在其中编码程序时,软件305可以变换半导体存储器的物理状态。例如,软件305可以变换构成半导体存储器的晶体管、电容器或其它分立电路元件的状态。
[0044]一种类似的变换可以相对于磁性或光学介质发生。在没有偏离本说明书的范围的情况下,物理介质的其他变换也是可能的,前面提供的示例只是为了便于这一讨论。
[0045]应当理解,计算系统300通常旨在表示虚拟化进程200可在其中部署并执行的计算环境。然而,计算系统300还可表示至少虚拟化组件121可在其中被分阶段,并且虚拟化组件121可从中传输、下载,或以其他方式提供给类似于计算系统300的另一个计算系统,用于执行计算环境。
[0046]再次参见图1和图2,通过采用软件305且具体是虚拟化组件121的计算系统300的操作,可针对集成环境100执行变换。作为示例,计算系统300可被看作通过处理由虚拟化组件121的操作选择性触发的集成调用142从一个状态变换到另一个状态。换言之,在第一状态,调用组件105不具有对虚拟命名空间111的访问权。一旦检测到集成调用142,虚拟化组件121向调用组件105或至少向集成调用142提供通过虚拟命名空间111的对资源的访问权,从而将计算系统300改变为不同的第二状态。
[0047]再次参见图3,通信接口 307可包括允许在计算系统300和其它计算系统(未示出)之间通过通信网络的通信的通信连接和设备。加在一起允许系统间通信的连接和设备的示例包括网络接口卡、天线、功率放大器、RF电路系统、收发机以及其它通信电路系统。上述网络、连接和设备在本领域中公知且无需在此处详细讨论。
[0048]用户接口 309可包括,鼠标、声音输入设备,用于接收来自用户的姿势的触摸输入设备、用于检测用户的非接触姿势和其它运动的运动输入设备,以及其它类似的输入设备以及能够接收来自用户的用户输入的相关联的处理元件。输出设备,诸如显示器、扬声器、打印机、触觉设备,和其它类型的输出设备也可以被包括在用户接口 309中。上述用户输入设备在本领域中公知且无需在此处详细讨论。
[0049]现在转到图4 一 7,示出了另一个虚拟化实现。具体而言,图4示出了其内可实现虚拟化进程的集成环境400,而图5 — 7示出了在该集成环境400的各个不同元素之间的交互。
[0050]集成环境400示出了可在通用计算系统(诸如图3所示的计算系统300)上实现的各种不同的软件元素。集成环境400包括本机命名空间411,本机应用413可通过该本机命名空间411由其它应用、进程、或组件来访问。集成环境400还包括虚拟化组件431,它也可以通过本机命名空间411来被访问。操作系统421的至少某些部分,诸如文件系统423和注册表425,也可通过本机命名空间411来被访问。然而,应当理解,在某些实现中,操作系统421的某些部分可能不能通过本机命名空间411来被访问。在某些实现中,集成环境400可任选地包括拦截模块418,如以下将更详细地讨论。
[0051]本机应用413包括调用组件414和调用组件415,并可包括许多其它程序模块、组件、或代码,它们共同作用来实现本机应用413。调用组件415包括入口模块416和调用模块417。应当理解,调用组件415还可包括其它程序模块、组件,或代码。还应当理解,调用组件414仅仅是可任选的。虚拟化组件431包括检测模块431、标识模块434,和虚拟化模块435。应当理解,虚拟化组件431还可包括其它程序模块、组件,或代码。
[0052]集成环境400还包括虚拟命名空间411,虚拟应用462、虚拟应用463和资源465通过该虚拟命名空间411可被访问。应用虚拟化器451的至少某些部分,诸如文件系统453和注册表455也可通过虚拟命名空间441来被访问。然而,应当理解,在某些实现中,应用虚拟化器451的某些部分可能不能通过虚拟命名空间441来被访问。此外,应用虚拟化器451的某些部分可能通过本机命名空间411是可访问的。
[0053]本机命名空间411表示在一组应用程序、应用组件、组件对象,或可被看成是本机加载的、安装的、或以其他方式建立的任何其它软件元素之间共享的命名上下文,其允许本机命名空间411内的每个软件元素以相同方式(诸如使用相同名称、相同位置,或名称和位置的相同组合或变型)来引用本机命名空间411内的其它软件元素。例如,本机应用413对文件系统423作出的文件系统调用将以与虚拟化组件431对文件系统423作出的文件系统调用相同的方式来标识文件系统423。
[0054]相反,虚拟命名空间441表示在一组应用程序、应用组件、组件对象,或可被看成是虚拟加载的、虚拟安装的、或以其他方式虚拟地建立的任何其它软件元素之间共享的不同命名上下文,其允许虚拟命名空间441内的每个软件元素使用相同名称、名称串、位置,或名称和位置的组合或变型来引用虚拟命名空间441内的其它元素。例如,虚拟应用462对文件系统453作出的文件系统调用将以与虚拟化应用463对文件系统453作出的文件系统调用相同的方式来标识文件系统453。
[0055]一般而言,各种不同的与本机命名空间411相关联的应用程序、应用组件、对象,和其它软件元素向注册表425注册,使得每个软件元素可找到并利用本机命名空间411内的其它元素。类似,虚拟命名空间441内的各种不同软件元素向注册表455注册,使得每个软件元素可找到并利用虚拟命名空间441内的其它元素。
[0056]本机应用413是能够在本机命名空间411内运行并加载可被虚拟化的组件(诸如调用组件414和调用组件415)的任何应用程序。本机应用413的各示例包括媒体管理应用、web浏览应用、生产力应用(诸如字处理器、电子表格、和演示应用)、通信应用(诸如电子邮件、电信、视频聊天,和即时消息收发应用),以及游戏应用。
[0057]调用组件414和调用组件415是能够在本机应用413内被集成并被虚拟化以获得对虚拟命名空间441的访问的任何组件软件元素。调用组件414和调用组件415的各示例包括控件组件、接口组件、和驱动器组件、以及许多其它类型的组件。入口模块416处理进入调用组件415的调用并可任选地处理从调用组件415的退出。入口模块416可能还能够在由调用组件415创建的线程上设置虚拟提示标记,向虚拟化组件431指示是否对由调用模块417作出的调用进行虚拟化。调用模块416处理出自调用组件415的对其它组件或资源(诸如文件、程序、和对象)的调用。调用组件414可包括类似的如调用组件415的子组件。调用组件414和调用组件415的一个示例是动态链接库。
[0058]虚拟化组件431是能够对由调用组件415作出的集成调用进行虚拟化的任何软件元素。虚拟化组件431可能是独立程序或组件或可集成在其它程序应用或甚至本机应用413内。虚拟化组件436是能够对由调用组件414作出的调用进行虚拟化的任何软件元素。虚拟化组件436可能是独立程序或组件或可集成在其它程序应用或甚至本机应用413内。虚拟化组件431和虚拟化组件436的一个示例是动态链接库。
[0059]应当理解,当两个虚拟化组件431和436在图4被示出时,不需要多个虚拟化组件。相反,每个调用组件414和415被配置用于,一旦被本机应用413调用,就调用能够监视来自那个调用组件的调用的虚拟化组件。在此图示中,假设虚拟化组件436被调用组件414调用并监视来自调用组件414的要被虚拟化的调用,而虚拟化组件431被调用组件415调用并监视来自调用组件415的要被虚拟化的调用。
[0060]就那一点而言,虚拟化组件431还包括检测模块431、标识模块434,和虚拟化模块435。检测模块432检测由调用模块417发起的来自本机应用413内的调用。标识模块434可随后处理每个调用来标识与通过虚拟命名空间441可访问的资源相关联的至少一个集成调用。例如,在确定任何特定调用是否是集成调用时,标识模块434可检查由入口模块416设置的虚拟化提示标记的值。虚拟化模块435向被标识为集成调用的那些调用提供对虚拟命名空间441的访问权。集成调用可随后被解决,并且值、响应,或某个其它回复被提供给调用组件415。虚拟化组件436以与虚拟化组件431类似的方式操作。
[0061]如所述,拦截模块418可任选地出现在某些实现中。拦截模块418能够代替入口模块416设置虚拟提示标记。这可通过由拦截模块418监视本机应用413作出的对调用组件415的调用并由此设置虚拟提示标记来完成。拦截模块418可随后通过入口模块416的方式来对调用组件415内进行调用。由调用组件415发起的调用可随后被虚拟化组件431识别为需要虚拟化。
[0062]应当理解,无论是由入口模块416还是拦截模块418设置,对是否设置虚拟提示标记的确定可被静态编程,但还可以被动态确定。例如,调用组件415可能需要对最初仅在虚拟命名空间441内部可用的资源的访问权。这可能在许多情况下发生,包括当资源是由应用虚拟化器451安装的虚拟包的一部分时。然而,该资源可随后变得通过本机命名空间411可用。例如,与虚拟包中的应用相同的应用或类似的其它应用可被安装到本机命名空间411。因此,虚拟提示标记可最初被设置以触发调用的虚拟化,而晚些时候虚拟提示标记可被设置来将该调用标识成不需要被虚拟化。
[0063]应用虚拟化器451是能够虚拟地安装并虚拟地运行其它应用程序、组件、和代码的任何应用程序或程序的集合。如前所述,应用虚拟化器451通过本机命名空间411和虚拟命名空间441两者可访问。以此方式,应用虚拟化器45及其子组件可与虚拟命名空间441内的软件元素(诸如虚拟应用463)以及本机命名空间411内的软件元素(诸如虚拟化组件431)进行通信。
[0064]虚拟应用462和虚拟应用463是能够被应用虚拟化器451虚拟化的通过虚拟命名空间441访问的任何应用程序。应当理解,虚拟应用462和虚拟应用463可以是任何类型的应用程序,但被称为虚拟是因为它们通过虚拟命名空间441来被访问。虚拟应用462和虚拟应用463的各示例包括媒体管理应用、web浏览应用、生产力应用(诸如字处理器、电子表格、和演示应用)、通信应用(诸如电子邮件、电信、视频聊天,和即时消息收发应用),流水线化应用、和游戏应用、及它们的任何组合或变型。
[0065]资源465包括能够与虚拟应用463集成并通过虚拟命名空间441访问的任何资源。资源465的各实施例包括虚拟应用463的各子组件、与虚拟应用463相关联的数据文件,和与虚拟应用463相关联的通信或对象组件。应当理解,其它类型的资源是可能的。此夕卜,应当理解,虚拟应用462可包括类似于资源465的资源。
[0066]图5是示出在一个实现中的集成环境400的各个不同软件元素之间的交互的流程图。在这个实现中,入口模块416执行设置虚拟标记提示的任务。相反,图6示出了涉及拦截模块418的实现。
[0067]参见图5,调用组件415可由本机应用413来调用。例如,通过用户输入的方式,可选择调用组件415的图形表示。一旦调用组件415被调用,入口模块416从本机命名空间411内被调用。入口模块416确定是否设置虚拟提示标记以指示将调用模块417的任何结果调用虚拟化的需要。在此图示中,以解说的目的假设虚拟提示标记被设置为肯定,意味着任何结果调用将被虚拟化。
[0068]接着,调用模块417可能被入口模块416调用(invoke)或调用(call)。调用模块417启动由虚拟化组件431检测的服务调用。虚拟化组件431检测或以其它方式检查服务调用以确定它是否应当被虚拟化。根据虚拟提示标记的值,虚拟化组件431确定调用应当被虚拟化并因此被看作集成调用。
[0069]如果虚拟化组件431已经确定了调用不需要被虚拟化,服务调用可被转发以在本机命名空间411中执行。在此,因为服务调用是集成调用并且旨在被虚拟化,向服务调用提供对虚拟命名空间441的访问权。服务调用因此可使用仅以虚拟命名空间441的方式可访问的软件元素(诸如虚拟应用463或462,资源465、注册表455,或文件系统453)来解决。服务回复被提供给调用模块417,或可能给调用组件415内的某个其它元素。控制可从调用组件415被返回到本机应用413。
[0070]参见图6,调用组件415可由本机应用413来调用。例如,通过用户输入的方式,可选择调用组件415的图形表示。一旦调用组件被调用,拦截模块418就拦截调用并确定是否设置虚拟提示标记来指示对调用模块417的任何调用进行虚拟化的需求。在此图示中,以解说的目的假设虚拟提示标记被设置为肯定,意味着任何结果调用将被虚拟化。
[0071]拦截模块418,一旦设置虚拟提示标记,则前进至允许调用前进到入口模块416。接着,调用模块417可能被入口模块416调用(invoke)或调用(call)。调用模块417启动由虚拟化组件431检测的服务调用。虚拟化组件431检测或以其它方式检查服务调用以确定该调用是否应当被虚拟化。根据虚拟提示标记的值,虚拟化组件431确定调用应当被虚拟化并因此被看作集成调用。
[0072]如果虚拟化组件431已经确定了调用不需要被虚拟化,服务调用可被转发以在本机命名空间411中执行。在此,由于服务调用要被虚拟化,向服务调用提供对虚拟命名空间441的访问权。服务调用因此可使用仅以虚拟命名空间441的方式可访问的软件元素(诸如虚拟应用463或462,资源465、注册表455,或文件系统453)来解决。服务回复被提供给调用模块417,或可能给调用组件415内的某个其它元素。调用模块415可接着被终止或以其他方式将控制还给本机应用413。
[0073]参见图7,所示出的是关于在调用组件415和本机应用413之间控制如何被分配的流程图。一旦本机应用413调用了调用组件415,入口模块416调用虚拟化组件431。事实上,由于服务调用由调用模块417作出,虚拟化组件431确定哪些调用是集成调用,而那些调用可无需对虚拟命名空间441的访问而被解决。调用是服务,且服务回复被提供给调用模块417,或可能给调用组件415内的某个其它元素。一旦服务调用被解决,入口模块416则与操作系统421通信,虚拟化组件431应当被终止或以其他方式将控制转给某个其它元素。控制回到本机应用413或本机命名空间411内的某个其它软件元素。
[0074]以此方式,当调用组件415被调用并运行时,虚拟化组件431被初始化,并被动态加载,并且一旦调用组件415解决任何呼叫时就不再需要。这阻止了虚拟化组件在调用组件415不再运行的其它时间段运行,从而节省资源。类似操作可相对于调用组件414和虚拟化组件436发生。S卩,虚拟化组件436可以和调用组件414并行实例化,并且在调用组件414解决时终止。
[0075]各图中提供的功能框图、操作序列和流程图表示用于执行本公开的新颖方面的示例性架构、环境和方法。尽管出于解释简明的目的,此处包括的方法可以以功能图、操作系列或流程图形式示出并且可被描述为一系列动作,但是可以理解和领会,各方法不受动作的次序的限制,因为根据本发明,某些动作可以按与此处所示并描述的不同的次序和/或与其他动作并发地发生。例如,本领域的技术人员将明白并理解,方法可被替换地表示为一系列相互相关联的状态或事件,诸如以状态图的形式。此外,并非方法中所示出的所有动作都是新颖实现所必需的。
[0076]所包括的说明和附图描述了用于教导本领域的技术人员如何做出和使用最佳模式的特定实现。出于教导创新性原则的目的,一些传统的方面被简化或忽略。本领域的技术人员将理解来自这些实现的变型也落入的本发明的范围内。本领域的技术人员还将理解如上所述的特征可以以各种方式组合以形成多个实现。因此,本发明不局限于如上所述的特定实现,仅受限于权利要求和它们的等价物。
【权利要求】
1.一个或多个计算机可读介质,其上存储能够由计算系统(300)执行的程序指令,用以促进各本机应用内的各组件和各虚拟化环境的集成,其中所述程序指令包括: 检测指令(432),当由所述计算系统执行时,指导所述计算系统以检测从与本机命名空间(411)相关联的本机应用(413)内发起的多个调用; 标识指令(434),当由所述计算系统执行时,指导所述计算系统以处理所述多个调用的每一个以标识与通过虚拟命名空间(441)能够访问的资源(465)相关联的至少一个集成调用;以及 虚拟化指令(435),当由所述计算系统执行时,指导所述计算系统以向所述集成调用提供通过所述虚拟命名空间对所述资源的访问权。
2.如权利要求1所述的一个或多个计算机可读介质,其特征在于,所述程序指令包括至少第一部分和第二部分,其中所述第二部分包括所述检测指令、所述标识指令、和所述虚拟化指令,而其中所述第一部分包括入口指令; 其中所述入口指令,当由所述计算系统执行时,指导所述计算系统以响应于在所述本机应用内发生的调用所述第一部分的事件来加载所述第二部分,并响应于完成所述第一部分来将控制从所述第二部分返还给所述本机应用。
3.如权利要求2所述的一个或多个计算机可读介质,其特征在于,所述第一部分还包括调用指令,其中所述调用指令当由所述计算系统执行时,指导所述计算系统以从所述本机应用内发起所述多个调用。
4.如权利要求3所述的一个或多个计算机可读介质,其特征在于,所述第一部分还包括拦截指令,当由所述计算系统执行时,所述拦截指令指导所述计算系统以拦截并改变由所述调用指令发起的所述多个调用的至少一个调用,以将对所述标识指令的所述一个调用标识为集成调用,并且所述拦截指令为了修改所述至少一个调用,指导所述计算系统以在与所述一个调用相关联的线程上设置虚拟化提示标记。
5.如权利要求3所述的一个或多个计算机可读介质,其特征在于,所述第一部分包括集成到所述本机应用中的第一动态链接库,而其中所述第二部分包括第二动态链接库,其中所述资源包括加载到所述虚拟命名空间内的虚拟化应用的至少一部分,且其中所述虚拟化应用的所述部分包括由提供给所述本机应用的所述集成调用所调用的服务。
6.一种用于促进本机应用和虚拟化应用的集成的方法,所述方法包括: 一旦调用了加载在本机应用(103)内的调用组件,就加载虚拟化组件(121);以及 在所述虚拟化组件中,监视以寻找由所述调用组件从所述本机应用内发起的集成调用,所述集成调用需要解决能够通过虚拟命名空间(111)访问的多个资源的至少一个,以及向所述集成调用提供通过所述虚拟命名空间对所述资源的访问权。
7.如权利要求6所述的方法,其特征在于,监视以寻找所述集成调用包括检查由所述调用组件发起的调用以寻找被设置成将所述调用组件发起的所述调用的子集标识为所述集成调用的虚拟化提示标记,并且其中所述方法还包括:
8.如权利要求7所述的方法,其特征在于还包括,在所述调用组件中,在检查由所述调用组件发起的所述调用之前,拦截并在每个调用的基础上设置所述虚拟化提示标记。
9.如权利要求6所述的方法,其特征在于,所述调用组件包括集成到所述本机应用的第一动态链接库,并且其中所述虚拟化组件包括没有集成到所述本机应用中的第二动态链接库。
10.一种装置(300),包括: 存储系统(303); 存储在所述存储系统上的程序指令(305),用于促进本机应用内的各组件与各虚拟化环境的集成,所述程序指令在被处理系统(301)执行时,指导所述计算系统以至少检测从与本机命名空间(101)相关联的本机应用内发起的多个调用(103)、处理所述多个调用的每一个以标识与通过虚拟命名空间(111)能够访问的资源(115)相关联的至少一个集成调用,并向所述集成调用提供通过所述虚拟命名空间对所述资源的访问权;以及 所述处理系统被配置用于从所述存储系统获取所述程序指令并执行所述程序指令。
【文档编号】G06F9/44GK104350464SQ201380027445
【公开日】2015年2月11日 申请日期:2013年5月17日 优先权日:2012年5月25日
【发明者】A·阿加瓦尔, D·曼奇尼, P·戴维斯 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1