Csharp/C#教程:XML序列化 – 何时使用DataContractSerializer / Binary / XMLSerialiser分享


XML序列化 – 何时使用DataContractSerializer / Binary / XMLSerialiser

我已经看了一会儿了

似乎不鼓励使用二进制序列化,因为对字段名称的任何更改都会破坏序列化=? 不好

XMLSerializer是有问题的,因为您必须提供无参数构造函数和公共字段,尽管您可以更多地控制元素是属性或元素及其命名

DataContractSerializer很好,但需要明确添加所有的分类,这是一种耻辱

但是我偶然发现NetDataContractSerializer没有这个限制。

如果你的目标是C#序列化并且对xml的大小没有很大的限制,那么NetDataContractSerializer总是可以去这里吗?

Dan Rigsby在XmlSerializer与DataContractSerializer上有一篇非常好的比较文章,也涉及NetDataContractSerializer。

DataContractSerializer的:

您可以明确地告诉DCS要序列化的内容,但是对它的完成方式没有多大影响。

XmlSerializer的

您可以非常清楚地告诉XmlSerializer序列化的方式和内容,但是您无法序列化所有内容 – 只有公开可见的属性。

NetDataContractSerializer有点奇怪 – 它不可互操作,只有当两端都是.NET时才有效 – 它在消息中包含.NET类型信息(使其更大)。 您无法以声明方式将其添加到“开箱即用”的WCF服务中。

这是一个艰难的权衡 – 一如既往。 绝对远离任何二进制格式化程序 – 这不是向后兼容,脆弱,并且必然会让您头疼 – 使用其中一种标准方法。 对于你给定的场景哪一个是“最好的”真的很难说 – 你必须为自己想出一个……

Marc Gravell在他的博客上展示了他使用DataContractSerializer,XmlSerializer和大多数其他.NET序列化器的基准测试结果 ,包括protobuf-net(他创建的.NET协议缓冲区的实现)。

上述就是C#学习教程:XML序列化 – 何时使用DataContractSerializer / Binary / XMLSerialiser分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1034167.html

(0)
上一篇 2022年1月18日
下一篇 2022年1月18日

精彩推荐