模块的可扩展性是模块设计时需要重点考虑的非功能特性,对于框架而言,扩展性的设计则更加的重要,框架需要通过不断的扩展来充实其基础设施,构成真正的应用系统。
模块的扩展主要有两种,一种为扩充功能的扩展,另一种为覆盖性质的扩展,当然,本质上而言是可以把这两者进行合并的。
在模块的扩展上Eclipse的扩展点的设计方式无疑是支撑模块可扩展的经典设计方法,到现在为止仍然是如此,基于Eclipse的扩展点的设计无论是对于扩充功能的扩展还是覆盖性质的扩展都支持的非常好,这个经典的设计也是RCP得到那么多client side app的原因之一,尽管OSGi中并没有定义这方面的规范,但做为OSGi R4的RI的Equinox考虑到更好的支撑Bundle的扩展就引入了Eclipse的扩展点的设计,在现在的Equinox中我们仍然可以基于Eclipse的扩展点的方式来支撑模块的可扩展性。
但是否有别的方法呢?一定需要Eclipse的扩展点的方式吗?其实个人觉得基于OSGi的Service就已经天然的构成了一种可扩展的设计,为什么这么说呢?
首先来看看基于Eclipse扩展点的方式是如何支撑模块的可扩展性的:
1、定义模块的扩展点接口和xml的schema规范;
2、在模块需要提供扩展的地方调用所有扩展点接口的实现,并加载执行其中的一些方法。
通过这两步就使得模块具备了可扩展性,典型的象Eclipse中的菜单、按钮、帮助窗口等等....
当需要增加新的菜单、按钮时,只需要实现相应的扩展点接口,然后按照schema规范相应的配置xml文件就可以了。
而基于OSGi的Service的方法怎么样去支撑模块的可扩展性呢,其实做法和Eclipse的扩展点的方式几乎就是一样的:
1、定义模块的扩展点接口;
2、在模块需要提供扩展的地方调用所有对外提供了此扩展点接口的服务组件,加载执行其中的方法。
这一步有两种做法,一种是通过bundleContext获取服务的方法,另外一种是通过DS的方法,相比而言自然是DS方法操作起来更加简单,原因在于采用DS的方法的时候当服务发生动态的变化时OSGi框架会主动的调用该组件中的相关方法,而采用BundleContext方法的话则需要自己主动监听相应的事件。
同样是通过这样简单的两步就可以实现模块的可扩展性。
这样就产生了一个问题,既然是这样,为什么还需要之前Eclipse的扩展点的设计呢?除了扩展点相比采用OSGi的Service的方法更加有语义之外,暂时还真没想明白。
分享到:
相关推荐
【基于OSGI的软构件实时数据处理子系统设计与实现】 在现代军事装备的发展中,指控系统扮演着至关重要的角色,特别是在信息化趋势下。指控系统主要用于处理试验信息、执行信息应用以及管理试验信息系统的运行。它能...
Java应用架构设计中,模块化模式与OSGi是两个关键概念,它们对于构建大型、可扩展且易于维护的系统至关重要。模块化模式使得代码组织更加有序,而OSGi(Open Services Gateway Initiative)则是一种实现模块化的动态...
本文将深入探讨基于OSGi框架的客户端接口设计,以及如何利用它来提高软件的可维护性和可扩展性。 首先,了解OSGi的核心概念是至关重要的。OSGi框架基于服务导向架构,每个模块称为一个"bundle",这些bundle之间通过...
这个购物车实例旨在帮助开发者理解OSGi的灵活性、模块化特性以及其在可扩展性方面的优势。 **OSGi基础概念** OSGi(Open Service Gateway Initiative)是一个Java平台上的模块化系统和服务平台,它的核心是动态...
Eclipse中的插件体系也基于OSGi扩展点,使得开发者可以方便地扩展其功能。 1. **Eclipse扩展点定义**:Eclipse中的扩展点通常由XML文件定义,包含ID、名称、描述等信息,以及插件可以提供的服务或组件的详细规格。 ...
在基于OSGi和Spring开发Web应用中,OSGi(Open Services Gateway Initiative)是一个开放标准,用于创建模块化Java应用程序。它允许开发者将应用程序分解为独立的模块,称为bundle,每个bundle都包含自己的类路径、...
**标题解析:** "基于 OSGi 的 RCP 测试 1 Equinox" 指的是一个...通过这个项目,开发者可以学习到如何利用 Equinox 实现 OSGi 模块的管理和交互,以及如何构建和测试 RCP 应用程序,提升软件的可维护性和可扩展性。
Java应用架构设计中,模块化模式与OSGi是两种重要的技术,它们对于构建大型、可扩展且易于维护的系统起着关键作用。本篇将深入探讨这两个概念,以及它们如何协同工作来提升Java应用程序的效率和灵活性。 首先,模块...
在基于OSGi的RCP应用程序中,各个组件(如视图、编辑器)可以被封装为独立的OSGi bundles,这样可以实现模块化的开发和部署。开发者可以轻松地添加、更新或移除应用的特定部分,而不会影响整个应用的稳定性。此外,...
综上所述,基于OSGi和Spring开发Web应用不仅能够充分利用OSGi的模块化优势和Spring的依赖注入机制,还能借助dmServer和SpringSource应用平台等工具,实现更加高效、灵活和可靠的企业级应用开发。
在IT行业中,构建高效、可扩展的Web应用程序是至关重要的,而OSGi(Open Services Gateway Initiative)和Spring框架的结合提供了这样的解决方案。本篇将详细探讨如何基于OSGi和Spring来开发Web应用,并通过提供的...
通过定义服务接口和实现,bundle之间可以进行通信和交互,而无需直接依赖对方的实现细节,这极大地增强了系统的可插拔性和可扩展性。 在离线系统的设计中,OSGi的优势在于它的动态性。由于系统可能需要在没有网络...
基于OSGi框架和插件设计模式相结合的方法,可以有效地构建出轻量级且具备高度可扩展性的动态化系统。这种方法不仅能够降低软件维护的成本,还能提高系统的灵活性和响应速度,是现代软件开发中值得推广的一种模式。
【基于OSGi框架的网络操作工单管理系统设计与实现】 随着网络信息技术的飞速发展,网络规模持续扩大,网络设备的数量呈指数级增长,对网络操作管理的需求也随之提高。现有的网络管理系统虽然具备丰富的管理功能,但...
总结,"基于osgi整合ssm框架注解开发"的主题涵盖了使用OSGi的模块化特性来管理和部署基于Spring、SpringMVC和MyBatis的Web应用,同时利用注解简化配置和开发过程。通过这样的整合,开发者可以构建出高度可扩展、模块...
通过这种方式,基于OSGi的热插拔观察者模式可以实现灵活、动态的系统架构,允许开发者在不中断服务的情况下进行软件的更新和维护,大大提高了系统的可维护性和可扩展性。在实际项目中,如`demo.bundle`所示的示例,...
这种组合不仅能够提升应用的可维护性和可扩展性,还能极大地提高开发效率和系统的稳定性。 综上所述,将OSGi和Spring结合起来使用,可以有效地解决企业级应用开发中面临的许多挑战,是一种值得推广的技术方案。
基于OSGi的Web Bundle结合了OSGi的模块化优势和Jetty的轻量级特性,为Web应用程序的开发和部署提供了新的解决方案。通过理解Web Bundle的构成、生命周期和优势,开发者可以更好地利用OSGi环境,构建灵活、可扩展的...
基于OSGi的Web应用开发平台能够利用其模块化特性,为权限管理提供了一个灵活、可扩展的架构。通过上述的设计方法,开发者可以构建出更安全、更智能的Web应用程序,适应不断变化的业务需求和环境条件。对于设备装置...