我只是想将.Net 1.1 Remoting解决方案转换为.Net 3.5 WCF解决方案。
“KnownTypes”要求让我很生气。
我的客户端和服务器共享相同的代码库,所以我不希望与未知的东西进行通信。我也使用netTcpBinding来允许它以更高效的xml二进制格式发送。
但是如果我继续进行大量的子类化(并且我这样做)那么似乎任何要通过WCF发送的包含抽象类型的类必须将所有具体类型列为“已知类型”。我不明白为什么它不能自己解决这个问题:它知道每个子类。
如果我有一个抽象的水果类和苹果,梨和香蕉的具体类,那么任何时候一个类都包含对“水果”的引用并且要通过WCF运输然后我必须告诉班级苹果,梨和香蕉是已知的类型。
我的代码非常OO,并且抽象类和抽象类的集合彼此嵌入。
使用远程处理它可以解决问题,如果它找到了一个不是Serializable的类型,那么它只会在运行时抛出一个异常 - 除了它知道它在做什么。
我是否真的需要在整个代码中添加1000行“KnownType”属性?有没有更好的方法?
我几乎考虑继续使用远程处理,因为WCF似乎非常耗费人力,而且总有机会在数百个课程中我会错过一些课程,然后有时会开始获得例外。
任何人都解决了这个问题,或者只是WCF的巨大开销?
有谁知道为什么我还需要已知类型?当然,如果它系列化我的水果碗,其中包含梨,苹果和香蕉的集合,它必须有一些方法来告诉它何时再次反序列化。因此,我不确定通过将它们声明为已知类型来实现我的目标。
这真是令人沮丧