如何处理WCF中的许多已知类型

时间:2014-01-09 20:18:14

标签: .net wcf

我只是想将.Net 1.1 Remoting解决方案转换为.Net 3.5 WCF解决方案。

“KnownTypes”要求让我很生气。

我的客户端和服务器共享相同的代码库,所以我不希望与未知的东西进行通信。我也使用netTcpBinding来允许它以更高效的xml二进制格式发送。

但是如果我继续进行大量的子类化(并且我这样做)那么似乎任何要通过WCF发送的包含抽象类型的类必须将所有具体类型列为“已知类型”。我不明白为什么它不能自己解决这个问题:它知道每个子类。

如果我有一个抽象的水果类和苹果,梨和香蕉的具体类,那么任何时候一个类都包含对“水果”的引用并且要通过WCF运输然后我必须告诉班级苹果,梨和香蕉是已知的类型。

我的代码非常OO,并且抽象类和抽象类的集合彼此嵌入。

使用远程处理它可以解决问题,如果它找到了一个不是Serializable的类型,那么它只会在运行时抛出一个异常 - 除了它知道它在做什么。

我是否真的需要在整个代码中添加1000行“KnownType”属性?有没有更好的方法?

我几乎考虑继续使用远程处理,因为WCF似乎非常耗费人力,而且总有机会在数百个课程中我会错过一些课程,然后有时会开始获得例外。

任何人都解决了这个问题,或者只是WCF的巨大开销?

有谁知道为什么我还需要已知类型?当然,如果它系列化我的水果碗,其中包含梨,苹果和香蕉的集合,它必须有一些方法来告诉它何时再次反序列化。因此,我不确定通过将它们声明为已知类型来实现我的目标。

这真是令人沮丧

0 个答案:

没有答案