如何在Delphi中使用SOAP实现长轮询?有哪些选项可用?

6
我有一个Delphi企业应用程序,作为Java后端(SOAP,Axis2)的客户端。我的一些请求需要花费不定或特别长的时间才能完成,我想为SOAP请求实现长轮询解决方案。就我所知,我通常会使用WS-Addressing来解决这个问题。然而,似乎Delphi SOAP客户端(WCF)没有实现WS-Addressing。我被锁定在Java和Delphi上。我使用Axis 2组件,如生命周期,但是可能会转换到另一个Web服务引擎。我控制服务器和客户端两端。在Delphi和Java中实现长轮询的选项有哪些?

RemObjects 可能有一些开箱即用的东西可以供您使用。 - Graymatter
简要查看RemObjects的功能列表表明它符合WS-I标准,但它并未提及对WS-Addressing或我所知道的任何形式的长轮询的支持。 - stephenwebber
1个回答

1
您说Java已经在服务器端使用,并且您被锁定在那里使用Java(如果我理解正确的话)。
在这种情况下,我首先会尝试使用Java EE的最新SOAP实现之一来实现一个Java客户端原型作为“概念验证”。这个建议背后的原因是它会让您亲身体验Java端(以及Web服务总体上)实现异步处理的不同选项。
然后再将这个概念验证移植到Delphi中。

经过一些研究,我没有看到任何关于SOAP(通过WS-Adressing或其他方式)支持长轮询的具体参考。

然而,“异步SOAP”处理是处理长时间运行的过程的常见方法,自从SOAP 1.2以来就得到支持。例如,在JBoss中支持(使用JBoss WS进行异步Web服务)。

也许您还可以考虑使用不同的架构,使用消息代理。这被称为SOAP over JMS。对于Delphi,有免费和商业客户端可用,可以从JMS系统接收SOAP响应。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接