Architecture SCA(服务组件体系结构)和ESB(企业服务总线)之间的区别?

Architecture SCA(服务组件体系结构)和ESB(企业服务总线)之间的区别?,architecture,soa,esb,sca,Architecture,Soa,Esb,Sca,我已经开始学习软件架构,并且遇到了以下术语ESB和SCA。现在,我发现这些术语非常令人困惑,因为它们似乎有着相同的用途(我知道这对于精通这些主题的人来说可能听起来很可笑) 有人能解释一下区别吗 非常感谢您的帮助。事实上,他们之间有很大的不同。ESB代表企业服务总线。它是一种模式,用于分离企业中使用的服务。它也是一种交通警察,将消息(同样是模式,而不是技术)路由到不同的服务,并将这些消息转换为服务的预期格式和协议 SCA代表服务组件体系结构。这是IBM和Apache合作开发的一项技术。这是进一步抽

我已经开始学习软件架构,并且遇到了以下术语ESBSCA。现在,我发现这些术语非常令人困惑,因为它们似乎有着相同的用途(我知道这对于精通这些主题的人来说可能听起来很可笑)

有人能解释一下区别吗


非常感谢您的帮助。

事实上,他们之间有很大的不同。ESB代表企业服务总线。它是一种模式,用于分离企业中使用的服务。它也是一种交通警察,将消息(同样是模式,而不是技术)路由到不同的服务,并将这些消息转换为服务的预期格式和协议

SCA代表服务组件体系结构。这是IBM和Apache合作开发的一项技术。这是进一步抽象服务的一种方式。例如,如果您对web服务使用SOAP over HTTP,或者您使用JMS,或者您将JSON与HTTP POST结合使用。所有这些都意味着特定的协议和有效负载/消息格式。通常,您必须在某个时候对该协议和格式进行“硬编码”。如果您可以传递一种不关心底层协议的抽象格式呢?这就是SCA给你买的东西。您可以与SCA API提供的服务交互。在这些服务定义后面是实际使用的格式/协议

现在,这些听起来有点相互竞争,但事实并非如此。您可以仅使用SCA或使用ESB模式来开发整个基于SOA的体系结构。或者……你可以用它们来互相补充

因此,您可以定义ESB并使用SCA接口连接每个服务。这允许总线在SCA接口之间转换消息,并将消息路由到这些服务。SCA负责隐藏/抽象这些服务的底层格式和协议

所以他们真的不存在争论。只是不同的抽象来帮助解决不同的问题。可以相互补充的抽象

作为一个产品示例,IBM有一个名为WebSphere Enterprise Service Bus的产品。我不知道它是否被重新命名,但我曾与它合作过,当它以这个名字命名时。这是一个帮助实现ESB模式的产品,并为您提供了将系统公开为服务的工具。WESB(简称为SCA)也使用SCA作为连接这些服务的手段,即使这些服务是SOAP/HTTP、JMS、MQ、JSON等


作为抽象技术相互补充而不是相互冲突的另一个示例,请参见问题和我的答案(以及其他答案)

感谢您的回答,它确实帮助我了解了ESB和SCA是什么。尽管还有很多东西需要揭示,但实际上我对SOAP和REST Web服务有经验,因此,如果您可以给出ESB和SCA以及SOAP和REST的示例,那就太好了。另外,您所说的“定义ESB”是什么意思?您可以举一个示例,比如我为电子通信平台提供了两种服务,即资金管理(即SOAP)和库存管理(即REST),现在我想将这两种服务集成起来,现在,如果我想将-1.only ESB与SOAP/REST结合使用,那么该怎么办?2.only SCA与SOAP/REST结合使用,3.only ESB与SCA与SOAP/REST结合使用。redhat的Switch-Yard是使用SCA构建的ESB。