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 Cloud——微服务网关介绍

指向 DigitalOcean 域的 AWS API 网关

如何在 Spring Boot 中同时公开 SOAP Web 服务和 RESTful API?

SOAP和REST API测试技巧

强制在来自 NET Web 服务代理类的 SOAP 请求中包含默认值属性属性

应用程序升级到oracle 11g后,无法通过SOAP API Web服务检索数据