API Gateway和ESB有什么区别?

问题描述 投票:19回答:3

ESB是SOA解决方案中用于路由,消息转换,协议桥接等的传统中间件。现在,几家供应商提供了一种名为API Gateway的新型中间件解决方案。这些解决方案通常被描述为访问组织公开提供的REST和SOAP服务的中心点。但是,API网关解决方案似乎提供了典型ESB功能的子集。

那么,ESB和API网关之间有什么区别?我什么时候应该使用其中一种?

rest soa esb api-management
3个回答
6
投票

API网关通常充当Web服务的代理并提供有趣的价值,例如:日志记录,使SOAP服务可调用,如REST服务,调试帮助,跟踪等...因为API网关位于消费者和您的服务,它可以轻松捕获流量并做这些事情。

企业服务总线(如nServiceBus)被设计为位于消息传递协议(如RabbitMQ)之上,以便为其提供基本消息传递或pub-sub不具备的功能(或难以实现的功能),例如:数据库存储持久消息,重试逻辑,侦听器封装,订阅消息的简单方法和传奇。您可以在不使用ESB的情况下使用消息传递协议,但不能使用其他方式。例如,您可以在不使用RabbitMQ的情况下使用nServiceBus


3
投票

由于API网关和ESB都能够为服务代理提供服务,如果只考虑这两种工具的中介和转换功能,它们可能看起来相同。 API网关与我的关键区别在于它所培育的特定目的。除了提供转换和一些路由功能之外,API网关应该能够充当它所支持的资源的入口点。此外,他们应该能够将访问控制和限制方面委托给其他专用组件,利用它们应该能够保证所需的行为。由于API网关将作为API管理解决方案的一部分,因此OOTB将支持所有这些功能。

使用ESB和其他外部组件或软件可以为服务代理实现类似的行为。但是,由于ESB旨在用于满足更广泛的集成要求,并且不专门用于API管理,因此实现它们的用例将更加困难。


1
投票

enter image description here

API网关是为客户端提供的代理。无论更广泛的系统内是否有任何变化,网关都会为客户端提供一致的界面。它还允许内部系统在不影响客户端的情况下进行更改。

ESB提供了一种服务到服务通信的方法。使用这种技术,服务不需要彼此通信,从而减少了耦合。

有很多变化和实现细节,但这是基本的区别。

© www.soinside.com 2019 - 2024. All rights reserved.