我读了一些微软文章。他们解释说WCF使用DataContractSerializer
进行序列化。但文章没有解释为什么DataContractSerializer更喜欢
XmlSerialization。任何人都可以给我额外的信息吗?
答案 0 :(得分:4)
Here是一篇比较文章。
关键部分:
优点:
缺点:
只能序列化属性
属性必须是公开的
属性必须有get和set,这可能导致一些尴尬的设计
支持更窄的一组类型
无法理解DataContractAttribute并且不会序列化它,除非还有SerializableAttribute
优点:
因为它是选择性的,所以不仅可以序列化属性,还可以序列化字段。您甚至可以序列化非公开成员,例如私人或受保护成员。你也不需要在属性上设置一个集合(但是没有setter你可以序列化,但不能反序列化)
比XmlSerializer快10%的序列化数据要快,因为由于你没有完全控制序列化的方式,所以可以做很多工作来优化序列化/反序列化过程。
可以理解SerializableAttribute并知道它需要序列化
更多选项和对KnownTypes的控制
缺点:
答案 1 :(得分:2)
这是MSDN杂志上另一篇非常好的文章,WCF Serialization。