我试图了解如何使用SOAP或XML-RPC为我的产品创建一个远程,开放的API.问题是,我的API的一部分将要求我能够将事件从我的服务器推送到客户端 - 我将需要能够"发送回调"而不仅仅是"调用函数"作为我的API的一部分.在SOAP或XML-RPC中有一个很好的方法吗?
在RPC系统中有两种方法可以进行通知:推模型和拉模型.在拉模型中,客户端将定期查询服务器是否有任何通知可用.服务器需要存储它们,直到客户端获取它们(或直到它们过期).作为变体,客户端可能具有阻塞RPC调用,该调用将阻塞直到下一个事件变为可用,然后立即返回.这适用于CORBA,但是对于SOAP或XML-RPC不能很好地工作,因为HTTP实现通常不准备连接打开几个小时.
在推送模型中,生产者将在消费者上调用RPC,使消费者成为服务器.这也不适用于SOAP或XML-RPC,因为客户端通常不准备担任服务器角色,防火墙可能会阻止回调通过.所以周期性拉动是最现实的方法.
PS你可能已经注意到我没有遵循你的术语:你不能推动事件.事件发生了.您只能推送通知,这是事件发生的信息.