MessagePack-CSharp:.Net高性能序列化压缩开源库!

在我们项目开发中,序列化是经常使用JSON格式,但对于一些对性能、存储有要高要求的系统,我们就会考虑二进制形式。

下面推荐一个二进制序列化格式的开源库,以满足低存储的需求。

01

项目简介

MessagePack-CSharp是一个兼容各个平台(包括 .NET、.NET Core、Unity 和 Xamarin)的非常快速的消息包序列化器。支持了高效的方法来序列化和反序列化数据,特别适合于游戏、分布式计算、微服务或数据缓存等对性能要求较高的应用程序。

该项目有如下特点:

1、性能: MessagePack for C# 序列化器的速度是 MsgPack-Cli 的 10 倍,并且在性能上超越了其他 C# 序列化器。

2、紧凑的二进制格式: 采用二进制格式,相对比JSON、XML等格式,更加紧凑和高效。

3、LZ4 压缩支持: 内置了对 LZ4 压缩算法的支持,这是一种极其快速的压缩算法。

4、丰富的 API: 提供了高级 API(MessagePackSerializer)、低级 API(IMessagePackFormatter<T>)和原始 API(MessagePackWriter、MessagePackReader)。

5、类型安全和灵活性: 支持对象序列化,包括 DataContract 兼容性、只读/不可变对象成员序列化、联合类型等。

6、安全性: 提供了对反序列化时安全性的考虑,可以配置安全选项以降低执行任意代码或拒绝服务攻击的风险。

7、扩展性: 支持通过扩展包来扩展序列化支持,例如 ReactiveProperty、Unity 特定类型等。

8、Unity 和 Xamarin 的 AOT 代码生成支持: 针对 Unity 和 Xamarin 等平台提供了 AOT(Ahead Of Time)编译支持。

9、平台支持: 支持 .NET Standard 2.0,并对 .NET Core 2.1+ 进行了特别优化,兼容大多数较新的 .NET 运行时环境。

02

使用方法

1、安装依赖库

Install-Package MessagePack

2、定义要被序列化的类

使用 [MessagePackObject] 属性对其进行标注。类成员使用 [Key] 属性标注,以指定序列化时使用的键。

[MessagePackObject]
public class MyClass
{
    [Key(0)]
    public int Age { get; set; }


    [Key(1)]
    public string FirstName { get; set; }


    [Key(2)]
    public string LastName { get; set; }


    // 所有不需要序列化的字段或属性应该使用 [IgnoreMember] 属性标注
    [IgnoreMember]
    public string FullName => FirstName + LastName;
}

3、使用 MessagePackSerializer 类来序列化和反序列化对象实例

using MessagePack;
// 创建 MyClass 的实例并设置属性
var mc = new MyClass
{
    Age = 99,
    FirstName = "hoge",
    LastName = "huga",
};


// 序列化对象到 byte 数组
byte[] bytes = MessagePackSerializer.Serialize(mc);


// 反序列化 byte 数组回 MyClass 对象
MyClass mc2 = MessagePackSerializer.Deserialize<MyClass>(bytes);


// 将 MessagePack 二进制 blob 转换为人类可读的 JSON 表示形式
// 使用索引键(与字符串键相对)将序列化为 MessagePack 数组,
// 因此属性名称不可用。[99,"hoge","huga"]
var json = MessagePackSerializer.ConvertToJson(bytes);
Console.WriteLine(json);

85e92812acac0f222938ae5c3ae4cd9f.png

03

项目地址

https://github.com/MessagePack-CSharp/MessagePack-CSharp  

觉得好看 点个在看👇

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值