【问题标题】:Why .Net Remoting doesn't need known types but WCF does?为什么 .Net Remoting 不需要已知类型但 WCF 需要?
【发布时间】:2013-07-10 19:53:55
【问题描述】:

我们正在迁移我们的 .net Remoting 应用程序以使用 WCF。现在让我感到困惑的一件事是 WCF 引入但远程处理不需要的“已知类型”的概念。虽然我有点了解已知类型是什么以及它们的作用,但我感到困惑的是 WCF 和 Remoting 之间的区别 - 在发件人方面,如果 WCF 没有足够的关于手头对象的类型信息来序列化它,为什么Remoting?接收者也一样:为什么 .net Remoting 在反序列化接收到的对象时没有问题,但 WCF 有问题?那是因为远程处理将元数据与数据一起发送吗?如果是这样,为什么 WCF 不能这样做?

【问题讨论】:

    标签: wcf remoting known-types


    【解决方案1】:

    您是正确的 - .NET 远程处理随请求一起发送类型元数据。 WCF 可以做同样的事情,但默认情况下它不会 - 它有很多额外的信息,使请求变得更大并且处理起来更复杂(影响性能)。不发送类型信息也允许松耦合系统,其中客户端和服务器可以分开版本,并且只要它们遵守在原始版本中建立的合同,它们将继续工作。它还允许 WCF 与用非 NET 平台编写的系统进行通信(这对于依赖共享类型信息的远程处理或其他技术是不可能的)。

    如果您真的想使用非已知类型的方式,可以将 WCF 使用的默认序列化程序(DataContractSerializer)替换为NetDataContractSerializer,它将随每个请求发送类型信息。要使用它,请搜索“wcf netdatacontractserializer”,您将找到如何使用它。

    【讨论】:

    • 谢谢卡洛斯!这就解释了。
    猜你喜欢
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多