为什么.Net Remoting不需要已知的类型但是WCF呢?

时间:2013-07-10 19:53:56

标签: wcf remoting known-types

我们正在迁移.net Remoting应用以使用WCF。让我感到困惑的一件事是"已知类型" WCF引入但Remoting不需要。虽然我有点理解已知类型是什么以及它们做了​​什么,但我感到困惑的是WCF和Remoting之间的区别 - 在发送方方面,如果WCF没有足够的类型信息为了序列化它的对象,为什么Remoting?对于接收者来说也是如此:为什么.net Remoting没有问题反序列化收到的对象但是WCF呢?那是因为Remoting会发送元数据和数据吗?如果是这样,为什么WCF也不能这样做?

1 个答案:

答案 0 :(得分:7)

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

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