SCA(服务组件架构)和ESB(企业服务总线)的区别?

Differences between SCA (Service Component Architecture ) and ESB (Enterprise Service Bus)?

我已经开始学习软件架构,并且遇到了这些术语 ESBSCA。现在我发现这些术语很混乱,因为它们似乎服务于相同的目的(我知道这对于这些主题的专家来说仍然很荒谬)。

谁能解释一下区别?

感谢任何帮助。

其实他们是完全不同的。 ESB 代表企业服务总线。它是一种如何分离您在整个企业中使用的服务的模式。它也是各种交通警察,将消息(同样是模式,而不是技术)路由到不同的服务,并将这些消息转换为服务的预期格式和协议。

SCA 代表服务组件架构。它是 IBM 和 Apache 合作开发的一项技术。这是一种进一步抽象服务的方法。例如,如果您将 SOAP over HTTP 用于 Web 服务,或者您可能使用 JMS,或者您可能将 JSON 与 HTTP POST 结合使用。所有这些都意味着特定的协议和 payload/message 格式。通常你必须 "hard code" 该协议和格式在某些时候。如果您可以传递一种不关心底层协议的抽象格式怎么办?这就是 SCA 为您购买的。您与 SCA API 前面的服务交互。在这些服务定义的背后是实际使用的 formats/protocols。

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

因此您可以定义一个 ESB 并使用 SCA 接口连接您的每个服务。这允许您的总线在 SCA 接口之间转换消息并将消息路由到那些服务。 SCA 负责 hiding/abstracting 这些服务的基础格式和协议。

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

作为产品示例......,IBM 有一个名为 WebSphere Enterprise Service Bus 的产品。我不知道它是否已更名,但我曾经使用过它,当时它以该名称为人所知。这是一款有助于实施 ESB 模式并为您提供将系统公开为服务的工具的产品。 WESB(简称 WESB)也利用 SCA 作为连接这些服务的方式,即使这些服务是 SOAP/HTTP、JMS、MQ、JSON 等

作为抽象技术相互补充而非冲突的另一个示例,请参阅问题 Advantages of SCA over Spring 和我的回答(以及其他回答)