我们有一个非常古老的应用程序。它在要重写的块上。但是由于它非常复杂,因此重写一直被推迟。
现在我需要知道是否有办法让 Delphi 5 应用程序调用 WCF Web 服务?
我知道当 Delphi 5 发布时,WCF 甚至在其发明者的眼中都没有闪烁……但是可以做到吗?如果是这样,怎么做?
您可以使用 SOAP over HTTP 与 WCF Web 服务进行通信。Delphi 5 确实在一定程度上支持 SOAP,但根据我的经验,它的早期实现与 .NET 2.0(或更高版本)WSDL 并不是特别兼容。您可能希望尝试导入 WSDL 并看看 Delphi 是如何做到的 - 但我不会让您抱有希望。
如果这不起作用,在这一切之下它只是一堆网络请求,所以理论上可以使用你自己的编组例程(例如在 Indy HTTP 之上)来完成你所要求的事情。问题是 - 将您的请求 + 响应编组为您可以在 Delphi 5 中操作的数据结构有多容易?
您可能考虑的另一种策略是用合适的语言(即 .NET)编写代理/包装器,并公开对 Delphi-5 更友好的界面。
Delphi 5 不支持开箱即用地调用 Web 服务,因为该功能是在 Delphi 6 中引入的。
Delphi 对 Web 服务的支持在 Delphi 2005/2006 时代左右进行了更新,以兼容较新的 SOAP 版本(例如在 .NET 2.0 和更高版本中使用)。
RemObjects 在 Delphi 中有一个用于 Web 服务的替代实现(以及更多的通信内容),但它们不支持 Delphi 5。
Delphi 5 可以执行 HTTP 请求并使用 XML,因此您可以基于它构建自己的东西。以一种通用的方式完成这项工作至少需要几天甚至几周的时间,但仅适用于一个 Web 服务调用的特定解决方案可以在更短的时间内完成。
WCF Web 服务只是 Web 服务,对吗?鉴于您的 WCF 服务使用 http 进行传输,您应该能够像对待任何其他 Web 服务一样对待它。实际上,即使是 SOAP、REST 或其他格式的消息传递也是没有意义的。如果 Delphi 5 可以调用 Web 服务,它应该可以调用 WCF 服务。
如果您拥有 Web 服务,那么故事显然会变得更好。