API 网关可以指向 Web 服务 (SOAP),还是可以在微服务中使用 SOAP,以便 API 网关指向它?
Posted
技术标签:
【中文标题】API 网关可以指向 Web 服务 (SOAP),还是可以在微服务中使用 SOAP,以便 API 网关指向它?【英文标题】:Can API Gateway point a to a Web Service (SOAP) or the alternative would be can SOAP be used in a microservice so that the API Gateway point to it? 【发布时间】:2021-10-06 00:59:21 【问题描述】:所以我正在使用 dotnet core 3.1,并使用需要访问 Web 服务的客户端。我想知道是否可以使用/集成 API 网关架构,以便 API 网关指向该 Web 服务(SOAP 消息)?我正在研究,当然首选是使用 Ocelot,但我仍处于检查可行性的阶段。这里要考虑的重要一点是,我使用 API 网关方法的原因是因为会有其他端点(其他客户端)确实需要它,因此使用微服务会更容易,所有RestAPI 和整个 shebang...
我不太熟悉的另一件事是,是否可以将 web 服务容器化为微服务以实现目标。
感谢您的回复。
干杯!!!
此外,如果有更好的方法来解决这个问题,我更愿意“听到”它
这是一个更好的参考图片,请记住其中一个微服务不是 Web API 而是 SOAP Web 服务
【问题讨论】:
@fpmoles 先生,这可行吗?非常感谢您的任何评论 【参考方案1】:从架构的角度来看,您当然可以在微服务和 SOAP 服务if it makes sense to do so 前面放置一个网关。
如果您将 SOAP Web 服务包装到一个具有与所有其他微服务类似的通信类型的微服务中,或者您只是直接调用您的 SOAP Web 服务,则取决于网关实现。网关(您的示例:ocelot)可以进行 SOAP 调用吗?还是所有后端服务都需要使用相同的“语言”进行通信?
从架构的角度来看,您的解决方案是有意义且可行的。这只是你如何“按摩”组件之间的通信的问题,这样网关的客户端就不必关心他们的请求是到达微服务还是 SOAP Web 服务。
附:我在这里谈论的是 SOAP 服务和“其他”微服务,以突出它们与网关之间的不同集成类型,但您当然可以仅使用 SOAP 构建微服务架构。您可以从 SOAP 服务以及 REST 服务(这似乎是构建微服务的首选方式;主要是出于历史原因,因为 SOAP 经常被用作与单体的集成选项)。
【讨论】:
【参考方案2】:我会以咆哮的形式回答。
<rant>
所以我对这样的事情的建议是,做对你和你的公司有用的事情。 “霸主”可能会讨厌我说您可以在微服务实现中使用基于肥皂的产品,但他们不必支持您的系统,您可以。做有意义的事。我使用过 OSB 之类的转换将 SOAP 转换为 ReST,我使用过翻译服务,您不能将技术决策视为是/否。它们需要是对您和您的需求有意义的权衡。 </rant>
【讨论】:
以上是关于API 网关可以指向 Web 服务 (SOAP),还是可以在微服务中使用 SOAP,以便 API 网关指向它?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 中同时公开 SOAP Web 服务和 RESTful API?