如果我们选择XmlSerialization而不是DataContract,有什么我可能会后悔的,即任何重大限制?到目前为止,我们已经接受了架构第一个合同设计。
例如,如果我们想要参数检查,安全性增强等等......当我们尝试添加其他WCF功能时,现在使用XmlSerialization锁定是一个问题吗?
答案 0 :(得分:4)
DataContractSerializer
不支持某些架构元素,例如xs:choice
元素。要知道如果您最终使用任何不受支持的元素,如果您愿意,您将很难切换到数据合同。
除此之外,DataContractSerializer
与XmlSerializer
here的分类非常好。可能最重要的一点是:
DataContractSerializer
通常效率更高; DataContractSerializer
可以序列化字段(XmlSerializer
需要属性); XmlSerializer
需要为每个序列化属性设置公共 getter 和 setter(这非常烦人,可能导致一些次优设计); XmlSerializer
需要公共无参数构造函数(DataContractSerializer
实际上会忽略它); XmlSerializer
默认选择退出,而DataContractSerializer
则选择加入; XmlSerializer
更有可能与旧版客户端(即ASMX Web服务和其他平台)进行互操作; 一般来说,XmlSerializer
可让您更好地控制XML,但DataContractSerializer
可让您更好地控制代码。如果你想使用XML序列化程序,你必须编写其代码,而你可以将数据合同与任何代码集成。