【问题标题】:WCF service (.NET 4.0) can have a .NET 2.0 client?WCF 服务 (.NET 4.0) 可以有一个 .NET 2.0 客户端吗?
【发布时间】:2012-05-07 09:19:58
【问题描述】:

场景是这样的:
我有一个运行良好的 .NET 4.0 客户端-服务器应用程序。
我需要创建一个可以访问服务器的 UserControl,但需要在 .NET 2.0 中创建(因为客户应用程序是 .NET 2.0)

是否存在从 2.0 客户端访问 .NET 4.0 WCF 服务的方法?

注意:
它不是 Web 服务,而是独立的 .exe 服务器
未使用身份验证
传输的数据几乎是基本的(包含数组和基本类型的类)
它使用客户端回调所以协议 il net.tcp
如果我仍然可以使用回调,我可以选择更改协议

【问题讨论】:

标签: c# wcf .net-4.0 .net-2.0


【解决方案1】:

您需要将 WCF 公开为 Web 服务:

您的工作就像它是一个很好的旧 .asmx 服务(添加参考等)。

无论您的 WCF 服务是托管在 .exe、Web 应用程序还是 Windows 服务中...

在带有 .asmx 服务的 .NET 2.0 中无法支持回调,因此您必须使用 TcpListenerTcpClient 之类的东西来模拟 callbak。

不幸的是,这必须从头开始,但您可以使用 WCF 实现中的逻辑。

【讨论】:

  • 普通的 WCF 服务作为 Web 服务或代理类很简单,这就是为什么我指定“它使用客户端回调”
  • 客户端回调到底是什么意思?
  • 我需要服务端可以在客户端调用一个函数,作为basicHttpBinding是不行的
【解决方案2】:

如果您的 WCF 4.0 服务使用基本的 http 绑定,您可以在 .NET 2.0 或任何其他语言中使用它。

只需使用 WSDL.exe 生成代理并在 .NET 或任何其他语言中使用它。

【讨论】:

    【解决方案3】:

    是的,您可以通过在您的客户端项目中添加 .cs 文件(代理类)的引用,在 .net 2.0 客户端中使用 WCF 服务。

    【讨论】:

    • 普通的 WCF 服务作为 Web 服务或代理类很简单,这就是为什么我指定“它使用客户端回调”
    【解决方案4】:

    问题不久前解决了。 嗯,还没有真正解决……

    看了一篇关于 .NET WCF 性能的文章后,我决定使用 .NET 远程处理。 它更快、兼容本机 .NET 2.0 并且可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      • 2010-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多