转载好友abigfrog的SCA快速入门
SCA是一个可执行的模型,用于将不同的 服务集成到一个业务解决方案。它简化了实现业务服务的组件编程模型,这些组件可以使用不同编程语言实现。SCA带来的一些益处主要为:
SCA的基本的组成部分是组件实现。 当你编写SCA代码时,你通常正在写一个组件的实现或者将被这样的组件使用的代码。 一个组件通常由下列属性描述:
一个典型的组件实现可以用下图表示:
一个组件可以使用任何用户想要的编程语言去实现,例如用BPEL去实现业务流程控制,XSL-T实现转换,RUBY来编写脚本,也可以使用纯JAVA。这些服务、引用、属性以及策略如何去定义界定了一个组件的是具体实现类型。
一个组件是配置了的组件实现的实例,同一个实现可被不同组件使用,SCA生存在一个复合的环境中。
单个组件可独立使用,也可被组合起来作为一个合成组件使用。一个合成组件不是代码,而是由一个或多个组件集成起来作为一个整体提供服务的。合成作为一种解决方案,例如信用检查组合。合成方案也可以在一个更大规模的解决方案中使用,例如信用检查可能是一个订单处理组合中的一部分,一个复合构建像一个组件一样具有同样的特性,它提供服务,包含对其他组件的引用,并且可以配置成像单独组件那样使用属性和策略。在下面的例子中,你可以看到一个计算复合组件,它包含对四个组件的引用:加,减,乘,除。
配置信息使用服务组件定义语言(SCDL)定义在.composite 文件中。例如, calculator.composite 里定义了计算复合组件对其他组件的引用信息。
这些组件无论独立还是集成,全部都是可在不同环境下使用多次 的可重用单元。一个合成组件,连带它的配置信息,被打包到一个叫做contribution的部署单元部署到域。资源可以在不同contributions间重用,比如:JAVA类、XSD文件、WSDL文件等等。
一个SCA域是一个完整的运行配置,可能分布于一系列互联的的节点运行,域配置的整体布局,是服务依赖、属性、策略的配置。一个域是运行着的系统,或者一组互相协作在一起工作工作的组件的逻辑视图,它们通过SCA线路彼此连接。当它实际的用于一个SCA环境的时候,合成组件实例化。
SCA域非常灵活,可以很小也可以很大:
在一个大型域可能会有各种策略,定义组件可以在何处运行,以及它们如何连接到对方或对外服务。然而,在开发过程中人们不会关注这些。代码被打包以供部署。Tuscany SCA Java 支持以JAR包或者文件的形式部署。
下面是一个有两个contribution的域额度例子:
请问用不同语言编写的component 之间是如何调用的, 数据信息是如何共享?
看了很多文章, 都只在提用java语言实现component, composite, 那么我们最关心的问题, 编程语言无关性! 如果我写了两个component, 或是写了多个composite, 每一个的实现语言都不同, java, c++, c. 那么这几个用不同的语言实现的component之间是如何通信的, 如何调用, 共享服务的? 我认为这个是SOA技术的关键, 希望高手给与解答.
谢谢!