【问题标题】:Differences between SCA (Service Component Architecture ) and ESB (Enterprise Service Bus)?SCA(服务组件架构)和 ESB(企业服务总线)之间的区别?
【发布时间】:2015-02-02 19:18:54
【问题描述】:

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

谁能解释一下区别?

任何帮助表示赞赏。

【问题讨论】:

    标签: architecture soa esb sca


    【解决方案1】:

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

    SCA 代表服务组件架构。它是 IBM 和 Apache 合作开发的一项技术。这是一种更进一步抽象服务的方式。例如,如果您将 SOAP over HTTP 用于 Web 服务,或者您可能使用 JMS,或者您可能将 JSON 与 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 服务的经验,所以如果你能提供就太好了带有 SOAP 和 REST 的 ESB 和 SCA 示例。还有你所说的“定义 ESB”是什么意思
    • 您能否举个例子,比如我有两个用于电子商务平台的服务,即 SOAP 的资金管理和 REST 的库存管理,现在我想整合这两个服务如果我想使用 - 1.only ESB 和 SOAP/REST 2.only SCA 和 SOAP/REST 3.only ESB 和 SCA 和 SOAP/REST。
    • Redhat 的 SwitchYard 是使用 SCA 构建的 ESB。
    猜你喜欢
    • 2017-04-11
    • 1970-01-01
    • 2011-08-23
    • 2012-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多