在SCA V1.0装配规范中,相对较为独立的组件只有三个,粒度由小到大分别是Component、Composite和Domain,其他Service、Reference、Property、Wire等都是辅助性的元素。这些辅助性的元素做为三个独立的组件中的组成部分,为组件与外部数据传输、对外提供服务和引用外部资源提供途径,将各个组件的组成粒度更大的上层组件。三个不同的组件,分别对应系统的三个不同层面:Component组件对应实现层,Composite组件对应架构层,Domain对应业务层。后面将会用三篇文章的篇幅分别说明三个组件和三个层面直接的关系以及使用。
本文是在另一篇文章<<让软件系统成为"百变金刚"--SCA在业务、架构和实现层面对变化的适应性>>的基础上做更进一步的展开理解。
一、组件介绍
1、Component 简介
Component是SCA规范中最基本的元素,是粒度最小的执行单元或者实现单元。
为了方面后面的描述和图解,将Component图示作了一些简化。如图:
2、Composite简介
Composite组件是SCA规范中最基本的单元,是部署的最基本单位。其他组件要以Composite组件的组成形式通过Composite组件表现出来。对于Composite组件会在下一篇文章--Composite与架构中详细说明。
同样,简化Composite组件的图示。如图:
3、Component组件和Composite组件之间的关系
Component组件是Composite组件的重要组成部分。Composite组件可以包含0个以及0个以上的Component组件。如Composite组件图示中表示的,包含了2个Component组件。可以假设为,Composite组件是一个可以任意扩展端口的集线器(通常叫Hub),Component组件就是集线器的端口。
集线器和RJ45接头
Composite组件和Component组件
二、Component组件与实现
下面详细说说Component组件与实现。
SCA允许在很宽的implementation types(实现类型)中选择任何一种实现,例如象Java、BPEL或者C++等都是implementation types(实现类型),每一种类型都描述一个明确的实现技术。这些技术不仅可以是一种语言,象Java,还可以是特殊的框架或者运行环境,象Java技术中的Spring框架和J2EE技术中的EJB环境。
目前,SCA提供了Spring、EJB、JavaScript、Groovy、Ruby、BPEL等的实现技术,可以将已有的程序实现加入到SCA系统中,为SCA提供具体的功能实现。也可以根据实际需要,通过SCA提供的扩展机制,将新的技术增加到SCA系统中。
Component组件的Implement联接到一个某种技术的具体实现,这些实现通过Component组件联接到SCA系统中。每个Component组件仅对应一个实现。如图:
图中以.ComponentType为扩展名的文件是SCA提供的机制,对Component的实现提供可扩展的、可配置的实现机制。每个Component组件的细节,包括service、reference和property通过.ComponentType配置实现。
经过Component组件的封装,形成一个格式一致、描述规范、统一的Component组件实现层。Component组件为Composite组件提供了服务---功能实现,分离了具体技术实现和Composite组件层,也将业务层、架构层与实现层分开。
三、Component组件和实现机制带来的益处:
1、实现层和架构业务层分离,使实现层不必受架构层和业务层的限制和影响,专注与实现。开发人员只需关注实现,架构设计和业务人员也只需关心各自的层面的事情。
2、每一个Component组件实现一个功能,实现的功能职责清晰,目标明确。每一个实现将精力集中在目标功能上,只做与它相关的事情。
3、清晰的责任和明确的目的,使代码量变得很少。几百k甚至几十k的代码量就可以完成功能的实现。
4、代码量的减少,增加了可测试性和可调试性。编码、测试和维护都变得相对简单,提高了开发效率和代码质量。
5、Component组件的实现粒度非常的小,可以提供很小的独立的接口,提高可复用的程度。
6、Component组件的实例通过XML格式文件的描述进行装配,以依赖注入模式的松散的耦合方式实现对具体实现的注入。
7、通过Component组件的配置和依赖注入模式可以非常容易的扩展和替换具体实现。
8、可以用不同的语言和技术实现相同的功能,充分发挥已有资源的作用,人近其才,物近其用,节省投资。
这里主要讲了一些Component和实现机制的内容,SCA在架构层所对应的Composite组件提供了什么呢?
请看,下一篇:Composite与架构
<NEXT>