WCF中的任何XmlSerialization限制(与DataContract相对)?

时间:2010-04-11 23:40:55

标签: wcf xml-serialization datacontract

如果我们选择XmlSerialization而不是DataContract,有什么我可能会后悔的,即任何重大限制?到目前为止,我们已经接受了架构第一个合同设计。

例如,如果我们想要参数检查,安全性增强等等......当我们尝试添加其他WCF功能时,现在使用XmlSerialization锁定是一个问题吗?

1 个答案:

答案 0 :(得分:4)

DataContractSerializer不支持某些架构元素,例如xs:choice元素。要知道如果您最终使用任何不受支持的元素,如果您愿意,您将很难切换到数据合同。

除此之外,DataContractSerializerXmlSerializer here的分类非常好。可能最重要的一点是:

  • DataContractSerializer通常效率更高;
  • DataContractSerializer可以序列化字段(XmlSerializer需要属性);
  • XmlSerializer需要为每个序列化属性设置公共 getter setter(这非常烦人,可能导致一些次优设计);
  • XmlSerializer需要公共无参数构造函数(DataContractSerializer实际上会忽略它);
  • XmlSerializer默认选择退出,而DataContractSerializer则选择加入;
  • XmlSerializer更有可能与旧版客户端(即ASMX Web服务和其他平台)进行互操作;

一般来说,XmlSerializer可让您更好地控制XML,但DataContractSerializer可让您更好地控制代码。如果你想使用XML序列化程序,你必须编写其代码,而你可以将数据合同与任何代码集成。