CN1652077A - 面向对象编程语言和工具中的版本化支持 - Google Patents

面向对象编程语言和工具中的版本化支持 Download PDF

Info

Publication number
CN1652077A
CN1652077A CN200410011653.6A CN200410011653A CN1652077A CN 1652077 A CN1652077 A CN 1652077A CN 200410011653 A CN200410011653 A CN 200410011653A CN 1652077 A CN1652077 A CN 1652077A
Authority
CN
China
Prior art keywords
target element
version
assembly
request
described target
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
CN200410011653.6A
Other languages
English (en)
Other versions
CN100507836C (zh
Inventor
A·S·维廉姆斯
C·D·霍奇斯
C·A·奇珀斯基
J·S·米勒
J·J·里瓦德
J·C·霍金斯
P·H·杜萨德
S·帕萨沙拉西
W·G·伊文斯
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 CN1652077A publication Critical patent/CN1652077A/zh
Application granted granted Critical
Publication of CN100507836C publication Critical patent/CN100507836C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • 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/44536Selecting among different versions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

包括在目标组件中的版本化政策指示目标组件如何被访问,例如是作为库组件还是平台组件。当组件不以二元相容方式进行版本化时,组件可被指定为库组件。当其它组件请求这种组件时,它们明确地接收到所请求的组件版本。另一方面,当组件以二元相容方式进行版本化时,组件可被指定为平台组件。当其它组件请求这种组件时,它们接收到所请求组件的最新升级的版本。因而,促成了对组件的适当版本(甚至是有别于所请求版本的版本)的访问。其它实施例包括基于不同处理层对组件范围分级的机制。

Description

面向对象编程语言和工具中的版本化支持
技术领域
本发明涉及在软件环境中协调软件组件的系统、方法、和计算机程序产品。
背景技术
计算机化电子系统越来越普遍,其部分原因是这种计算机化系统自动化了许多以前人们必须人工执行的任务。因此,计算机化系统在人们执行任务的能力上增加了一定的效率。
为计算机化系统产生计算机化指令(在此也称为“软件”或“程序”)的过程是有些棘手的。一般而言,软件开发者首先必须设想程序应执行的期望功能或结果,然后把相应的文本格式指令输入到通常为编程源程序形式的电子文本文件中。在使用诸如解释编程语言(例如Javascript、Perl等等)的有些情形中,计算机化系统直接解释被输入的文本格式指令,并执行期望功能。在使用诸如编译编程语言(例如C#-发音为“C sharp”、C++等等)的其它情形中,文本格式指令首先被编译成计算机化系统可执行的对象或机器码。
对于更复杂的程序,开发者有时会以众多互操作“组件”来实现程序功能性。一般而言,组件(或程序组件)是计算机可执行指令组,很像是较大的应用程序,尽管它们往往是比较小且不那么复杂,因为它们通常被调整来提供一个或少数功能。因为给定组件有时能像独立程序一样运行并且还能与其它组件通信,更为复杂的系统有时也能可互换地被称为“组件”。此外,组件可被泛指为“请求组件”或“目标组件”,尽管这种指定可能是随意的,取决于哪个组件或程序在访问其它组件或程序。
在任何情况中,程序设计者可设计计算机化系统上的一个组件,用来请求对任意数量计算机化系统的其它组件进行访问。目标组件可包括提供诸如用户姓名和年龄的基本信息、或提供诸如用户使用级别或给定应用程序精致度的更复杂信息的功能。软件组件还能提供系统功能,诸如执行指令来打开文件、指示通信协议从而使一个组件或程序可与其它组件交互等等。当然,可以理解:大型操作系统能包括可被配置为与多个不同程序一起运行的许多组件,反之亦然。
一般,请求组件具有对目标组件的引用(reference)。可能是请求组件指向目标组件的特定版本(严格引用)。指向目标组件的特殊定本可能在例如当请求组件的开发者对目标组件提前有所认知、并希望使请求组件明确依赖于目标组件特定版本时发生。例如,请求“组件1”可被配置成引用“组件3”的目标“版本1.1”,以使“组件1”明确依赖于“组件3”的“版本1.1”。另一方面,请求组件指向当请求组件被开发时可能存在或甚至还不存在的目标组件(松散引用)。因而,开发者引用目标组件而对其并没有提前认知。因此,请求组件可在运行时发现目标组件版本的存在。例如,在运行时“组件1”可能发现“组件3”的“版本2.1”。
不幸的是,不管请求组件是严格地还是松散地指向目标组件,在总体软件设计过程中实现程序组件都存在着不少缺点。例如,当用户更新被一个或多个请求组件引用的目标程序时,如果目标组件的更新版本变得与其不相容时,这一个或多个请求组件将无法运行。该问题会发生在当请求组件开发者不能预期相关目标组件开发者可能在未来所实现的改变的数量和类型时。相比之下,禁止目标组件更新或者禁止组件更新覆盖目标组件前版本的系统政策,会导致系统很快过时、或变得无效而臃肿。
有些克服这些问题的方法包括系统管理员尝试着在同一系统内管理对目标组件不同版本的严格和松散引用。在这种场景中,当给定目标组件安装到计算机系统中时或当其首次运行时,计算机化系统标识其版本号。然后,计算机化系统存储被标识目标组件信息以及也被安装于系统中的目标组件任意其它版本的信息。当计算机化系统请求对目标组件的访问时,计算机化系统则把请求组件按需匹配到目标组件的被请求版本。
不幸地,该类系统还是存在着不少缺点。例如,当目标组件被安装到系统上时,其仅有的可用信息可能是目标组件的版本。然而,系统不能标识出是否目标组件的特定版本是目标组件先前版本的更新。系统也不能标识出是否开发者在将来的某一时间点上打算更新目标组件的特定版本,因为该信息是未知的。该信息以及其它必要操作参数必须由系统管理员提供。
例如,系统管理员必须基于给定目标组件可用的少许信息,或管理员所预期的来尝试配置系统,并在给定目标组件安装或首次运行时把该有关目标组件的信息提供给系统。特别地,系统管理员必须常常提供不同目标组件的访问规则,这些访问规则指示是否访问其它目标组件特定版本时对一些请求组件有所要求,以及是否另外的其它请求组件被允许访问其它目标组件的更新版本,等等。系统管理员还必须在认识到请求和目标组件版本间的冲突时向系统提供任何其它信息。因而,当请求组件请求给定目标组件时,系统通常基于被请求目标的版本、存储在系统上的任何目标组件版本、和系统管理员提供的任何其它信息来授权对目标组件的访问。
然而,可以理解,这种把对目标组件的严格和松散引用相混合的系统对系统管理员而言是过分复杂了。由于当第三方开发者在编写给定目标组件时系统管理员对第三方开发者的思路并非总是知情,情况就更是这样了。此外,系统管理员不可能总是预见到是否某些目标组件被设计为与请求组件其它版本或类型相兼容。对大型系统而言更是这样,在大系统中,大量请求组件被配置成以任何给定方式访问各种各样的目标组件。
因此,用允许请求和目标组件的现在的和未来的版本按配置在计算机化系统中合作的系统、方法、和计算机程序产品可实现本领域中的一个优点。特别地,用自动地允许这种组件合作、使得只需系统管理员的很少输入甚至不需其输入程序和组件即能继续有效工作的系统和方法可实现本领域中的一个优点。
发明内容
本发明用允许程序开发者轻松适应组件、模块、和操作系统中的变化而不削弱程序功能的系统、方法和计算机程序产品解决了本领域现有技术中存在的一个或多个前述问题。特别地,揭示了允许通过静态或动态引用相互访问的程序和组件在操作系统中可相容地共存的系统。
在本发明的至少一个示例实现中,一确定模块能从请求模块接收访问目标组件指定版本的请求。该请求可包括指定目标组件的版本化(versioning)政策。可选地,确定模块能标识指定目标组件的版本化政策。例如,版本化政策可被包括在目标组件内的数据域中。当目标组件在计算机化系统上被安装或运用时,版本化政策和特定版本的标识可响应于请求进行。其它政策在适当时也可被标识,诸如组件范围,还有系统管理员提供的任何系统政策。因此主要基于包含在请求中的和包含在目标组件中的信息,请求组件被准予对目标组件的适当版本进行访问。
在本发明的另一示例实现中,确定模块接收目标组件的升级,并能标识关联于目标组件和/或请求组件的版本化政策。基于在版本化政策中提供的信息,确定模块能用升级的组件替换目标组件,或能将目标组件升级简单地添加到系统中去,从而使目标组件的原始版本和升级版本共存。因此,对目标组件的升级以适于请求组件的方式进行处理,使得如果必要,访问目标组件的任何请求组件将继续访问目标组件的原始版本或先前版本。
本发明的附加特征和优点将在以下说明书中陈述,且部分地将在说明书中显见,或从本发明的实践中得到认识。本发明的特征和优点可通过所附权利要求书中指出的手段(instruments)和组合实现和获取。本发明的这些和其它特征在以下说明书和所附权利要求书中将变得更完全地显见,或在此后陈述的本发明实践中得到认识。
附图说明
为了描述本发明可获取上述及其它的优点和特征的方式,对以上简述的本发明进行的更详细描述将参照附图中所示具体实施例来呈现。理解了这些附图仅示出本发明典型实施例且因此不将其视为限制本发明范围,本发明将通过使用附图以附加特征和细节来进行描述并解释。
图1示出了根据本发明原理向请求组件提供对目标组件的访问的示例计算机构架;
图2A示出了根据本发明原理接收现有组件较新版本的示例计算机构架;
图2B示出了根据本发明原理确定模块确定了要保留之组件版本后的图2A的示例计算机构架;
图3示出了根据本发明原理在不同处理级别上将组件范围分层的示例计算机构架;
图4示出了根据本发明原理用于提供组件访问的方法的示例流程图;
图5A示出了根据本发明原理用于管理组件升级的方法的示例流程图;
图5B示出了根据本发明原理用于限制组件范围的方法的示例流程图;以及
图6示出了用于实践本发明诸方面的适当环境。
具体实施方式
本发明涉及使得程序开发者轻松适应组件、模块、和操作系统中的变化,而不削弱程序功能的系统、方法、和计算机程序产品。特别地,揭示了允许通过静态或动态引用相互访问的程序和组件在操作系统中可相容地共存的系统。本发明的诸实施例可包括具有各种计算机硬件的专用或通用计算机,在下面进行更详细的讨论。
本发明范围中的实施方式还包括用于承载或具有存储于其上的计算机可执行指令或数据结构的计算机可读介质。这种计算机可读介质可以是能被通用或专用计算机访问的任意可用介质。作为示例,且非限制,这种计算机可读介质可包括能以计算机可执行指令或数据结构的形式被用来执行或存储所需程序编码、及能被通用或专用计算机访问的RAM、ROM、EEPROM、CD-ROM或其它光盘存储器、磁盘存储器或其它磁性存储设备、或任意其它介质。
当信息通过网络或另一通信连接(硬接线、无线、或硬接线或无线的组合)被传送或提供给计算机,计算机适当地将该连接视为计算机可读介质。因此,任何这种连接被适当地称为计算机可读介质。以上组合也应被包括在计算机可读介质的范围内。计算机可执行指令包括例如使通用计算机、专用计算机、或专用处理设备执行一定功能或功能组的指令和数据。
图1示出了实践本发明实现的示例性计算机架构,其中确定模块100从请求组件105接收一个或多个访问诸如组件120、125和130的另一组件或程序的请求。在本说明书和权利要求中,“确定模块”100能包括具有可执行指令的任何类型的模块,其被配置以例如标识指向目标组件的引用(包括组件名称和原始指定版本)、以及选定将用来满足该请求的适当目标组件。在部分情形中,这可包括判定没有这种目标组件可用,使得确定模块100会被配置为返回错误。如此后将要详细描述的,确定模块100还能被配置用来标识其它信息,诸如在计算机系统、过程或子过程中有哪些其它组件已经可用。
另外,在本说明书和权利要求中,“组件”将被理解为包括能在计算机化系统上运行的任意形式的可执行指令,诸如已解释文本格式文件、已被编译成机器可读指令的文件。因此,术语“组件”既能包括提供许许多多各种功能的较大应用程序和系统,也能包括向其它组件或程序提供特定功能性的的较小程序和/或系统组件。此外,尽管在本说明书中有时在“应用”、“应用程序”、“程序”和组件之间做了区分,但这些区分通常仅仅是为了澄清一组可执行指令是正在发出或是接收访问另一组件的请求,因为其每一个都可适当地被称为组件。因而,术语“请求组件”和“目标组件”能包括任意前述可执行指令,此后将更详细地描述。
本发明的诸实施例能访问被分类为“平台”(platform)或“库”(library)组件的组件。“平台”组件是可被计算机化系统中的多个其它组件或程序访问的组件。平台组件通常仅以最新形式或升级后的形式被访问,使得请求组件仅可一般地请求目标组件或请求目标组件的最小版本,而不是请求目标组件的特定版本。因而,确定模块可例如被配置为提供平台组件版本而不是最新版本。理论上,当接收到升级时平台组件可被组件升级覆盖掉,尽管有在实践中可以没这么做的理由。平台组件有时也可被称为“二元相容”组件。相比之下,仅当库组件的相同版本被精确地引用时,库组件才能被另一组件或程序访问。
如图1所示,确定模块100可从请求组件105接收访问诸如组件120、125和130的目标组件的请求或声明。在本说明书和权利要求中,术语“目标组件”指的是请求组件寻求对其访问的组件。然而,可以理解,组件是目标组件或请求组件主要是一个看问题的角度,取决于哪个组件请求对其它组件的访问。这样,在本说明书和权利要求中适于目标组件的讨论同样适于请求组件,反之亦然。
在任何情形中,请求组件105可通过确定模块110启动组件访问请求110,其中该请求指示请求模块105被配置为访问目标组件120、125和130的给定版本。在一些实现中,请求110是当请求组件105被首次安装到给定计算机化系统(未示出)上时在请求组件105的源程序中发现的引用。可选地,请求110可由请求组件105在运行时当请求对诸如组件120、125和130的目标组件特定版本的访问时做出。
在本说明书和权利要求中,“版本化政策”包括可从目标组件(例如120、125、130)传送到确定模块100的给定属性组中的任意属性。版本化政策131、132或133指定是否目标组件120、125、130可分别代替有较低版本号的给定目标组件。版本化政策可包括打算用于确定模块100中的附加信息,以确定是否目标组件可在给定配置中使用。因而,当请求的是版本1.1时,版本化政策130可指定目标组件125(版本1.2)可以使用。在部分实施例中,版本化政策可在目标组件中预定位置找到。在其它实施例中,当组件被安装到系统中或对给定组件作访问的首次请求时,版本化政策能被传送到确定模块100。
因此,通过请求目标组件的特定版本,请求组件可请求对目标组件的访问,例如请求110对“组件1”“版本1.1”的请求。如果请求组件105请求目标组件的特定版本或被配置成用其工作,取决于目标组件中出现的版本化政策131、132、133,确定模块100能向请求模块105提供对组件特定版本的访问。如图1所示,例如,请求组件105通过发送请求110请求“组件1”的“版本1”。因而,确定模块100向请求组件105授予对“组件1”的“版本1.1”的访问,即使“组件1”的更近的版本例如“版本1.2”125在系统中存在。
相比之下,在部分实施例中,对组件一个版本的请求会导致对组件另一版本(例如更新过的或更近的版本)的访问。例如,请求100可以是访问“组件1”的“版本1”的请求。然而,版本化政策131可指示“版本1.1”是平台组件(因此,“组件1”的最新版本被作为对请求的响应而提供)。此外,在部分实现中,系统上仍然有给定平台组件的多个版本。
这样,请求组件还可在请求中包括指示请求组件105能接受的平台目标组件的最低可能版本的信息。例如,可能请求组件105请求“组件1”的“版本1.4”,而“组件1”的更低版本不会响应该请求而被返回。因此,即使“版本1.1”和“版本1.2”也是可访问的,确定模块100可向请求组件105提供对“组件1”的“版本3”的访问。
当请求组件的所有可能版本的版本号比指定请求版本低时,确定模块100可向请求组件返回适当响应(例如错误信息)。例如,当确定模块100无法访问“组件1”的“版本3”时,响应于对“组件1”的“1.4或以上版本”的请求,确定模块100会向请求组件105发送错误信息。
版本号可能包括两部分:版本和维修(a version and a servicing)。具有指示更新维修的版本号的组件被允许用来替换具有指示较旧维修的版本号的组件。利用维修值来推动组件替换对实现较小改变是特别有利的:降低了因改正与库组件或平台组件相关的程序缺陷或安全问题而导致与其它组件不相兼容的可能性。即,维修值有助于给组件版本“打补丁(patching)”。例如,如果目标组件120被标识为库组件(使得目标组件的版本1.1不会被替换),开发者仍能通过更新(例如,递增)组件版本号中的维修值来更新目标组件120。因此,更新后的目标组件120基本上会是与“版本1.1”不同的维修。
图2A示出了接收现有组件较新版本的示例计算机架构。即,确定模块100可接收对已经驻留于相应计算机化系统的目标组件的升级。例如,确定模块100从与网络240相连的网络服务提供者(未示出)处接收组件215和210。作为在相应计算机化系统(或网络服务提供者)上执行安装程序的结果,确定模块100能接收组件215和210。
组件210和215如上所述包括版本化政策信息,诸如升级的组件210是“组件2”的“版本3”升级,且该组件是平台组件。组件215也具有版本化政策形式的信息,即组件215是库组件,或者组件215以其它方式配置,使得请求组件可访问组件215表示的特定版本。
响应于接收到组件210和215,确定模块100确定是否保留每个接收到的升级组件的先前版本(可称为“并行”(side-by-side)更新)或替换每个接收到的升级组件的先前版本(可称为“就地”(in-place)更新)。例如,如图2A所示的组件220和235分别是库组件和平台组件。更具体地,响应于接收到组件215,确定模块100可标识其它程序或组件可被特别配置为访问“组件1”的“版本1”,因为“组件1”是一个库组件。因此,确定模块100能确定组件215和组件220都要被保留。
更具体地,响应于接收组件210,确定模块100可标识请求程序和组件将访问组件2的最新版本,因为“组件2”是一个平台组件。因此,确定模块100能确定组件235要被组件210替换。
图2B所示是在确定模块已确定要保留的组件版本之后的图2A的示例计算机架构。如图2B所示,组件1的“版本1”(组件220)和“版本2”(组件215)都被保留在系统中(并行更新)。同样如图2B所示,仅有“组件2”(组件210)的“版本3”被保留在系统中(就地更新)。
图3所示是根据本发明实现在不同处理级别将组件范围分层的示例性计算机架构。分层是以应用到目标组件的组件范围为基础的。作为示例而非限制,图3指示了范围的三个级别,即“机器”级330、“过程”级340及“子过程”级350。然而,在阅读本说明书和权利要求书之后可以理解,可按需有更多或较少级别。特别地,本发明的诸方面允许目标组件提供一种版本化政策,其要求在每一个给定级别上仅有目标组件的一个版本可用(即在整个机器上仅有一个版本或在给定过程中仅有一个版本或在给定子过程中仅有一个版本)。
例如,关联于给定目标组件300的版本化政策可包括一组组件范围。再简要地回顾图1,组件范围可指示请求组件105必须访问给定过程级别上目标组件300。如图3所示,例如“组件1”的“版本1”300被标识作机器级访问。由于目标组件300被配置作机器级访问,任何安装在系统中请求访问目标组件300的请求组件必须使用“组件1”的“版本1”。与其它版本化政策属性一样,该过程级别的限制可在组件在给定系统中安装之前由目标组件的开发者说明。
组件范围还能指示目标组件300、310、315、320和325的更大或较小范围。例如,在给定组件310中标识的“版本化政策”指示目标组件310的给定版本仅在某些过程342、345,或子过程352、355中需要。如图3所示,例如,任何请求访问组件310给定版本的请求组件105可在过程342中这样做,而不需要其它(系统中的)请求组件在其它过程315中使用该相同目标组件。同样,组件310可在过程342中使用,而组件315可在过程345中使用。此外,当过程A342还未选定特定版本,则依赖于过程340的子过程350可使用组件310的不同版本,诸如组件320和325。因此这种对不同组件的颗粒式访问(granular access)级别可在给定组件开发时被指明,而不是由系统管理员在给定组件在系统上安装时指明。确定模块100能组合每个目标或请求组件的任意标识的组件范围,以向请求组件提供适当的目标组件访问。
因此,目标组件适当版本的标识可基于其它诸如组件的政策。因此确定模块在适当时可基于任意标识政策,诸如指定目标组件的版本化政策和组件范围以及任意其它由系统管理员所提供的政策,来标识目标组件的适当版本。
本发明还可按照包括功能步骤和/或非功能动作的方法进行描述。图4、5A和5B示出允许计算机化系统中其它程序或组件进行组件访问的示例性流程图。图4、5A和5B的方法将就前面图中所示的程序模块进行讨论。
图4所示是根据本发明的实现用于提供组件访问的方法的示例流程图。图4的方法包括接收对目标组件版本的请求的动作400。动作400包括接收对访问目标组件特定版本的请求,该请求从请求组件接收。例如,请求组件105可请求通过确定模块100对诸如组件120、125和130的目标组件进行访问。该请求也可能包括目标组件版本的版本化政策。
该方法还包括提供适当目标组件的面向功能结果的步骤440。步骤440可包括任意数量的实现本发明的相应动作。然而,如图4所示,步骤440包括标识版本化政策的动作410。动作410包括标识目标组件特定版本的版本化政策。如果版本化政策被包括在请求中,则确定模块100可标识这种被包括的版本化政策。可选地,确定模块100可指向目标组件的一个或多个版本,并标识存储在目标组件的这一个或多个版本中的版本化政策。例如,确定模块100标识:组件的多个版本在系统上存在,诸如同一“组件1”的“版本1”120和“版本2”125,每个版本都分别有版本化政策131、132和133。软件开发者可在目标组件120、125和130中包括版本化政策,从而使确定模块100通过编译、安装和/或运行开发的程序或组件来标识版本化政策。
步骤440还包括提供目标组件的适当版本的动作430。动作430包括基于指定目标组件的版本化政策来标识目标组件的适当版本。例如,确定模块100可向请求组件105提供诸如组件120的被请求目标组件(库组件)的特定版本。可选地,确定模块100可向请求组件105提供诸如组件130的组件(平台组件)的更近版本。
图5A所示是根据本发明的实现用于管理组件升级的方法的示例流程图。图5A的方法可这样实现,使得访问目标组件的请求组件在目标组件被升级后继续有效运行。如图所示,图5A中的方法包括接收组件升级的动作500。动作500还包括标识目标组件被请求组件所访问。例如,仍参阅图1,确定模块100可连接于或包含登记表或数据库,其在请求组件105安装后标识出所安装的程序或组件或组件105被配置为访问诸如“组件1”的“版本1”120的目标组件特定版本。该确定模块100可基于包含在所安装程序中以及包含在该程序被配置要来访问的任意组件中的任意版本化政策来获取该信息。
图5A中的方法包括标识版本化政策的动作510。动作510包括标识目标组件先前版本和目标组件的升级版本的版本化政策。例如,确定模块100标识任意目标组件120、125和130中的版本化政策,其如前所述能指示目标组件120、125和130的版本,并能指示目标组件被设为平台组件还是库组件。
图5A中的方法包括至少部分地基于版本化政策把组件升级添加到系统中的动作520。动作520包括基于所标识的版本化政策删除目标组件先前版本和/或添加目标组件的升级版本。例如,如果组件的特定先前版本220需要被另一程序或组件访问,诸如如果组件为库组件,确定模块100将不覆盖先前版本220。确定模块100将简单地添加组件的新版本215,使得请求该组件新版本215的程序或组件可访问它。类似地,要求该组件先前版本220的程序或组件还可访问该版本,这就保持了请求程序或组件的完整性。相比之下,如果没有程序或组件被标识为要求给定组件(平台组件)的特定版本,则确定组件100可简单地用组件的新近版本210覆盖先前版本235。
图5B所示是根据本发明的实现用于提供在一个或多个过程级别上对组件的访问的方法的示例流程图。图5B的方法可实现用来组织一个或多个目标组件,从而限制对一个或多个目标组件的访问。图5B中所示方法包括标识版本化政策的动作550。动作550包括在目标组件中标识版本化政策。例如,确定模块100可从请求组件接收组件访问请求,且可从现有目标组件220、225等等的已接收升级215、210中标识版本化政策。如前所述,版本化政策可帮助系统标识目标组件的版本号,以及是否目标组件220、225和230被设为库组件或平台组件。
在图5B中的方法包括标识与组件相关联的组件范围的动作560。动作560包括标识与目标组件相关联的组件范围,其中该组件范围标识与可配置成对目标组件进行访问请求组件相关联的属性。例如,目标组件或请求程序或组件可关联到指示目标组件版本可被机器层、子过程层等等之一上访问的特定组件范围。然而,如在此所述,可以理解取决于开发者的优选,有组件的访问可被限制于其中的各种级别。
图5B中的方法包括基于组件范围和版本化政策而允许目标组件访问的动作570。动作570包括基于关联于请求组件和被标识版本化政策的访问属性,允许一个或多个请求组件的至少一个访问目标组件。例如,如果一个或多个程序或组件300被指示适于全机器范围的过程330,则仅有组件300的那个版本将对任意给定过程级别的任意给定请求组件可用。相比之下,如果目标组件被标识为过程级访问,则确定模块100允许其它请求模块按需访问给定相应过程或子过程的相同目标组件的不同版本。
图6及以下讨论旨在提供本发明可在其中实现的适当计算环境的简要、一般描述。尽管未作要求,本发明可以计算机可执行指令的一般上下文进行说明,诸如由计算机执行的程序模块。通常,程序模块包括执行具体任务或实现具体抽象数据结构的例程、程序、对象、组件、数据结构等等。计算机可执行指令、相关联数据架构和程序模块代表执行在此揭示的方法步骤的程序编码。这种可执行指令或相关联数据架构的特定序列代表实现这些步骤中所述功能的相应动作的示例。
本领域技术人员将理解,本发明可在具有多种计算机系统配置的网络计算环境中实践,包括个人计算机、手持式设备、多处理器系统、基于微处理器或可编程消费电器、网络PC、迷你计算机、大型计算机等等。本发明还可在分布式计算环境中实现,其中本地和远程处理设备执行任务并通过通信网络链接(硬接线链接、无线链接、或硬接线或无线链接的组合)。在分布式计算环境中,程序模块可置于本地和远程存储器存储设备中。
参照图6,实现本发明的示例性系统具有通用计算机620形式的通用计算设备,包括处理单元621、系统存储器622以及把包括系统存储器在内的各种系统组件耦合到处理单元621的系统总线623。系统总线623可能是若干总线结构类型中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用多种总线架构的任一种的本地总线。系统存储器包括只读存储器(ROM)624和随机存取存储器(RAM)625。包含有助于如起动时在计算机620的元件间传送信息的基本例程的基本输入/输出系统(BIOS)626通常存储在ROM 624中。
计算机620还包括读取和写入磁性硬盘639的硬盘驱动器627、读取或写入可移动磁盘629的磁盘驱动器628、和读取或写入诸如CD ROM或其它光学介质等可移动光盘631的光盘驱动器630。硬盘驱动器627、磁盘驱动器628、光盘驱动器630分别通过硬盘驱动器接口632、磁盘驱动器接口633、光盘驱动器接口634连接至系统总线623。诸驱动器及其相应的计算机可读介质为个人计算机620提供计算机可执行指令、数据结构、程序模块和其它数据的非易失储存。尽管所述示例性环境采用了磁性硬盘639、可移动磁盘629和可移动光盘631,但也可使用其它类型的能够存储数据的计算机可读介质,如磁带、闪存卡、数字式视频盘、Bernoulli盘、RAM、ROM等等。
包括一个或多个程序模块的程序编码,包括操作系统635、一个或多个应用程序636、其它程序模块637和程序数据638,可以存储在硬盘639、磁盘629、光盘631、ROM6 24或RAM 625中。用户可通过输入装置如键盘640和定位装置642或诸如话筒、游戏杆、游戏垫、卫星接收器、扫描仪或等等的其它输入装置(未示出)向个人计算机620输入指令和信息。这些和其它输入装置通常通过与系统总线623耦合的串行端口接口646连接到处理单元621。可选地,输入装置也可通过其它接口相连,如并行端口、游戏端口或通用串行总线(USB)。监视器647或其它类型显示装置也通过接口,如视频适配器648和系统总线623相连。除了监视器,个人计算机通常包括其它外围输出装置(未示出),如扬声器和打印机。
个人计算机620可以在使用与一台或多台远程计算机,诸如远程计算机649a和649b的逻辑连接的网络化环境中运行。每台远程计算机649a和649b可以是另一台个人计算机、服务器、路由器、网络PC、同等装置或其它普通网络节点,而且通常包括上述与个人计算机620相关的许多或全部部件,尽管在图6中仅显示了存储器存储装置650a和650b及其相关联应用程序636a和636b。图6中所描绘的逻辑连接包括在此显示作为示例且非限制的局域网(LAN)651和广域网(WAN)652。这样的网络化环境在办公室或企业范围计算机网络、企业内部互联网和因特网上是常见的。
当用于LAN网络环境中时,个人计算机620通过网络接口或适配器653与LAN 651连接。当用于WAN网络环境中时,个人计算机620可包括调制解调器654或其它用于在广域网652,如因特网中建立通讯的装置。可以是内置式或外置式的调制解调器654,与系统总线623通过串行端口接口646连接。在网络环境中,所述与个人计算机620相关的程序模块或其一部分,可以存储在远程存储器存储装置中。可以理解,所示网络连接是示例性的,也可以使用其它用于在广域网652上建立通信的方法。
本发明可包含其它特定形式,而不背离其精神或基本特征。所述诸实施例在所有方面中都被视为仅是说明性的,而非限制性。因此,本方面的范围由所附权利要求书而不是由前面的说明书指示。所有在权利要求书等同体含义和界限内的变化都可被包括在其范围内。

Claims (27)

1.在具有一个或多个程序组件的计算机化系统中,所述程序组件包括可请求对一个或多个目标组件进行计访问的一个或多个请求组件,一种向请求组件提供对目标组件适当版本的访问的方法,其特征在于,它包括以下动作:
接收对访问一目标组件的指定版本的请求,所述请求从一请求组件接收;
标识所述目标组件指定版本的一版本升级政策;
基于所述指定目标组件的所述版本化政策,标识所述目标组件的一适当版本;
向所述请求组件提供对所述目标组件适当版本的访问。
2.如权利要求1所述的方法,其特征在于,所述目标组件的被请求版本是库组件和平台组件之一。
3.如权利要求1所述的方法,其特征在于,标识所述目标组件适当版本包括响应于对所述目标组件的一先前版本的请求,来标识所述目标组件的一较近版本,即使所述计算机化系统既可访问所述较近版本又可访问所述先前版本。
4.如权利要求3所述的方法,其特征在于,响应于对所述目标一先前版本的请求来标识所述目标组件的一较近版本,即使所述计算机化系统既可访问所述较近版本又可访问所述先前版本包括:标识一平台组件的一更新版本,即使当所述较近组件被计算机化系统接收到时所述平台组件的一先前版本仍在系统中保留。
5.如权利要求1所述的方法,其特征在于,当所述目标组件是一个或多个在计算机化系统上编译、配置、安装和运行的时,所述目标组件指定版本的所述版本化政策被标识。
6.如权利要求1所述的方法,其特征在于,当所述请求组件是一个或多个在计算机化系统上编译、配置、安装和运行的时,标识所述指定目标组件的版本信息被储存在请求组件中。
7.如权利要求1所述的方法,其特征在于,还包括:
标识能够访问所述目标组件的一先前版本的一个或多个请求组件;
标识出:所述一个或多个请求组件中没有一个被配置成访问所述目标组件的先前版本;以及
删除所述目标组件的先前版本;
8.如权利要求1所述的方法,其特征在于,所述目标组件的适当版本是被请求的所述目标组件版本。
9.如权利要求1所述的方法,其特征在于,所述目标组件的适当版本不同于被请求的所述目标组件版本。
10.如权利要求9所述的方法,其特征在于,目标组件访问通过一确定模块被提供给所述请求模块。
11.如权利要求10所述的方法,其特征在于,当所述目标组件的先前版本和所述目标组件的较近版本中的一个或多个被计算机化系统接收时,所述目标组件的先前版本和所述目标组件的较近版本中的一个或多个的可用性通过一确定模块标识。
12.如权利要求1所述的方法,其特征在于,在计算机化系统上进行所述组件的安装、配置和执行的其中之一前,所述版本化政策被插入到所述目标组件中的计算机可执行指令中。
13.如权利要求1所述的方法,其特征在于,所述版本升级政策还在所述目标组件的任何版本中标识。
14.如权利要求13所述的方法,其特征在于,所述版本化政策标识出:所述目标组件的先前版本和所述目标组件的较近版本中的任意个被配置成被所述请求组件的一特定版本访问。
15.如权利要求1所述的方法,其特征在于,还包括:标识与所述目标组件相关联的一组件范围。
16.如权利要求15所述的方法,其特征在于,对所述目标组件指定版本的访问还基于与所述目标组件相关联的所述被标识组件范围以及由系统管理员提供的一目标组件范围中的一项。
17.如权利要求16所述的方法,其特征在于,所述被标识组件范围指定:对所述目标组件的指定版本的访问以机器级、过程级和子过程级中的一个或多个中提供。
18.如权利要求1所述的方法,其特征在于,所述被请求目标组件是一库组件,所述方法还包括标识与所述被请求目标组件相关联的一维修值。
19.如权利要求1所述的方法,其特征在于,标识所述目标组件的一适当版本包括:基于所述被标识版本化政策和所述被标识维修值来标识一库组件的一更新版本。
20.在具有一个或多个程序组件的一计算机化系统中,所述程序组件包括可请求对一个或多个目标组件进行访问的一个或多个请求组件,一种向请求组件提供对目标组件适当版本访问的方法,其特征在于,它包括:
一接收对访问一目标组件的指定版本的请求的动作,所述请求从一请求组件接收;
一步骤,用于允许对所述被请求目标组件的一适当版本的访问,使得所述请求组件按照其被配置的方式访问所述适当目标组件,且使得当请求对已升级的组件的访问时,所述请求组件不会失败。
21.如权利要求20所述的方法,其特征在于,允许对所述被请求目标组件的一适当版本的访问的所述步骤包括以下相应动作:
标识所述目标组件指定版本的一版本化政策;
接收对一目标组件指定版本的访问的一请求,所述请求从一请求组件接收;
向所述请求组件提供对所述目标组件适当版本的访问。
22.在具有一个或多个程序组件的一计算机化系统中,所述程序组件包括可请求访问一个或多个目标组件的一个或多个请求组件,一种对一目标组件进行升级使得访问所述目标组件的一请求组件在所述目标组件被升级之后继续有效运行的方法,其特征在于,它包括以下动作:
标识出一请求组件被配置成对一目标组件进行访问;
在所述目标组件的至少一现有版本和一先前安装的版本中,标识一版本化政策;
基于对应于所述目标组件的至少一现有版本和一先前安装版本的任意被标识版本化政策,标识所述目标组件的哪些版本应当保留在所述系统中。
23.如权利要求22所述的方法,其特征在于,还包括在网络上从一网络服务提供者处接收所述目标组件的一更新版本。
24.如权利要求22所述的方法,其特征在于,如果所述版本升级政策指示所述请求组件是一库组件,则把所述目标组件的现有版本添加到所述系统中,而无需移除所述目标组件的先前安装版本。
25.如权利要求22所述的方法,其特征在于,如果所述版本化政策指示所述请求组件是一平台组件,则用所述目标组件的现有版本覆盖所述目标组件的先前安装版本。
26.在具有一个或多个被配置成访问一个或多个源组件的请求组件的一计算机化系统中,一种具有存储于其上的计算机可执行指令的计算机程序产品,所述指令在执行时使所述计算机化系统执行向一请求组件提供对一目标组件适当版本的访问的一种方法,其特征在于,它包括以下动作:
接收对访问一目标组件指定版本的一请求,所述请求从一请求组件接收;
标识所述目标组件特定版本的一版本化政策;
基于所述指定目标组件的所述版本化政策,标识所述目标组件的一适当版本;
向所述请求组件提供对所述目标组件适当版本的访问。
27.在具有一个或多个被配置成访问一个或多个源组件的请求组件的一计算机化系统中,一种具有存储于其上的计算机可执行指令的计算机程序产品,所述指令在执行时使所述计算机化系统执行一种升级一目标组件的方法,使得访问所述目标组件的一请求组件在所述目标组件已被升级之后继续有效操作,其特征在于,它包括以下动作:
标识出一请求组件被配置为访问一目标组件;
在所述目标组件的至少一现有版本和一先前安装版本中,标识一版本升级政策;
基于对应于所述目标组件的至少一现有版本和一先前安装版本的任意被标识版本升级版本,标识所述目标组件的哪些版本应当保留在所述系统中。
CN200410011653.6A 2004-02-05 2004-12-30 用于面向对象编程语言和工具中的版本化支持的方法和系统 Expired - Fee Related CN100507836C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/772,992 2004-02-05
US10/772,992 US20050177826A1 (en) 2004-02-05 2004-02-05 Versioning support in object-oriented programming languages and tools

Publications (2)

Publication Number Publication Date
CN1652077A true CN1652077A (zh) 2005-08-10
CN100507836C CN100507836C (zh) 2009-07-01

Family

ID=34750443

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200410011653.6A Expired - Fee Related CN100507836C (zh) 2004-02-05 2004-12-30 用于面向对象编程语言和工具中的版本化支持的方法和系统

Country Status (16)

Country Link
US (1) US20050177826A1 (zh)
EP (1) EP1569093A3 (zh)
JP (1) JP2005222524A (zh)
KR (1) KR20050079625A (zh)
CN (1) CN100507836C (zh)
AU (1) AU2005200252A1 (zh)
BR (1) BRPI0405607A (zh)
CA (1) CA2491188A1 (zh)
IL (1) IL166169A (zh)
MX (1) MXPA05000366A (zh)
NO (1) NO20050043L (zh)
NZ (1) NZ537385A (zh)
RU (1) RU2377648C2 (zh)
SG (1) SG113547A1 (zh)
TW (1) TW200527294A (zh)
ZA (1) ZA200500054B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102362272A (zh) * 2009-03-25 2012-02-22 微软公司 移动应用程序的设备相关的按需编译和部署
CN113302586A (zh) * 2019-01-08 2021-08-24 斯纳普公司 动态应用配置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006268752A (ja) * 2005-03-25 2006-10-05 Seiko Epson Corp 複数のバージョンに対応したモジュールの起動
US8060865B2 (en) * 2006-01-12 2011-11-15 Microsoft Corporation Build-time enforcement of architectural partitioning in computer application
US8584109B2 (en) * 2006-10-27 2013-11-12 Microsoft Corporation Virtualization for diversified tamper resistance
GB0717330D0 (en) 2007-09-06 2007-10-17 Sony Comp Entertainment Europe Entertainment apparatus and method
US9477462B2 (en) * 2008-01-16 2016-10-25 Oracle International Corporation System and method for software product versioning packaging, distribution, and patching
EP2241977B1 (en) * 2009-04-17 2015-05-27 Accenture Global Services Limited Exchangeable application components
WO2010135696A1 (en) * 2009-05-21 2010-11-25 Salesforce.Com, Inc. System, method and computer program product for versioning components of an application
TW201142709A (en) 2009-12-11 2011-12-01 Ibm A method, system and computer program for deciding whether to install a first application within one of a plurality of candiate environments
MX342205B (es) * 2012-12-14 2016-09-21 Ericsson Telefon Ab L M Sistemas, metodos y productos de programas de computadora para un proceso de construccion y carga de software que usan un servicio de recopilacion y despliegue.
US10019258B2 (en) * 2014-04-29 2018-07-10 Hewlett Packard Enterprise Development Lp Hardware assisted software versioning of clustered applications
US10572275B2 (en) * 2017-06-15 2020-02-25 Microsoft Technology Licensing, Llc Compatible dictionary layout
TWI727084B (zh) * 2017-08-21 2021-05-11 中華電信股份有限公司 微服務軟體開發基礎架構下自動化持續整合方法
JP7532325B2 (ja) 2021-09-16 2024-08-13 株式会社東芝 情報処理システム、情報処理装置、情報処理方法及びプログラム

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5805899A (en) * 1995-07-06 1998-09-08 Sun Microsystems, Inc. Method and apparatus for internal versioning of objects using a mapfile
US5974428A (en) * 1997-08-29 1999-10-26 International Business Machines Corporation Method and apparatus for class version naming and mapping
US6151700A (en) * 1997-10-20 2000-11-21 International Business Machines Corporation Object oriented distributed programming system for computer controlled networks with selective capture of program property data identifying a particular program version
US5890161A (en) * 1997-10-28 1999-03-30 Microsoft Corporation Automatic transaction processing of component-based server applications
US6631425B1 (en) * 1997-10-28 2003-10-07 Microsoft Corporation Just-in-time activation and as-soon-as-possible deactivation or server application components
US6014666A (en) * 1997-10-28 2000-01-11 Microsoft Corporation Declarative and programmatic access control of component-based server applications using roles
US6230318B1 (en) * 1998-02-24 2001-05-08 Microsoft Corporation Application programs constructed entirely from autonomous component objects
US6499137B1 (en) * 1998-10-02 2002-12-24 Microsoft Corporation Reversible load-time dynamic linking
US6381735B1 (en) * 1998-10-02 2002-04-30 Microsoft Corporation Dynamic classification of sections of software
US6438590B1 (en) * 1999-04-13 2002-08-20 Hewlett-Packard Company Computer system with preferential naming service
JP4484001B2 (ja) * 1999-07-05 2010-06-16 ネッツエスアイ東洋株式会社 ライブラリ関数バージョン一致方法。
US6564377B1 (en) * 1999-07-26 2003-05-13 Microsoft Corporation Self-describing components within a software catalog
JP3570940B2 (ja) * 1999-11-25 2004-09-29 北海道日本電気ソフトウェア株式会社 ダイナミックリンクライブラリ制御方式,方法および記録媒体
US6658659B2 (en) * 1999-12-16 2003-12-02 Cisco Technology, Inc. Compatible version module loading
US6871344B2 (en) * 2000-04-24 2005-03-22 Microsoft Corporation Configurations for binding software assemblies to application programs
JP2001331324A (ja) * 2000-05-19 2001-11-30 Sony Corp 情報処理方法および装置、ならびに、記録媒体
US20030101251A1 (en) * 2001-11-27 2003-05-29 Varros Telecom Customizable element management system and method using element modeling and protocol adapters
WO2004090672A2 (en) * 2003-04-02 2004-10-21 Network Clarity, Inc. Methods and systems for controlling network infrastructure devices
US7383541B1 (en) * 2003-08-07 2008-06-03 Cisco Technology, Inc. Method and apparatus providing interoperation of execution images of different versions

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102362272A (zh) * 2009-03-25 2012-02-22 微软公司 移动应用程序的设备相关的按需编译和部署
CN113302586A (zh) * 2019-01-08 2021-08-24 斯纳普公司 动态应用配置

Also Published As

Publication number Publication date
RU2377648C2 (ru) 2009-12-27
NZ537385A (en) 2006-06-30
TW200527294A (en) 2005-08-16
JP2005222524A (ja) 2005-08-18
ZA200500054B (en) 2006-09-27
CA2491188A1 (en) 2005-08-05
NO20050043D0 (no) 2005-01-04
KR20050079625A (ko) 2005-08-10
MXPA05000366A (es) 2005-08-19
EP1569093A3 (en) 2007-08-29
EP1569093A2 (en) 2005-08-31
RU2004139189A (ru) 2006-06-10
CN100507836C (zh) 2009-07-01
US20050177826A1 (en) 2005-08-11
NO20050043L (no) 2005-08-08
SG113547A1 (en) 2005-08-29
IL166169A0 (en) 2006-01-15
AU2005200252A1 (en) 2005-08-25
IL166169A (en) 2010-03-28
BRPI0405607A (pt) 2005-09-27

Similar Documents

Publication Publication Date Title
CN1652077A (zh) 面向对象编程语言和工具中的版本化支持
CN101223522B (zh) 调用表值函数的查询的有效评估系统和方法
US7949569B2 (en) Distributed device information management system as a distributed information repository system
CN1535417A (zh) 通过散列的绑定
CN1207669C (zh) 将应用程序数据分配至不相似格式分布式数据库的方法
CN1203404C (zh) 具有逐模块验证的完全迟缓链接
CN111901294A (zh) 一种构建在线机器学习项目的方法及机器学习系统
US20050125461A1 (en) Version control of metadata
CN1525328A (zh) 为复制文件管理多个文件状态的方法
CN1855039A (zh) 用于创建、储存、管理和消费文化专用数据的方法和系统
CN1534457A (zh) 增强的运行时间主机支持
CN1961307A (zh) 用于渐进式安装软件应用程序的系统和方法以及api
CN1763761A (zh) 基于角色的访问控制系统、方法和计算机程序产品
CN1477518A (zh) 管理文件系统滤波器驱动器的文件名的系统和方法
CN1770169A (zh) 向用户/组授予访问控制列表所有权的访问控制系统和方法
CN1505788A (zh) 在不同数据库服务器之间划分一个数据库所有权以控制访问数据库
KR20080096758A (ko) 디지털 게임 컨텐츠 관계 정보 관리 방법 및 시스템, 및기억 매체
US8225307B2 (en) On-demand software module deployment
CN1856784A (zh) 用于存储平台中的锁定和隔离的系统和方法
US20100325738A1 (en) Dynamic dual permissions-based data capturing and logging
CN1783015A (zh) 启用子系统间的资源共享
CN102804137B (zh) 控制对软件构件状态的访问
CN1696911A (zh) 有效地打补丁
US7689999B2 (en) Sharing dynamically changing resources in software systems
US8533702B2 (en) Dynamically resolving fix groups for managing multiple releases of multiple products on multiple systems

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090701

Termination date: 20121230

ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150428

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

Effective date of registration: 20150428

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.