Is DataContract attributes required for WCF
我在写WCF服务和他的客户。我想在服务和客户机之间发送/接收自定义类的对象。
我有三个模块
- WCF服务
- WCF客户端
- 公共类库
WCF服务和客户端都有对公共类库的引用。我不想用DataContract属性标记所有类。
所以,我的问题是"WCF是否需要DataContract属性?"
我使用.NET 4和NetTcpBinding。
如果我记得正确(IIRC),如果您不使用正式的数据协定标记,那么它默认地像字段序列化程序一样工作。这是可行的,但不太容易进行版本更改,因为私有更改可能会破坏客户机/服务器。IMO您应该总是用数据协定/数据成员属性正式地修饰WCF类型。如果没有它们,它就可以工作,但是因为错误的原因(IIRC,最初它没有正式的标记就不能工作)。
"Is DataContract attributes required
for WCF"
从技术上讲,不是。这取决于是否使用DataContractSerializer(这是许多绑定的默认设置)。
还有其他选项:
不需要使用DataContract属性,没有这些属性,您的服务就可以正常工作。
尽管如此,我真的不认为让您的服务和客户共享类库是最好的设计方法。如果通过DataContracts公开您的类型,这将更加清楚。
如果有一天,有人想要使用您的服务,但没有访问共享类库的权限,会发生什么?
您可以在WCF中使用几种序列化技术,这是一种很好的适应性。看一看:
http://msdn.microsoft.com/en-us/magazine/cc163569.aspx