.NET中比肩System.Text.Json序列化反序列化组件MessagePack

简介

    官方定义:MessagePack是一种高效的二进制序列化格式。它允许您像JSON一样在多个语言之间交换数据。但是它更快并且更小。

    MessagePack是一种开源的序列化反序列化组件,可支持JAVA,C#等主流语言。在 C# 中使用 MessagePack,需要添加 MessagePack-CSharp组件,在.NET6之后直接添加 MessagePack。它支持 .NET Framework、.NET Core 和 Unity 应用程序。它提供了一个简单的 API,可以帮助开发人员在应用程序中快速实现对象的序列化和反序列化。使用 MessagePack组件,可以将对象序列化为二进制数据,这样可以将数据存储在文件或网络中,以便以后使用。也可以将二进制数据反序列化为对象,这样可以在应用程序中轻松地对数据进行操作。

一、使用方法

    新建一个.NET项目,使用Nuget工具添加 MessagePack组件;并在使用的代码页面添加命名空间MessagePack;添加完成之后就可以在这个代码页面使用了。代码如下:

//本文使用是包MessagePack-CSharp
 using MessagePack;
  public void TestMessage()
 {
     MyClass message = new MyClass()
     {
         Name = "DOTNET开发跳槽",
         Quantity = 100,
         Anything = new List<object>(new object[] { "欢迎关注公众号DOTNET开发跳槽", 2, false, 4.2d, "祝大家学业有成" })
     };

     // 序列化
     byte[] buffer = MessagePackSerializer.Serialize(message, MessagePack.Resolvers.ContractlessStandardResolver.Instance);
     var json= MessagePackSerializer.ToJson(buffer);
     // 反序列化
     MyClass returnMsg = MessagePackSerializer.Deserialize<MyClass>(buffer,MessagePack.Resolvers.ContractlessStandardResolver.Instance);
 }

    //类如下     
    public class MyClass
    {
        public string Name { get; set; }
        public int Quantity { get; set; }
        public List<object> Anything { get; set; }
    } 

效果如下:

二、MessagePack 与 System.Text.Json比较

MessagePack-CSharp 与 System.Text.Json 都是用于序列化和反序列化数据的工具,但它们有一些不同点。

1. 数据大小

MessagePack-CSharp 生成的数据通常比 System.Text.Json 生成的数据更小,因为 MessagePack-CSharp 使用了一些压缩技术。这意味着在网络传输和存储上,使用 MessagePack-CSharp 可能会更加有效。

2. 性能

MessagePack-CSharp 在序列化和反序列化上的性能通常比 System.Text.Json 更快。这是因为 MessagePack-CSharp 使用了基于二进制的数据格式,而不是基于文本的格式。此外,MessagePack-CSharp 还提供了一些高级选项,例如多线程序列化和反序列化。

性能方面有博主测试了这两者的性能,大家可以参考一下,结果图片如下:

上图方法2和方法4是System.Text.Json的方法,由此可见MessagePack是优于System.Text.Json的。

3. 运行环境支持

MessagePack-CSharp 对各种运行环境的支持比 System.Text.Json 更广泛。例如,MessagePack-CSharp 不仅可以在 .NET 和 .NET Core 上运行,还可以在 Unity 和 Xamarin 等其他平台上运行。

4. 数据可读性

System.Text.Json 生成的数据通常比 MessagePack-CSharp 生成的数据更易于人类阅读和解码。这是因为 System.Text.Json 使用了 JSON 格式,该格式是一种易于阅读和编写的文本格式。

综上所述,选择哪种工具取决于您的具体需求。如果您需要快速的序列化和反序列化速度和小的数据大小,则 MessagePack-CSharp 是一个不错的选择。如果您需要可读性更好的数据并且不太在意性能,则 System.Text.Json 是一个不错的选择。

三、结语

    本文介绍了MessagePack和它在C#的使用,以及它与System.Text.Json的比较,总的来说MessagePack优于System.Text.Json,当然使用的话得根据你的项目情况来定。希望本文能对你有所收获,同时欢迎大家吐槽。

MessagePack官网:https://msgpack.org/

参考:chatGPT

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值