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