首页 > Windows开发 > 详细

C#笔记——7.序列化与反序列化

时间:2018-06-17 22:12:21      阅读:214      评论:0      收藏:0      [点我收藏+]

序列化与反序列化简介:

序列化指将对象转换为字节流的过程,与之相反的便是反序列化,即将字节流转换为对象的过程。

.NET支持的几种对象序列化方式:

二进制序列化:对象序列化之后是二进制形式的,通过BinaryFormatter类来实现的,这个类位于System.Runtime.Serialization.Formatters.Binary命名空间下。

SOAP序列化:对象序列化之后的结果符合SOAP协议,也就是可以通过SOAP 协议传输,通过System.Runtime.Serialization.Formatters.Soap命名空间下的SoapFormatter类来实现的。

XML序列化:对象序列化之后的结果是XML形式的,通过XmlSerializer 类来实现的,这个类位于System.Xml.Serialization命名空间下。XML序列化不能序列化私有数据。

其他方式:

Json序列化:在.net中使用JSON,使用JSON.NET,通过序列化将.net对象转换为JSON字符串;JSON.NET的LINQ to JSON,LINQ to JSON也可以根据需求的格式来定制json数据。

Protobuf序列化:在.net中使用protobuf-net,最大的特点是基于二进制,因此比传统的XML表示高效短小得多。除了比Json、XML有速度上的优势和使用上的方便外,protocolbuf还可以做到向前兼容和向后兼容。

几种方式的区别

二进制格式和SOAP格式可序列化一个类型的所有可序列化字段,不管它是公共字段还是私有字段。XML格式仅能序列化公共字段或拥有公共属性的私有字段,未通过属性公开的私有字段将被忽略。

使用二进制格式序列化时,它不仅是将对象的字段数据进行持久化,也持久化每个类型的完全限定名称和定义程序集的完整名称(包括包称、版本、公钥标记、区域性),这些数据使得在进行二进制格式反序列化时亦会进行类型检查。SOAP格式序列化通过使用XML命名空间来持久化原始程序集信息。而XML格式序列化不会保存完整的类型名称或程序集信息。这便利XML数据表现形式更有终端开放性。

用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一(极端情况下,会大于等于直接序列化),

Binary

Soap

XML

Json

Protobuf

REF

C#高级编程、C#脚本编程

https://www.cnblogs.com/yzenet/p/3622833.html

C#笔记——7.序列化与反序列化

原文:https://www.cnblogs.com/sylvan/p/9193792.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!