CN102257474B - 多个运行时容器共享的值解析 - Google Patents

多个运行时容器共享的值解析 Download PDF

Info

Publication number
CN102257474B
CN102257474B CN2009801527527A CN200980152752A CN102257474B CN 102257474 B CN102257474 B CN 102257474B CN 2009801527527 A CN2009801527527 A CN 2009801527527A CN 200980152752 A CN200980152752 A CN 200980152752A CN 102257474 B CN102257474 B CN 102257474B
Authority
CN
China
Prior art keywords
value
resolver
combination container
combination
container
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
CN2009801527527A
Other languages
English (en)
Other versions
CN102257474A (zh
Inventor
D·罗森
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 CN102257474A publication Critical patent/CN102257474A/zh
Application granted granted Critical
Publication of CN102257474B publication Critical patent/CN102257474B/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/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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44552Conflict resolution, i.e. enabling coexistence of conflicting executables
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented

Abstract

策略和服务便于在可扩展应用程序环境中在合成容器之间共享值。值解析器服务从具有值解析策略的值解析器接收请求。该服务标识具有兼容策略的其它值解析器,根据所涉及的策略对它们进行查询,获得值,并且将它们提供给请求值解析器。值解析策略指定在值解析期间搜索组合容器的次序以及在组合容器之间共享值的可见性;策略可依赖于组合容器范围。如果值解析器不能提供值,那么值解析器服务调用故障处理器。

Description

多个运行时容器共享的值解析
背景技术
软件应用程序的功能可由开发者通过代码扩展,该代码在软件运行前被定义为软件的一部分。例如,软件开发经常包括编写源代码,将源代码编译成可执行机器代码或虚拟机代码,以及将编译结果链接或者以其它方式绑定至先前创建的代码。这种扩展在编译时发生。
一些体系结构允许应用程序的功能在终端用户运行该应用程序时扩展。例如,一些应用程序支持插件,这些插件是可由应用程序(或以其名义)在运行时加载的相对较小的应用程序专用软件。插件增强了应用程序,而不是独立运行。插件是可选的,因为即使没有插件应用程序也提供基本功能。插件是应用程序专用的,被设计和实现以与特定应用程序一起操作,并且有时甚至与该应用程序的特定版本一起操作。每个应用程序提供它自己的基础结构用于定位和使用它所支持的插件。
托管(managed)可扩展性框架允许应用程序在支持不同应用程序间共享功能的基础结构中在运行时给予和接收软件功能以及应用程序专用扩展。这种应用程序被称为“可扩展的”。托管可扩展性框架的基础结构提供使应用程序基于签名和/或与扩展和应用程序相关联的其它数据类型信息从而定位和加载可用扩展的机制。
发明内容
一些实施例在可扩展应用程序环境中提供用于在组合容器间共享值的策略和服务。每个组合容器具有相应的值解析器(value resolver)。值解析器服务从具有值解析策略的值解析器接收值解析请求,并且试图标识具有兼容的值解析策略的其它值解析器。值解析策略指定在值解析期间搜索组合容器的次序,以及在值解析期间在组合容器之间共享值的可见性;可见性和次序可各自依赖于组合容器范围。值解析器服务查询其值解析策略与请求值解析器的值解析策略兼容的值解析器。如果值解析请求寻找多个经解析的值,那么值解析器服务可提供它所接收的作为查询响应的多个经解析的值的聚集集合。如果值解析器不能提供值,那么值解析器服务可调用单次使用故障处理器(handler)。
所给出的示例只是说明性的。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。相反地,提供本发明内容是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。利用权利要求书定义本发明,在本发明内容与权利要求书有冲突的情况下,应该以权利要求书为准。
附图说明
将参考附图给出更具体的描述。这些附图只示出了选定的方面,且因此不完全确定覆盖或范围。
图1是示出在操作环境中具有处理器、存储器、具有相应的值解析器的至少两个组合容器、以及其它项的计算机系统并且还示出经配置的存储介质实施例的框图;
图2是进一步示出值解析策略和其它值解析机制的框图;
图3是示出一示例体系结构中的值解析的数据流程图;
图4是示出标识符范围的图表;
图5是进一步示出值解析上下文中的范围的图表;以及
图6是示出一些方法的步骤和经配置的存储介质的实施例的流程图。
详细描述
概览
可扩展应用程序环境可包括在彼此之间导入/导出值的组合容器。在一些可扩展应用程序环境中,导入/导出遵循严格的父-子模型,例如,子容器可从父容器导入,反之则不然,并且缺少公共祖先的容器不能共享值。
微软提供被称为“MEF”(“托管可扩展性框架”)的可扩展应用程序环境。MEF提供运行时可扩展性而不在应用程序上施加插件模型。MEF允许主应用程序展示它自己的扩展以及使用外部扩展。扩展可在不同应用程序间重用,并且还可被实现为应用程序专用的。扩展可相互依赖;MEF基于类型以及其它约束自动连接扩展。MEF提供用于使应用程序定位和加载可用扩展的发现机制。MEF还支持用元数据标记扩展,这便于查询和过滤。
MEF的核心构造包括目录和组合容器。目录负责发现扩展,而组合容器则协调项目创建和满足依赖性。在MEF中,可组合部件贡献一个或多个导出,并且还可依赖于一个或多个外部提供的服务或其它导入。可组合部件还管理实例,该实例可以是给定类型的对象实例。MEF是可扩展的;可提供附加的可组合部件实现,只要它们遵循指定的导入/导出契约。契约是导出和导入之间的桥梁。导出契约可包括可用于对导出发现进行过滤(例如通过指示由导出所提供的专用能力)的元数据。
MEF支持父组合容器和子组合容器之间的有限共享。然而,共享仅仅是单向的,并且父/子关系被紧密地耦合,例如该关系需要在构造子容器时知晓。子容器仅可具有一个父容器,因而限制了可与它共享的组合的数量。
此处描述的一些实施例提供用于使组合容器跨其它组合容器解析对值的请求的机制。一些实施例还提供用于将策略应用于约束跨系统内各个组合容器发生解析的方式的机制。在一些实施例中,单个集中式服务组织解析并实施策略。定制值解析器可由其范围、解析偏好以及按照关联策略的可见性来标识。一些实施例支持动态共享,因为共享不需要先验地知道什么其它的组合容器存在。一些实施例提供解析故障处理能力以在值解析请求时创建值(例如,创建和填充组合容器)。
现在将参考诸如附图中所示出的那些示例性实施例,并使用特定语言来对其进行描述。但是,精通相关技术的人员所能想到的对此处所示出的本发明的特点的更改和进一步的修改,如此处所示出的本发明的原理的其他的应用,都应该被视为在带有权利要求的本发明的范围内。
在本发明中阐明了术语的含义,如此,应该在仔细关注这些阐明的情况下阅读权利要求书。给出了具体示例,但是,相关领域的技术人员将理解,其他示例也可以落在所使用的术语的含义范围内,并且在一个或多个权利要求的范围内。术语不一定具有与它们在一般用途中、在特定行业的用途、或在特定词典或词典集中拥有的相同含义。附图标记可以与各种措词一起使用,以帮助显示术语的广度。从给定文本片段中省略附图标记不一定意味着没有通过文本讨论附图的内容。发明人声称并行使其对于其自己的词典编纂的权利。这里在详细描述中和/或在申请文件的别处显式地或隐式地定义了术语。
如本文所使用的,“计算机系统”可包括例如一个或多个服务器、主板、处理节点、个人计算机(便携式或非便携式)、个人数字助理、蜂窝或移动电话、和/或提供至少部分地由指令控制的一个或多个处理器的其它设备。指令可以采取存储器中的软件和/或专门电路的形式。具体而言,虽然许多实施例在工作站或膝上型计算机上运行,但是其他实施例也可以在其他计算设备上运行,并且任何一个或多个这样的设备都可以是给定实施例的一部分。
“多线程化”计算机系统是支持多个执行线程的计算机系统。术语线程应被理解为包括能够或经历同步的任何代码,并且可用另一名称来称呼,如“任务”、“进程”或“协同例程”。线程可以并行地、按顺序、或以并行执行(例如,多处理)和顺序执行(例如,时间分片)的组合运行。多线程环境是以各种配置设计的。执行线程可以并行地运行,或者线程可以被组织为并行执行,但是实际轮流按顺序执行。例如,多线程化可以通过在多处理环境中在不同的核上运行不同的线程、通过对单个处理器核上的不同线程进行时间分片、或者通过时间分片和多处理器线程化的某种组合来实现。线程上下文切换可以例如由内核的线程调度器、由用户空间信号、或由用户空间和内核操作的组合来发起。线程可以轮流对共享数据进行操作,或者例如每一线程都可以对其自己的数据进行操作。
“逻辑处理器”或“处理器”是单个独立的硬件线程。例如,每一个核运行两个线程的超线程化四核芯片具有8个逻辑处理器。处理器可以是通用的,或者针对特定用途,如图形处理、信号处理、浮点算术处理、加密、I/O处理等等,对它们进行定制。
“多处理器计算机”是具有多个逻辑处理器的计算机系统。多处理器环境存在各种配置。在一给定配置中,所有处理器都在功能上是相等的,而在另一配置中,由于具有不同的硬件能力、不同的软件指派,或者两者,某些处理器可能不同于其他处理器。取决于配置,处理器可以在单条总线上彼此紧密耦合,或者它们可以是松散耦合的。在某些配置中,处理器共享中央存储器,在某些配置中,它们每一个都具有它们自己的本地存储器,而在某些配置中,存在共享的和本地存储器两种。
“内核”包括操作系统、系统管理程序、虚拟机、以及类似的硬件接口软件。
“代码”是指处理器指令、数据(包括常量、变量和数据结构)或指令和数据两者。
贯穿本文,对可选择的复数的使用意味着存在一个或多个所指示的特征。例如,“(诸)容器”意味着“一个或多个容器”或等效于“至少一个容器”。
只要参考了数据或指令,就理解这些项目配置了计算机可读存储器,从而将其变换为特定物品,而非简单地存在于纸张上、人的脑海中、或作为例如线路上的瞬时信号。
操作环境
参考图1,用于一个实施例的操作环境100可包括计算机系统102。计算机系统102可以是多处理器计算机系统,或者也可以不是。操作环境可包括一个或多个计算机系统,它们可以群集的、客户机-服务器联网的、和/或对等联网的。一些操作环境包括独立(非网络化)计算机系统。
人类用户104可以通过使用显示器、键盘、及其他外围设备106与计算机系统102进行交互。系统管理员、开发人员、工程技术人员、以及最终用户各自都是特定类型的用户104。代表一个或多个人操作的自动化代理也可以是用户104。在某些实施例中,存储设备和/或联网设备可以被认为是外围设备。图1中未示出的其他计算机系统可以与计算机系统102进行交互,或者例如通过网络接口设备使用到网络108的一个或多个连接与另一系统实施例进行交互。
计算机系统102包括至少一个逻辑处理器110。与其他合适系统一样,计算机系统102还包括一个或多个存储器112。存储器112可以是易失性的、非易失性的、固定在适当位置的、可移动的、磁性的、光学的、和/或其他类型的。具体而言,诸如CD、DVD、记忆棒、或其他可移动非易失性存储器介质之类的已配置介质114在被插入或以其他方式安装时可以在功能上变为计算机系统的一部分,从而使其内容可被访问以供处理器110使用。可移动的经配置介质114是存储器112的示例。存储器112的其他示例包括内置RAM、ROM、硬盘、以及其他不能被用户104轻松地移走的存储设备。
介质114用可由处理器110执行的指令116来配置;“可执行”在此以宽泛的意义使用来包括机器代码、可解释代码、以及在例如虚拟机上运行的代码。介质114还被配置有数据118,该数据通过指令116的执行被创建、修改、引用和/或以别的方式使用。指令116和数据118配置它们所驻留于的存储器112/介质114;当该存储器是给定计算机系统的功能部分时,指令116和数据118还配置该计算机系统。在某些实施例中,数据118的一部分代表了诸如产品特征、库存、物理测量值、设置、图像、读数、目标、卷等等之类的现实的世界的项。如此处所讨论的,这种数据还被变换。
存储器112可以是不同的物理类型。图中所示的组合容器120、它们的值解析器122、其它软件124以及其它项可以部分地或全部地驻留在一个或多个存储器112中,从而配置这些存储器。例如,操作环境也可以包括其他硬件126,例如,总线、电源和加速器。组合容器120可做出请求128,该请求可由按照导入/导出契约的另一组合容器所提供的值130来满足。
给定操作环境100可包括向开发人员提供一组协调的软件开发工具的集成开发环境(IDE)132。具体而言,对于一些实施例,合适的操作环境中的一些包括或帮助创建被配置成支持程序开发的MicrosoftVisual Studio
Figure BPA00001391243600062
开发环境(微软公司的标记)。一些合适的操作环境包括Java
Figure BPA00001391243600063
环境(Sun Microsystems公司的标记),并且一些操作环境包括利用诸如C++或C#(“C-Sharp”)等语言的环境,但本文的教导适用于各种各样的程序设计语言、程序设计模型、以及程序,以及本质上适用于软件开发领域之外的使用可扩展应用程序环境的努力。
在图1中以轮廓形式示出了托管可扩展性框架134、值解析器服务136和值解析策略138以指示它们不必是所示出的操作环境的一部分,但是可以与操作环境中的项进行交互操作,如此处所讨论的。
系统
参考图1到图3,一些实施例包括定制值解析器122、策略形式的值解析器设置138以及协调值解析器服务136。定制值解析器122不是现有值解析器122的替换,包括可能由组合容器120的拥有者使用的任何其它定制解析器。相反,定制值解析器122是一个或多个现有值解析器的包装器。定制值解析器并未被设计成防止组合容器的拥有者执行它自己的值解析试探,相反它被设计成使那些经解析的值对其它组合容器可见并且允许来自其它域的值成为经解析的值130的集合的一部分。
与每个值解析器122相关联的策略138包括指定组合容器120参与共享值130的程度的设置。在一些实施例中,策略可关于组合容器的相对次序(按此次序来解析值)和/或诸如“总是观察该容器”或“总不观察该容器”之类的类似约束在次序说明202中指定偏好。在一些实施例中,策略可指定可见性说明204中的限制,诸如组合容器是否可使用值和/或向其它组合容器提供值。在一些实施例中,策略在指定可参与彼此之间值共享的组合容器集合时依赖于范围206。
在一些实施例中,当值解析器122被创建时,它将自己向协调值解析器服务136的注册表208登记。当值解析器被要求解析对一个或多个值的请求128时,它将该请求传递到服务136,服务136随后根据每个值解析器的策略集合进行搜索。当值解析器由于具有与请求解析器的策略兼容的策略而被认为是查询的参与者时,服务获得由值解析器包装的值解析器并且使其试图解析对值的请求。在所有查询已实施之后,服务136聚集结果并将它们送回发起查询的原始值解析器。
在一些实施例中,值解析器服务136还支持每个契约基础上的故障处理器210的登记。如果查询未被满足,则服务136将调用针对指定契约已登记的任意处理器。如果处理器中的任何一个返回真(true),则将第二次尝试查询。这允许根据要求创建组合(进而是值)。在一些实施例中故障处理是单次的;一旦处理器已被调用,则它将从服务的内部存储中移除并且不会再被调用。
一些实施例包括附加代码212,诸如用于管理策略138集合的应用程序接口(API)214以及用于管理故障处理器210的API 216。
在提供了跨组件域共享值的能力的特定系统中,各单独子系统可自由地定义组件域(组合容器)以帮助满足它们的特定情况。例如,子系统可以是自包含的,因为它可由MEF知晓或MEF不知晓的各种主机使用。例如,微软VisualStudio
Figure BPA00001391243600071
编辑器可提供由包含其内置所需的或加值(value-added)组件的汇编件组成的包。当直接或经由组件模型实例化时,根编辑服务将创建它自己的组件域并且用它自己的组件对其进行填充。以这种方式构建编辑器避免了迫使编辑器适应具有其自己的生存期集合的现有组件域,并且避免了重新绑定语义和值解析策略。
作为另一示例,子系统可能限制它所提供的值的对其它组件的可见性,以及它所具有的来自其它组件的值的可见性。例如,应用程序中的、不同内部组件域中的两个子系统可各自提供要由作为该应用程序一部分的其它子系统使用的服务,而不是要由被引入系统中的公共组件域中的其它组件使用的服务。然而,应用程序子系统将能够从这些公共组件获得值。在这种情况下,在应用程序子系统之间存在多向共享,在它们和公共组件域之间存在单向共享。
一些实施例提供利用至少三个组合容器120来配置的计算机系统102。每个组合容器具有相应的值解析器122。系统还包括逻辑处理器110和与该逻辑处理器进行有效通信的存储器112。利用代码(例如,用于值解析策略138的代码和用于值解析器服务136的代码)以及值解析请求128响应(其为以该代码执行如下的值解析方法的系统产生的值130的形式)来配置存储器。值解析器服务136从第一组合容器120的第一值解析器122接收值解析请求128。(“第一”和“第二”仅仅用于标识项,并不意味着仅有两个这样的项——可以有两个或更多个。)第一值解析器具有指定次序说明(specification)202(用于在值解析期间搜索组合容器)和可见性说明204(用于在值解析期间在组合容器之间共享值)的值解析策略138。值解析器服务标识具有与第一值解析器的值解析策略兼容的值解析策略的第二组合容器的第二值解析器。值解析器服务向第二值解析器查询在值解析请求中找到的值,并且随后在值解析请求响应中向第一值解析器提供至少一个经解析的值。
在一些实施例中,配置存储器112的代码包括能够修改组合容器的值解析策略的策略API 214。例如,在一个实施例中,次序说明枚举器使用以下偏好来描述策略,这些偏好影响为发起搜索的组合容器解析值的方式:
Figure BPA00001391243600081
Figure BPA00001391243600091
在一个实施例中,以下可见性说明标记描述了影响如何共享来自组合容器的值的策略:
Figure BPA00001391243600092
在一个实施例中,还在策略API 214中提供以下自变量和其它项:
Figure BPA00001391243600101
在一些实施例中,配置存储器的代码包括用于修改对值解析器服务136可用的故障处理器210的集合的故障处理器API 216。例如,一个实施例包括以下:
public void AddResolutionFaultHandler(string contractName,ResolutionFaultHandler handler)
public void AddResolutionFaultHandler(IEnumerable<string>contractNames,ResolutionFaultHandler handler)
在一些实施例中,根据多个范围206在系统中组织组合容器120。在一些实施例中,范围206包括全局范围。可见性说明204和/或次序说明202可部分地依赖于组合容器范围。例如,在上面的示例策略API 214中,一些标记涉及相对于拥有策略的容器的内部范围或者相同范围。下面将结合例如图4和图5进一步讨论范围。
在一些实施例中,配置存储器的代码包括被设计用于管理至少某些组合容器的托管可扩展性框架134。例如,可用微软MEF框架134来配置系统。
在一些实施例中,配置存储器的代码包括故障处理器210。在一些实施例中,故障处理器例如通过注册表208条目向值解析器服务登记,并且在值解析期间可由值解析器服务调用或以其名义调用。在一些实施例中,故障处理器是单次使用处理器,其仅被调用一次,例如将组合容器从盘加载到RAM中以便容器可提供值130。在一些实施例中,至少一个组合容器是可加载的自包含子系统的一部分。
可以理解,对关于策略138的兼容性的判断取决于实施例的策略集合以及组合容器及其值解析器和策略的具体配置。通常,“兼容”是指逻辑上一致并且至少在理论上能够产生经解析的值。例如,如果两个策略中的每个策略要求在搜索其它容器前先搜索它相应的容器,则这两个策略是不兼容的。同样,指定解析器不得向其它容器的解析器提供值的策略与要求从其它容器获得值的策略不兼容。类似地,仅接受来自相同范围或内部范围内的容器的值的策略与不在这些范围内的容器的策略不兼容。相反,不指定次序偏好的策略与指定次序偏好的策略兼容。同样,禁止重新绑定的策略与允许不考虑重新绑定或缺少重新绑定的值共享的策略是正交的,并且因而是兼容的。
在一些实施例中,诸如人类用户I/O设备之类的外围设备106(屏幕、键盘、鼠标、图形输入板、话筒、扬声器、运动传感器等等)将可操作地与一个或多个处理器110和存储器122进行通信。然而,一实施例也可以深嵌入在系统中,以便没有人类用户104直接与该实施例进行交互。软件进程可以是用户104。
在一些实施例中,网络接口设备使用例如诸如分组交换网接口卡、无线收发器或电话网络接口之类的组件提供对网络108的接入,并将存在于计算机系统中。然而,一实施例也可以通过直接存储器存取、可移动非易失性介质、或其他信息存储检索和/或传输方法进行通信,或者,计算机系统中的一实施例可以不与其他计算机系统进行通信即可操作。
方法
图6在流程图600中示出一些过程方法实施方式。附图中所示的方法可以在某些实施例中,例如,由策略导向的值解析器服务136、值解析器122以及组合容器120在脚本控制下自动执行,需要极少或不需要用户输入。除非另外指明,否则也可以部分自动执行并且部分手动执行该方法。在给定实施方式中,方法的零个或更多个所示步骤可以重复,也许使用不同的参数或数据来操作。一实施例中的步骤也可以按照与图6中展示的自顶向下次序不同的次序来执行。步骤可以串行地、以部分重叠的方式、或完全并行地执行。遍历流程图600以指示在方法期间执行各步骤的次序可以随该方法的一次执行到该方法的另一次执行而变化。该流程图遍历次序也可随一个方法实施方式到另一方法实施方式而变化。假定所执行的方法是可操作的并且符合至少一个权利要求,则各步骤还可被省略、组合、重命名、重组、或以其他方式与所示流程分开。
在发送步骤602期间,一实施例将值解析请求128发送到值解析器122,值解析器122又将该请求发送到值解析器服务136。在相应的接收步骤604期间,值解析器和/或值解析器服务接收值解析请求。
在尝试步骤606期间,值解析器服务尝试标识608其策略138与发起值解析请求的值解析器的策略兼容的至少一个(在一些情况下,全部)值解析器。如果尝试成功,或者在找到多个值解析器时至少部分地成功,则标识步骤608也已发生。与涉及组合容器的其它数据/命令收发步骤一样,这些步骤可由托管可扩展性框架134来促进。
在登记步骤610期间,一实施例向值解析器服务136登记值解析器122。
在查询步骤612期间,值解析器服务查询一个或多个兼容的值解析器,从而响应于值解析请求128寻找值。
在提供步骤614期间,值解析器响应于查询步骤612的值解析请求128提供一个或多个经解析的值。
在登记步骤616期间,一实施例向值解析器服务136登记故障处理器210。
在调用步骤618期间,一实施例调用故障处理器210以允许值解析。
在次序指定步骤620期间,一实施例例如在次序说明202中指定容器搜索次序以供值解析期间使用。次序可包括强制性的和/或仅仅偏好的情况。次序可依赖于容器范围206。
在可见性指定步骤622期间,一实施例例如通过可见性说明204指定容器可见性以供值解析期间使用,容器可见性可包括强制性的和/或仅仅偏好的情况。可见性可依赖于容器范围206。
在默认策略指定步骤624期间,一实施例指定要在值解析期间遇到不具有明示策略的值解析器时使用的策略138(包括,例如次序说明和/或可见性说明)。
在加载步骤626期间,一实施例将诸如一个或多个组合容器120之类的组件加载到工作存储器,例如加载到可由在逻辑处理器110上运行的代码寻址的动态RAM。加载可由故障处理器210执行或以其名义执行,以及在一些实施例中可由托管可扩展性框架134执行。
在执行步骤628期间,图6中示出的和/或本文中讨论的一个或多个步骤由使用配置存储器112的代码的实施例执行,从而在处理器110的控制下变换由代码指令所指定的数据。
在策略修改步骤630期间,一实施例例如通过使用诸如API 214之类的API来修改可用策略138的集合。
在故障处理器修改步骤632期间,一实施例例如通过使用诸如API 216之类的API来修改可用故障处理器210的集合。
在组织步骤634期间,一实施例至少部分地根据容器120的各自相应范围206在存储器112中组织组合容器120。例如,可根据如图5所示出的范围关系一样的范围关系在具有全局范围502和一个或多个包含范围504的范围环中组织容器。
在管理步骤636期间,一实施例使用诸如例如微软MEF框架134之类的托管可扩展性框架134来管理组合容器120。管理可包括组合容器代码操作,例如,诸如分类、加载、绑定、执行以及解除分配。
在使用步骤638期间,一实施例使用可加载的自包含子系统640,例如通过从子系统640获得经解析的值130和/或向子系统640提供经解析的值130来使用该子系统640。
下面将参考各实施例更详细地讨论前面的步骤和它们的相互关系。
一些实施例提供一种在包含至少两个组合容器的计算系统中解析值的方法,其中每个组合容器具有相应的值解析器。该方法包括值解析器服务从第一组合容器的第一值解析器接收604值解析请求。第一值解析器具有指定620次序说明和/或指定622可见性说明的至少一个值解析策略。值解析器服务尝试606标识具有与第一值解析器的值解析策略兼容的值解析策略的第二组合容器的第二值解析器。使用“第一”和“第二”并不意味着限制为两个;尽管一些实施例仅有两个值解析器,但是其它实施例具有例如不止两个值解析器。在一些情况下,值解析器服务成功地标识608具有兼容的值解析策略的第二值解析器,并且值解析器服务向第二值解析器查询612在值解析请求中寻找的值。
在一些实施例中,如果对于特定的值解析器122没有明确指定策略,则使用默认策略。例如,可指定624默认策略以允许在全局范围即最内部范围中完全共享(向他方提供值并且包括来自在相同且内部的环中的他方的值)。
在一些情况下,可能发生值解析器122满足来自某些其它值解析器的特定值解析请求128的策略需求,但是仍然不能响应于该请求提供614值。组合容器可具有满足策略但不包含正被寻找的值的值解析器。可立即利用其它值解析器继续进行对值的搜索,或者可调用618值解析器的故障处理器并且随后在继续进行搜索之前重复查询。
在一些情形中,值解析请求引导值解析器服务寻找单个经解析的值。在这种情况下,值解析器服务可向第一值解析器提供614单个经解析的值130,值130是由值解析器服务接收的作为查询响应的首个值。在其它情形中,值解析请求寻找所有经解析的值,并且值解析器服务向第一值解析器提供614作为查询响应的由值解析器服务接收604的多个经解析的值的聚集集合。
在一些实施例中,组合容器具有各自相应的范围,并且第一和第二组合容器的解析策略允许在至少相同范围内的容器之间完全共享值。一些实施例按照专用、本地和全局环来定义范围。其它实施例使用全局范围(它是对每一方都是共同的最内部范围),并且按照外部范围和内部范围来组织。后一方法的示例在图5中示出。在一些实施例中,值解析器服务查询612与第一值解析器在相同环内的值解析器,并且随后向内移动。
在一些实施例中,值解析器服务调用618单次使用故障处理器。当存在对单个值的请求时,如果没有找到值则调用故障处理器,即使存在满足策略的值解析器。当存在对值的集合的请求时,即使找到了值也调用故障处理器。然而,对于特定契约调用单次使用故障处理器之后,就不能再调用它们了。
在一些实施例中,方法包括向值解析器服务登记610值解析器,因此服务将包括在值解析期间进行搜索的值解析器122。在其它实施例中,向另一系统组件登记值解析器,服务可访问该组件以定位值解析器。
已配置的介质
一些实施例包括已配置的计算机可读存储介质114,其是存储器112的一个示例。存储器122可包括盘(磁盘、光盘或其他)、RAM、EEPROM或其他ROM、和/或其他可配置存储器。已配置的存储介质可以特别地是诸如CD、DVD或闪存之类的可移动存储介质114。可以是可移动或不可移动并且可以是易失性或非易失性的通用存储器112可被配置成使用数据118和指令116形式的从可移动介质114和/或诸如网络连接等另一源读取的诸如策略138和/或服务136等项目来形成配置的介质的实施例。已配置的存储器112能够使计算机系统执行用于通过如此处所公开的通过值解析来变换数据的方法步骤。图1到6因而帮助示出已配置的存储介质实施方式和方法实施例,以及系统和方法实施例。具体而言,图3和/或图6中示出的各方法步骤中的任一步骤或本文以其他方式教导的任一步骤可被用来帮助配置存储介质来形成已配置的介质实施例。
一些实施例提供利用数据118和指令116配置的计算机可读介质114用于执行在由具有值解析器的组合容器所配置的计算系统中解析值的方法。该方法包括值解析器服务从第一值解析器接收604值解析请求,值解析器服务标识608具有与第一值解析器的值解析策略兼容的值解析策略的第二值解析器,以及值解析器服务向第二值解析器查询612在值解析请求中寻找的值。在一些情况下,至少一个组合容器解析策略被指定624为默认策略。
在一些实施例中,值解析策略次序说明202指定以下各项中的至少一个:关于针对值搜索该组合容器的次序并不存在偏好,在搜索其它组合容器前在该组合容器中搜索值,在搜索其它组合容器后在该组合容器中搜索值,仅在该组合容器中搜索值,从不在该组合容器中搜索值,仅当在其它组合容器中没有找到值时才在该组合容器中搜索值。
在一些实施例中,值解析策略可见性说明204指定以下各项中的至少一个:不允许该解析器向其它组合容器提供值或者利用来自其它组合容器的值,允许该解析器向其它组合容器提供值,允许该解析器利用来自属于与该组合容器相同的范围内的其它组合容器的值,允许该解析器利用来自属于相对于该组合容器是内部范围的其它组合容器的值,不由于在其它组合容器内发生的变化而进行重新绑定,允许该解析器利用来自其它组合容器的值,允许该解析器向其它组合容器提供值或者利用来自其它组合容器的值。指定“不重新绑定”是指在组合容器尝试对值的检索之后,该容器将不再尝试检索该值。例如,如果容器A导入多个小部件(widget)且容器B具有两个小部件,并且容器C稍后变得可用且也具有一个小部件,则将不会通知容器A说有更多的小部件可用。
在一些实施例中,该方法包括在响应于值解析请求并没有提供值之后调用618故障处理器,尽管存在具有与第一值解析器的值解析策略兼容的值解析策略的至少一个值解析器。在一些实施例中,值解析请求寻找多个值,并且该方法包括将至少一个组件加载626到计算系统动态RAM中以允许响应于值解析请求贡献值。
以上及他处提供了帮助示出该技术的各方面的示例,但是在本文内给出的示例并未描述所有可能的实施例。实施例不仅限于此处所提供的具体实现、排列、显示、特征、方法或情形。给定实施例可包括例如附加的或不同的特征、机制、和/或数据结构,并可以以别的方式偏离此处所提供的示例。记住,以下提供了补充描述和示例。
补充示例
一些实施例提供跨组合容器120的多向值解析。组合容器用作组件实例的宿主(host)并且用作这些组件实例和另一组合容器内的其他组件实例之间的隔离边界。来自组件的导出(export)以及直接添加到组合容器的值被归入该组合容器的范围,如通过组件的导入和对值的明确请求一样。
然而,组件实例隔离并不一定意味着对一个组合容器内的值的请求不能由来自其他组合容器的值来解析。在一些实施例中,组合容器120有且仅有一个分配的值解析器122,该值解析器122的工作是解析来自组合容器内的组件的对值的请求。值解析器通常将其对值的搜索范围定为发起组合容器内的组件实例,但是并不需要如此。例如,MEF提供被称为父解析器的值解析器的实例,该值解析器跨具有父/子关系的两个组合容器解析值。
MEF认可值解析可以是复数运算(complex operation),并且因而出于此目的提供可扩展点;任何人可创建可用于为其组合容器解析值的值解析器。此处所述的一些实施例提供其中多个组合容器可存在且可在它们之间共享值的机制。
跨组合容器共享值可以是有利的。例如,如果存在跨组合容器共享值的能力,那么各个单独子系统可自由地定义组合容器以帮助满足它们的具体情况。在一些情况下子系统是自包含的,因为它可由MEF知晓或MEF不知晓的各种主机使用。应用程序可提供由包含其内置的所需或值添加组件的汇编件组成的包。当直接或经由组件模型实例化时,根应用程序服务将创建它自己的组合容器并且用它自己的组件对其进行填充。以这种方式构建应用程序不会迫使应用程序开发人员使应用程序适应具有其自己的生存期集合、重新绑定语义和值解析策略的现有组合容器。
在一些情况下,范围确定的(scoped)值解析是有利的。子系统开发人员可能希望限制该子系统所提供的值的对其它组件的可见性,以及该子系统所具有的来自其它组件的值的可见性。例如,应用程序中的、不同本地组合容器中的两个子系统可各自提供要由作为该应用程序一部分的其它子系统使用的服务,而不是要由经由公共可扩展性被引入系统中的其它组件(驻留于全局组合容器中)使用的服务。然而,应用程序子系统将能够从这些公共组件获得值。在这种情况下,在应用程序子系统的容器之间存在多向共享,在它们和公共组合容器之间存在单向共享。
一些可扩展性情况涉及多个扩展,其中这些扩展之一被设计成作为默认扩展来对待。这可通过在一个扩展上提供将该扩展标识为默认扩展的元数据来解决,或者通过与获得其他扩展所经由的机制不同的机制获得默认扩展来解决。第一种方法的困难在于任何扩展可通过元数据说明它是默认扩展,从而导致可能需要用户来解决的模糊性。第二种方法的困难在于它违反了可扩展性规则,即不展示你自己未予贡献的可扩展点。然而,利用组合容器适当位置中的适当的值解析策略138,可避免这些指定默认组件的困难。
跨组合的值解析具有其他考虑。在单个应用程序中具有多个组合容器不应当阻止值在它们之间共享,除非需要如此。如上所述,MEF提供将允许跨两个组合容器单向共享值的值解析器,其中这两个组合容器中一个是父容器且另一个是子容器。然而,此处所述的一些实施例提供了支持在组合容器之间多向共享值的可配置机制。为完成对值的这种多向共享,一些实施例使用定制值解析器以及可根据明确定义的规则集聚集来自定制解析器的值的服务。
VSValueResolver是定制值解析器的一个示例。VSValueResolver不是现有值解析器或者可能由组合容器的拥有者使用的任何其它定制解析器的替换。相反,它是现有值解析器的包装器。该定制值解析器并不意图防止组合容器的拥有者执行它自己的值解析试探,而是意图帮助使得那些经解析的值对其它组合容器可见并且允许来自其它域的值成为经解析的值的集合的一部分。可以理解,诸如“VSValueResolver”之类的名称在一些实施例中可以不同。例如,此处所示的以“VS”开头的名称相反可以“Vs”为开头,“value resolvers(值解析器)”可被表示为“export providers(导出提供者)”,并且可存在其它名称改变。
VSValueResolver是可配置的,以便组合容器拥有者可决定他们的组合容器参与共享值的程度。VSValueResolver可按三种方式来配置:(i)通过搜索次序偏好,其指定组合容器解析值的相对次序,(ii)通过可见性,其指定组合容器是否可使用或向其它组合容器提供值,以及(iii)通过范围,其指定可参与彼此之间值共享的组合容器的集合。这三种约束中的任何一个或全部可在值解析策略138中指定。
在一些实施例中,当VSValueResolver被创建时,它将自己向值解析器服务136登记。当VSValueResolver被要求解析对一个或多个值的请求时,它将该请求传递到该服务,其中该服务根据每个VSValueResolver的可配置策略特性进行搜索。当VSValueResolver由于具有兼容策略而被认为是查询的参与者时,该服务取得由VSValueResolver包装的值解析器并且使其尝试解析对值的请求。在所有查询已被实施之后,该服务聚集结果并将它们送回发起查询的原始VSValueResolver。对该数据变换序列的例示在图3中示出,它是一些实施例中解析值的通用序列。
在解析失败的情况下,本实施例中的服务136将调用任何登记的故障处理器210以给予它们机会利用所请求的契约的成果(production)来处理组件困境(component soup),或者通过直接将值添加到组合容器或者通过创建并填充一个或多个新的组合容器。如果任何故障处理器随后返回真,则该服务将重复查询。在一些实施例中,在针对特定契约调用故障处理器后,这些故障处理器将从该服务的注册表移除并且将不会再被调用。
在一些情况下,组合容器被设计成参与和一组组合容器的双向共享,以及和其它组合容器的单向共享。这允许公共方无法促成的内部可扩展性,同时允许内部组件利用来自公共范围的组件。这种共享可使用解析范围206来完成。解析范围实际上是某些组合容器的容器,其中这些组合容器在一些实施例中默认地在它们之间具有双向共享且与所包含范围内的组合容器具有单向共享。
图4示出范围标识符。解析范围是由范围标识符表示的,该范围标识符可以是外部标识符404,意味着它包含另一范围标识符,或者可以是内部标识符402,意味着它被包含在另一范围标识符内。图4利用明确示出的两个级别说明范围标识符之间的关系。对范围标识符的包容的深度并不存在理论限制。
一些人可能将范围想成是一组同心环,如图5所示,其中每个环表示由范围标识符所标识的范围。如果一个范围意在包含另一范围,则该包含范围由外部范围标识符所标识,否则它由内部范围标识符所标识。全局范围是所有范围层次中绝对的最内部的环,如图5所示,因此该全局范围内的任何组合容器可向系统中任何其它组合容器提供值。
如图5所示,单独的界定范围的(scoping)环可通过创建不同的内部和外部范围标识符而存在。在一些实施例中,特定范围内的组合容器具有向与它们在相同范围内的组合容器提供值以及从其获得值的能力,向外部范围提供值的能力,以及从内部范围中的组合容器获得值的能力。然而,它们不具有与不在它们的界定范围的层次中的组合容器共享值的能力。
在一些实施例中,范围可具有不止一个包含范围。给定的范围可被包含在不止一个外部范围内。在这种情况下,外部范围中的组合容器彼此之间将不共享值,但是它们将能够从相同内部范围获得值。
在一些实施例中,对于组合容器的解析次序始于包含该组合容器的环并且向内移动。当解析多个值时,将返回所有组合容器内的所有的值。然而,当解析单个值时,一找到值就结束搜索。
在利用MEF的一些实施例中,除非另外指定,VSValueResolver将创建和包装CatalogResolver并将其自身放入解析服务中作为全局范围的一部分。作为本地或专用范围的一部分,这些范围的对象标识符必须被传递到VSValueResolver的构造函数。示例VSValueResolver构造函数包括:
Figure BPA00001391243600191
在一些实施例中,VSValueResolver还允许在每XName的基础上设置解析偏好。通过使用以下示例,对特定XName的设置优先于为VSValueResolver指定的全部设置:
public void AddPreference(string name,VSValueResolutionPreferencepreference)
public void RemovePreference(string name)
关于VSValueResolver的其它公用方法只有组件模型所调用的用于实际上执行解析值请求的那些方法。无需曾直接从应用程序专用代码调用这些方法:
public override bool TryResolveToValue(string name,out IImportInfo value)
public override bool TryResolveToValues(string name,outIEnumerable<IImportInfo>values)
关于自引导子系统,一个有用的情况允许自包含子系统640,即可在与其它组件或组合容器的存在无关的情况下被加载到任何主机中的子系统。在一些实施例中,唯一被一致同意的契约是组合容器的所有拥有者将VSValueResolver用作他们的值解析器。以下两个示例示出MEF知晓主机以及非MEF知晓主机两者如何能够自引导子系统。
关于在MEF知晓主机中加载子系统,考虑以下代码:
Figure BPA00001391243600201
SubSystemLoader类由主机所知晓且被添加到主组件域中,并且将使所有子系统被加载。加载器的导入将所有ISubSystemLoader值导入。foreach循环在每个加载器中迭代并且使其加载它的子系统。导出(The Export)提供实现ISubSystemLoader契约的编辑器加载器类。VSValueResolverSettings构造函数调用指定该组件域将是全局范围的一部分,将使它的值先被搜索,将允许它的值被其它组件域使用,以及将接受来自其它组件域的值。该代码使用编辑器作为一个示例,但是其它应用程序也可类似地配置。
关于在非MEF知晓主机中加载子系统,考虑以下代码:
Figure BPA00001391243600212
Figure BPA00001391243600221
如果主机特别地知晓该编辑器,则它可简单地实例化该编辑器的加载类并且调用加载函数LoadEditorSubSystem()。如果主机不知晓任何特定子系统,则它可使用LoadSubSystems()经由反射加载所有已安装的子系统。如果一个类型实现ISubSystemLoader接口,那么FindInterfaces调用将其实例化并且调用加载。该代码同样使用编辑器作为一个示例,但是可理解其它应用程序也可类似地配置。
在一些实施例中,API包括以下VSValueResolver构造函数:
Figure BPA00001391243600222
Figure BPA00001391243600231
在一些实施例中,API包括以下VSResolverService方法:
Figure BPA00001391243600232
Figure BPA00001391243600241
结论
虽然在此将具体实施方式明确示出并描述为方法、已配置介质,或系统,但可以明白,一种类型的实施方式的讨论一般也延及其他实施方式类型。例如,结合图6的方法描述还帮助描述已配置的介质,并帮助描述如结合其他附图讨论的那些系统和制品等系统和制品的操作。对一个实施例的限制也不一定适用于另一个实施例。具体而言,方法不一定需要限于在讨论诸如经配置的介质等系统或制品时呈现的数据结构和安排。
不是图中所示出的每一项都需要存在于每个实施例中。相反,实施例可以包含图中未显式地示出的项。虽然一些可能性在此处通过具体示例在文本和附图中示出,但是各实施例可以偏离这些示例。例如,一示例的具体特征可以被省略、重命名、以不同的方式分组、重复、不同地以硬件和/或软件实例化,或是在两个或更多示例中出现的特征的混合。在某些实施例中,在一个位置处示出的功能也可以在不同的位置处提供。
通过附图标记参考了附图。在附图或文本中与给定附图标记相关联的措词中的任何显而易见的不一致性应该被理解为仅仅时拓宽该标记所引用的内容的范围。
如此处所使用的,诸如“一”和“该”等术语包括了所指示的项目或步骤中的一个或多个。具体而言,在权利要求书中,对一个项的引用一般表示至少一个这样的项存在,并且对一个步骤的引用表示执行该步骤的至少一个实例。
标题是仅出于方便起见的;关于给定话题的信息可在其标题指示该话题的节之外找到。
所提出的所有权利要求都是本说明书的一部分。
尽管在附图中示出了并在上文描述了示例性实施例,但是,对于本领域的技术人员来说显而易见的是,在不偏离权利要求书中所阐述的原理和概念的情况下,可以进行很多修改。尽管已经用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。不一定在给定定义或示例中标识的每一个手段或方面都在每个实施例中存在或使用。相反,所描述的具体特征和动作是作为供当实现权利要求书时考虑的示例来公开的。
落入权利要求书的等效方案的含义和范围内的所有改变应在法律允许的最大可能的范围内被权利要求书的范围所涵盖。

Claims (21)

1.一种在包含至少两个组合容器(120)的计算系统(102)中解析值的方法,其中每个组合容器具有相应的值解析器(122),所述方法包括以下步骤:
值解析器服务(136)从第一组合容器的第一值解析器接收(604)值解析请求(128),所述第一值解析器具有指定以下各项中的至少一个的至少一个值解析策略(138):用于在值解析期间搜索组合容器的次序说明(202),用于在值解析期间在组合容器之间共享值的可见性说明(204);以及
所述值解析器服务尝试(606)标识具有与所述第一值解析器的所述值解析策略兼容的值解析策略的第二组合容器的第二值解析器。
2.如权利要求1所述的方法,其特征在于,还包括:
所述值解析器服务标识(608)具有与所述第一值解析器的所述值解析策略兼容的值解析策略的第二组合容器的第二值解析器;以及
所述值解析器服务向所述第二值解析器查询(612)在所述值解析请求中寻找的值。
3.如权利要求2所述的方法,其特征在于,所述值解析请求寻找单个已解析的值,并且所述方法还包括所述值解析器服务向所述第一值解析器提供(614)单个已解析的值,其为所述值解析器服务接收的作为查询响应的首个值。
4.如权利要求2所述的方法,其特征在于,所述值解析请求寻找多个被解析的值,并且所述方法还包括所述值解析器服务向所述第一值解析器提供(614)由所述值解析器服务接收的作为查询响应的多个已解析的值的聚集集合。
5.如权利要求2所述的方法,其特征在于,所述组合容器具有各自相应的范围(206),并且所述第一和第二组合容器的解析策略允许在相同范围内的容器之间完全共享值。
6.如权利要求1所述的方法,其特征在于,还包括所述值解析器服务调用(618)单次使用故障处理器(210)。
7.如权利要求1所述的方法,其特征在于,还包括向所述值解析器服务登记(610)值解析器。
8.一种在包含至少两个组合容器(120)的计算系统中解析值的方法,其中每个组合容器具有相应的值解析器(122),所述方法包括以下步骤:
值解析器服务(136)从第一组合容器的第一值解析器接收(604)值解析请求(128),所述第一值解析器具有至少一个值解析策略(138),所述至少一个值解析策略指定用于在值解析期间搜索组合容器的次序说明(202)以及用于在值解析期间在组合容器之间共享值的可见性说明(204);
所述值解析器服务标识(608)具有与所述第一值解析器的所述值解析策略兼容的值解析策略的第二组合容器的第二值解析器;以及
所述值解析器服务向所述第二值解析器查询(612)在所述值解析请求中寻找的值。
9.如权利要求8所述的方法,其特征在于,至少一个组合容器解析策略的次序说明指定(620)以下各项中的至少一个:
关于在该组合容器中搜索值的次序不存在偏好,
在搜索其它组合容器之前在该组合容器中搜索值,
在搜索其它组合容器之后在该组合容器中搜索值,
仅在该组合容器中搜索值,
从不在该组合容器中搜索值,
只有在其它组合容器中没有找到值时才在该组合容器中搜索值。
10.如权利要求8所述的方法,其特征在于,至少一个组合容器解析策略的可见性说明指定(622)以下各项中的至少一个:
不允许该解析器向其它组合容器提供值或者利用来自其它组合容器的值,
允许该解析器向其它组合容器提供值,
允许该解析器利用来自与该组合容器属于相同范围的其它组合容器的值,
允许该解析器利用来自相对于该组合容器属于内部范围的其它组合容器的值,
不由于在其它组合容器内发生的变化而重新绑定,
允许该解析器利用来自其它组合容器的值,
允许该解析器向其它组合容器提供值或者利用来自其它组合容器的值。
11.如权利要求8所述的方法,其特征在于,至少一个组合容器解析策略被指定(624)为默认策略。
12.如权利要求8所述的方法,其特征在于,所述方法还包括在响应于所述值解析请求并没有提供值之后调用(618)故障处理器(210),尽管存在具有与所述第一值解析器的所述值解析策略兼容的值解析策略的至少一个值解析器。
13.如权利要求8所述的方法,其特征在于,所述值解析请求寻找多个值,并且所述方法还包括将至少一个组件加载(626)到计算系统动态RAM(112)中以允许响应于所述值解析请求贡献值。
14.一种在包含至少两个组合容器(120)的计算系统中解析值的系统,其中每个组合容器具有相应的值解析器(122),所述系统包括:
用于使值解析器服务(136)从第一组合容器的第一值解析器接收(604)值解析请求(128)的装置,所述第一值解析器具有至少一个值解析策略(138),所述至少一个值解析策略指定用于在值解析期间搜索组合容器的次序说明(202)以及用于在值解析期间在组合容器之间共享值的可见性说明(204);
用于使所述值解析器服务标识(608)具有与所述第一值解析器的所述值解析策略兼容的值解析策略的第二组合容器的第二值解析器的装置;以及
用于使所述值解析器服务向所述第二值解析器查询(612)在所述值解析请求中寻找的值的装置。
15.如权利要求14所述的系统,其特征在于,所述系统还包括用于提供更改组合容器的值解析策略的至少一个API(214)的装置。
16.如权利要求14所述的系统,其特征在于,所述系统还包括用于提供更改对所述值解析器服务可用的一组故障处理器的至少一个API(216)的装置。
17.如权利要求14所述的系统,其特征在于,所述组合容器在所述系统中根据包括全局范围的多个范围来组织,并且所述可见性说明至少部分地依赖于组合容器范围。
18.如权利要求14所述的系统,其特征在于,所述系统还包括用于提供管理所述组合容器中的至少某些组合容器的托管可扩展性框架(134)的装置。
19.如权利要求14所述的系统,其特征在于,所述系统还包括用于提供向所述值解析器服务登记的且对所述值解析器服务可用的单次使用故障处理器(210)的装置。
20.如权利要求14所述的系统,其特征在于,至少一个组合容器是可加载的自包含子系统(640)的一部分。
21.一种在包含至少两个组合容器(120)的计算系统(102)中解析值的系统,其中每个组合容器具有相应的值解析器(122),所述系统包括:
用于使值解析器服务(136)从第一组合容器的第一值解析器接收(604)值解析请求(128)的装置,所述第一值解析器具有指定以下各项中的至少一个的至少一个值解析策略(138):用于在值解析期间搜索组合容器的次序说明(202),用于在值解析期间在组合容器之间共享值的可见性说明(204);以及
用于所述值解析器服务尝试(606)标识具有与所述第一值解析器的所述值解析策略兼容的值解析策略的第二组合容器的第二值解析器的装置。
CN2009801527527A 2008-12-19 2009-12-11 多个运行时容器共享的值解析 Active CN102257474B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/340,173 US8140554B2 (en) 2008-12-19 2008-12-19 Shared value resolution with multiple runtime containers
US12/340,173 2008-12-19
PCT/US2009/067784 WO2010080349A2 (en) 2008-12-19 2009-12-11 Shared value resolution with multiple runtime containers

Publications (2)

Publication Number Publication Date
CN102257474A CN102257474A (zh) 2011-11-23
CN102257474B true CN102257474B (zh) 2013-09-25

Family

ID=42267577

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009801527527A Active CN102257474B (zh) 2008-12-19 2009-12-11 多个运行时容器共享的值解析

Country Status (5)

Country Link
US (1) US8140554B2 (zh)
EP (1) EP2380078B1 (zh)
CN (1) CN102257474B (zh)
HK (1) HK1164482A1 (zh)
WO (1) WO2010080349A2 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8793708B2 (en) * 2010-12-08 2014-07-29 Microsoft Corporation Creation and termination of component scopes
US9201723B2 (en) * 2011-06-27 2015-12-01 International Business Machines Corporation Fault handling in a distributed IT environment
US10200246B1 (en) * 2015-09-01 2019-02-05 Vmware, Inc. Importing parameters from nested information-technology blueprints
CN106874068B (zh) * 2017-02-09 2020-02-21 联想(北京)有限公司 主机装置的容器运行加速方法及系统
CN115048313B (zh) * 2022-06-30 2023-12-08 中国电信股份有限公司 自动化测试方法及装置、计算机可读存储介质及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101277304A (zh) * 2008-03-21 2008-10-01 北京航空航天大学 基于规则的Web服务运行环境管理系统及管理方法

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69637733D1 (de) * 1995-02-13 2008-12-11 Intertrust Tech Corp Systeme und verfahren für ein sicheres übertragung
US5812759A (en) * 1996-11-08 1998-09-22 Allen Bradley Company, Inc. Fault handling with loaded functions
US5964871A (en) * 1997-03-10 1999-10-12 Compaq Computer Corporation Resolution of resource conflicts by reduction of systems to solve
US6052526A (en) * 1997-04-17 2000-04-18 Vertel Corporation Data structure and method for dynamic type resolution using object-oriented programming language representation of information object sets
US7401131B2 (en) * 2000-05-22 2008-07-15 Verizon Business Global Llc Method and system for implementing improved containers in a global ecosystem of interrelated services
US7088374B2 (en) * 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7349913B2 (en) * 2003-08-21 2008-03-25 Microsoft Corporation Storage platform for organizing, searching, and sharing data
US7380086B2 (en) * 2003-12-12 2008-05-27 International Business Machines Corporation Scalable runtime system for global address space languages on shared and distributed memory machines
US7823150B2 (en) * 2005-01-25 2010-10-26 International Business Machines Corporation Computer-implemented method, system and program product for establishing multiple read-only locks on a shared data object
US7660809B2 (en) * 2005-01-31 2010-02-09 Microsoft Corporation Using a file server as a central shared database
US20070074156A1 (en) * 2005-09-01 2007-03-29 Microsoft Corporation Componentization of software computer programs
JP4852938B2 (ja) * 2005-09-02 2012-01-11 富士ゼロックス株式会社 データサーバ及びデータ管理方法及びプログラム
US8938554B2 (en) * 2006-03-02 2015-01-20 Oracle America, Inc. Mechanism for enabling a network address to be shared by multiple labeled containers
US8099774B2 (en) * 2006-10-30 2012-01-17 Microsoft Corporation Dynamic updating of firewall parameters

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101277304A (zh) * 2008-03-21 2008-10-01 北京航空航天大学 基于规则的Web服务运行环境管理系统及管理方法

Also Published As

Publication number Publication date
US8140554B2 (en) 2012-03-20
EP2380078A4 (en) 2016-06-15
EP2380078B1 (en) 2019-01-23
EP2380078A2 (en) 2011-10-26
US20100161632A1 (en) 2010-06-24
WO2010080349A3 (en) 2010-08-26
CN102257474A (zh) 2011-11-23
HK1164482A1 (en) 2012-09-21
WO2010080349A2 (en) 2010-07-15

Similar Documents

Publication Publication Date Title
Kolovos et al. The epsilon transformation language
CN101589366B (zh) 面向生成器图的编程框架中的并行化和植入
US7984417B2 (en) Meta-model information associated with an enterprise portal
US5842220A (en) Methods and apparatus for exposing members of an object class through class signature interfaces
CN105723341B (zh) 用于布局引擎和脚本引擎的存储器模型的实现方法及系统
CN102292736A (zh) 利用合成容器的协作环境项目可扩展性
US7590980B1 (en) System and method for a functional extensibility framework
US20090006987A1 (en) Visual design tools for portal content creation
CN102257474B (zh) 多个运行时容器共享的值解析
JPH08508594A (ja) 共用ライブラリ探索システム
US10909092B2 (en) Automated database creation
MX2010012816A (es) Division configurable para datos paralelos.
US20130019225A1 (en) Incremental Inferences for Developing Data Models
US20120159515A1 (en) Sharing object representations
CN100535856C (zh) 一种构造中间库的方法
US9141353B2 (en) Dynamically building locale objects at run-time
US7603666B2 (en) Class loader
US20070005745A1 (en) Method for consistent and efficient management of program configuration and customizing data
Andrei et al. Swing: An integrated environment for geospatial semantic web services
Yang et al. A predicative semantic model for integrating UML models
Tran et al. On the role and application of ontologies in information systems
Burgueño et al. LinTraP: Primitive Operators for the Execution of Model Transformations with LinTra.
Laurence et al. Programming Android with Kotlin
Guerra et al. Pattern language for the internal structure of metadata-based frameworks
Auer A Web based platform for collaborative ontology management

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1164482

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: GR

Ref document number: 1164482

Country of ref document: HK

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150505

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

Effective date of registration: 20150505

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.