SCA规范中的”三大件”分别是Component 、Composite和Domain 。
在上一篇细说SCA V1.0规范–component与实现里面主要说的是Component 。本文将继续说说这第二”大件”:Composite !
SCA规范中的”三大件”分别是Component 、Composite和Domain 。
在上一篇细说SCA V1.0规范–component与实现里面主要说的是Component 。本文将继续说说这第二”大件”:Composite !
一、Composite简介
Composite组件是SCA规范中最基本的单元,是部署的最基本单位。Composite组件的图示和简化Composite组件的图示如下:
二、Composite的组成
一个Composite包括0个或多个Property、Service、Component、Reference、Wire和包含的Composite(included Composite).
三、Composite与Component的关系
Component组件是Composite组件的重要组成部分。
四、Composite与Domain的关系(略)
五、Composite 在模型中的分类
为了讨论方便,也便于理解,将Composite分成三种类型:(这不是规范中的分类)
这三种类型很像数据结构中的”树”。树有树叶、树跟和树枝。与之对应,Composite架构层分为基本层Base-Composite、顶层Top-Composite和处在基本Composite和顶层Composite之间的Composite层,就叫Arch-Composite吧。
第一种Composite——Base-Composite:它的特征是其implementation不是通过引用Composite实现的。即它的implementation是通过SCA支持的implementation类型提供的实现。它们处于整个Composite架构的底层,为上层的Composite提供服务实现。这些Composite包含了implementation的实现。对整个Composite层而言,可以认为不存在Component层,因为Component是做为Composite的一部分存在的。只要Base-Composite有implementation实现,Composite层不关心是什么技术的实现,以及如何实现的。
目前Tuscany SCA支持的plementation 类型如下表所示:
第二种Composite——Top-Composite:其特征是它们将成为Domain-Level Composite的一部分,或者说将为Domain-Level Composite提供服务。它们处于Composite架构层的顶端,上面就是Domain层。它们以其他的Composite作为implementation实现,为Domain层提供服务。Composite层的所有Composite的服务都要通过Top-Composite向Domain层暴露,为Domain层提供由Base-Composite实现,Arch-Composite组合而成的各种功能。Top-Composite通过指定一个URI与Domain建立关系。
第三种就是Arch-Composite:它们或者引用(Reference)其他的Composite或者用其他的Composite实现implementation。Arch-Composite可以通过引用实现等形式组合成功能更为复杂的系统功能或者流程。就象工作流的流程那样,通过一系列的Composite实现复杂的功能。
补充:
1、为什么分成三层?有什么作用?
Composite架构层虽然都是由Composite组件构成的,但不同的Composite在架构层中起到的作用是不同的,虽然它们的内部结构是相同的—即都有Services,References,Component等.
对Base-Composite关注的是它提供了什么,它的作用体现在提供了哪些Services,这些Services主要都是由这些Composite的Component提供的,或者说至少有一部分是由Component提供的(因为它还可以通过References引用其他组件的Services)。这些由Component实现的Services是整个Composite架构层的基石。如果没有这些Base-Composite,没有它们包含的Component提供的实现,这个SCA系统就是个空壳,引用来调去最后调用的服务都是空的。这些Composite的Component的实现方式决定了它与另外两种Composite作用的不同。
Top-Composite的作用体现在它的Services是面向业务层的。通过使用URI命名这些Top-Composite,业务层可以直接通过URI使用这些Top-Composite提供的Services。Top-Composite是Composite架构层的门面。所以它的作用与其他两种Composite是不同的。
如果说Base-Composite是一层包含component的实现,Top-Composite是Composite架构层的门面,那么Arch-Composite的作用就非常的重要了。如果要发挥Arch-Composite的作用,还要涉及一个话题就是:Composite实现粒度的大小,或者说implementation实现的粒度的”度”。这个文章后面会谈到。
所以,Base-Composite体现的是实现(Component),只不过在Component外面包了一层Composite的外壳,使得Component借用Composite的外壳,和其他的Composite使用统一的、标准的调用方式:即用Services输出服务、用References输入服务、用Property传值等。在上篇文中说过,在SCA模型中,Component组件对应实现层,Composite组件对应架构层。Base-Composite就是两层的边界。Base-Composite对架构层来说提供了实现;而对实现层来说,第一提供了封装,第二提供了Promote机制。
Top-Composite也类似,只不过与它对应的是架构层和业务层(Domain对应业务层)。这个在后面的Domain与业务中会详细说明。
2、关于Composite如何提供服务后面会继续,敬请关注。
3、服务如何打包,如何被其他服务引用,服务如何组装?
这是些非常实际的问题。在Tuscany的SCA早期实现中,服务是通过jar方式打包的。jar包需要通过一些方式部署到SCA环境中,SCA会在宿主机上有一个指定的或者默认的安装路径,将服务放在这些系统文件目录下使用。这是一个Tuscany SCA 引导和装配的过程供参考,以后会针对Tuscany SCA 1.0 做比较详细的解析。
4、对于非SOA架构的系统,如何拆分服务,如何把这些服务包装为符合SCA标准的服务?
对于非SOA架构的说法我觉得不够准确,如果说非SCA架构的系统,那么针对的就是目前的规范。因为SOA规范也可以使用其他的、非SCA的规范实现。
还有就是要求是基于J2EE架构的系统。对于其他的实现比如,.net,php等没有相关的实践,无法作出评述。
把非SCA的J2EE架构的系统包装为符合SCA标准架构的系统,拆分的重点是component实现的粒度考虑。这些component实现粒度多大合适,这个”度”,不好把握。粒度小,复用度很高,系统灵活,松散偶合度高,改变系统的行为容易,但是会使Composite层变厚,性能上会有些损失,管理上会麻烦一些。粒度大,复用度低,不能充分发挥Composite层的作用。
另外,component的实现如果粒度小,那么相应的每一个实现的代码就很少。很少的代码量可以减少代码的错误、降低逻辑复杂度、方便测试、降低维护和管理的成本、实现的功能定位清楚、目标明确,实现层的开发人员将精力集中在代码上,无需关心其他层的事情,专业化程度提高,提高了代码的质量,也提高了开发的效率和开发成本。同时可以构建本单位的Component实现的组件库,分类保存Component的实现组件,在多个SCA架构系统的项目中复用已有的Component实现组件。如果这个组件库足够大,那么Component实现组件开发成本几乎为零。充分发挥SCA架构的优势,为企业降低成本,提高软件质量,延长产品的生命周期,降低维护成本。
原文出处:http://gocom.primeton.com/blog12878_18807.htm
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
如何透过业务和技术看SOA的发展
随着SOA发展的深入,各种SOA相关技术标准也随之发展和完善。面对庞大而复杂的SOA相关技术标准,我们如何来有选择的使用它们呢?
-
SOA架构下补偿模型驱动的安全苛求软件开发
随着我国高速铁路的快速发展,传统的计算机联锁软件开发方法在灵活性、可维护性、安全性以及开发效率上都显露出不足,怎样才能弥补这一不足呢?
-
浅谈基于SOA架构的服务集成技术研究
在近几年软件行业的发展中,面向服务架构(SOA)成为了当下的热门话题。那么对于SOA架构的服务集成你又了解多少?
-
揭秘WebSphere Process Server中SCA组件的事务实现机制
SCA作为一种新的编程模型,自然也需要提供完整的事务支持。所幸的是WPS本身是基于WebSphere Application Server的,所以底层天然就具有了强大的事务处理能力。