`
guanhuaing
  • 浏览: 1195967 次
文章分类
社区版块
存档分类
最新评论

回答:细说SCA V1.0规范(2) --Composite与架构 网友xiexie的问题

 
阅读更多

回答内容较多,超出csdn的回复数字限制,故发新帖。

我有这么几个问题想问下您:
(1)Component是不是不能提供服务,是不是必须通过Composite向外提供服务?Composite是SCA里面提供服务的最小单元么,它的上一级是否是Domain,那domain是不是也是一个服务,只是服务粒度比较大而已?
(2)Composite可以被发布为WEB service,那么在SCA里面WEB service处于一个什么样的地位,它属于“非SCA组件”么,在SCA规范里面WEB service能被直接绑定,直接调用么?
(3)在SOA架构里面,ESB是一个非常重要的概念。SCA作为SOA的一个规范,ESB是怎么实现的。我现在所了解的是IBM的WID中可以通过构建Mediation module(在SCA 0.9里面好像module对应现在的Composite)来提供ESB服务。
(4)在SCA里面好像组件能打包,是不是只有Domian才能打包呢?打包有什么作用,Contribution到底是一个什么样的东西?
(5)SOA的概念层次从下到上一般分为:操作系统层、组件层、服务层、业务流程层、和表示层(IBM好像就是这么分的)。具体到SCA,它分别对应于SCA的什么呢?看过LZ写的文章,依我理解是不是“组件层”对应Component,“服务层”对应Composite,“业务流程”对应Domain呢?
(6)LZ的文章把Composite分为三层,是不是TOP-Composite对应业务流程?TOP-Composite与Domain就服务粒度上有什么不同呢?
(7)这个问题还是关于WEB service的,现在很多文章,还有基本所有的工具包括IBM,在实现SOA的时候基本都是用WEB service。虽然IBM声称它的产品支持SCA1.0,但是在实现的时候都需要把服务发布为WEB service。既然SOA可以用WEB service来实现,而SCA又是SOA的一个实现规范,那么SCA和WEB service的关系是什么样的?
(8)我经常看到好多文章题目是“基于SOA的、、、、实现”,还有的是“基于SCA的、、、实现”。后面的提法是不是有问题,比如“基于SCA的物流信息共享平台的实现”。因为从概念上讲,SCA只是一个实现而已.
LZ写的每篇文章基本都看过,可以说SOA的入门已经SCA的了解都是LZ这里开始的。真诚的谢谢了。
看过SOA和SCA的很多文章,这些问题始终不得明白,还望LZ赐教,谢谢

(1)答:Component是可以提供服务的,服务的对象是它所在的Composite和同一个Composite中的其他component。从层次上讲,component为composite提供服务,composite为domain提供服务。每一个层次都比下一级的粒度大或者相同,比如一个domain包含一个composite,一个composite包含一个component,一个component包含一个简单的java实现,简单的打印一句"Hello world!",这种情况三层的粒度是相同的。还有,一个domain包含一个composite,而这个composite包含了n多的component,上两层的粒度是一样的。再有,一个domain包含n个composite,每个composite只包含一个component,那么composite的粒度和component是相同的。然后还可以把上面的几种情况综合起来,充分发挥SCA强大的灵活性,随需控制各个层面的粒度和服务。
(2)SCA对外提供两种类型的服务接口:Java interface和WSDL PortType,这是对外的表现。如果要使用已有的web service,要通过Component的reference引入。Component的reference提供了多种引入类型接口:Web Service、SCA、JCA、JMS、SLSB... 在SCA中,web serive的机制被利用,和java interface一样,隐藏了组件内部的实现细节,对外仅提供可以被调用的方法。同时,提供了动态替换的机制。如果需要一个web service的系统行为发生变化,无须更改对外提供的服务,只需要将新的系统行为(component的实现)加入SCA环境,利用composite提供的promote的机制在底层替换,而需要做的仅仅是更新一下配置文件中的几个配置条件。
(3)ESB--企业服务总线,SOA标准解决方案之一。我对ESB理解是将web serive集中在一起,并进行一些管理。在SCA中,可以通过component将web service引入,每个component可以对应一个web service,那么一个Composite可以包含n个component;或者一个component对应一个web service,而一个composite对应一个component,那么在domain层面也可以实现类似的机制。在某种程度上说,SCA中的composite和domain都实现ESB基本功能。当然,ESB本身还有一些功能很强的管理功能是SCA没有的。SCA提供的两级类似ESB的机制,提高了系统的灵活性,为使用者提供更多发挥的空间。
(4)SCA的发布是以Domain为单位的,就象jar一样,可以保证它的完整性和一致性。Contribution可以称为服务的提供者,它是一个Domain或者多个Domain的集合,目前一个Contribution可以使用jar方式进行包装、发布。
(5)我个人理解,操作系统层、组件层、服务层、业务流程层、和表示层中,组件层、服务层和业务流程层和我的分层是一致的,只不过在上面和下面个增加了一个层。操作系统层是提供一些基本的实现,比如java的实现来对系统层面进行访问的层,比如访问系统的数据库,不要理解为"操作系统"而是 操作"系统层"。表示层实际上就是使用SCA的客户层。这两部分实际上已经超出了SCA规范的范围,但是实际使用中这两个层是不可缺少的。如果建立一个Domain没有最终底层的实现那就是空中楼阁;如果建立了一个SCA应用系统,却没有界面层(或者表示层)去使用那还有什么意义。
(6)TOP-Composite不是对应业务流程,但几乎等同与业务层。TOP-Composite和Domain粒度也是几乎相同的,因为是一层之下n多层之上。如果在domain层将TOP-Composite的服务全部开放,那么两者的粒度是相同的,如果domain没有将TOP-Composite提供的服务全部对外开放,那么粒度不同。至于是否全部开放要看SCA具体实现的container的策略了。
(7)我在IBM所看到的讲义、模型和例子好象都是基于v0.9规范的实现。使用web service的原因是什么?SCA最终也是提供了web service,那么为什么还要集成web service?
web service在解决存在异构系统的方案中用的非常的多,IBM之所以需要把服务发布为web service是有原因的。因为IBM所面对的客户是国内非常大的商业公司和类似银行电信等客户还有就是国外的客户,比如欧美地区。中国软件发展不过10几年,而国外的软件应用要早很多,至少30年以上的时间。这么长的时间积累的软件数量巨大,如果重新开发会带来的巨大影响和高额的费用,并且不断增加的业务需要必须要对系统进行更新和升级,可以处理异构的解决方案受到欢迎。国内最早使用计算机的也是银行、电信、石油行业等,也遗留不少异构的系统。IBM的定位是这些用户,所以需要使用web service来实现。试想一个运行5年的银行系统和一个运行了30年的银行系统那一个更需要web service,那一个赚的money会更多呢。SCA的web service是活的,而SCA以外的web service是死的、僵化的、修改和维护的成本高,在使用了SCA后虽然对客户来讲同样都是web service的调用,但是对于开发商来说,当用户需求发生变化需要做的工作比没有使用SCA前是几个甚至几十个数量级的成本。而且在SCA将用户层和实现层隔离后,可以实现持续的系统改进而不会影响现有业务的使用,这一点是非常重要的。
(8)SCA是一个标准,就想wfmc是工作流标准一样。基于SCA标准实现的应该是开发商提供运行环境,container。至于有人说基于SOA的实现,我想,可能这么说是想让别人认为他的系统是基于SOA标准或者思想实现的,可能使用了某种部分符合SOA特点的架构,甚至是使用了web service。而基于SCA的实现,这里的SCA可能指的是Tuscany SCA的实现,如果他实现的不是SCA标准实现就认为他说的是tuscany sca的实现好了。
谢谢你的问题!回答的有点晚 :)

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics