gembin

OSGi, Eclipse Equinox, ECF, Virgo, Gemini, Apache Felix, Karaf, Aires, Camel, Eclipse RCP

HBase, Hadoop, ZooKeeper, Cassandra

Flex4, AS3, Swiz framework, GraniteDS, BlazeDS etc.

There is nothing that software can't fix. Unfortunately, there is also nothing that software can't completely fuck up. That gap is called talent.

About Me

 

个人对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,如图:



 

posted on 2008-04-27 21:37 gembin 阅读(581) 评论(0)  编辑  收藏 所属分类: SCASOA


只有注册用户登录后才能发表评论。


网站导航:
 

导航

统计

常用链接

留言簿(6)

随笔分类(440)

随笔档案(378)

文章档案(6)

新闻档案(1)

相册

收藏夹(9)

Adobe

Android

AS3

Blog-Links

Build

Design Pattern

Eclipse

Favorite Links

Flickr

Game Dev

HBase

Identity Management

IT resources

JEE

Language

OpenID

OSGi

SOA

Version Control

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

free counters