2024年4月1日发(作者:)

基于SCA的ESB分析:

SCA:

为构建基于SOA的应用和解决方案提供了编程模型

致力于为服务构件以及连接各服务构件的访问方式而包容各种广泛的技术的模型

实现了组件与传输协议的解耦(即组件自由绑定协议,并且支持自定义的扩展绑定)

Tuscany是SCA的JAVA实现,其基本架构如下:

重点关注tuscany的扩展机制:

Implementation:SCA 组件(Component)的实现方式,一个 SCA 组件可以由各种语

言或技术平台实现,如:POJO,EJB,Spring Bean,bpel 流程,各种脚本语言等等。

Binding:是 SCA 的绑定(Binding)规范的实现,SCA 服务(Service)和引用(Reference)

的绑定方式,即一个 SCA 服务可以暴露为 Web Service,Java RMI 服务,http 资源,jms 消

息等等,一个 SCA 引用也可以通过 Web Service,RMI 调用,http 调用,jms 调用等方式

调用远端服务。

Databinding:数据绑定方式,用与在 Binding 中定义参数的传输格式,比如 Web Service

的 Binding 一般用 XML 格式,SCA 的 Binding 一般用 SDO 格式,Jsonrpc 的 Binding

一般用 Json 格式等等。

Interface:是 SCA 的接口(Interface)规范的实现,SCA 服务(Service)和引用(Reference)

的接口暴露方式,一般有 Java,WSDL 等类型。

这套扩展机制为整合各个平台的服务提供了基础。

ESB:

实现传输协议的转换

实现消息格式的转换

消息路由

数据集成

处理不同来源的业务

Tuscany中,对于传输协议的转换、消息格式的转换以及处理不同来源业务已经有所实

现。具体分析如下:

传输协议的转换:通过绑定实现。比如一个SCA组件可以向外部提供一个ws的服务,

同时在该服务的实现中加入一个corba服务的引用。这样,用户就可通过调用ws服务的方

式,实现对corba服务的调用。且tuscany的扩展机制允许针对新的协议加入自定义的绑定。

实现消息格式的转换:通过数据绑定实现。Tuscany SCA支持的数据类型有XML、SDO、

JAXB、DOM、JSON等等,其内部有一个消息转换器来实现不同格式消息之间的转换,这

种转换机制并不都是一一对应的,而是传递的。比如SDO要转换成AXIO,但Tuscany并

没有实现这两种格式的直接转换,而是将SDO转换成StAX,然后StAX再转换成AXIO。

具体的转换路径使用Dijkstra最短路径算法获得。而数据绑定是绑定中的子元素,相当于

tuscany已经实现格式转换,并且同样允许自定义的数据绑定加入。

处理不同来源的业务:相当于支持处理同步、异步的事件。SCA在向外界提供服务时,

可以选择同步和异步两种方式(异步细分为Async oneway、Deferred response和Call back),

用以处理不同来源的业务。

消息路由和数据集成,以及服务的加入(注册),删去(注销),修改(更新)是需要加

入的功能。

以SCA架构为基础,或者说以Tuscany为基础实现ESB能节省很多工作。

SCA规范学习:

SCA装配规范

在SCA中,构件(或组件)是最小单元,多个构件可以构成组合构件,组合构件用以

完成某个或某些相关的功能。构件有其具体的实现(即代码),而组合构件的创建与配置则

需要SCDL文档来实现。

SCA装配规范即是针对构件不同的装配需求而规定了SCDL文档该如何写。

本学习文档针对规范中提到的SCDL文档中一些重要元素,采用结合tuscany中的例子

的方式来帮助理解这些概念。

Component

以下为带有component元素的XML schema