我已经开始学习软件架构了,我遇到了这些术语 ESB 和 SCA 。现在我发现这些术语相当令人困惑,因为它们似乎有同样的目的(我知道这对于这些主题中的主人来说听起来可能是荒谬的)。
有人可以解释一下这些差异吗?
任何帮助表示感谢。
答案 0 :(得分:3)
实际上它们彼此截然不同。 ESB代表企业服务总线。它是如何解耦您在整个企业中使用的服务的模式。它也是各种各样的交通警察,将消息(再次是模式,而不是技术)路由到不同的服务,并将这些消息转换为服务的预期格式和协议。
SCA代表服务组件架构。这是一种在IBM和Apache之间协作开发的技术。这是一种将服务进一步抽象的方法。例如,如果您使用SOAP over HTTP作为Web服务,或者您可能使用JMS,或者您可能将JSON与HTTP POST一起使用。所有这些都意味着特定的协议和有效载荷/消息格式。通常,您必须在某个时刻对该协议进行“硬编码”并进行格式化。如果你可以传递一个不关心底层协议的抽象格式怎么办?这就是SCA为您所买的。您与SCA API前端的服务进行交互。这些服务定义背后是使用的实际格式/协议。
现在,这些声音有点竞争,但事实并非如此。您可以仅使用SCA或使用ESB模式开发整个基于SOA的体系结构。或者......你可以用它们互相补充。
因此,您可以使用SCA接口定义ESB并连接每个服务。这允许您的总线在SCA接口之间转换消息并将消息路由到这些服务。 SCA负责隐藏/抽象这些服务的基础格式和协议。
所以他们真的没有彼此争论。只是不同的抽象,以帮助解决不同的问题。可以相互补充的抽象。
作为产品示例.....,IBM有一个名为WebSphere Enterprise Service Bus的产品。我不知道它是否已经重新命名,但是我曾经在这个名称下知道的时候曾经使用它。这是一个有助于实现ESB模式的产品,并为您提供了将系统公开为服务的工具。 WESB(简称为简称)也使用SCA作为连接这些服务的手段,即使服务是SOAP / HTTP,JMS,MQ,JSON等。
作为抽象技术的另一个例子,相互补充,而不是相互冲突,请参阅问题Advantages of SCA over Spring和我的答案(以及其他答案)