【问题标题】:Calling WCF from Delphi 5从 Delphi 5 调用 WCF
【发布时间】:2011-03-23 19:52:23
【问题描述】:

我们有一个非常古老的应用程序。它在要重写的块上。但是由于它非常复杂,因此重写总是被推迟。

现在我需要知道是否有办法让 Delphi 5 应用程序调用 WCF Web 服务?

我知道当 Delphi 5 发布时,WCF 的发明者眼中甚至连一丝曙光都没有……但可以做到吗?如果有,怎么做?

【问题讨论】:

标签: wcf delphi delphi-5


【解决方案1】:

您可以使用 SOAP over HTTP 与 WCF Web 服务进行通信。 Delphi 5 确实在一定程度上支持 SOAP,但根据我的经验,它的早期实现与 .NET 2.0(或更高版本)WSDL 并不是特别兼容。您可能希望尝试导入 WSDL,看看 Delphi 是怎么做的 - 但我不会让您抱有希望。

如果这不起作用,那么在这一切之下它只是一堆网络请求,所以理论上可以使用自己的编组例程(例如在 Indy HTTP 之上)来完成您所要求的事情。问题是 - 将您的请求和响应编组为您可以在 Delphi 5 中操作的数据结构有多容易?

您可能考虑的另一种策略是用合适的语言(即 .NET)编写代理/包装器,并公开对 Delphi-5 更友好的界面。

【讨论】:

  • Delphi 5 根本不支持 SOAP。 WS 支持是在 Delphi 6 中引入的,但即使这样现在也已经过时了。
【解决方案2】:

Delphi 5 不支持开箱即用地调用 Web 服务,因为该功能是在 Delphi 6 中引入的。

Delphi 对 Web 服务的支持在 Delphi 2005/2006 时代左右进行了更新,以兼容较新的 SOAP 版本(例如用于 .NET 2.0 和更高版本)。

RemObjects 在 Delphi 中为 Web 服务提供了另一种实现(以及更多的通信内容),但它们不支持 Delphi 5。

Delphi 5 可以执行 HTTP 请求并使用 XML,因此您可以在此基础上构建自己的东西。以通用方式完成此操作至少需要几天甚至几周的时间,但仅适用于一次 Web 服务调用的特定解决方案可以在更短的时间内完成。

【讨论】:

    【解决方案3】:

    WCF Web 服务只是 Web 服务,对吧?鉴于您的 WCF 服务使用 http 进行传输,您应该能够像对待任何其他 Web 服务一样对待它。实际上,即使是 SOAP、REST 或其他格式的消息传递也是没有意义的。如果 Delphi 5 可以调用 Web 服务,它应该可以调用 WCF 服务。

    如果您拥有网络服务,故事显然会变得更好。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多