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

标签 architecture soa esb sca

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

谁能解释一下区别?

感谢任何帮助。

最佳答案

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

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

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

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

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

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

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

关于architecture - SCA(服务组件架构)和ESB(企业服务总线)的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28285102/

相关文章:

performance - 这是在大型网站中为动态内容生成静态页面的一种好方法,以及如何正确管理静态页面

http - 面向服务的架构 - AMQP 或 HTTP

laravel - 我的应用架构还是SOA吗?

java - 如何使用 Mule ESB 过滤出站路由?

java - CAMEL 或其他企业集成框架是否更适合此用例?

用户的 MySQL 数据库

sockets - 为软件创建不同的可执行组件是否是一种好习惯?

c# - 在 C# 中创建两个非常相似的软件包有哪些不同的方法

wcf - 从 IIS 托管服务解析主机名的任何已知问题

wso2 - 错误: The endpoint reference (EPR) for the Operation not found