• 最快的序列化组件protobuf的.net版本protobuf.net


    Protobuf是google开源的一个项目,用户数据序列化反序列化,google声称google的数据通信都是用该序列化方法。它比xml格式要少的多,甚至比二进制数据格式也小的多。
         Protobuf格式协议和xml一样具有平台独立性,可以在不同平台间通信,通信所需资源很少,并可以扩展,可以旧的协议上添加新数据
         Protobuf是在java和c++运行的,Protobuf-net当然就是Protobuf在.net环境下的移植。 通过一些网友测试发现,protobuf是目前最快的序列化组件,并且序列化之后内容的体积也是最小的,比ServiceStack.Text、 NewtonSoft.Json都快,秒杀.net自带的XML,Binary的序列化。

    Get Start

    [ProtoBuf.ProtoContract]    public class Person
        {
            [ProtoBuf.ProtoMember(1)]        public int Id { get; set; }
            [ProtoBuf.ProtoMember(2)]        public string Name { get; set; }
            [ProtoBuf.ProtoMember(3)]        public Address Address { get; set; }
        }
     
        [ProtoBuf.ProtoContract]    public class Address
        {
            [ProtoBuf.ProtoMember(1)]        public string Line1 { get; set; }
            [ProtoBuf.ProtoMember(2)]        public string Line2 { get; set; }
        }

    最快的序列化组件protobuf的.net版本protobuf.net

          Protobuf是google开源的一个项目,用户数据序列化反序列化,google声称google的数据通信都是用该序列化方法。它比xml格式要少的多,甚至比二进制数据格式也小的多。
         Protobuf格式协议和xml一样具有平台独立性,可以在不同平台间通信,通信所需资源很少,并可以扩展,可以旧的协议上添加新数据
         Protobuf是在java和c++运行的,Protobuf-net当然就是Protobuf在.net环境下的移植。 通过一些网友测试发现,protobuf是目前最快的序列化组件,并且序列化之后内容的体积也是最小的,比ServiceStack.Text、 NewtonSoft.Json都快,秒杀.net自带的XML,Binary的序列化。

    Get Start

    [ProtoBuf.ProtoContract]    public class Person
        {
            [ProtoBuf.ProtoMember(1)]        public int Id { getset; }
            [ProtoBuf.ProtoMember(2)]        public string Name { getset; }
            [ProtoBuf.ProtoMember(3)]        public Address Address { getset; }
        }
     
        [ProtoBuf.ProtoContract]    public class Address
        {
            [ProtoBuf.ProtoMember(1)]        public string Line1 { getset; }
            [ProtoBuf.ProtoMember(2)]        public string Line2 { getset; }
        }

    类 前加上ProtoContract Attrbuit,成员加上ProtoMember Attribute即可,其中ProtoMember需要一个大于0的int类型的值,原则上这个int类型没有大小限制,但建议从1开始,这是一个良好 的习惯,另外这个参数必需是这个类成员的唯一标识,不可重复

    序列化

    var person = new Person
                {
                    Id = 1,
                    Name = "First",
                    Address = new Address { Line1 = "Line1", Line2 = "Line2" }
                };            using (var file = System.IO.File.Create("Person.bin"))
                {
                    ProtoBuf.Serializer.Serialize(file, person);
                }

    相关资料请参考开源地址:https://github.com/mgravell/protobuf-net

  • 相关阅读:
    本地数据存储
    网络统计公式
    网络统计图形
    上海证券综合指数统计分析及挖掘(二)
    上海证券综合指数统计分析及挖掘(一)
    概论
    寿险精算学目录
    JavaScript脚本代码练习
    JavaScript脚本语言基础(一)
    层叠样式表(CSS)
  • 原文地址:https://www.cnblogs.com/wuxl360/p/5552008.html
Copyright © 2020-2023  润新知