zoukankan      html  css  js  c++  java
  • 最快的序列化组件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

  • 相关阅读:
    求多边形的面积
    Sequence operation3397
    Atlantis1542(线段树求矩形覆盖面积)
    hdu3033 分组背包(每组最少选一个)
    poj3468A Simple Problem with Integers(线段树延时更新)
    Picture 1828
    Minimum Inversion Number 1394(线段树法)
    hdu2955 Robberies 01背包
    C# 对MongoDB数据库进行增删该
    C#连接MongoDB数据库应用实战
  • 原文地址:https://www.cnblogs.com/wuxl360/p/5552008.html
Copyright © 2011-2022 走看看