web-services - 让 REST 与 SOAP 通信

标签 web-services rest soap

我有两个系统,一个(我们称之为 S1)公开 RESTful API(我们称之为 WS1),另一个(我们称之为 S2)公开 SOAP API(我们称之为 WS2)。

我正在尝试找出一种从 S1 获取数据并将其添加到 S2 的方法。 WS1 公开了用于添加/获取数据(到/从 S1)的方法,而 WS2 仅具有用于添加数据(到 S2)的方法。

这两个 web 服务之间可以直接通信还是应该有某种机制在它们之间。我的猜测是“应该有人来管理他们的讨论”。

最佳答案

客户在哪里?

您有一个 REST Server 和一个 SOAP Server,它们的目标都是等待来自各自客户端的请求——操作是否正确并不重要他们实现读取和/或写入他们的数据集,客户端仍然需要发起通信。

弥合差距。

因此,您需要一个桥接客户端来请求从 REST 服务器读取某些内容并请求将某些内容写入 SOAP 服务器。桥梁的其余基础设施由您决定。

您可以编写一个轻型脚本来提取 RESTful 数据并为少数特定的 RESTful 资源推送 SOAP 消息,或者您可以编写一个通用的 REST2SOAP 桥,它可以根据转换约定将 RESTful 资源映射到 SOAP 消息端点。

直接与消息队列。

编写一个抽象桥客户端将允许您通过直接调用 REST 服务、接收数据、处理数据、直接调用 SOAP 服务并向其发送数据来运行它。如果这是一个低负载情况,那很好。

如果我们有一个高负载的数据来处理同步的事情是不可行的,所以我们引入了消息队列。

制作人:

  • 从 REST 服务读取数据;
  • (也许)将其处理成本地形式(桥接客户端可以理解的形式,例如数组和对象);
  • 然后对其进行序列化(serialize、json_encode等);
  • 将其放入消息队列。

消费者

  • 监听消息队列;
  • 当它收到一条新消息时,它会反序列化它;
  • 处理它;
  • 将其发送到 SOAP 服务。

消息队列的总体优势在于,您可以根据需要启动任意数量的生产者或消费者,具体取决于哪些服务运行速度较慢。

关于web-services - 让 REST 与 SOAP 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21689303/

相关文章:

c# - 标准网络服务 (asmx) 是否与 MVC 一起工作?

php - 在 Symfony2 中访问 HTTP PUT 数据

java - JAX-B 仅从输出中排除字段,但允许输入

ruby - 你如何处理 Savon 中的嵌套命名空间?

java - 使用 SPRING BOOT(SOAP 服务)连接到 Oracle 数据库时出现问题

php - 无法使用网络服务插入数据库

web-services - 如何在 RESTful Web 应用程序中映射不同的 UI View ?

Spring分页-请求参数

java - 接收 SOAP 消息时出现异常

java - HTTP 状态 415 - 不支持的媒体类型