CN1971511A - 一种软件集成的方法及装置 - Google Patents
一种软件集成的方法及装置 Download PDFInfo
- Publication number
- CN1971511A CN1971511A CN 200610165458 CN200610165458A CN1971511A CN 1971511 A CN1971511 A CN 1971511A CN 200610165458 CN200610165458 CN 200610165458 CN 200610165458 A CN200610165458 A CN 200610165458A CN 1971511 A CN1971511 A CN 1971511A
- Authority
- CN
- China
- Prior art keywords
- plug
- inserter
- master routine
- interface
- noumenon
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 23
- 230000010354 integration Effects 0.000 title abstract 3
- 238000001514 detection method Methods 0.000 claims description 30
- 238000012423 maintenance Methods 0.000 abstract description 5
- 238000013461 design Methods 0.000 description 10
- 238000011161 development Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 230000002195 synergetic effect Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种软件集成的方法,用以解决现有技术中软件集成时各插件提供功能接口进行验证,使得插件与主程序的接口复杂,而且不利于系统的维护的问题。该方法包括:主程序加载插件,所述插件提供一个用于创建本插件的输出接口,并且该插件继承主程序协议层的接口;所述主程序调用插件的所述输出接口创建插件实体;以及在创建插件实体成功后所述主程序将所述插件实体加入到插件管理模块中。本发明同时公开了一种软件集成装置。
Description
技术领域
本发明涉及计算机及通信技术领域,尤其涉及一种软件集成的方法及其装置。
背景技术
随着计算机应用技术的不断发展,计算机软件越来越丰富,对计算机软件的开发需求也随之增加。随着软件开发项目变大或者在软件开发时间要求比较紧时,就需要几个人,十几个人,甚至是上百个人协作进行软件开发与设计,这时,需要将若干人所编写的软件代码(有可能是链接库、组件)进行无缝地集成,虽然可以直接采用源代码集成的方式,适当使用链接库或组件来实现无缝集成,但每一次的程序集成和代码维护都需要重新编译与链接源代码和重新发布新软件,增加了工作量降低了效率。
考虑上述因素,采用插件技术来实现软件的集成。插件技术就是在不修改程序主体的情况下对软件功能进行扩展与加强,这样,可以将一个待开发的目标软件分为两部分,一部分为程序的主体或主框架,称为主程序,另一部分为功能扩展或补充模块,即插件。当根据程序设计确定主程序后,设计主程序与插件的接口,并将该接口公开,根据各插件的接口独立开发插件,将插件开发完成后,在主程序平台中集成插件即可实现软件的无缝集成。插件可以实现在不改动主程序的情况下给主程序增加功能,主程序可独立于插件运行。
现有技术中,主程序与插件的接口协议提供固定的插件方法或结构体,插件根据插件协议层提供的方法和结构体设计插件,主程序集成插件后根据需要实现的软件功能调用插件提供的各功能接口。进行主程序和插件的集成时,主程序加载插件后,需要插件输出功能接口给主程序,主程序根据插件输出的功能接口对插件进行验证,并在验证成功后,集成该插件。采用现有技术的方法,集成时各插件提供功能接口进行验证,这使得插件与主程序的接口复杂,而且不利于系统的维护。
发明内容
本发明提供一种软件集成的方法及其装置,用以解决现有技术中软件集成时插件需要将插件所提供功能的所有接口输出给主程序导致主程序与插件的接口复杂、不利于系统维护的问题。
本发明提供以下技术方案:
一种软件集成的方法,包括如下步骤:
主程序加载插件,所述插件提供一个用于创建本插件的输出接口,并且该插件继承主程序协议层的接口;
所述主程序调用插件的所述输出接口创建插件实体;以及
在创建插件实体成功后所述主程序将所述插件实体加入到插件管理模块中。
较佳的,所述主程序调用插件的所述输出接口创建插件实体前包括如下步骤:
所述主程序调用所述插件的输出接口,该输出接口返回本接口的地址;
所述主程序判断所述地址是否为空,若否,则调用该输出接口创建插件实体;若是,则不创建插件实体。
进一步,主程序根据需要实现的软件功能从所述插件管理模块中调用插件实体提供的功能接口,其中,该功能接口继承所述主程序协议层的接口。
较佳的,所述主程序将所述插件实体加入到插件管理模块前,进一步调用本程序的检测接口检测所述插件实体是否满足预定义的检测协议,并只将满足预定义的检测协议的插件实体加入到插件管理模块中。
较佳的,将插件实体加入到插件管理模块时,将所述插件实体的指针记录到用于管理插件指针的链表中。
一种软件集成装置,包括:
加载模块,用于加载插件,所述插件提供一个用于创建本插件实体的输出接口,并且该插件继承主程序协议层的接口;
创建模块,用于调用插件的所述输出接口创建插件实体;
插件管理模块,用于加入创建成功的插件实体。
较佳的,所述装置还包括:
检测模块,用于检测所述插件实体是否满足主程序协议层的接口,调用本程序的检测接口检测所述插件实体是否满足预定义的检测协议。
所述插件管理模块进一步将加入到本模块中的所述插件实体的指针记录到用于管理插件指针的链表中;
执行模块,用于根据需要实现的软件功能从所述插件管理模块中调用插件实体提供的功能接口。
本发明有益效果如下:
本发明通过主程序定义协议层接口,由插件继承该协议层接口,从而在软件集成时,只需要由插件提供一个创建本插件实体的接口给主程序,主程序调用所述接口创建插件实体成功后加入插件实体,软件集成后,主程序只需要访问插件实体,即可调用插件实体内的每一个插件接口,简化了主程序与插件的接口,有利于系统的维护;进一步的,在创建插件实体成功后,还可通过主程序的检测接口检测插件实体是否满足检测协议,实现对插件实体的加密,提高了软件系统的安全性。
附图说明
图1为本发明实施例中的系统结构示意图;
图2为本发明实施例中软件集成的处理流程图;
图3为本发明实施例中的软件集成装置的结构示意图;
图4为本发明实施例中软件集成的详细处理流程图;
图5为本发明实施例中主程序调用插件的功能接口的处理流程图。
具体实施方式
本实施例中,由主程序加载的插件继承该主程序协议层的接口,并向主程序提供一个输出接口;主程序通过调用插件的所述输出接口创建插件实体,在创建插件实体成功后将所述插件实体加入到插件管理模块中。当需要实现软件功能时,主程序从插件管理模块中调用插件实体提供的功能接口。
进一步的,在主程序将插件实体加入到插件管理模块前,还可以通过主程序的检测接口检测插件实体是否满足检测协议,并且只将满足检测协议的插件实体加入到插件管理模块中,以此提高软件系统的安全性。
参阅图1所示,在包含多个插件和一个主程序的系统中,主程序平台110通过集成各插件120实现各插件的软件功能。主程序集成插件后,根据需要执行的软件功能查找到一个插件实体,首先调用该插件实体的一个功能接口,如果调用成功,继续调用该插件的其余功能接口完成需要执行的软件功能;当不能成功调用第一个功能接口时,则继续查找下一个插件实体。
参阅图2所示,主程序集成插件的处理过程如下:
步骤201、主程序加载插件,所述插件提供一个创建本插件的输出接口,该输出接口根据主程序预定义的协议设计,即所述插件继承主程序协议层的接口。
步骤202、主程序调用插件提供的输出接口创建插件实体。
步骤203、主程序将创建成功的插件实体加入到插件管理模块中。
参阅图3所示,本实施例中主程序平台110实现软件集成的装置包括:加载模块310、创建模块320、检测模块330、插件管理模块340和执行模块350。其中,加载模块310用于加载插件,该插件提供一个用于创建本插件的输出接口;创建模块320用于调用创建插件的接口创建插件实体;检测模块330用于通过主程序的检测接口(主程序的检测接口指向插件实体)检测插件实体是否满足预定义的检测协议;插件管理模块340用于加入创建成功的插件实体;执行模块350用于根据需要实现的软件功能从所述插件管理模块中调用插件实体提供的功能接口。
在进行插件设计时,将插件基于完全继承主程序来实现,即主程序根据需要实现的软件功能提供一个协议层,在该协议层中定义了各插件需要实现的功能的接口,每个插件根据主程序协议层的协议进行设计,并在设计每个插件时输出用于创建插件实体的一个输出接口。将主程序和插件进行集成时,插件将被加载到预定的目录下,如果创建插件实体成功,则将插件实体加入到插件管理模块中,并将插件实体的指针加入到管理插件指针的链表中;当主程序调用插件的功能接口时,将首先通过插件协议层指向插件创建出的实体,并用插件协议层调用插件的功能接口,插件完全继承主程序设计,因此通过主程序接口(插件协议层的接口)可以任意调用插件的功能接口,但在实际执行插件实体的软件功能前,需要进行预处理,检查该插件实体是否支持该类型的软件功能,这样,可通过首先调用一个功能接口,该功能接口用于对需要执行的软件功能类型进行识别,如果能够识别,才调用该插件实体的其余功能接口,实现插件实体的软件功能。
参阅图4所示,本实施例中软件集成的详细处理过程如下:
步骤401、主程序在预定的目录下加载需要进行集成的插件,该插件提供一个用于创建本插件实体的输出接口。
步骤402、主程序调用创建插件的输出接口,该输出接口返回本接口的地址。
步骤403、主程序判断创建插件实体的接口返回的地址是否为空,如果为空,则不集成该插件;如果不为空,则继续步骤404。
步骤404、主程序调用创建插件的输出接口创建插件实体,如果创建成功,则继续步骤405;否则,不集成该插件。
步骤405、主程序通过检测接口检测创建成功的插件实体是否满足检测协议,如果插件实体满足检测协议,则继续步骤406;否则,不集成该插件。所述的检测协议可以是预定义的加密算法。
步骤406、将插件实体加入到插件管理模块中,并将该插件实体的指针加入到管理插件实体指针的链表中。
当需要执行软件功能时,主程序调用插件的功能接口来完成。
参阅图5所示,本实施例中主程序根据需要实现的软件功能调用插件实体的功能接口的处理过程如下:
步骤501、主程序从管理插件指针的链表中读取一个插件实体的指针。
步骤502、主程序调用指针指向的插件实体的一个功能接口,该功能接口为插件实体的预处理接口;如果调用成功,继续调用该插件实体的其余功能接口实现插件提供的软件功能;否则,继续从管理插件指针的链表中读取下一个插件的指针,然后继续上述步骤。
以下举具体实例进行说明。
当插件需要实现播放器的功能时,根据播放器需要完成的功能主程序协议层定义的接口为:识辨(Identify)、播放(Play)和停止(Stop)。根据主程序协议层的接口设计插件的三个功能接口,并提供用于创建插件实体的输出接口和用于检测插件实体是否满足检测协议的检测接口,其中的识辨Identify接口为插件实体的预处理接口。主程序将插件加载后,调用插件输出(export)的用于创建插件实体的输出接口,创建插件实体成功后,还可以调用检测接口,检测插件实体是否满足检测协议,如果满足,则将插件实体加入插件管理模块中,将插件实体指针加入到管理插件实体指针的链表中。当需要播放多媒体文件时,主程序从插件实体指针链表中读取一个插件指针,指向该指针的插件实体,调用插件实体功能接口中的识辨接口,如果该插件实体能识别需要播放的多媒体文件,则调用该插件实体的其余功能接口播放该多媒体文件,否则,主程序将从管理插件实体指针的链表中读取下一个插件实体的指针,调用相应的插件实体的识辨接口进行前述处理。
以上实例通过实现三个功能接口的插件与主程序的集成对本发明进行了说明,根据软件功能需求,功能接口将更复杂,可能包括快进、快退、循环播放等功能。根据实际应用情况,定义的功能接口可以更丰富,但其集成方法类同,不再赘述。
采用本实施例中的方法,由于插件是遵循主程序协议层协议而设计,与主程序存在继承关系,因此在集成软件时,插件只需要输出用于创建本插件的一个输出接口即可实现插件的集成,不仅简化了插件与主程序集成时的接口,同时使得集成的软件系统易于维护。另外,在创建插件实体成功后,还可检测插件实体是否满足主程序预定义的检测协议,进一步提高了软件集成系统的安全性。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若对本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1、一种软件集成的方法,其特征在于,包括如下步骤:
主程序加载插件,所述插件提供一个用于创建本插件的输出接口,并且该插件继承主程序协议层的接口;
所述主程序调用插件的所述输出接口创建插件实体;以及
在创建插件实体成功后所述主程序将所述插件实体加入到插件管理模块中。
2、如权利要求1所述的方法,其特征在于,所述主程序调用插件的所述输出接口创建插件实体前包括如下步骤:
所述主程序调用所述创建插件的输出接口,该输出接口返回本输出接口的地址;
所述主程序判断所述地址是否为空,若否,则调用该输出接口创建插件实体;若是,则不创建插件实体。
3、如权利要求1或2所述的方法,其特征在于,还包括步骤:
主程序根据需要实现的软件功能从所述插件管理模块中调用插件实体提供的功能接口,其中,该功能接口继承所述主程序协议层的接口。
4、如权利要求3所述的方法,其特征在于,所述主程序将所述插件实体加入到插件管理模块前,进一步调用检测接口检测所述插件实体是否满足预定义的检测协议,并只将满足预定义的检测协议的插件实体加入到插件管理模块中。
5、如权利要求4所述的方法,其特征在于,将插件实体加入到插件管理模块时,将所述插件实体的指针记录到用于管理插件指针的链表中。
6、如权利要求5所述的方法,其特征在于,所述主程序根据需要实现的软件功能调用插件实体提供的功能接口包括如下步骤:
主程序从所述链表中读取一个插件实体的指针;
所述主程序调用所述指针指向的插件实体的一个功能接口,并且在调用成功后继续调用该插件实体的其余功能接口。
7、一种软件集成装置,其特征在于,包括:
加载模块,用于加载插件,所述插件提供一个用于创建本插件实体的输出接口,并且该插件继承主程序协议层的接口;
创建模块,用于调用插件的所述输出接口创建插件实体;
插件管理模块,用于加入创建成功的插件实体。
8、如权利要求7所述的装置,其特征在于,还包括:
检测模块,用于检测所述插件实体是否满足预定义的检测协议。
9、如权利要求7或8所述的装置,其特征在于,所述插件管理模块进一步将加入到本模块中的所述插件实体的指针记录到用于管理插件指针的链表中。
10、如权利要求9所述的装置,其特征在于,还包括:
执行模块,用于根据需要实现的软件功能从所述插件管理模块中调用插件实体提供的功能接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610165458 CN1971511A (zh) | 2006-12-20 | 2006-12-20 | 一种软件集成的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610165458 CN1971511A (zh) | 2006-12-20 | 2006-12-20 | 一种软件集成的方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1971511A true CN1971511A (zh) | 2007-05-30 |
Family
ID=38112351
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200610165458 Pending CN1971511A (zh) | 2006-12-20 | 2006-12-20 | 一种软件集成的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1971511A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101242526A (zh) * | 2007-12-18 | 2008-08-13 | 康佳集团股份有限公司 | 一种多媒体流协议的管理系统及其方法 |
CN102884507A (zh) * | 2010-04-28 | 2013-01-16 | 微软公司 | 客户机应用程序和网页集成 |
CN103001800A (zh) * | 2012-11-28 | 2013-03-27 | 华为技术有限公司 | 软件实体自动发现方法、服务节点及设备 |
CN101477457B (zh) * | 2008-01-02 | 2013-05-01 | 联想(北京)有限公司 | 应用模块管理系统、应用模块执行方法以及虚拟机系统 |
-
2006
- 2006-12-20 CN CN 200610165458 patent/CN1971511A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101242526A (zh) * | 2007-12-18 | 2008-08-13 | 康佳集团股份有限公司 | 一种多媒体流协议的管理系统及其方法 |
CN101477457B (zh) * | 2008-01-02 | 2013-05-01 | 联想(北京)有限公司 | 应用模块管理系统、应用模块执行方法以及虚拟机系统 |
CN102884507A (zh) * | 2010-04-28 | 2013-01-16 | 微软公司 | 客户机应用程序和网页集成 |
CN105138313A (zh) * | 2010-04-28 | 2015-12-09 | 微软公司 | 客户机应用程序和网页集成 |
CN103001800A (zh) * | 2012-11-28 | 2013-03-27 | 华为技术有限公司 | 软件实体自动发现方法、服务节点及设备 |
CN103001800B (zh) * | 2012-11-28 | 2016-03-30 | 华为技术有限公司 | 软件实体自动发现方法、服务节点及设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8689231B2 (en) | System and method for ordering tasks with complex interrelationships | |
US8694981B2 (en) | Shared resource dependencies | |
CN104932926B (zh) | 智能操作系统平台中实现设备与驱动动态匹配的系统及方法 | |
KR101854975B1 (ko) | 패키지 파일에 대한 기능 확장 방법 및 시스템 | |
CN102279765A (zh) | 预编译托存托管代码 | |
CN109726067B (zh) | 一种进程监控方法以及客户端设备 | |
US7203868B1 (en) | Dynamic monitoring of resources using snapshots of system states | |
CN105404585A (zh) | 获取代码覆盖率的方法及装置 | |
CN105009554B (zh) | 检测智能终端的硬件是否运行异常的方法以及智能终端 | |
CN111309335B (zh) | 插件应用的编译方法、装置及计算机可读存储介质 | |
CN101755271A (zh) | 用于在连接受限设备配置和开放服务网关联盟环境中管理访问特权的方法和装置 | |
CN102246144A (zh) | 用于在计算机平台上安装程序的方法和装置 | |
CN112558946A (zh) | 一种生成代码的方法、装置、设备和计算机可读存储介质 | |
US20140229958A1 (en) | Dynamic service discovery | |
CN113127050B (zh) | 一种应用资源打包过程监控方法、装置、设备和介质 | |
CN103443763A (zh) | 包含对重写虚拟函数的调用的支持的isa桥接 | |
KR20190030974A (ko) | 자바 플랫폼에서 사용하기 쉬운 형태의 컴파일 시점 의존성 주입 방법 및 장치 | |
CN110515647A (zh) | 一种静态资源管理方法、装置、设备和存储介质 | |
CN111290738A (zh) | 应用程序的资源处理方法、装置、设备及存储介质 | |
CN110502264A (zh) | 系统升级方法、终端及可读存储介质 | |
CN108647061A (zh) | 系统隐藏方法的调用方法、装置和计算设备 | |
CN112698924A (zh) | 一种临床试验电子数据采集系统及其运行方法 | |
US8903889B2 (en) | Method, system and article for mobile metadata software agent in a data-centric computing environment | |
CN1971511A (zh) | 一种软件集成的方法及装置 | |
CN115576600A (zh) | 基于代码变更的差异处理方法、装置、终端及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |