个人对SCA标准中Component,Composite,Implemention,ComponentType几个概念的理解

个人对SCA标准中Component,Composite,Implemention,ComponentType几个概念的理解

本文关注于SCA的几个基本概念:Component,Composite,Implemention,ComponentType,从规范、实现等不同的角度谈一下它们之间的区别。

也就是说,本文更多的是关注于它们之间的区别,至于它们每个是什么请参阅SCA集成规范。

Component

 

 

由上图可以看到,Component是SCA中可以提供业务功能的最小单元,Implemention是 Component提供服务的具体实现方式,可以是Java、C++、Bpel等等,没有Implemention那么Component就是个空壳,不 能提供任何有价值的服务,没有任何意义。Service是当前Component所能提供的服务列表,Reference则是该组件多引用的其他组件的服 务,Property起配置的作用。

Composite

 

从上图可以看到,Composite是由Component和Composite组成的,另外Composite也支持 整体对外提供服务,或者引用其他组件,因此还包括了Service、Reference以及配置它们的Property,Wire是Composite中 各个Component之间的关联关系,因此只有Composite中才会有Wire,Component中没有。

ComponentType

为什么把ComponentType单独拿出来呢,因为ComponentType容易让人混淆,带来理解上的困难,特 对它给与了比较多的精力,为了大家能看明白,也为了清理下自己的思路,为了理解它不知道翻了多少遍Assembly规范以及Tuscany的源代码,呵 呵,当然,现在的理解也不一定就是正确的,欢迎大家批评指正。

我们先来看下类图结构:

由此类图可以看到,Implemention和Composite都是ComponentType的子接口,ComponentType代表的其实是某种Implemention类型,比如Java、Bpel等等,比如Java的Implemention实现类如下:

BaseJavaImplementation是implementation.java的接口,其他还有implementation.bpel等等。

最后,对Service、Reference和Component、Composite等的关系结合类图做下介绍:

CompositeService和ComponentService正说明了可以提供服务的两种粒度,同理亦然,reference亦是如此:

而,Reference和Service有种共同的祖先:AbstractContract,如图:



 

你可能感兴趣的:(个人对SCA标准中Component,Composite,Implemention,ComponentType几个概念的理解)