【问题标题】:Make REST communicate with SOAP使 REST 与 SOAP 通信
【发布时间】:2014-02-10 22:33:25
【问题描述】:

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

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

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

【问题讨论】:

    标签: web-services rest soap


    【解决方案1】:

    客户在哪里?

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

    缩小差距。

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

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

    直接与消息队列。

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

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

    制作人:

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

    消费者

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

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

    【讨论】:

    • 很好的解释 :) 它几乎总结了我在过去几天所做的发现。我将使用 Rabbitmq 以异步方式尝试您在上面描述的方法。让我们看看情况如何:D
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 1970-01-01
    相关资源
    最近更新 更多