软件组件管理系统的制作方法

文档序号:6336049阅读:245来源:国知局
专利名称:软件组件管理系统的制作方法
技术领域
本发明涉及计算机领域,具体而言,尤其涉及一种软件组件的管理技术。
背景技术
组件是近代工业发展的产物,目的是功能模块化,构成产品的各个功能组件,分别 可由专业的厂商生产,提高了质量,降低了成本,同时对于同样的组件,可应用于多类产品 和多个领域,极大的拓展了技术的移植和应用。软件工程中的组件,或者说软件组件是指“系统中一种物理的、可代替的部件、它 封装了实现并提供了一系列可用的接口。一个组件代表一个系统中实现的物理部分,包括 软件代码(源代码,二进制代码,可执行代码)或者一些类似内容,如脚本或者命令文件。” 使用软件组件技术的一个最大的好处就是通过将软件组件化来分解软件,从而降低的软件 的复杂度,提高了软件的集成度和可重用度。在目前现有使用软件组件化技术的软件产品中,通常存在着程序启动速度慢、内 存占用多、CPU占用率高等问题,这是因为程序启动时,加载了过多的组件,而每个组件又会 占用一定的内存空间和CPU,从而导致整个程序臃肿不堪。而对于组件的动态管理,目前只 有在嵌入式系统中使用了类似的技术,但这些技术的实现较为复杂,且受限于嵌入式系统 自身所支持的技术。

发明内容
针对现有技术中组件化软件产品中存在的程序启动时,加载了过多的组件而导致 整个程序运行慢的问题提出本发明。为此,本发明的主要目的在于提供一种软件组件管理 系统及方法,以解决上述问题至少之一。根据本发明的一个方面,本发明提出了一种软件组件管理系统,包括启动模块、组 件管理器、公共接口、至少一个软件组件;其中,启动模块整个程序的入口,与组件管理器交互,通过组件管理器来加载各软件组 件;组件管理器用来对软件组件进行管理,动态实现加载、卸载软件组件等功能;公共接口 定义了一个所有接口必须共同遵守的公共标准和公共能力,所述公共 标准是指包含计数器,所述公共能力是指增加计数的能力和减少计数的能力;软件组件作为所述软件组件管理系统的管理对象,为程序提供业务功能的各模 块组件。 进一步地,所述组件管理器具体包括,配置文件负责存放软件组件的配置信息,所述组件的配置信息包括组件唯一 标识、组件在物理设备上的访问路径、组件包含的接口、组件存活时间;接口查询单元用于通过接口唯一标识来查询接口入口地址;组件加载单元组件加载单元根据组件配置信息从物理设备上将组件加载到应用程序系统中;响应时间记录单元用于记录当前已加载每个组件的上次响应时间,即当前已加 载的每个组件所包含的接口上一次被调用的时间;组件卸载单元负责组件的卸载。进一步地,所述公共接口具体指,每个接口都包含计数器,当接口在被使用时所述 计数器增加、接口被使用完毕后所述计数器减少、所述计数器增加时的步进必须和减少时 的步进一致,所述计数器记录了这个接口目前正在被多少使用者所使用。进一步地,软件组件包括业务组件、功能组件,所述软件组件所包含的接口都是由 公共接口继承而来的,遵守公共接口的标准。进一步地,所述组件包含的接口为一个或者多个,是组件的唯一标识与接口唯一 标识的对照关系表。进一步地,所述组件存活时间,是指当一个已加载的组件持续未活动的时间,超出 所述组件存活时间时,卸载该组件。进一步地,所述组件卸载单元在程序启动时启动,定期检测当前已加载的所有软 件组件,当某个软件组件达到了卸载条件时,将该组件卸载。进一步地,所述组件的卸载条件指该组件包含的所有接口目前都没有被使用,并 且该组件上次响应时间已超出了预定的组件存活时间。与现有技术相比,本发明定义一个具有计数器的公共接口,通过组件管理器管理 每个组件的生命周期,在保持整个软件程序原有功能不变的情况下,更有效率的分配和使 用系统资源,从而提高了系统的效率。


图1为本发明组件管理系统结构图; 图2为根据本发明优选实施例的程序启动时的示意图;图3为根据本发明优选实施例的组件动态加载时的示意图;图4为根据本发明优选实施例的组件动态卸载时的示意图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,以下结合附图对本发明作进一步 地详细说明。本发明的核心思想是定义一个具有计数器的公共接口作为所有接口的共同标准, 通过制定一定策略来控制组件的生命周期,从而实现组件动态加载和卸载的管理过程。为更好了理解本发明的实施,这里先对相关专业技术的术语进行简单的说明。接口 我们可以将之理解为调用一项“服务”的入口,这项“服务”能够提供某种能 力(如打电话、进行文字聊天、进行某项数学计算等),并具有一系列的属性(如接口的 唯一标识、接口当前被使用的次数等)。每个接口都具有唯一标识,唯一标识是指该接口区 别于其他接口的一个标签,它可以是一组具有特殊意义的数字,也可以是一串特殊内容的 文本,且并不局限于以上两种方式,唯一标识并不一定是绝对唯一、不会重复的,它仅在使 用该标识的工作环境内保持唯一即可。
继承可以理解为在某“接口”的基础上,延伸而出一种新的“接口”,新的接口不但 包含原有接口的功能和属性,并且可以包含新接口自身的新功能和新属性,而这种延伸我 们就称之为“继承”。例如已存在一个“对话框服务”,我们由此服务延伸出了 “聊天室对话
框服务”、“系统设置对话框服务”、“通讯录对话框服务”等......我们就称后三种延伸出来
的服务是继承于“对话框服务的”,如果我们在“聊天室对话框服务”的基础上继续延伸出了 “包含视频功能的聊天室对话框服务”,我们就称“包含视频功能的聊天室对话框服务”是直 接继承于“聊天室对话框服务”,且间接继承于“对话框服务”。如图1所示,为本发明的软件组件管理系统,该软件组件管理系统包括启动模块, 组件管理器、公共接口,至少一个软件组件,其中启动模块整个程序的入口,与组件管理器交互,通过组件管理器来加载各软件组 件;组件管理器用来对软件组件进行动态管理,动态实现加载、卸载软件组件等功 能。公共接口 包含一个计数器,接口在被使用时计数器增加、接口被使用完毕后计数 器减少、计数器增加时的步进必须和减少时的步进一致。所谓“计数器”,它记录了这个接口 目前正在被多少使用者所使用(使用者并不局限为是用户,也可能是另一个服务),而当接 口被使用时,计数器则会增加N(N为整数),当接口被使用完毕后,计数器则会减少N。需要说明的是本发明所说的公共接口的设置是出于管理组件和接口的目的,特 别定义出的一个抽象的接口,它仅包含了所有接口必须共同遵守的一个公共标准,而不包 含具体的业务能力和属性。软件组件是指为程序提供业务功能的各模块,例如文字聊天组件、语音通话组 件、文件传输组件、系统设置组件等。这些组件所包含的接口都是由公共接口继承而来的, 遵守公共接口的标准,并根据各组件的业务定位不同扩展出各自的业务功能,它们是组件 管理系统的管理对象。本发明实施例中的组件管理器进一步包括配置文件、组件加载单元、接口查询单 元、响应时间记录单元和组件卸载单元配置文件负责存放组件的配置信息,所述组件的配置信息包括组件唯一标识、 组件在物理设备上的访问路径、组件所包含的接口、组件在无响应时的最大存活时间。其 中,组件唯一标识,是指在一定的工作环境内,用来区分和定位组件唯一性的标识。组件在物理设备上的访问路径,是指组件在电脑系统中物理存在的绝对或相对路 径,组件管理器能够根据组件的访问路径,正常的访问该组件,如加载组件。组件所包含的接口 一个组件可能包含一个或多个接口,所以组件所包含的接口 实际上也就是一组组件唯一标识与接口唯一标识的对照关系表。由组件和接口的包含关系 可知,当某项服务需要被使用时,首先需要加载包含提供该服务接口的组件,然后才能够通 过接口使用该服务,如果组件已经加载,则无需重复加载。组件存活时间,是指当一个已加载的组件持续未活动的时间超出该组件在无响应 时的最大存活时间时,卸载该组件。该时间是为了避免频繁的加载卸载组件而设置的卸载 组件的时间延迟。该时间通常由本专利的使用者根据自己所开发的应用程序的业务特性具体而定。组件加载单元根据组件配置信息从物理设备上将组件加载到应用程序系统中;接口查询单元用于通过接口唯一标识来查询接口入口地址。响应时间记录单元用于记录当前已加载每个组件的上次响应时间,即当前已加 载的每个组件所包含的接口上一次被调用的时间。一旦组件所包含的任何一个接口被使 用,则上次响应时间会立即更新。组件卸载单元负责组件的卸载,在程序启动时一同启动,定期检测当前已加载的 所有组件,一旦某个组件达到了卸载的条件,就会将该组件卸载。组件卸载单元是一个独立 运行的单元,组件卸载条件包括该组件提供的所有接口目前都没有被使用,并且该组件上 次响应时间已超出了组件存活时间。接口的使用者通过接口查询单元查询其希望调用的接口地址。接口查询单元首先 查询配置文件,得到包含该接口的组件的唯一标识。然后接口查询单元去查询响应时间记 录单元,如果发现该组件唯一标识目前没有被记录活动时间,则说明该组件目前尚未被加 载。于是接口查询单元通知组件加载单元来加载该组件,加载成功后,接口查询单元将接口 地址返回给查询者,并将通知响应时间记录单元记录该组件的活动时间。组件在被组件卸 载单元卸载后,组件卸载单元会通知响应时间记录单元删除该组件的活动时间记录。基于上述软件组件管理系统,本发明的软件组件管理方法如下步骤1、程序启动时,启动模块开始运行,启动模块将启动组件管理器,组件管理器 通过读取配置文件,将当前需要使用的软件组件加载(如程序主界面组件)。步骤2、当程序启动后,如果需要使用某软件组件提供的业务时,使用者通过组件 管理器查询提供该业务的接口,如果包含被查询接口的组件目前尚未被加载,则组件管理 器读取配置文件,得到该组件的访问路径,先将该组件加载,然后将该组件接口的访问入口 地址返回给使用者。例如当一个使用者需要使用A接口,使用者通过组件管理器的接口查询单元得 到A接口的访问入口地址,此时A接口增加计数1次,当A接口被使用完毕后,A接口减少 计数1次,当A接口的计数器减少为0时(假设计数器初始是从0开始计数的),则表示A 接口当前已经没有任何使用者在使用了,已经可以销毁了,此时A接口会通知组件管理器 将自身销毁。步骤3、组件管理器中会记录该组件的当次活动情况,将组件所包含接口的计数器 最近一次改变的时间记录为该组件的上次响应时间,如果在持续一段时间内该组件所包含 的所有接口一直未被调用,当该时间超过该组件存活时间后,组件管理器的组件卸载单元 就会将该组件卸载。如果在无响应的时间达到该组件存活时间之前,该组件的接口被再次 访问,则上次响应时间会重新记录。如图2所示,为本发明优选实施例的程序启动时的示意图,包括1、应用程序启动时,启动模块启用组件管理器,组件管理器通过读取配置文件中 的组件配置信息,调用登录界面接口、登录业务接口、TCP通讯接口、主界面接口,所以组件 管理器加载了当前需要的组件,如图中底层通讯组件(ID :01)、登录组件(ID :02)、主界面 组件(ID 03)。需要说明的是在程序启动时,还不需要使用电话功能、文字聊天功能、文件传输功能等,所以其相关的组件均未被加载,如图中电话组件(ID:04)、文字聊天组件(ID:05)、 通讯录组件(ID 06)、系统设置组件(ID 07)、文件传输组件(ID 08)。2、组件管理器记录了各组件的上次响应时间;各被调用的接口的计数。如图3所示意,为本发明优选实施例的组件动态加载时的示意图,包括1、在程序的应用过程中,用户在主界面上点击通讯录功能标签,希望打开通讯录 界面进行通讯录查询,所以主界面接口(03a)通过组件管理器查询通讯录界面接口(06a)。2、组件管理器在收到主界面接口(03a)的查询请求后,组件管理器检查配置文 件,发现通讯录界面接口(06a)是属于通讯录组件(06)的,而通讯录组件(06)目前尚未加 载,所以组件管理器首先加载通讯录组件(06),然后将通讯录界面接口(06a)返回给调用 者,通讯录界面接口(06a)计数器增加1。用户操作通讯录界面进行查询,通讯录界面接口(06a)向组件管理器查询通讯录 业务接口(06b),组件管理器检查配置文件,发现通讯录业务接口(06b)是属于通讯录组件 (06)的,而通讯录组件(06)目前已加载,所以组件管理器直接返回通讯录业务接口(06b)。通讯录业务接口(06b)在查询过程中需要与远程的通讯录数据库建立连接,所以 通讯录业务接口(06b)向组件管理器查询TCP通讯接口(01a),组件管理器检查配置文件, 发现TCP通讯接口(Ola)是属于底层通讯组件(01)的,而底层通讯组件(01)目前已加载, 所以组件管理器直接返回TCP通讯接口(Ola)。因为此时程序已经启动和登录完毕,所以登录过程中使用到的TCP通讯接口计数 减少1 (变为0),登录界面接口计数减少1 (变为0),登录业务接口计数减少1 (变为0)。而在通讯录查询的过程中,所使用到的TCP通讯接口计数增加1 (变为1),通讯录 界面接口增加1(变为1),通讯录业务接口增加1(变为1)。主界面因为一直在使用,所以其接口计数器不变。如图4所示,为本发明优选实施例的组件动态卸载时的示意图,包括若预先设置的组件存活时间为10分钟,当程序在登录了 10分钟后,因为登录界面 接口(02a)计数器为0,登录业务接口(02b)计数器为0,且登录组件(02)达到了其配置的 无响应时的最大存活时间,此时已达到了组件卸载的条件,组件卸载单元自动将登录组件 (02)卸载。综上所述,本发明提出的软件组件的管理系统及方法,通过定义一个具有计数器 的公共接口作为所有接口的共同标准,通过组件管理器依靠计数器和组件响应时间的处理 策略,来控制组件的生命周期,从而实现组件的动态加载和卸载的管理过程。本方案可扩展 性强,机制简单,本领域普通技术人员可以通过上述实施例的描述和附图来学习和使用。
权利要求
一种软件组件管理系统,包括启动模块、组件管理器、公共接口、至少一个软件组件;其中,启动模块整个程序的入口,与组件管理器交互,通过组件管理器来加载各软件组件;组件管理器用来对软件组件进行管理,动态实现加载、卸载软件组件等功能;公共接口定义了一个所有接口必须共同遵守的公共标准和公共能力,所述公共标准是指包含计数器,所述公共能力是指增加计数的能力和减少计数的能力;软件组件作为所述软件组件管理系统的管理对象,为程序提供业务功能的各模块组件。
2.如权利要求1所述的管理系统,其特征在于,所述组件管理器具体包括,配置文件负责存放软件组件的配置信息,所述组件的配置信息包括组件唯一标识、 组件在物理设备上的访问路径、组件包含的接口、组件存活时间; 接口查询单元用于通过接口唯一标识来查询接口入口地址; 组件加载单元组件加载单元根据组件配置信息从物理设备上将组件加载到应用程序 系统中;响应时间记录单元用于记录当前已加载每个组件的上次响应时间,即当前已加载的 每个组件所包含的接口上一次被调用的时间; 组件卸载单元负责组件的卸载。
3.如权利要求1所述的管理系统,其特征在于,所述公共接口具体指,每个接口都包含计数器,当接口在被使用时所述计数器增加、接 口被使用完毕后所述计数器减少、所述计数器增加时的步进必须和减少时的步进一致,所 述计数器记录了这个接口目前正在被多少使用者所使用。
4.如权利要求2所述的管理系统,其特征在于,软件组件包括业务组件、功能组件,所 述软件组件所包含的接口都是由公共接口继承而来的,遵守公共接口的标准。
5.如权利要求2或3所述的管理系统,其特征在于,所述组件包含的接口为一个或者多个,是组件的唯一标识与接口唯一标识的对照关系表。
6.如权利要求2或3所述的管理系统,其特征在于,所述组件存活时间,是指当一个已加载的组件持续未活动的时间,超出所述组件存活 时间时,卸载该组件。
7.如权利要求2或3所述的管理系统,其特征在于,所述组件卸载单元在程序启动时启动,定期检测当前已加载的所有软件组件,当某个 软件组件达到了卸载条件时,将该组件卸载。
8.如权利要求7所述的管理系统,其特征在于,所述组件的卸载条件指该组件包含的所有接口目前都没有被使用,并且该组件上次响 应时间已超出了预定的组件存活时间。
全文摘要
本发明提出了一种软件组件的管理系统及方法,通过定义一个具有计数器的公共接口作为所有接口的共同标准,通过组件管理器依靠计数器和组件响应时间的处理策略,来控制组件的生命周期,从而实现组件的动态加载和卸载的管理过程。本方案可扩展性强,机制简单,在保持整个软件程序原有功能不变的情况下,更有效率的分配和使用系统资源,从而提高了系统的效率。
文档编号G06F9/445GK101989203SQ201010547288
公开日2011年3月23日 申请日期2010年11月9日 优先权日2010年1月5日
发明者李俊敏, 杨志鹏, 范国华 申请人:深圳中兴网信科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1