美文网首页Asp.net开发.NET C#
一个高性能的.NET序列化库:ZeroFormatter

一个高性能的.NET序列化库:ZeroFormatter

作者: 天兵公园 | 来源:发表于2017-07-20 00:33 被阅读325次

    常见的序列化方式有有 XML JSON 以及二进制,XML 和 JSON 因为都是文本,在有些场景并不合适使用,自带的二进制序列化产生的干扰太多,于是上全球最大的同性交友网站上找了一个序列化库,这货很好用,并且还支持 .NET Core 和 Unity。

    Github:https://github.com/neuecc/ZeroFormatter
    Nuget:https://www.nuget.org/packages/ZeroFormatter

    推荐用 PM 安装:

    PM> Install-Package ZeroFormatter
    

    将你的需要序列化的类标记为 ZeroFormattable ,不需要序列化的字段标记为 IgnoreFormat

    [ZeroFormattable]
    public class MyClass
    {
        // Index is key of serialization
        [Index(0)]
        public virtual int Age { get; set; }
    
        [Index(1)]
        public virtual string FirstName { get; set; }
    
        [Index(2)]
        public virtual string LastName { get; set; }
    
        // When mark IgnoreFormatAttribute, out of the serialization target
        [IgnoreFormat]
        public string FullName { get { return FirstName + LastName; } }
    
        [Index(3)]
        public virtual IList<int> List { get; set; }
    }
    

    使用方法:

    class Program
    {
        static void Main(string[] args)
        {
            var mc = new MyClass
            {
                Age = 99,
                FirstName = "hoge",
                LastName = "huga",
                List = new List<int> { 1, 10, 100 }
            };
    
            var bytes = ZeroFormatterSerializer.Serialize(mc);
            var mc2 = ZeroFormatterSerializer.Deserialize<MyClass>(bytes);
    
            // ZeroFormatter.DynamicObjectSegments.MyClass
            Console.WriteLine(mc2.GetType().FullName);
        }
    }
    

    按照官方的例子序列化生成的 byte[] 长度只有 60 个字节!太简洁了有木有。

    本文在依然在 天兵公园 公众号,博客简书 同步发布,转载前务必联系

    相关文章

      网友评论

      本文标题:一个高性能的.NET序列化库:ZeroFormatter

      本文链接:https://www.haomeiwen.com/subject/mvnrkxtx.html