什么是SCA?
SCA是一个可执行的模型,用于将不同的 服务集成到一个业务解决方案。它简化了实现业务服务的组件编程模型,这些组件可以使用不同编程语言实现。SCA带来的一些益处主要为:
- 松耦合
组件件的集成不需要知道彼此是基于何种编程语言实现的。在同步、异步情况下,组件都可以被方便的调用。
- 可扩展性
组件可被简单的被替换。既有的服务可被用来创建新的解决方案(自下而上),也可业务建模和开发(自上而下)。
- 生产率
SCA可让你专心于分析业务逻辑,而不需要过多的去担心系统架构。SCA简化了所有开发者的使用体验(包括J2EE和集成开发者)。
SCA组件实现
SCA的基本的组成部分是组件实现。 当你编写SCA代码时,你通常正在写一个组件的实现或者将被这样的组件使用的代码。 一个组件通常由下列属性描述:
- 服务:描述了该类型的组件所能提供的功能;
- 引用:描述了该类型的组件相关功能的依赖性;
- 属性:定义了配置参数,控制程序逻辑如何实现,例如,使用何种货币;
- 策略:描述了组件行为策略,主要有两种策略:
- 实现策略:对组件实现施加影响,例如:事务、监视以及日志;
- 互动策略:定义组件件如何互动,例如:安全;
一个典型的组件实现可以用下图表示:
一个组件可以使用任何用户想要的编程语言去实现,例如用BPEL去实现业务流程控制,XSL-T实现转换,RUBY来编写脚本,也可以使用纯JAVA。这些服务、引用、属性以及策略如何去定义界定了一个组件的是具体实现类型。
SCA组件实现
一个组件是配置了的组件实现的实例,同一个实现可被不同组件使用,SCA生存在一个复合的环境中。
SCA集成
单个组件可独立使用,也可被组合起来作为一个合成组件使用。一个合成组件不是代码,而是由一个或多个组件集成起来作为一个整体提供服务的。合成作为
一种解决方案,例如信用检查组合。合成方案也可以在一个更大规模的解决方案中使用,例如信用检查可能是一个订单处理组合中的一部分,一个复合构建像一个组
件一样具有同样的特性,它提供服务,包含对其他组件的引用,并且可以配置成像单独组件那样使用属性和策略。在下面的例子中,你可以看到一个计算复合组件,
它包含对四个组件的引用:加,减,乘,除。
配置信息使用服务组件定义语言(SCDL)定义在.composite 文件中。例如, calculator.composite 里定义了计算复合组件对其他组件的引用信息。
SCA Domain(域)
这些组件无论独立还是集成,全部都是可在不同环境下使用多次 的可重用单元。一个合成组件,连带它的配置信息,被打包到一个叫做contribution的部署单元部署到域。资源可以在不同contributions间重用,比如:JAVA类、XSD文件、WSDL文件等等。
一个SCA域是一个完整的运行配置,可能分布于一系列互联的的节点运行,域配置的整体布局,是服务依赖、属性、策略的配置。一个域是运行着的系统,
或者一组互相协作在一起工作工作的组件的逻辑视图,它们通过SCA线路彼此连接。当它实际的用于一个SCA环境的时候,合成组件实例化。
SCA域非常灵活,可以很小也可以很大:
- 一个很小的域,可能是一个在测试环境内的ide内
- 中型域可能是一个单一的服务器还是小型集群,支持单一应用
- 大型的域可以描述一个部门或公司的全部服务
在一个大型域可能会有各种策略,定义组件可以在何处运行,以及它们如何连接到对方或对外服务。然而,在开发过程中人们不会关注这些。代码被打包以供部署。Tuscany SCA Java 支持以JAR包或者文件的形式部署。
下面是一个有两个contribution的域额度例子:
<全文完>
以上文章翻译自Tuscany官网的SCA快速入门部分,原文:
http://incubator.apache.org/tuscany/quick-guide-to-sca.html