CN104298512A - 一种基于OSGi标准的功能组件式集成开发系统 - Google Patents
一种基于OSGi标准的功能组件式集成开发系统 Download PDFInfo
- Publication number
- CN104298512A CN104298512A CN201410532853.XA CN201410532853A CN104298512A CN 104298512 A CN104298512 A CN 104298512A CN 201410532853 A CN201410532853 A CN 201410532853A CN 104298512 A CN104298512 A CN 104298512A
- Authority
- CN
- China
- Prior art keywords
- assembly
- component
- layer
- resource
- osgi
- 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
Links
Abstract
本发明公开了一种基于OSGi标准的功能组件式集成开发系统,包括功能提供层,原子组建层,组件接驳层,和运行平台层;其中原子组件层和组件接驳层分别对应了组件的定义和集成方式,这两部分协同运作,构成了一个独特的组件热插拔接驳机制,只需要少量编码即可完成一个全新功能组件的接入,并可立刻投入使用。该环境可用于团队长期技术沉淀和技术统一,能够提高组件复用率和代码复用率。
Description
技术领域
本发明涉及计算机应用程序开发系统设计领域,尤其是一种基于OSGi标准的功能组件式集成开发系统。
背景技术
OSGi(Open Service Gateway Initiative)规范的核心部分是一个框架,这个框架实现了一个优雅、完整和动态的组件模型。Bundle无需重新引导可以被远程安装、启动、升级和卸载。服务注册允许Bundles去检测新服务和取消的服务,然后进行相应配合。
现有方案中,通常开发团队在开发实施过程中会使用主流的第三方开发环境进行项目工程的搭建,然后基于搭建完成的项目工程分团队分别进行编码开发和技术升级。第三方的开发环境如现在流行的MyEclipse,Idea等。
上述的第三方开发方案中,存在的缺点是:
第一,第三方开发环境作为一个通用工具,是独立于开发团队的,开发团队的技术沉淀无法融入工具,因此需要耗费许多额外的精力和时间在环境搭建、使用教授、内部交流上。
第二,因为开发团队内部人员个体能力的不一致,会导致结果偏差,最终造成编码层和技术层断层,即编码人员不了解团队的技术积累、新模块的使用和配置方法、团队的目标;技术层难以统一整个团队的技术环境,且只能通过文档的方式来阐述技术结构发生的变化而无法提供样例去引导程序编码人员。
故,需要一种新的技术方案以解决上述问题。
发明内容
本发明的目的是针对现有技术存在的不足,提供一种基于OSGi标准的功能组件式集成开发系统,提高开发效率,提高组件复用率和代码复用率,从而提高软件研发的效率和项目实施效率。
为实现上述发明目的,本发明基于OSGi标准的功能组件式集成开发系统可采用如下技术方案:
包括功能提供层,原子组建层,组件接驳层,和运行平台层;
功能提供层预设有若干OSGi标准功能,同时读取各组件所定义的使用模式对应至预设的OSGi标准功能中;
原子组件层为各组件提供定义接口,包括资源文件定义、使用方式定义,统一管理包括组件代码文件、Jar库的所有组件资源;
组件接驳层为原子组件层的各组件提供注册接口、注销接口和调用接口,同时负责向平台层发起资源调度请求,实现接入注册的组件会被组件库统一管理;组件接驳层设置一个逻辑上的组件库,当容器启动时,将原子组件层所有组件的资源按层次结构根据组件依赖关系生成对应结构的目录复制到组件库,接着通过运行平台层的一个监听程序监听原子组件层的目录,在原子组件层的内容发生变化后,读取这些变化项并将变化项更新到组件库对应的目录下,然后调用运行平台层重新建立以更新原子组件层中内容的变化;
运行平台层为符合OSGi标准的运行平台。
本发明中通过便捷的组件定义接驳机制,只需要少量编码即可完成一个全新功能组件的接入,并可立刻投入使用。该环境可用于团队长期技术沉淀和技术统一,能够提高组件复用率和代码复用率。
附图说明
图1是本发明基于OSGi标准的功能组件式集成开发系统的构造示意图。
图2是本发明基于OSGi标准的功能组件式集成开发系统中组件热部署原理示意图。
图3是本发明中组件加载流程图。
图4是本发明一个实施例中组件资源的加载方式原理图。
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
如图1所示,本发明公开一种基于OSGi标准的功能组件式集成开发系统,其特征在于,包括功能提供层,原子组建层,组件接驳层,和运行平台层;
功能提供层预设有若干OSGi标准功能,同时读取各组件所定义的使用模式对应至预设的OSGi标准功能中;
原子组件层为各组件提供定义接口,包括资源文件定义、使用方式定义,统一管理包括组件代码文件、Jar库的所有组件资源;
组件接驳层为原子组件层的各组件提供注册接口、注销接口和调用接口,同时负责向平台层发起资源调度请求,实现接入注册的组件会被组件库统一管理。为了使新的外部组件能够快速接入而不需要繁琐的配置和重新编译环境,实现热部署,组件接驳层设置一个逻辑上的组件库(结合图2所示),当容器启动时,将原子组件层所有组件的资源按层次结构根据组件依赖关系生成对应结构的目录复制到组件库,接着通过运行平台层的一个监听程序监听原子组件层的目录,在原子组件层的内容发生变化后,读取这些变化项并将变化项更新到组件库对应的目录下,然后调用运行平台层重新建立以更新原子组件层中内容的变化;这样不但实现了组件定义和接入的分离,使组件可以随时进行修改而无需重启环境,同时也降低了后续动态加载组件时的读取时耗,过程中还要求组件功能的边界划分要清晰。事实上在实际应用中,组件的扩展和维护是一个持续的过程,因此在组件定义时需要谨慎处理它的粒度以及与其他组件的耦合关系,这样才能保证单个组件在维护修改和升级时不会影响整个集成开发环境的使用。
运行平台层为符合OSGi标准的运行平台。在本实施方式中,所述运行平台层为符合OSGi标准的Eclipse平台。
本发明中,原子组件层和组件接驳层分别对应了组件的定义和集成方式,这两部分协同运作,构成了一个独特的组件热插拔接驳机制
本发明中对组件的定义包括:对该组件的bundle ID标识号、jar文件、配置文件进行定义,组件包含可执行的源代码,采用jar的方式对源代码进行封装,并将该源代码jar也配置为该组件的资源,将这些资源放置在组件库对应的目录下并添加新组件的注册项,完成定义的组件即可通过组件接驳层进行集成。组件接驳层直接采用OSGi平台(Eclispe)的接口编程实现,可以通过配置和少量编码实现组件与环境的集成。在环境启动时,组件接驳层会读取所需加载的组件清单,包括环境自身已经包含和用户自定义的组件,注册所有实现注册接口的组件。在装载和运行组件时,组件接驳层通知运行平台调取它们所需的资源将其实例化。
请进一步结合图3所示,在本发明中,组件加载过程是动态的,通过用户的指令去实例化组件对象,具体步骤如下:
步骤1、获取用户所选择加载的组件列表;
步骤2、读取组件列表,并查找他们在当前项目实例中的状态,包括检查是否已经载入一部分资源;
步骤3、读取组件列表中各组件的配置。配置信息包括①该组件所依赖的其他组件②该组件自身特有的资源配置文件。如果该组件依赖其他组件,则递归读取其依赖组件至末端;
步骤4、将步骤3所读取的所有组件的资源装载到当前项目实例中,并在项目配置文件中标注这些组件为已加载;
步骤5、刷新用户的工作区,更新项目的状态,并将载入的资源展示在项目资源文件中;
步骤6、刷新该项目实例的组件库视图,标注所加载组件的状态,并激活组件与项目的关联关系。
组件资源的加载方式如图4所示,如,用户通过向导或某些方式选择加载A、K、D组件到指定的项目中。经过环境检查,读取到组件的配置文件。在这个例子中A依赖了B和K组件,同时B依赖了C组件,则构建器会首先读取A的独有资源(jar库、配置项等),然后根据A的依赖配置读取B、K的独有资源,再通过读B和K的依赖配置读取到C……直至结束,最后把A、B、K、C的四者的资源去重取全集,加载到项目中,同时记录A、B、K、C组件为已加载。接下来同样的方式读取K和D组件的配置,构建器会发现K已加载而直接跳过读D……直至结束。最后,组件A、B、K、C、D的资源文件全部加载到项目中,同时组件库根据项目的已加载组件列表刷新加载状态。
本发明的关键点是实现了一个符合OSGi国际标准的组件式集成开发环境,达到了缩短团队开发周期、持续集成新功能、统一团队技术等目标,其主要特征点在于:基于OSGi国际标准规范;基于树形依赖关系的组件定义及组件资源加载机制;具有一个灵活的组件接驳层,实现组件的热部署(启动状态下的修改可直接更新);可视化组件库。从而能够体现如下优势:
1、功能可持续集成:通过便捷的组件定义接驳机制,只需要少量编码即可完成一个全新功能组件的接入,并可立刻投入使用。该环境可用于团队长期技术沉淀和技术统一。
2、方便快速的使用:可通过该集成开发环境快速获悉整个团队的开发模式和技术变化。通过环境内置的工程构建向导、组件库、组件测试向导和组件帮助api,编码人员能够快速理解各组件的使用方式并用于具体编码实施,同时节约了不必要的交流成本。
3、组件的热部署:可以直接在启动态对组件单元进行增加、修改、删除,无需重启环境,立即更新变化,极大方便技术人员的集成和调试。
4、开发规范管理:通过定制工程构建向导和提供规范化的开发样例(sample),开发团队的管理层可以对团队的开发规范进行管理。
5、可定制化改造:可以根据行业/团队的实际需求进行二次开发改造,以应对多样的需求。
Claims (4)
1.一种基于OSGi标准的功能组件式集成开发系统,其特征在于,包括功能提供层,原子组建层,组件接驳层,和运行平台层;
功能提供层预设有若干OSGi标准功能,同时读取各组件所定义的使用模式对应至预设的OSGi标准功能中;
原子组件层为各组件提供定义接口,包括资源文件定义、使用方式定义,统一管理包括组件代码文件、Jar库的所有组件资源;
组件接驳层为原子组件层的各组件提供注册接口、注销接口和调用接口,同时负责向平台层发起资源调度请求,实现接入注册的组件会被组件库统一管理;组件接驳层设置一个逻辑上的组件库,当容器启动时,将原子组件层所有组件的资源按层次结构根据组件依赖关系生成对应结构的目录复制到组件库,接着通过运行平台层的一个监听程序监听原子组件层的目录,在原子组件层的内容发生变化后,读取这些变化项并将变化项更新到组件库对应的目录下,然后调用运行平台层重新建立以更新原子组件层中内容的变化;
运行平台层为符合OSGi标准的运行平台。
2.根据权利要求1所述的基于OSGi标准的功能组件式集成开发系统,其特征在于,对组件的定义包括:对该组件的bundle ID标识号、jar文件、配置文件进行定义,组件包含可执行的源代码,采用jar的方式对源代码进行封装,并将该源代码jar也配置为该组件的资源,将这些资源放置在组件库对应的目录下并添加新组件的注册项,完成定义的组件即可通过组件接驳层进行集成。
3.根据权利要求1或2所述的基于OSGi标准的功能组件式集成开发系统,其特征在于,组件加载过程是动态的,通过用户的指令去实例化组件对象,具体步骤如下:
步骤1、获取用户所选择加载的组件列表;
步骤2、读取组件列表,并查找他们在当前项目实例中的状态,包括检查是否已经载入一部分资源;
步骤3、读取组件列表中各组件的配置。配置信息包括①该组件所依赖的其他组件②该组件自身特有的资源配置文件。如果该组件依赖其他组件,则递归读取其依赖组件至末端;
步骤4、将步骤3所读取的所有组件的资源装载到当前项目实例中,并在项目配置文件中标注这些组件为已加载;
步骤5、刷新用户的工作区,更新项目的状态,并将载入的资源展示在项目资源文件中;
步骤6、刷新该项目实例的组件库视图,标注所加载组件的状态,并激活组件与项目的关联关系。
4.根据权利要求1或2所述的基于OSGi标准的功能组件式集成开发系统,其特征在于:所述运行平台层为符合OSGi标准的Eclipse平台。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410532853.XA CN104298512B (zh) | 2014-10-10 | 2014-10-10 | 一种基于OSGi标准的功能组件式集成开发系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410532853.XA CN104298512B (zh) | 2014-10-10 | 2014-10-10 | 一种基于OSGi标准的功能组件式集成开发系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104298512A true CN104298512A (zh) | 2015-01-21 |
CN104298512B CN104298512B (zh) | 2018-02-16 |
Family
ID=52318255
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410532853.XA Active CN104298512B (zh) | 2014-10-10 | 2014-10-10 | 一种基于OSGi标准的功能组件式集成开发系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104298512B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657142A (zh) * | 2015-02-12 | 2015-05-27 | 中国科学院计算机网络信息中心 | 一种基于OSGi技术的CCFD系统 |
CN105335160A (zh) * | 2015-11-10 | 2016-02-17 | 河海大学 | 一种基于jsf的web端组件敏捷开发方法 |
CN106155817A (zh) * | 2015-04-14 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 业务信息处理方法、服务器及系统 |
CN107133024A (zh) * | 2016-02-29 | 2017-09-05 | 北京广联达正源兴邦科技有限公司 | 基于osgi框架的业务管理系统 |
WO2018161212A1 (zh) * | 2017-03-06 | 2018-09-13 | 深圳市大疆创新科技有限公司 | 电机控制系统、无人机控制系统、无人机及电机保护方法 |
CN109298851A (zh) * | 2018-07-25 | 2019-02-01 | 中国电子科技集团公司第二十九研究所 | 一种OSGi异构软件框架的扩展机制适配方法 |
CN110955415A (zh) * | 2019-12-03 | 2020-04-03 | 杭州当贝网络科技有限公司 | 一种投影多平台服务适配的方法 |
CN111314424A (zh) * | 2020-01-17 | 2020-06-19 | 深圳壹账通智能科技有限公司 | 服务平台的组件管理方法和系统 |
CN112148342A (zh) * | 2019-06-27 | 2020-12-29 | 北京达佳互联信息技术有限公司 | 组件配置方法、装置、电子设备和存储介质 |
CN112860227A (zh) * | 2021-02-08 | 2021-05-28 | 杭州玳数科技有限公司 | 功能性代码组件开发方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117466A1 (en) * | 2002-12-12 | 2004-06-17 | International Business Machines Corporation | Client device configuration with configuration services providers |
US20090150873A1 (en) * | 2005-12-14 | 2009-06-11 | Canon Kabushiki Kaisha | Information processing apparatus and method |
CN101634945A (zh) * | 2009-08-20 | 2010-01-27 | 华南理工大学 | 构件动态感知模型及其在RFID中间件Web表示层的应用 |
CN103294455A (zh) * | 2012-02-27 | 2013-09-11 | 杭州勒卡斯广告策划有限公司 | 一种软件服务实现方法、系统及Java平台 |
CN103677854A (zh) * | 2013-12-31 | 2014-03-26 | 曙光云计算技术有限公司 | 适用于云计算环境下的osgi-web框架的设计方法和系统 |
-
2014
- 2014-10-10 CN CN201410532853.XA patent/CN104298512B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117466A1 (en) * | 2002-12-12 | 2004-06-17 | International Business Machines Corporation | Client device configuration with configuration services providers |
US20090150873A1 (en) * | 2005-12-14 | 2009-06-11 | Canon Kabushiki Kaisha | Information processing apparatus and method |
CN101634945A (zh) * | 2009-08-20 | 2010-01-27 | 华南理工大学 | 构件动态感知模型及其在RFID中间件Web表示层的应用 |
CN103294455A (zh) * | 2012-02-27 | 2013-09-11 | 杭州勒卡斯广告策划有限公司 | 一种软件服务实现方法、系统及Java平台 |
CN103677854A (zh) * | 2013-12-31 | 2014-03-26 | 曙光云计算技术有限公司 | 适用于云计算环境下的osgi-web框架的设计方法和系统 |
Non-Patent Citations (2)
Title |
---|
李明全 等: "新一代无线通信系统的软件可重构研究", 《计算机工程与设计》 * |
郑志远: "组件化在J2EE架构中的运用", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104657142A (zh) * | 2015-02-12 | 2015-05-27 | 中国科学院计算机网络信息中心 | 一种基于OSGi技术的CCFD系统 |
CN106155817A (zh) * | 2015-04-14 | 2016-11-23 | 腾讯科技(深圳)有限公司 | 业务信息处理方法、服务器及系统 |
CN106155817B (zh) * | 2015-04-14 | 2020-12-29 | 腾讯科技(深圳)有限公司 | 业务信息处理方法、服务器及系统 |
CN105335160B (zh) * | 2015-11-10 | 2018-12-28 | 河海大学 | 一种基于jsf的web端组件敏捷开发方法 |
CN105335160A (zh) * | 2015-11-10 | 2016-02-17 | 河海大学 | 一种基于jsf的web端组件敏捷开发方法 |
CN107133024A (zh) * | 2016-02-29 | 2017-09-05 | 北京广联达正源兴邦科技有限公司 | 基于osgi框架的业务管理系统 |
WO2018161212A1 (zh) * | 2017-03-06 | 2018-09-13 | 深圳市大疆创新科技有限公司 | 电机控制系统、无人机控制系统、无人机及电机保护方法 |
CN109298851A (zh) * | 2018-07-25 | 2019-02-01 | 中国电子科技集团公司第二十九研究所 | 一种OSGi异构软件框架的扩展机制适配方法 |
CN109298851B (zh) * | 2018-07-25 | 2021-10-22 | 中国电子科技集团公司第二十九研究所 | 一种OSGi异构软件框架的扩展机制适配方法 |
CN112148342A (zh) * | 2019-06-27 | 2020-12-29 | 北京达佳互联信息技术有限公司 | 组件配置方法、装置、电子设备和存储介质 |
CN110955415A (zh) * | 2019-12-03 | 2020-04-03 | 杭州当贝网络科技有限公司 | 一种投影多平台服务适配的方法 |
CN110955415B (zh) * | 2019-12-03 | 2024-03-08 | 杭州当贝网络科技有限公司 | 一种投影多平台服务适配的方法 |
CN111314424A (zh) * | 2020-01-17 | 2020-06-19 | 深圳壹账通智能科技有限公司 | 服务平台的组件管理方法和系统 |
CN112860227A (zh) * | 2021-02-08 | 2021-05-28 | 杭州玳数科技有限公司 | 功能性代码组件开发方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104298512B (zh) | 2018-02-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104298512A (zh) | 一种基于OSGi标准的功能组件式集成开发系统 | |
CN106933570B (zh) | 一种基于插件技术的航天测发控软件平台 | |
CN103441900B (zh) | 集中式跨平台自动化测试系统及其控制方法 | |
Crnkovic et al. | Challenges of component-based development | |
CN108027722A (zh) | 在编译和部署中动态更新应用 | |
CN103425468B (zh) | 插件式软件集成方法及装置 | |
CN111142971B (zh) | 一种适应传统应用云化的云平台应用就绪检查方法 | |
CN103714129A (zh) | 基于条件规则的动态数据结构和关系的构建装置和构建方法 | |
CN104391689A (zh) | 一种物联网应用的开发方法、中间件及PaaS平台 | |
CN102541996A (zh) | 一种基于jdbc的数据访问层构建方法及装置 | |
CN105830052A (zh) | 用于设计和操作工厂的集成数据处理的方法 | |
CN104102489A (zh) | 一种第三方数据库app构建系统及构建方法 | |
CN102221998A (zh) | 一种扩展构件运行支撑平台中ejb容器的方法 | |
CN105630563A (zh) | 基于xml的继电保护装置规约的动态模型配置方法 | |
CN103092645A (zh) | 一种基于微内核技术的地理空间信息应用系统及其实现方法 | |
CN105955239A (zh) | 一种基于共享内存的通用测试平台快速构建方法 | |
CN104572394A (zh) | 进程监控方法及装置 | |
CN111857777A (zh) | 基于双芯智能电表的系统更新方法、装置和计算机设备 | |
CN102999371B (zh) | 基于Lua脚本的人机界面开发方法及系统 | |
CN104915412A (zh) | 一种动态管理数据库连接的方法及系统 | |
CN111949529B (zh) | 系统调试方法、装置、计算机设备和存储介质 | |
CN103019819A (zh) | 一种基于插件机制的动态库统一调度方法 | |
CN103838564A (zh) | 一种属性加载方法及系统 | |
CN102750177A (zh) | 一种使用编译器的脚本实现方法 | |
CN106547606B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |