王洪伟的专栏

http://blog.teamlet.org 本站搜索关键字:王洪伟+teamlet

王洪伟ID:teamlet
[修改头像]
132104次访问,排名509好友0人,关注者22
10年软件开发设计经验,专注J2EE领域的技术架构和应用.
teamlet的文章
原创 93 篇
翻译 9 篇
转载 65 篇
评论 121 篇
teamlet的公告
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享. 转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议.

关注SOA技术的发展,跟进SCA技术的理论和实现,努力实践。愿与同行者一起分享,互相勉励,共同进步。
最近评论
cxh0714:找到了,谢谢
cxh0714:说的不错,我是初学者,继续学习中,谢谢
cxh0714:(1)在哪
cxh0714:不好意思,我怎么找不到(1)啊
tjsongyy:您好,邮件已收到,多谢。
我后来自己也找到了那些自动生成的.java程序,并按照自己的需求更改了client和server端的skeleton,已经调试通过了。非常感谢您的帮助。
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes
文章分类
收藏
    相册
    资源联接
    Cruise Control
    Open CSA
    OSOA
    SOA Tools Project
    theserverside
    中国Java开发网
    满江红
    知识共享@中国大陆
    左邻右舍
    donews的blog
    msn的blog
    Tuscany中文社区
    我用Subversion
    存档

    原创 细说SCA V1.0规范(1) --component与实现

    新一篇: OASIS新建立6个技术委员会进一步发展SCA系列规范

            在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>

    发表于 @ 2007年05月20日 22:09:00|评论(loading...)|编辑

    旧一篇: 让软件系统成为"百变金刚"--SCA在业务、架构和实现层面对变化的适应性

    评论

    #暗暗啊 发表于2007-08-18 21:31:52  IP: 211.71.79.*
    好东西 谢谢
    关于SCA能否写得详尽一些
    2007-08-19 22:34:26作者回复
    非常感谢您的关注.其实在写完Component之后就一直在准备写"细说SCA V1.0规范(2)--Composite与架构",在准备的过程中总是在就要写完的时候又发现有一些新的东西和想法,所以就延误下来.<br />简单的比较,从SOA-&gt;SCA-&gt;CSA ,从Component的粒度,到Composite的架构的层次,再到Domain的逻辑组织. 如果将他们对应起来,SOA对应的是Domain,SCA对应的是Component,CSA对应的是Composite.这是一个"纺锤形",上下小,中间大. Composite是架构,核心,不受上(Domain)下(Component)的变化影响. 所以SCA也只是一个过渡过程,CSA 才是我们真正需要的东西.<br />SOA(Service-Oriented Architecture),将重点放到了具有统一接口定义,所以很多人都认为Webservices就是SOA,因为他们的确很像;SCA(Service-Component Architecture)将重点放在了Component上,所以有的公司把一个业务流程作成了一个Component.Tuscany的SCA实现虽然是SCA标准的参考实现,但实际上是把Composite的实现放在了非常重要的位置. CSA(Composite Services Architecture)的重点将是Composite.
    #暗暗啊 发表于2007-08-18 21:44:48  IP: 211.71.79.*
    Composite组件中 Promote是什么东西
    能不能解释下 谢谢
    2007-08-19 21:34:22作者回复
    在早一些版本的规范中Promote不叫Promote而是叫Wire的.Promote的作用和Wire有些类似,如果不区分位置的话,它就是Wire.<br />新的规范中,把在一个Composite中的Services/Reference与Component之间的Wire改称为Promote.或者把在一个Domain中起Services/Reference作用的Composite与起到提供实现功能的Composite之间的Wire改称为Promote.这样做,可以更准确的定义Wire和界定Wire的作用范围.<br />在一个Composite中可以包含任意多个Component,这些Component之间通过Wire进行连接,构成引用或者服务关系.但是这些Component对于Composite的外部是不可见的,是与外界是隔离的.如果需要和当前所在Composite外界交互,就需要通过Promote建立"通道". 如果要对外提供一个加法功能,就要把在Composite中实现加法的Component与Services用Promote(这里把Promote看成是一个连接,类似一个Wire,但这里不叫Wire叫Promote)连接起来,或者说把加法的Component Promote(这里是一个动作,就是把Component和Services建立一个连接的关系,这样这个Component的级别就比其他的没有被Promote的Component要高,因为可以被外界使用)到Services上.同样,和Reference也是一样的道理.
    #暗暗啊 发表于2007-08-20 21:15:36  IP: 59.64.12.*
    谢谢你的解答
    我现在正在翻译SCA V1.0规范中的"SCA_AssemblyModel_V100.pdf",里面有些概念拿不太准,有时间很希望和你探讨一下,我的QQ:369517748.
    #SOA 发表于2007-08-28 12:30:38  IP: 203.187.168.*
    挺好的 怎么这么久不见更新了
    期待作者下一篇文章
    2007-09-06 21:09:10作者回复
    近期由于个人的事情需要处理,所以时间不是很多。<br />已经准备写第二篇文章,时间一旦允许马上贴上来。谢谢!
    #duskwaitor 发表于2007-10-12 09:48:31  IP: 221.133.225.*
    我的疑问是 在sca_AssemblyModel_1.0中第9页说到component的implementation可以选用composite或者java,是不是说也可以用composite组装成一个component?implementation在这里的确切意思是不是就是说实现?我既然可以用java来编写实现一个component,当然也可以用composite来组装一个componet.
    2007-10-12 12:29:05作者回复
    对,你说的没错.一个Composite包含Component,由Component中的implemention提供实现。implementation可以使用多种方式,其中包括使用Composite方式。<br />从模型的角度,我理解成是低级别的Composite为高级别的Composite提供实现,是Composite和Composite之间的关系,不是Component和Composite之间的关系。<br />关于级别可以参考 http://blog.csdn.net/teamlet/archive/2007/09/27/1804032.aspx
    #ke_jin 发表于2007-11-16 10:32:17  IP: 75.37.202.*
    看不出SCA有太多技术含量,反而到觉着是种技术倒退,甚至很多初级设计漏洞。。。参加我的文章http://ke-jin.blogspot.com/service-component-architecture-sca.html
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © teamlet