繁体   English   中英

Call.Net 3.5 WCF 服务来自.Net 2.0 标准 ASMX Web 服务客户端

[英]Call .Net 3.5 WCF service from .Net 2.0 Standard ASMX Web Service Client

我创建了一个托管在安装了.Net 3.5 的服务器上的服务,我需要从只安装了.Net 2.0 的客户端调用此服务。

有没有办法我可以做到这一点?

如果您的 WCF 服务使用 basicHttpBinding 公开了一个端点,那么 .NET 2.0 客户端应该可以使用它。 正如马克所说,“没问题”。

是的,你可以做到。 但是,有一些警告:

您必须使用匹配的协议。 标准的 .NET 2.0 库不支持许多安全的 web 服务功能; 实际上,如果您想被默认安装的 .NET 2.0 使用,您几乎只能在 WCF 服务上使用 basicHttpBinding。 这在许多企业场景中是一个严重的限制。 但是,这可能就是您所需要的。

如果您需要更高的安全性但仍在使用 .NET 2.0,还有其他选择。 同样,您的 WCF 服务必须适应您的 .NET 2.0 客户端,但您的 .NET 2.0 客户端还需要利用外部库。 具体来说,您需要 Microsoft 推出的Web 服务增强功能 但是请记住,这些库实现了一些 SOAP 协议的beta版本,而 WCF(WSE 在许多方面的继承者)默认实现了这些标准。 由于协议中有一些重大更改(特别是 WS-Addressing),因此您必须在 WCF 服务上提供customBinding端点以适应。

不幸的是,我无法告诉您将使用哪种协议,因为这取决于您希望在服务上采用哪种协议,但您的大部分问题都可以通过更改自定义绑定的textMessageEncoding的 messageVersion 来解决。 这不是最好的方案,但如果您尝试集成客户端,它可以为您带来一些好处。

归根结底,要让 .NET 2.0 客户端与 WCF 服务对话以获取除 basicHttpBinding 之外的任何内容,还有很多工作要做。 在许多情况下,basicHttpBinding 可能就足够了。 对于许多企业场景,它不会。 我不能说哪个对你有帮助,但可能让它发挥作用——我已经成功地做到了。

但这是一个很大的痛苦。 如果可以,请寻找替代方案。

是的,当然 - 托管在 .NET 3.5 上的服务不需要客户端上具有相同版本的 .NET 框架。 见鬼 - 你甚至可以从 Java 或 PHP 调用这样的服务! 这就是面向服务架构的全部要点::-)

你需要定义你的服务契约(服务叫什么;可以调用什么方法)并且你需要决定如何托管它,例如你可以在什么地址调用这个服务,以及需要什么参数(例如HTTP 与 TCP,安全或不安全等) - 这是很多工作,即使在 WCF 中也是如此。

以下是 WCF 的三篇介绍性文章 - 查看它们!

但是从 .NET 2.0 客户端调用该服务绝对没问题!

马克

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM