我有一个Delphi企业应用程序,它充当Java后端(SOAP,Axis2)的客户端。我的一些请求需要不确定或特别大的时间来完成,我想为SOAP请求实现一个长轮询解决方案。
据我所知,我通常会使用WS-Addressing。但是,似乎Delphi SOAP客户端(WCF)没有实现WS-Addressing。
我被锁定在Java和Delphi中。我使用Axis 2组件,例如生命周期,但我可以转换到另一个Web服务引擎。我控制服务器端和客户端。
在Delphi和Java中实现长轮询有哪些选择?
答案 0 :(得分:1)
你说Java已经在服务器端使用了,你在那里被锁定为Java(如果我理解正确的话)。
在这种情况下,我首先尝试使用Java EE的任何最先进的SOAP实现来实现 Java 客户端原型作为"证明-concept&#34 ;.这个建议背后的原因是,它将为您提供一些Java实践(以及一般的Web服务)中的不同选项的实践经验,以实现异步处理。
将此概念证明移植到Delphi将是第二步。
在进行一些研究之后,我看不到任何对使用SOAP进行长轮询的特定支持的引用(通过WS-Adressing或其他方式)。
然而,"异步SOAP"从SOAP 1.2开始,处理是处理长时间运行过程的常用方法。例如,在JBoss中支持它 - (Asynchronous web services with JBoss WS)。
也许你也可以使用消息代理来考虑不同的架构。这称为SOAP over JMS。 Delphi有免费和商业客户端,可以从JMS系统接收SOAP响应。