一种组件管理系统及组件管理方法
【技术领域】
[0001]本发明涉及计算机软件开发技术领域,具体地说,涉及一种组件管理系统及组件管理方法。
【背景技术】
[0002]随着计算机硬件和软件的飞速发展,计算机应用的功能愈来愈强大,实现也愈来愈灵活。通常,计算机应用中集成了许多功能,通常利用插件实现其中的某种子功能。
[0003]插件是遵循一定规范的应用程序接口编写出来的,并用于开发实现原纯净系统平台、应用软件平台不具备的功能的程序。由于插件需要调用原纯净系统提供的函数库或者数据,因而其只能运行在程序规定的系统平台下(可能同时支持多个平台),而不能脱离指定的平台而单独运行。例如在IE中,安装相关的插件后,WEB浏览器能够直接调用插件程序,用于处理特定类型的文件。
[0004]图1为基于插件的系统架构原理图。插件一般以动态库的形式并平台加载,平台成功加载插件以后,插件的代码就成为平台的一部分,无论是何种形式的插件,必需依赖于平台进程运行,插件不能以单独的进程运行。
[0005]以IE浏览器中的ActiveX安全控件为例,ActiveX控件是一种可重用的软件组件,通过使用ActiveX控件,可以很快地在网址、台式应用程序、以及开发工具中加入特殊的功能。如StockTicker控件可以用来在网页上即时地加入活动信息,动画控件可用来向网页中加入动画特性。
[0006]插件技术主要存在以下几个方面的缺点。一方面,插件开发成本高,难度大。对于插件开发者来说,如果想针对某个平台开发一款插件,前提是必需熟悉平台的开发标准和规范,在开发的过程中还要依赖平台的框架,这增加了插件开发者的开发成本和开发难度。另一方面,插件同平台的耦合性太高,导致应用平台的风险加倍。当平台成功加载某个插件以后,插件的代码成为平台的一部分。如果一个插件因自身程序的BUG导致崩溃,整个平台会随之崩溃。
[0007]因此,亟需一种能降低子功能模块与整个应用平台之间的耦合性的管理系统和方法。
【发明内容】
[0008]本发明的目的之一在于解决现有技术中,在进行应用平台中子功能的开发时,子功能模块与整个应用平台的关联性过高的技术缺陷。
[0009]本发明首先提供一种组件管理系统,包括:
[0010]组件构建模块,其用于构建至少一个组件源程序,所述组件源程序具有组件标识信息和组件访问入口;
[0011 ] 链接生成模块,其根据组件标识信息为所述至少一个组件源程序生成相应的链接文件;
[0012]框架管理模块,其执行链接文件从而基于组件标识信息查找组件源程序,获取并调用组件源程序中的组件访问入口。
[0013]在一个实施例中,所述组件构建模块进一步用于:
[0014]根据组件标识信息将原始程序包的原始运行入口修改为组件访问入口,其中,组件访问入口中包括组件标识信息;
[0015]将具有组件访问入口的原始程序包编译为动态链接库文件,获得组件源程序。
[0016]在一个实施例中,所述原始程序包与包含组件管理系统的应用平台独立,所述原始程序包的运行不依赖于应用平台的函数和数据资源。
[0017]在一个实施例中,所述框架管理模块进一步用于:
[0018]先发起父进程用于获取组件源程序中的组件访问入口,再在父进程中发起子进程来调用组件访问入口。
[0019]在一个实施例中,所述框架管理模块进一步用于:
[0020]将组件源程序的动态链接库文件加载至内存;
[0021 ] 打开组件源程序的动态链接库文件,确定组件访问入口在内存中的地址。
[0022]本发明还提供一种组件管理方法,包括以下步骤:
[0023]构建至少一个组件源程序,所述组件源程序具有组件标识信息和组件访问入口 ;
[0024]根据组件标识信息为所述至少一个组件源程序生成相应的链接文件;
[0025]执行链接文件从而基于组件标识信息查找组件源程序,获取并调用组件源程序中的组件访问入口。
[0026]在一个实施例中,在构建至少一个组件源程序的步骤中包括:
[0027]根据组件标识信息修改原始程序包的原始运行入口,确定组件源程序的组件访问入口,其中组件访问入口中包括组件标识信息;
[0028]将具有组件访问入口的原始程序包编译为动态链接库文件,得到组件源程序。
[0029]在一个实施例中,在获取组件源程序中的组件访问入口的步骤中包括:
[0030]将组件源程序的动态链接库文件加载至内存;
[0031 ] 打开组件源程序的动态链接库文件,确定组件访问入口在内存中的地址。
[0032]本发明还提供一种组件执行方法,包括以下步骤:
[0033]接收加载组件的指令;
[0034]根据指令中的组件标识信息执行组件的链接文件,从而基于组件标识信息查找组件源程序;
[0035]获取并调用组件源程序中的组件访问入口 ;
[0036]根据组件访问入口加载组件。
[0037]在一个实施例中,在获取组件源程序中的组件访问入口的步骤中包括:
[0038]将组件源程序的动态链接库文件加载至内存;
[0039]打开组件源程序的动态链接库文件,确定组件访问入口在内存中的地址。
[0040]本发明的实施例可以将软件系统结构中的某个子功能模块或者子系统等抽象成组件,利用组件管理框架来管理这些组件。各组件不能单独使用,必需依赖于管理框架才能使用,管理框架能够管控所有组件,不同的组件之间的业务逻辑完全分离。
[0041]本申请的实施例可以降低组件开发与应用平台的耦合性,这主要表现在两个方面。首先,在进行软件开发时,各组件之间的代码和业务逻辑相互独立,互不干涉。组件的研发人员只需要按照统一的规范定义好入口函数(类似于普通程序的main函数),并将各自的代码编译成动态库以后,并将编译出的动态库按照规定的命名规范命名便可。其次,在程序运行时,组件均由框架发起的子进程加载并执行,每个组件均运行在独立的子进程中,拥有独立的地址空间和资源。因此一个组件崩溃只会导致框架中负责加载该组件的子进程退出,不会导致整个框架的崩溃。
[0042]本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
【附图说明】
[0043]附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
[0044]图1是现有技术中基于插件的系统架构原理图;
[0045]图2是实施例一的基于组件的系统架构图;
[0046]图3是实施例一的组件管理系统结构图;
[0047]图4是实施例二的组件管理方法的步骤流程图;
[0048]图5是实施例三的组件加载方法的步骤流程图;
[0049]图6是实施例三的一个示例中组件加载方法的步骤流程图。
【具体实施方式】
[0050]为使本发明的目的、技术方案和优点更加清楚,以下结合附图对本发明作进一步地详细说明。
[0051]以下结合说明书附图对本