使REST与SOAP通信

时间:2014-02-10 22:33:25

标签: web-services rest soap

我有两个系统,一个(让我们称之为S1)暴露RESTful API(让我们称之为WS1)和另一个(让我们称之为S2)暴露SOAP API(让我们称之为WS2)。

我正试图找出一种从S1获取数据并将其添加到S2中的方法。 WS1公开了添加/获取数据(进入/来自S1)的方法,而WS2只有添加数据的方法(进入S2)。

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

1 个答案:

答案 0 :(得分:4)

客户在哪里?

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

缩小差距。

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

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

直接与消息队列。

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

如果我们有大量的数据来处理同步处理的事情是不可行的,那么我们引入消息队列。

制片人:

  • 从REST服务中读取数据;
  • (可能)将其处理为本地形式(桥接客户端理解的数组和对象);
  • 然后序列化它(serialize,json_encode等);
  • 将其放在邮件队列中。

消费者

  • 收听消息队列;
  • 收到新邮件时,会对其进行反序列化;
  • 处理它;
  • 将其发送到SOAP服务。

消息队列的总体优势在于,您可以根据需要启动尽可能多的生产者或使用者,具体取决于哪些服务运行速度较慢。