在群里偶然看到一些关于SCA和ESB的看法,复制过来供大家探讨。是SCA的程序组的华人raymonent feng给jackrong的回信:
1) SCA和ESB在不同的层次, SCA是一个面向应用的编程和组装方式. ESB是中间件的集成方式. 使用SCA, 开发人员基本不用考虑技术接口, 代码是纯业务逻辑. 我尝试过 ServiceMIX (JBI)的例子, 代码需要解析技术面的消息, 业务逻辑和技术调用混在一起.
2) ESB可以用作SCA构件的通讯框架. SCA构件通过BINDING的配置来指定通讯协议, 引用和服务需要支持同样的BINDING. 如果服务支持WEB SERVICE但引用只支持RMI, 它们无法拼接. ESB可以成 为一个通用的BINDING, 例如binding.esb, SCA构件就可以依赖ESB的寻址和协议转换来组装了.
3) ESB也可以提供技术面的SCA构件来支持业务逻辑间的MEDIATION. 例如, 路由, 协议转换, 数据映射和转换, 业务规则等等.
(貌似这两位兄弟都在goCom上看到过,贸然转载不会有问题吧?呵呵,也是希望大家讨论一下)
继续~~如下是来自IBM的一位技术人员的回复~~
实际上,esb是一种架构模式,而SCA和BPEL是建构某种架构模式的具体编程模型,犹如mvc是架构设计,而J2EE、servlet、JSP是编程模型。esb所解决的问题是路由、数据转换和invocation转换。在IBM的思路中,SCA是esb实现的基础编程模式,也就是说,esb中的功能模块是由SCA包装的(内部连接),并且SCA也是esb与外部系统的一种连接方式。 而BPEL可以解决服务的编排,或者说是流程/工作流的设计和实现。严格的说,这并不属于esb的领域,而是流程引擎所要支持的,因为esb主要解决连通性的问题,就像是网络里的路由器,并不考虑业务具体的流程要求。 如果你的实际主要是考虑支持具体业务而并非应用的连通性,可以采用SCA+BPEL。在IBM的产品中,SCA用于封装具体服务实现,而BPEL用于业务流程的实现。如果把ESB加进来,可以用于连接外部的系统,比如说采用手机接入电子商店: 手机<->交换机/服务器(通过jms或http消息)<->esb(转化为SCA调用,并进行必要数据格式转换)<->SCA封装的业务逻辑
呵呵,还是转载~~供大家参考~~