Events 在XML-RPC或SOAP中实现回调

Events 在XML-RPC或SOAP中实现回调,events,soap,callback,xml-rpc,Events,Soap,Callback,Xml Rpc,我试图了解如何使用SOAP或XML-RPC为我的产品创建远程开放API。 问题是,我的API的一部分要求我能够将事件从服务器推送到客户端——我需要能够“发送回调”,而不仅仅是作为API的一部分“调用函数”。 在SOAP或XML-RPC中有没有一种很好的方法可以做到这一点?在RPC系统中有两种方法可以做通知:推送模型和拉取模型。在pull模型中,客户机将定期向服务器查询是否有可用的通知。服务器需要存储它们,直到客户端获取它们(或者直到它们过期)。作为一种变体,客户端可能会有一个阻塞RPC调用,该调

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

在RPC系统中有两种方法可以做通知:推送模型和拉取模型。在pull模型中,客户机将定期向服务器查询是否有可用的通知。服务器需要存储它们,直到客户端获取它们(或者直到它们过期)。作为一种变体,客户端可能会有一个阻塞RPC调用,该调用会阻塞直到下一个事件可用,然后立即返回。这在CORBA中可以很好地工作,但在SOAP或XML-RPC中却不能很好地工作,因为HTTP实现通常不准备让连接保持打开状态几个小时

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


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

您可以使用WCF进行推送。但是,我不知道您是否能够以可互操作的方式完成它。查看。

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


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

这意味着基本上我只能定期更新,这在资源方面有些浪费。谢谢你的回答