C#笔记15:序列化

来源:互联网 发布:淘宝发布山寨机的方式 编辑:程序博客网 时间:2024/06/05 17:11

C#笔记15:序列化

本章概要:

1:为什么需要序列化

2:序列化的几种形式

3:关于XML序列化,多说一点

4:JSON是什么

 

1:为什么需要序列化

     序列化是将对象转换为字节流以将其保存在内存、数据库或文件中的过程。其主要目的是保存对象的状态,以便可以在需要时重新创建对象。相反的过程称为反序列化。

     此图显示序列化的整个过程。

图:序列化

     对象被序列化为流。流传递的不仅是数据,还包括有关对象类型的信息,如对象的版本、区域性和程序集名称。通过该流,可以将对象存储在数据库、文件或内存中。

 

     通过序列化,开发人员还可以执行类似如下的操作:通过 Web 服务将对象发送到远程应用程序、将对象从一个域传递到另一个域、以 XML 字符串的形式跨防火墙传递对象,或者跨应用程序维护安全信息或用户特定信息。

 

2:序列化的几种格式

     序列化对象的时候,有三种格式:二进制、XML、SOAP。

     二进制序列化使用二进制编码来生成精简的序列化,以用于存储或基于套接字的网络流等。二进制格式对于大多数 Windows 应用程序均适用。

     XML 序列化将对象的公共字段和属性或者方法的参数及返回值序列化为符合特定 XML 架构定义语言 (XSD) 文档的 XML 流。XML 序列化会生成具有转换为 XML 的公共属性和字段的强类型类。

     XML 序列化还可用于将对象序列化为符合 SOAP 规范的 XML 流。对于 Web 应用程序或 Web 服务,SOAP 格式对象可以用于你像使用其它语言环境编写的应用程序接口。

 

3:关于XML序列化,多说一点

     以下的代码演示了如何将对象写入XML文件,以及将XML文件直接读取为对象:

public class Book{    public String title;  }public void WriteXML(){    Book overview = new Book();    overview.title = "Serialization Overview";    System.Xml.Serialization.XmlSerializer writer =         new System.Xml.Serialization.XmlSerializer(typeof(Book));    System.IO.StreamWriter file = new System.IO.StreamWriter(        @"c:/temp/SerializationOverview.xml");    writer.Serialize(file, overview);    file.Close();}public void ReadXML(){    System.Xml.Serialization.XmlSerializer reader =         new System.Xml.Serialization.XmlSerializer(typeof(Book));    System.IO.StreamReader file = new System.IO.StreamReader(        @"c:/temp/SerializationOverview.xml");    Book overview = new Book();    overview = (Book)reader.Deserialize(file);    Console.WriteLine(overview.title);}


4:JSON是什么

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。说到底,JSON跟XML一样,也是保持对象数据的一种方式。

    JSON与XML的比较:

     ◆可读性

  JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。

  ◆可扩展性

  XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。不过JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。

  ◆编码难度

  XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有提供的工具。无工具的情况下,相信熟练的开发人员一样能很快的写出想要的xml文档和JSON字符串,不过,xml文档要多很多结构上的字符。

原创粉丝点击