zoukankan      html  css  js  c++  java
  • MessasgePack:一个小巧高效的序列化方式

    MessagePack是一种高效二进制序列化格式。可以在多种语言中进行快速数据交换,比如JSON格式等。它比Json更加小巧,更加高效,可以用于一些结构化数据存储 ,非常适合适用于消息总线,MemoryCache等对序列化要求比较高的场合。

    MessagePack基本上被大多数主流语言支持,因此用它来作为教程间交换的消息序列化也是一种不错的方式,本文这里简单的介绍一下如何在.Net 中使用MessagePack。

    首先安装MessagePack和MessagePackAnalyzer的Nuget包:

    • Install-Package MessagePack
    • Install-Package MessagePackAnalyzer

    其中MessagePackAnalyzer是可选的,但它可以帮助检查序列化标记的正确性,还是非常有用的。

    如下就是一个简单的示例,非常简单,我就不多介绍了。 

    // mark MessagePackObjectAttribute
    [MessagePackObject]
    public class MyClass
    {
        // Key is serialization index, it is important for versioning.
        [Key(0)]
        public int Age { get; set; }
    
        [Key(1)]
        public string FirstName { get; set; }
    
        [Key(2)]
        public string LastName { get; set; }
    
        // public members and does not serialize target, mark IgnoreMemberttribute
        [IgnoreMember]
        public string FullName { get { return FirstName + LastName; } }
    }
    
    class Program
    {
        static void Main(string[] args)
        {
            var mc = new MyClass
            {
                Age = 99,
                FirstName = "hoge",
                LastName = "huga",
            };
    
            // call Serialize/Deserialize, that's all.
            var bytes = MessagePackSerializer.Serialize(mc);
            var mc2 = MessagePackSerializer.Deserialize<MyClass>(bytes);
    
            // you can dump msgpack binary to human readable json.
            // In default, MeesagePack for C# reduce property name information.
            // [99,"hoge","huga"]
            var json = MessagePackSerializer.ToJson(bytes);
            Console.WriteLine(json);
        }
    }
    View Code

     另外,网上也有不少介绍MessagePack的文章,如果感兴趣可以参考下如下文章:

  • 相关阅读:
    redis对string进行的相关操作
    bs4解析库
    redis对键进行的相关操作
    python常见的函数和类方法
    一些(也许)有用的技巧以及注意事项
    【复健内容】NOIP2020 题解
    类欧几里得的一个方法
    UOJ Round #12
    Goodbye Yiwei
    UOJ Round #11
  • 原文地址:https://www.cnblogs.com/TianFang/p/6613372.html
Copyright © 2011-2022 走看看