最快的序列化组件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 { 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 ; } } |
类 前加上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