OSGI进阶:第六章 OSGi的设计模式

 由  ValRay 发布

6.OSGi的设计模式

6.1. 树状设计模式

所谓树状设计模式就是以树的方式来设计整个系统,由于 OSGi 在模块的规范化、动态性、扩展性上的良好的支持,使得以树的方式来设计整个系统变得可行。 在设计留言板系统时我们已经展示了如何以树状的方式来进行设计,树状设计模式强调系统像树一样慢慢的长大,在设计时涉及的元素主要是根、枝、叶三要素:

  • 根 整个系统的基础,对于基于 OSGi 框架而构建的系统,根可认为是 Equinox、Felix 等等这些 OSGi 实现框架。

  • 枝 根据系统的组织情况来划分系统的枝,通常来说模块可被划分为枝,模块中用于扩展的部分可划分为枝叶点,以便其他的枝叶能够挂接到此枝上。

  • 叶 叶作为系统功能的终止点,不对外提供扩展的功能。 系统按照根、枝、叶这样的方式来完成设计,依照这样的设计为开发团队人员的分工、系统的耦合、扩展等的考评提供了形象的依据,另外按照这样的设计思想形成的设计潜在的说明了系统的即插即用的特性,当某根枝从树上被折断时,相应的其上的枝和叶也就不再可用了,同样,当在树上增加新的枝叶时,相应的功能也就可以使用了。

这样的一个设计模式和以往的设计方法不同在哪呢? 树状设计模式能够更好的体现和保持 OSGi 系统的模块化、动态性以及可扩展性,来看看在遵照树状设计模式的情况下其系统的模块化、动态性以及可扩展性的体现: 模块化的体现 根据树状设计模式形成的树状系统图,很容易就可以区分出系统的模块,并且还可看出模块的耦合程度等。 动态性的体现 树都是允许折断枝、叶这些的,同时也可以生长出新的枝叶,而这呢都是不用重新从根上开始长起的,系统的动态性得以保证。 可扩展性的体现 枝上提供的枝叶点表明了该模块的可扩展性,无枝叶点的则表明该模块是不可扩 OSGi 设计模式 展的。

6.2. 面向服务设计模式

面向服务本身已经是如今为红火的名词之一,而由于 OSGi 本身重要的设计思想就是面向服务的组件模型,因此基于 OSGi 而构建的系统自然就应该是面向服务式的。

在基于纯粹的 OSGi 构建系统时,Component 之间的通讯应均以 OSGi Service 的方式来进行通讯,在基于 Spring-OSGi 构建系统时,Bundle 内部的 Component 的通讯采用 Spring Bean 的方式进行通讯,推荐这些 Spring bean 以类似 OSGi Service 的方式(即服务接口与实现组件的方式)进行编写,而 Bundle 之间的 Component 的通讯则必须 采用 OSGi Service 的方式来实现。

查看评论