让 REST 与 SOAP 通信

问题描述 投票:0回答:2

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

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

这两个 Web 服务可以直接相互通信吗?或者两者之间应该有某种机制。我的猜测是“应该有人来管理他们的讨论”。

web-services rest soap
2个回答
4
投票

客户在哪里?

你有一个

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

弥合差距。

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

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

直接与消息队列。

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

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

制作人:

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

消费者

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

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


0
投票

我想知道 Radu 是否将 SOAP 编程为 REST 桥接器。如果有请分享一下。

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