SCA(服务组件架构)和ESB(企业服务总线)之间的区别是什么?

3
我开始学习软件架构,遇到了ESB和SCA这两个术语。这些术语让我感到很困惑,因为它们似乎具有相同的作用(虽然对于这些专业领域的大师来说,这可能听起来很荒谬)。请问有人可以解释一下它们之间的区别吗?非常感谢任何帮助。
1个回答

3
实际上,ESB和SCA是非常不同的。ESB代表企业服务总线。这是一种模式,用于解耦您在整个企业中使用的服务。它也是一种交通警,将消息(再次强调,这是模式,而不是技术)路由到不同的服务,并将这些消息转换为服务期望的格式和协议。
SCA代表服务组件体系结构。它是IBM和Apache之间合作开发的技术。这是一种更进一步抽象服务的方式。例如,如果您使用SOAP over HTTP进行Web服务,或者可能使用JMS,或者使用JSON with HTTP POST,所有这些都意味着特定的协议和有效负载/消息格式。通常您必须在某个时候“硬编码”到该协议和格式。如果您可以传递一个不关心底层协议的抽象格式会怎样?这就是SCA所能提供的。您可以使用SCA API与服务接口进行交互。在这些服务定义的背后是实际使用的格式/协议。
现在,这些听起来有点竞争,但它们并不是。您可以仅使用SCA或使用ESB模式来开发基于SOA的整个架构。或者……您可以将它们用于相互补充。
因此,您可以定义一个ESB并使用SCA接口连接每个服务。这使得您的总线可以在SCA接口之间转换消息并将消息路由到这些服务。而SCA则负责隐藏/抽象这些服务的底层格式和协议。
因此,它们真的不会相互竞争。只是不同的抽象,以帮助解决不同的问题。这些抽象可以相互补充。
作为一个产品示例……IBM有一个名为WebSphere Enterprise Service Bus的产品。我不知道它是否已经重新品牌,但我曾经在那个名称下使用过它。这是一个产品,有助于实现ESB模式,并为您提供将系统公开为服务的工具。 WESB(简称)还使用SCA作为连接这些服务的手段,即使这些服务是SOAP / HTTP,JMS,MQ,JSON等。
作为另一种抽象技术互补而不是冲突的示例,请参见问题Advantages of SCA over Spring及我的答案(以及其他答案)。

谢谢您的回复,它真的帮了我很多,我对ESB和SCA有了一些了解。然而,仍有很多需要探索,实际上我有SOAP和REST Web服务的经验,如果您能给出ESB和SCA与SOAP和REST的示例,那将是非常棒的。此外,“定义ESB”是什么意思? - Bruce_Wayne
你能举个例子来解释一下这种情况吗?比如说,我有一个电商平台,其中有两项服务:资金管理(SOAP)和库存管理(REST)。现在我想要将这两个服务整合起来,那么如果我想使用以下哪种方法,应该怎么做呢?
  1. 只用具备 SOAP/REST 功能的 ESB
  2. 只用具备 SOAP/REST 功能的 SCA
  3. 同时使用具备 SOAP/REST 功能的 ESB 和 SCA
- Bruce_Wayne
1
SwitchYard 是红帽公司基于 SCA 构建的 ESB。 - Namphibian

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接