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()] public int Id { get; set; }
[ProtoBuf.ProtoMember()] public string Name { get; set; }
[ProtoBuf.ProtoMember()] public Address Address { get; set; }
} [ProtoBuf.ProtoContract] public class Address
{
[ProtoBuf.ProtoMember()] public string Line1 { get; set; }
[ProtoBuf.ProtoMember()] 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 = ,
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

最快的序列化组件protobuf的.net版本protobuf.net的更多相关文章

  1. ServiceStack.Text 更快的序列化

    Json.net 是以前最经常用的序列化组件,后来又注意到ServiceStack号称最快的,所以我做了以下测试 1)Json.net using System; using System.Colle ...

  2. Zookeeper 源码(二)序列化组件 Jute

    Zookeeper 源码(二)序列化组件 Jute 一.序列化组件 Jute 对于一个网络通信,首先需要解决的就是对数据的序列化和反序列化处理,在 ZooKeeper 中,使用了Jute 这一序列化组 ...

  3. DjangoRestFramework学习二之序列化组件、视图组件 serializer modelserializer

      DjangoRestFramework学习二之序列化组件.视图组件   本节目录 一 序列化组件 二 视图组件 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 序列化组 ...

  4. cvb源码分析,resful规范,drf,drf序列化组件,95

    1 CBV的源码分析 -Class Base View(基于类的视图) -Function Base View(基于函数的视图) -def as_view 类方法 -def view:类方法内部,闭包 ...

  5. rest-framework之APIView 序列化组件

    rest-framework之APIView 一 安装djangorestframework 方式一:pip3 install djangorestframework 方式二:pycharm图形化界面 ...

  6. drf 之序列化组件

    序列化 把Python中对象转换为json格式字符串 反序列化 把json格式转为为Python对象. 用orm查回来的数据都是都是一个一个的对象, 但是前端要的是json格式字符串. 序列化两大功能 ...

  7. DRF 序列化组件

    Serializers 序列化组件 Django的序列化方法 class BooksView(View): def get(self, request): book_list = Book.objec ...

  8. python全栈开发day99-DRF序列化组件

    1.解释器组件源码分析 https://www.processon.com/view/link/5ba0a8e7e4b0534c9be0c968 2.基于CBV的接口设计 1).django循环que ...

  9. Serializers 序列化组件

    Serializers 序列化组件   为什么要用序列化组件 当我们做前后端分离的项目~~我们前后端交互一般都选择JSON数据格式,JSON是一个轻量级的数据交互格式. 那么我们给前端数据的时候都要转 ...

随机推荐

  1. DELPHI控件属性事件说明

    常用DELPHI控件属性事件设置说明 常用DELPHI控件属性设置说明目录TForm Class TPanel组件 TToolBar Class TToolButton Class TTimer Cl ...

  2. BZOJ4567 SCOI2016背单词(trie+贪心)

    倒过来变成查询前缀.考虑怎么排序.第一条代价n*n就相当于inf,说明一个单词的所有前缀都要排在它前面.那么串的依赖关系就是trie的结构.二三条说明代价是Σidi-idfa,那么显然最后的编号应该是 ...

  3. The XOR Largest Pair

    刷刷书上的例题 在给定的N个整数A1,A2……An中选出两个进行XOR运算,得到的结果最大是多少?N<=105,0<=Ai<231 SOlution: 我们思考到对于两个数相异或,是 ...

  4. C&C++——库头文件及其作用

    1. 一些头文件的作用::ANSI C.提供断言,assert(表达式):GCC.GTK,GNOME的基础库,提供很多有用的函数,如有数据结构操作函数.使用glib只需要包含:GCC.文件夹操作函数. ...

  5. pb_ds

    #include<ext/pb_ds/priority_queue.hpp>#define ll long long#define pa pair<ll,int>using n ...

  6. sshd_conf配置

    #    $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $   # This is the sshd server system-w ...

  7. E. Intercity Travelling

    E. Intercity Travelling time limit per test 1.5 seconds memory limit per test 256 megabytes input st ...

  8. 使用记事本创建Web服务(WebService)

    学习就要从最简单最直观的地方入手. 1)打开记事本,添加如下代码: <%@ WebService Language="C#" Class="myFirstWebSe ...

  9. 用静态工厂的方法实例化bean

    //代码如下: package com.timo.domain; public class ClientService { //use static factory method create bea ...

  10. mapreduce出现大量task被KILLED_UNCLEAN的3个原因

    Request received to kill task 'attempt_201411191723_2827635_r_000009_0' by user ------- Task has bee ...