【问题标题】:Does any version of Delphi (not .net) support Document/literal or RPC/literal binding SOAP service?是否有任何版本的 Delphi(不是 .net)支持 Document/literal 或 RPC/literal 绑定 SOAP 服务?
【发布时间】:2023-03-29 10:40:02
【问题描述】:

我的一些服务有一个 SOAP 服务器 API,其中一位客户说他们不会与至少不提供 WS-I Basic Profile 合规性绑定的服务集成。

那么,问题是任何版本的 Delphi 都支持 Document/literal 或 RPC/literal 绑定吗?

编辑:看起来 RemObjects 支持 Document/literal 或 RPC/literal。

【问题讨论】:

  • 看到这个问题:stackoverflow.com/questions/4308343/…...虽然不是完全相同的问题,但答案仍然适用于 AFAIK。
  • 如果 Free Pascal Web Service Toolkit(也适用于 Delphi)有这个功能会很有趣
  • 我是RemObjects 产品的客户,使用常规 Win32 Delphi(不是 .net/prism),我可以确认您可以使用它编写支持比内置功能更多的功能的 SOAP 服务器SOAP RTL 支持。我还没有尝试过 RPC/Literal 或 Document/literal,所以我不能谈论这个。我可以指出你可以问的地方并得到答案:connect.remobjects.com
  • @François 这个问题更多是关于 WS-I Basic 支持,doc/literal 或 rpc/literal 是问题的一小部分

标签: web-services delphi soap


【解决方案1】:

我最近深入研究了 Delphi 代码,因为我无法使用 MS Exchange Server WDSL(这似乎是 SOAP 1.1“文档/文字包装”)。
我不是这方面的专家,但我在 Delphi XE2 单元 Soap.OPToSOAPDomConv 中遇到了这段代码,这对我来说看起来不正确:

if not IsRPC then
begin
  if IsBareLiteral then
  begin
    [snip]
  end
  else
  begin
    // IsWrappedLiteral !

function TSOAPDomConvHelper.IsRPC: Boolean;
begin
  Result := not (soDocument in Options);
end;

function TSOAPDomConvHelper.IsBareLiteral: Boolean;
begin
  Result := Options * [soDocument, soLiteralParams] = [soDocument, soLiteralParams];
end;

function TSOAPDomConvHelper.IsWrappedLiteral: Boolean;
begin
  Result := Options * [soDocument, soLiteralParams] = [soDocument];
end;

尽管您的问题是关于 WSDL 生成(而不是关于它的消耗),但以上内容向我表明“文档/文字包装”不受适当支持。

一月

【讨论】:

    【解决方案2】:

    来自MSDN(2003 年 4 月):

    WS-I 基本配置文件和 RPC/literal

    不幸的是,WS-I 基本概要明确允许使用 文档/文字和 RPC/文字。综合以上分析,我 相信拥有两种消息格式是不必要的,最终确实如此 不利于互操作性。希望大多数(如果不是全部)Web 服务 开发人员将忽略 RPC/literal 并提供必要的反馈 WS-I 以在未来版本的基本配置文件中解决此问题。

    所以我建议完全忽略 RPC/literal。

    另外http://en.wikipedia.org/wiki/WS-I_Basic_Profile 指向不同版本的 WS-I Basic - 1.2(2010 年 11 月最终确定)和 2.0(2010 年 11 月发布)似乎是最新版本。我会检查您的通信伙伴所期望的版本级别。


    解决方案

    将 Web 服务从 Delphi 移至符合 WS-I 的框架,Delphi 仍提供逻辑,但在内部通过 IPC 与新框架进行通信。

    compliant frameworks listed in the Wikipedia article 中的大多数都是开源的,具有良好的文档和庞大的已安装用户群,因此它们可用于生产且稳定。

    从长远来看,使用兼容的框架将减少麻烦和变通方法,并且还允许支持其他 WS-I 标准而无需额外工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-14
      • 2021-06-01
      • 2012-03-03
      • 1970-01-01
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多