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

Posted

技术标签:

【中文标题】哪些选项可用于使用 SOAP 在 Delphi 中实现长轮询?【英文标题】:What options are available to implement long polling in Delphi with SOAP? 【发布时间】:2014-11-29 00:37:39 【问题描述】:

我有一个 Delphi 企业应用程序,它充当 Java 后端(SOAP、Axis2)的客户端。我的一些请求需要不确定或特别长的时间才能完成,我想为 SOAP 请求实现一个长轮询解决方案。

据我所知,我通常会为此使用 WS-Addressing。然而,Delphi SOAP 客户端 (WCF) 似乎没有实现 WS-Addressing。

我沉迷于 Java 和 Delphi。我使用 Axis 2 组件,例如生命周期,但我可以转换到另一个 Web 服务引擎。我控制服务器端和客户端。

在 Delphi 和 Java 中实现长轮询有哪些选择?

【问题讨论】:

RemObjects 可能有一些现成可用的东西。 简要查看 RemObjects 的功能列表表明它是 WS-I Compliant 的,但它没有提到对 WS-Addressing 的支持,或者我知道的任何形式的长轮询。 【参考方案1】:

你说 Java 已经用在服务器端,而你在那里被锁定在 Java 中(如果我理解正确的话)。

在这种情况下,我会首先尝试使用任何最先进的 Java EE SOAP 实现来实现 Java 客户端原型作为“概念验证” .此建议背后的原因是,它可以让您亲身体验 Java 端(以及一般的 Web 服务)实现异步处理的不同选项。

将这个概念证明移植到 Delphi 将是第二步。


另外,在做了一些研究之后,我看不到任何对使用 SOAP(通过 WS-Adressing 或其他方式)进行长轮询的特定支持的参考。

但是,“异步 SOAP”处理是自 SOAP 1.2 以来处理长时间运行的过程的常用方法。例如在 JBoss - (Asynchronous web services with JBoss WS) 中支持它。

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

【讨论】:

以上是关于哪些选项可用于使用 SOAP 在 Delphi 中实现长轮询?的主要内容,如果未能解决你的问题,请参考以下文章

什么是SOAP,有哪些应用

哪些选项可用于使用 Adob​​e AIR 在 Android 上处理文本输入?

如何在 Delphi SOAP Web 服务客户端中使用 NTLM 身份验证?

Delphi 7 SOAP 身份验证和会话 ID 如何

有哪些选项可用于获取 Snowflake 中的主键列名称?

Delphi SOAP 调用显示 IE 登录对话框 - 如何防止它?