3

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

任何人都可以解释这些差异吗?

任何帮助表示赞赏。

4

1 回答 1

3

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

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

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

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

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

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

作为抽象技术相互补充而不是冲突的另一个示例,请参阅问题SCA 优于 Spring 的优势和我的答案(和其他答案)

于 2015-02-05T15:44:47.120 回答