【问题标题】:Implementing a callback in XML-RPC or SOAP在 XML-RPC 或 SOAP 中实现回调
【发布时间】:2009-08-20 06:23:38
【问题描述】:

我正在尝试了解如何使用 SOAP 或 XML-RPC 为我的产品创建远程、开放的 API。 问题是,我的部分 API 将要求我能够将事件从我的服务器推送到客户端——我需要能够“发送回调”而不仅仅是“调用函数”作为我的 API 的一部分。 在 SOAP 或 XML-RPC 中有没有好的方法来做到这一点?

【问题讨论】:

    标签: events soap callback xml-rpc


    【解决方案1】:

    在 RPC 系统中有两种方式来进行通知:推送模型和拉取模型。在拉模型中,客户端会定期向服务器查询是否有可用的通知。服务器需要存储它们,直到客户端获取它们(或直到它们过期)。作为一种变体,客户端可能有一个阻塞 RPC 调用,该调用会阻塞直到下一个事件可用,然后立即返回。这适用于 CORBA,但不适用于 SOAP 或 XML-RPC,因为 HTTP 实现通常不准备让连接打开数小时。

    在推送模型中,生产者将调用消费者的 RPC,使消费者成为服务器。这也不适用于 SOAP 或 XML-RPC,因为客户端通常不准备承担服务器角色,并且防火墙可能会阻止回调通过。所以周期性拉动是最现实的方法。

    附:你可能已经注意到我没有遵循你的术语:你不能推送事件。事件是发生的事情。您只能推送通知,这是事件确实发生的信息。

    【讨论】:

    • 这意味着基本上我只剩下定期更新,这在资源方面有些浪费。感谢您的回答
    【解决方案2】:

    好的,最终决定将回调作为不立即返回的 API 处理。

    基本上,将发送一个 RPC-XML 请求,要求在给定的事件列表中得到通知。我们的服务器会等到其中一个事件发生,然后在设定的时间后将其作为响应或超时报告回来,通知没有发生任何事情。调用者将能够尝试再次发送请求以继续等待。

    【讨论】:

      【解决方案3】:

      您可以使用 WCF 做到这一点。但是,我不知道您是否可以以可互操作的方式进行操作。查看Duplex Services

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-09-11
        • 1970-01-01
        • 2012-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-02
        相关资源
        最近更新 更多