高性能二进制序列化
定义
命名空间:TouchSocket.Core
程序集:TouchSocket.Core.dll
一、说明
该序列化以二进制方式进行序列化,内存和性能都非常好。并且在序列化和反序列化时支持兼容类型,甚至可以像Json一样不同类型也可以。
目前支持的类型有:
- 基础类型
- 自定义实体类、结构体
- 元组
- 支持类型组成的数组、字典、List等。
提示
实际上经过自定义转化器,可以实现对任意类型的序列化和反序列化。
二、基本使用
2.1 简单使用
一般的,可以非常简单的对支持类型进行序列化和反序列化。
var bytes = FastBinaryFormatter.SerializeToBytes(10);
var newObj = FastBinaryFormatter.Deserialize<int>(bytes);
2.2 使用内存池块
在使用过程中,如果使用到频繁的序列化、反序列化,可以使用内存块,可以减少内存的申请和释放。
//申请内存块,并指定此次序列化可能使用到的最大尺寸。
//合理的尺寸设置可以避免内存块扩张。
using (var block = new ByteBlock(1024*64))
{
//将数据序列化到内存块
FastBinaryFormatter.Serialize(block, 10);
//在反序列化前,将内存块数据游标移动至正确位。
block.SeekToStart();
//反序列化
var newObj = FastBinaryFormatter.Deserialize<int>(block);
}