用于打包软件的方法与系统的制作方法

文档序号:6571124阅读:237来源:国知局
专利名称:用于打包软件的方法与系统的制作方法
技术领域
本发明涉及计算机系统领域。更具体而言,本发明涉及计算机软件插件模块及其安装。
背景技术
在计算机网络应用中,运行在特定计算机上的应用程序与位于相同计算机或通过网络连接与其通信的不同计算机上的应用程序交互或使用其是很平常的。计算机领域中的技术在现行的基础上进行改变,在硬件和软件技术中都是这样。因此,网络环境中的计算机应用程序常常面临网络环境中的改变,不管它们是程序所使用的软件应用程序中的改变还是硬件中的改变,如改变用于在网络环境中运行服务的机器或连接。适应新技术的挑战不仅在于终端用户或客户端侧,而且在于网络服务提供者。
基本模块是使客户端机器和服务器能运行的基本软件和/或硬件。插件模块以增值服务扩展基本模块的功能性,其中增值服务可以是遵循标准的服务或专有服务。插件(plug-in)是用于实现特征或一组特征的最小可识别编译代码。在一种实施方式中,插件模块可以提供基本模块不支持的新设备类型所需的附加服务。在基本模块软件产品产生并运行在客户端机器上后需要修改或扩展的计算机软件产品通常利用与软件产品驻留在其上的客户端系统接口的插件模块扩展。客户端机器必须识别并安装适当的插件以完成软件扩展,并且必须与插件模块和软件产品接口。对如何验证特定插件模块使用的适当性的所有知识的职责在于期望使用该插件的主计算机系统及所有相关模块。
随着软件产品的生命周期插件模块添加并发展,信息的基数按指数增长。对现有模块的升级可能在每次定义新的独立插件时都需要。例如,在传统的客户端-服务器系统中,对系统分布式状态信息的管理需要每个客户端状态信息在服务器端的存储,因此服务会依赖关于客户端状态的特定事实。类似地,服务器存储关于客户端可用的特定程序与版本的开销信息,以便允许服务器与客户端之间的适当交互。在一种实施方式中,扩展用于在插件模块扩展时维持兼容性信息。每个新的软件扩展或插件模块都产生必须在期望使用新创建插件的所有模块中维护的新模块相互依赖性集合。在实际加载插件并向软件系统提供其服务之前,控制系统必须包含关于插件管理的所有信息。实现插件模块一般需要用户的干涉。
服务器与存储管理体系结构直接导致需要支持多种服务器类型、设备类型、结构类型、服务等,其中结构是用于存储区域网络的另一术语。随着与体系结构关联的管理应用的发展,需要添加对可能已经添加到该体系结构的附加设备、结构类型及服务的支持。所添加的服务可能依赖于基本服务。新服务可能需要与一个或多个依赖的服务版本向后兼容。此外,当客户的需要增长时,体系结构需要支持应用程序打包和部署模型以便增长收入,而同时减少客户部署过程中所经历的困难。
一种现有技术解决方案在授予Crow等人的美国专利号6,871,345中示出。这个专利描述了使用具有确定它们需要什么资源的某种自我测量(introspection)能力的插件的插件管理器。插件管理器允许插件的部署。但是,没有打包插件模块从而以分层方式分类服务的教义或支持。
因此,需要提供对插件模块和插件模块包的内部标识符。包标识符应当以分层方式指定,以便支持指定包之间的兼容性确定。

发明内容
本发明包括用于管理插件包及相关联插件模块的安装的方法与系统。
在本发明的一方面,提供了打包软件的方法。第一标识符指定给一个或多个插件模块的第一包,该第一包包括具有内部命名空间的安装的插件模块。第一标识符与内部命名空间中的识别数据关联。此外,一个或多个非安装插件模块编译成第二插件模块包。第二标识符指定给第二插件模块包。第二标识符是以与第一包标识符的分层关系指定的,并且其与非安装插件模块的内部命名空间中的识别数据关联。其后,第二插件模块包的第二标识符与第一插件模块包的第一标识符进行比较,以确定第二包与第一包的兼容性。
在本发明的另一方面中,提供了包括具有至少一个插件模块及相关联第一标识符的第一包的计算机系统。所安装的插件模块具有内部命名空间。该第一标识符与所安装模块的内部命名空间中的识别数据关联。此外,提供了具有至少一个非安装插件模块的第二包。以与第一包的分层方式为第二包指定标识符。此外,第二包标识符与非安装包的内部命名空间中的识别数据关联。系统中提供了管理器来比较第二标识符与第一标识符,以确定插件模块包的兼容性。
在本发明的另一方面,提供了具有计算机可读介质的物品。介质中的指令被提供用于将第一标识符指定给一个或多个插件模块的第一包,该第一包包括具有内部命名空间的安装的插件模块。第一标识符与内部命名空间中的识别数据关联。介质中的指令还被提供用于将一个或多个非安装插件模块编译成第二插件模块包。第二标识符通过介质中的指令指定给第二插件模块包。第二标识符是以与第一包标识符的分层关系指定的,并且与非安装插件模块的内部命名空间中的识别数据关联。介质中的指令还被提供用于比较第二插件模块包的第二标识符与第一插件模块包的第一标识符,并通过所述标识符的比较确定第二插件模块包与第一插件模块包的兼容性。
本发明的其它特征与优点将从以下本发明目前优选实施方式的具体描述并联系附图变得显而易见。


图1是插件模块的样本包的框图。
图2是说明插件模块的两个样本包的框图。
图3是说明插件模块的三个样本包的框图,每个包具有多个插件模块且每个包具有不同的版本识别号。
图4是说明根据本发明优选实施方式的插件模块包安装的流程图,并建议打印在所发布专利的第一页上。
图5是说明客户端-服务器环境中管理器的框图。
具体实施例方式
概述为插件模块与插件模块包的每一个基于与其相关联的特性指定唯一的识别数据。在每个插件模块中创建放置识别数据的命名空间。在插件模块的安装过程中,为安装指定的插件模块与先前安装的插件模块的兼容性是基于存储在所安装插件模块和先前安装的插件模块中的命名空间中的识别数据确定的。插件模块的兼容性仅基于内部比较。因此,插件模块的兼容性消除了在安装过程中或之前使用外部数据或资源的需求。
技术细节这种方案中的最小软件单位,即编译代码,可以是基本模块或插件模块的形式。在一种实施方式中,基本模块或插件模块可以是共享库或Java罐子(jar)文件的形式。基本模块支持存储设备、结构或服务器的基本配置所需的基本服务。例如,在存储设备的环境下,一种基本模块可以支持一种或多种盘类型,而第二种基本模块可以支持服务器、磁带和结构类型。插件模块与基本模块的区别在于它提供基本模块不支持的新设备类型所需的附加特征。每个插件模块都是自描述的并且可以包括以下属性的一个或多个插件名称、与插件关联的版本标识符、插件的性能、依赖性列表和校验和。插件的属性可以编译成代码并总是在存储器中。在一种实施方式中,存储插件属性的存储器是易失存储器。插件的名称用于开发、测试和现场支持并且是客户不可见的。在一种实施方式中,名称可以是串的形式。类似地,版本标识符也用于开发、测试和现场支持并且是客户不可见的。在一种实施方式中,版本标识符是整数。性能向量可以是指示插件能够支持的设备的数据编译。在一种实施方式中,性能向量可以是位编译。依赖性列表可以是传递基本或插件模块与其它模块与模块包的兼容性的数据编译。在一种实施方式中,依赖性列表可以是兼容性向量的形式。依赖性的捕捉给出了在基本模块与插件模块间分解依赖性问题并使客户购买包中遗漏的插件的方法。插件字节码的校验和是确保插件的属性不被破坏的安全特征。在此所描述的属性,即名称、版本、性能向量、依赖性列表和校验和,不应当看做是限制。这个属性列表可以根据需要减少或扩充。每个插件都是根据其包括上述属性的属性自描述的。
来自插件的下一级更大的软件单位是包括零个或一个基本模块和至少一个插件模块的包。在一种实施方式中,包可以是插件库或Java罐子文件的聚合。包是服务器或客户端机器上的可安装实体。每个包可以定义成兼容的并指定成对特定的存储设备、服务器或结构类型起作用。包中的每个插件模块与同一包中的其它插件模块是兼容的。在一种实施方式中,包的一个或多个插件可以对位于其它包中的其它插件模块具有依赖性。图1是说明插件模块的样本包(110)的框图(100)。如所示出的,包(110)包括多个插件模块(112)、(114)、(116)、...(120)。在此所示插件模块的数量是为了说明,包可以包括比在此所示的更多或更少的插件。图2是说明插件模块的两个样本包(包1(160)和包2(180))的框图(150)。第一插件包(160)包括四个插件模块(162)、(164)、(166)和(168)。第二插件包(180)包括三个插件模块(182)、(184)和(186)。第一个包(160)的第三个插件模块(166)示为依赖于第二个包(180)的三个插件模块(182)、(184)和(186)。
每个插件模块包都包括版本标识符。在一种实施方式中,包版本标识符是在插件模块包发行时生成的。包标识符可以利用来自构成插件模块包的每个插件模块的标识符生成。在一种实施方式中,包版本串是在包的管理应用程序发行之前由打包脚本或java程序生成的。包版本标识符在每次包中的插件模块版本变化时递增,以提供分层的打包模型。不管包中插件的版本如何,根据定义的层次,测试包中具有定义版本的插件模块是否与包中具有指定的先前版本标识符的插件模块向后兼容。例如,测试包中具有版本N+1的插件模块是否与先前包中具有版本N的插件模块兼容。每个版本的包都具有与插件模块包层次中最新近改变的插件模块或添加的插件模块的相关性,以确保向后兼容性。此外,每个包都可以支持一种或多种服务。服务可以通过确定哪个包(即插件模块分组(grouping))支持期望的服务来部署。因此,每个插件模块包将保证相邻的前一版本的支持,但不保证其它更早版本的支持。
图3是显示三个插件包的框图(200),每个包具有多个插件模块且每个包具有不同的版本标识号。第一个包,即包1(210),有四个插件,即插件1(212)、插件2(214)、插件3(216)和插件4(218)。此外,第一个包(210)具有版本标识符N(220)。第二个包,即包2(230),是具有两个附加插件的第一个包(即包1(210))的升级。第二个包,即包2(230),总共有六个插件,即插件1(232)、插件2(234)、插件3(236)、插件4(238)、插件5(240)和插件6(242),及版本标识符(N+10)(244)。插件5(240)和插件6(242)是对包1(210)的添加,而包1中版本N的插件1(212)、插件2(214)、插件3(216)和插件4(218)与包2中版本N+10的插件1(232)、插件2(234)、插件3(236)、插件4(238)是完全一样的。如所示出的,第二个包(230)的插件5(240)依赖于作为第三个插件包(即包3(250))的一部分的三个其它插件。第三个包,即包3(250),总共有三个插件,即插件10(252)、插件11(254)和插件12(256)。此外,第三个包(250)有版本标识符(N+3)(258)。因此,如所示出的,有三个包括包之间插件相互依赖性的插件包。
在管理应用程序发行时,创建返回包括包、设备名称、服务器和/或结构类型及插件名称的图的包识别插件。在一种实施方式中,包识别插件可以通过打包脚本或java应用生成。这种图是利用用于包中每个插件的插件识别类生成的。这个类还捕捉在管理应用发行之前生成的包版本串。在一种实施方式中,包版本串是通过打包脚本或java程序生成的。这种打包技术在插件模块和插件包的命名空间中封装服务器、设备和/或结构类型及服务信息。如此,插件模块和相关联的包是自描述的。用于插件和相关联包的版本信息是内部维护的。由于所有所需的数据都是在插件和/或相关联的插件包内部维护的,因此在升级安装过程中不需要查询在插件和/或相关联插件包外部的资源。
图4是说明用于利用每个插件中保留的自描述信息安装作为如图3所示先前安装包的升级的插件包的处理例子的流程图(400)。客户有具有属性版本(即版本N)的第一个包,即包1。如图3所示,第一个包包括几个插件和相关联的版本标识符。客户想将版本N的第一个包升级为版本N+10的第二个包。第二个包中存在的四个插件与版本N的包1中的插件完全相同。但是,不存在于第一个包中的第二个包中的一个插件,即插件5,依赖于不存在于版本N的包1中或版本N+10的包2中的三个插件,即插件10、插件11和插件12。用于将第一插件包升级到第二插件包的处理是利用第二个包中的每个插件检查其版本依赖性列表启动的(302),其中版本依赖性列表是存储在存储器中的插件的自描述属性之一。在一种实施方式中,依赖性列表在命名空间中维护。在步骤(302)的发现处理之后,确定是否有第二个包中的任何插件已经发现了依赖性冲突(304)。在一种实施方式中,依赖性冲突可以是一个升级插件对不存在于所安装包中或正处于安装处理的包中的另一个插件的依赖性的形式。例如,如图3所示,插件11是第三个插件包(即版本N+3的包3)的一部分。步骤(304)的否定响应将导致第二个包的安装(306)。但是,步骤(304)的肯定响应将导致随后确定第二个包的安装是否将与第三个包的安装一起进行(308)。在这个例子中,步骤(308)的否定响应将停止升级处理(310)。但是,步骤(308)的肯定响应将导致在安装放置依赖插件的第二个包之前安装第三个插件包,即版本N+3的包3(312)。在步骤(312)安装第三个包之后,安装处理继续安装第二个包,即版本N+10的包2(314)。当相互依赖的包(即第二个包)安装完成以后,安装完成。在图4所示的安装处理过程中,完成包与相关联插件升级所需的所有指令和逻辑都包含在为安装所指定的包中。用于安装的所有信息和逻辑都在版本N的包1、版本N+10的包2和版本N+3的包3中维护。因此,在一个或多个插件模块或插件包的升级过程中,包中的每个插件都查询其自己的内部资源来确定兼容性。
本发明可以采用硬件实施方式、软件实施方式或既包含硬件又包含软件元素的实施方式的形式。在一种实施方式中,本发明以软件实现,该软件包含但不限于固件、驻留软件、微代码等。
此外,本发明可以采取可以从计算机可用或计算机可读介质访问的计算机程序产品的形式,其中计算机可用或计算机可读介质提供由计算机或任何指令执行系统使用或与其结合使用的程序代码。为了这种描述,计算机可用或计算机可读介质可以是能够包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与其结合使用的程序的任何装置。
介质可以是电、磁、光、电磁、红外线或半导体系统(或装置或设备)或传播介质。计算机可读介质的例子包括半导体或固态存储器、磁带、可拆卸计算机盘、随机存取存储器(RAM)、只读存储器(ROM)、硬磁盘和光盘。目前光盘的例子包括光盘-只读存储器(CD-ROM)、读/写光盘(CD-R/W)和DVD。
适于存储和/或执行程序代码的数据处理系统将包括至少一个直接或通过系统总线间接耦合到存储器元件的处理器。存储器元件可以包括在程序代码的实际执行过程中采用的本地存储器、大容量存储设备和提供至少一些程序代码的临时存储以便减少执行过程中必须从大容量外存储设备检索代码的次数的高速缓冲存储器。
在一种实施方式中,提供管理器来方便包的升级。图5是说明软件形式的、客户端-服务器环境中的管理器的框图(500),其中软件包括但不限于固件、驻留软件、微代码等。软件实现可以采取可以从提供由计算机或任何指令执行系统使用或与其结合使用的程序代码的计算机可用或计算机可读介质访问的计算机程序产品的形式。为了说明,图中只示出了一个服务器(520)和一个客户端机器(530)。但是,系统可以扩充成包括跨网络通信的多个客户端机器和服务器。如所示出的,服务器(520)和客户端机器(530)每个都分别包括存储器(524)和(534)。服务器存储器(524)包括嵌入在其中的管理器(526),而客户端存储器(534)包括嵌入在其中的管理器(536)。插件模块或插件模块包可以独立于服务器直接安装在每个客户端机器上,或者在有些情况下,通过从服务器管理器接收的指令安装在每个客户端机器上。在客户端机器(530)从服务器(520)接收升级指令的情况下,指令通过各自的管理器(526)和(536)传送。客户端管理器(536)跨网络(540)与服务器管理器(526)通信,以向服务器管理器(526)查询与指定要在升级过程中安装的插件模块或插件模块包关联的标识符。如上面所指出的,插件与包标识符是自描述标识符。管理器解析在所接收的与插件或插件包关联的标识符中提供的数据,以确定与任何先前安装的模块或模块包的兼容性,并方便在图4中具体示出的包升级的完成。
为了这种描述,计算机可用或计算机可读介质可以是能够包含、存储、传送、传播或传输由指令执行系统、装置或设备使用或与其结合使用的程序的任何装置。
相对于现有技术的优点每个插件模块和模块包都是包括命名空间的自描述实体。每个自描述实体的命名空间中的信息封装了插件模块和插件包的服务器、设备和/或结构类型与服务信息。将一个或多个插件模块放置到包中包括将标识符指定给包。标识符在包的命名空间中维护。在插件模块包的安装过程中,查询包的命名空间来比较包标识符,以确定与先前安装的插件模块包的兼容性。标识符是以分层方式指定的,且每个插件模块包只与相邻的前一插件模块包兼容。在比较并证明插件包的兼容性之后,查询指定给包的单独插件模块的命名空间中的依赖性列表,来确定是否需要任何其它的插件模块包或单独的插件模块来支持安装。命名空间中的数据消除了查询用于安装的外部源以确定当前安装与现有基本模块或先前安装的插件模块的兼容性的需求。
可选实施方式应当理解,尽管本发明的特定实施方式已经在此为了说明而进行了描述,但在不背离本发明主旨与范围的情况下可以进行各种修改。特别地,可以使用捕捉插件识别类和包识别插件中信息的属性文件。因此,本发明的保护范围只能由以下权利要求及其等价物来限定。
权利要求
1.一种用于打包软件的方法,包括向一个或多个插件模块的第一包指定第一标识符,该第一包包括具有内部命名空间的安装的插件模块,其中所述第一标识符与所述内部命名空间中的识别数据关联;将一个或多个非安装插件模块编译成第二插件模块包;将第二标识符指定给所述第二插件模块包,其中所述第二标识符是以与所述第一包标识符的分层关系指定的,并与非安装插件模块的内部命名空间中的识别数据关联;比较所述第二插件模块包的所述第二标识符与所述第一插件模块包的所述第一标识符;及通过所述标识符的所述比较,确定所述第二插件模块包与所述第一插件模块包的兼容性。
2.如权利要求1所述的方法,还包括比较所述安装的插件模块的所述内部命名空间识别数据与适于安装的所述第二包的所述插件模块的所述内部命名空间识别数据。
3.如权利要求2所述的方法,其中所述包标识符的分层指定支持相邻指定的包标识符的向后兼容性。
4.如权利要求2所述的方法,其中所述包的所述版本标识符与最新近安装到所述包的插件模块相互关联。
5.如权利要求1所述的方法,其中所述命名空间封装选自以下的插件模块的数据服务器、设备、结构类型、所述插件模块的服务信息及其组合。
6.如权利要求2所述的方法,还包括当所述第二包的所述插件模块之一依赖于第三插件包中的插件模块时,在所述第二插件包的安装过程中安装所述第三插件包。
7.一种计算机系统,包括安装的插件模块;至少一个插件模块的第一包,包括具有内部命名空间的安装的模块,为该第一包指定了第一标识符,其中所述第一标识符与所述内部命名空间中的识别数据关联;至少一个非安装插件模块的第二包,其被指定以第二标识符,该第二标识符是以与所述第一包的分层方式的并且与所述非安装包的内部命名空间中的识别数据关联;管理器,适于比较所述第二标识符与所述第一标识符,以确定所述第二包与所述第一包的兼容性。
8.如权利要求7所述的系统,还包括所述管理器比较所述安装的插件模块的所述内部命名空间识别数据与适于安装的所述第二包的所述插件模块的所述内部命名空间识别数据。
9.如权利要求8所述的系统,其中所述包标识符的分层指定支持相邻指定的包标识符的向后兼容性。
10.如权利要求8所述的系统,其中所述包的所述版本标识符与最新近安装到所述包的插件模块相互关联。
11.如权利要求7所述的系统,其中所述命名空间封装选自以下的插件模块的数据服务器、设备、结构类型、所述插件模块的服务信息及其组合。
12.如权利要求8所述的系统,还包括第三插件模块包,其适于当所述第二包的所述插件模块之一依赖于第三插件模块包中的插件模块时,在所述第二插件模块包的安装过程中安装。
全文摘要
自描述插件模块与插件模块包的分层打包模型。标识符以分层关系指定给每个插件模块包,因此相邻识别出的包是向后兼容的。包标识符是在包内部维护的。类似地,插件模块的识别数据是在各自模块的命名空间中内部维护的。插件模块的相互依赖性是通过在每个模块的命名空间中维护的数据的比较确定的。
文档编号G06F9/445GK101030144SQ200710004449
公开日2007年9月5日 申请日期2007年1月23日 优先权日2006年2月28日
发明者苏迪赫·G.·劳, 尤伊迪普·布拉高海恩, 迈克尔·A.·加斯塔德, 姆素·A.·姆夏赫 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1