UN1L9——序列化和反序列化2进制数据

序列化和反序列化2进制数据

我们进行网络通信的目的是要传输数据,所以我们在正式学习网络通信之前,要先有二进制数据序列化和反序列化的知识储备
这样才能在讲解网络通信时,轻松应对数据收发相关的需求

网络通信中传输数据的序列化和反序列化是非常重要的,因此在讲解网络通信之前我们必须要掌握以下两个关键知识

  1. 将类对象序列化为2进制数据
  2. 将2进制数据反序列化为类对象

主要讲解的内容有:

  • 字节编码
  • 序列化
  • 反序列化

网络通信中传输的数据

在网络通信中,我们把想要传递的类对象信息序列化为2进制数据(一般为byte字节数组),再将该2进制数据通过网络传输给远端设备
远端设备获取到该2进制数据后再将其反序列化为对应的类对象

回顾序列化和反序列化

  • 序列化:将类对象信息转换为可保存或传输的格式的过程
  • 反序列化:与序列化相对,将保存或传输过来的格式转换为类对象的过程

比如:
将C#类对象序列化为xml、json、2进制三种格式的数据保存在本地,达到持久化的目的,
再将保存在本地的持久化数据文件反序列化为C#类对象

回顾数据持久化2进制知识点

和网络通信相关的重要知识点(会在网络通信中频繁使用):

  1. BitConverter类:主要用于处理各类型和字节数组间的相互转换
  2. Encoding类:主要用于处理字符串类型和字节数组间的相互转换
  3. 加密相关:了解2进制数据加密的常用手段和思路

本地持久化知识点:

  1. File:文件操作类,用于操作文件

  2. FileStream类:文件流类,以流的形式进行文件存储读取操作

  3. MemoryStream:内存流对象

  4. BinaryFormatter​:2进制格式化对象

    强调: 在2进制知识点我们讲解了BinaryFormatter​​类
    它可以快速的将C#类对象转换为字节数组数据
    但是在网络开发时,我们不会使用BinaryFormatter​​类来进行数据的序列化和反序列化
    因为客户端和服务端的开发语言大多数情况下是不同的,BinaryFormatter类序列化的数据无法兼容其它语言