今天的主角就是protobuf-net

前言,我要解决的问题是,.NET的序列化问题,以前序列化Model,一旦当这个Model的字段发生了变化,那么就惨了。无法读取。必须重新来过。今天搞定它啦。

 

 

点击build-data进行创建data数据。

private void button1_Click(object sender, EventArgs e) {
            List<User> list = new List<User>();
            for (int i = 0; i < 1000; i++) {
                //list.Add(new User() { UserID = i, UserName = "u" + i.ToString(), UserName2 = "u2" + i.ToString() });
                list.Add(new User() { UserID = i, UserName = "u" + i.ToString() });
            }

            //protobuff
            string path = AppDomain.CurrentDomain.BaseDirectory + "protobuf.txt";
            using (Stream file = File.Create(path)) {
                Serializer.Serialize<List<User>>(file, list);
                file.Close();
            }
        }

看看txt文件中的数据样子。

 

点击show-data显示刚刚创建的数据。

无法增减User类中的字段。

[ProtoContract]
    public class User {
        [ProtoMember(1, IsRequired = true)]
        public int UserID { get; set; }

        [ProtoMember(2, IsRequired = true)]
        public string UserName { get; set; }

        //[ProtoMember(3)]
        //public string UserName2 { get; set; }

    }

均可以正常读取。欧叶。

 

源码下载:http://files.cnblogs.com/renzhe/protobufTest.zip

时间: 2024-07-29 04:13:49

今天的主角就是protobuf-net的相关文章

python通过protobuf实现rpc

由于项目组现在用的rpc是基于google protobuf rpc协议实现的,所以花了点时间了解下protobuf rpc.rpc对于做分布式系统的人来说肯定不陌生,对于rpc不了解的童鞋可以自行google,这里只是做个简单的介绍.rpc的主要功能是让分布式系统的实现更为简单,为提供强大的远程调用而不损失本地调用语义的简洁性.为了实现这个目标,rpc框架需要提供一种透明调用机制让使用者不必显示区分本地调用还是远程调用.rpc架构涉及的组件如下: 客户方像调用本地方法一样去调用远程接口方法,R

Centos6.4下安装protobuf及简单使用

1.protobuf是google公司提出的数据存储格式,详细介绍可以参考:https://code.google.com/p/protobuf/ 2.下载最新的protobuf,下载地址:https://code.google.com/p/protobuf/downloads/list 3.下载protobuf2.5.o版本,protobuf-2.5.0.tar.gz解压并进行安装. 解压:tar xvf protobuf-2.5.0.tar.gz 安装步骤:(1)./configure (2

OpenGL在什么样的领域才是主角?

从OpenGL入门到现在掌握OpenGL开发(仅仅是掌握而已).随着对OpenGL理解的加深,也一点点的了解OpenGL所涉及的行业,有些行业OpenGL是主角,有些行业OpenGL是配角,之所以自己一直对OpenGL感兴趣是因为它是世界的图形API,就像C/C++一样.可能说到底,自己还是对计算机图形学技术感兴趣,就跟有人对互联网开发技术感兴趣,有人对智能手机APP感兴趣,有人对嵌入式技术感兴趣一样,有些人甚至对木马病毒技术感兴趣...这些对技术感兴趣的人都相信它们对将来有用.但有些场景Ope

HDOJ 2022 海选女主角

海选女主角 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 33839    Accepted Submission(s): 15178 Problem Description potato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口. "做什么比较挣钱呢?筛沙子没力气,看大门又不够帅..."

基于protobuf的RPC实现

可以对照使用google protobuf RPC实现echo service一文看,细节本文不再描述. google protobuf只负责消息的打包和解包,并不包含RPC的实现,但其包含了RPC的定义.假设有下面的RPC定义: service MyService { rpc Echo(EchoReqMsg) returns(EchoRespMsg) } 那么要实现这个RPC需要最少做哪些事?总结起来需要完成以下几步: 客户端 RPC客户端需要实现google::protobuf::RpcCh

Android游戏开发之主角的移动与地图的平滑滚动

人物移动地图的平滑滚动处理 玩过rpg游戏的朋友应该都知道RPG的游戏地图一般都比较大 今天我和大家分享一下在RPG游戏中如何来处理超出手机屏幕大小的游戏地图. 如图所示为程序效果动画图 地图滚动的原理 在本人之前博客的文章中介绍过人物在屏幕中的移动方式,因为之前拼的游戏地图是完全填充整个手机屏幕的,所以无需处理地图的平滑滚动.这篇文章我着重的向 大家介绍一下控制人物移动后地图滚动的处理方式.举个例子 如上图所示 比如人物向右移动,如果地图贴在屏幕左边边界 将先移动人物在地图的坐标,当人物在屏幕

Windows下编译protobuf v3.3.0

一:概述 关于 protobuf 在此不再多说,此处记录下成功编译步骤以备日后查阅.注意:本文并不是使用cmake gui进行编译的,如果熟悉cmake gui的话,也可以使用gui进行生成编译. 二:准备资源及工具 VS2013或以上版本,安装好 protobuf 源码,下载地址:官网:http://code.google.com/p/protobuf/git网:https://github.com/google/protobuf或git:https://github.com/google/p

Skynet服务器框架(五) 使用pbc(protobuf)

引言: 假如我们要建立的skynet服务器与客户端的连接方式为长连接,且选择了Google的Protobuf来定制我们的网络协议,那么,接下来我们要解决的问题就是:如何在skynet框架中使用socket+protobuf. API 几个常用的skynet接口: * 输出错误信息: skynet.error(...) * 获取本地服务句柄方式: skynet.localname(...) * 设置定时器方式: skynet.timeout(...) * skynet强制退出方式: skyname

uLua/toLua加载protobuf转lua的table为bool的解决方法

当我们加载protobuf对应的lua的table的时候,我们使用如下方式来加载 local person_pb = require 'Protol.person_pb' 注意,这个table前面的Protol.这段一定不能去掉,如果去掉了,你加载到的persob_pb将会是一个bool类型的值. 如果加上这个Protol.的话,你才能加载到真正有的数据表. 也许是lua和protobuf工具关联时的一个约定,也许是这样,反正要放在protol文件夹下就能加载到数据表.

序列化之protobuf与avro对比(Java)

最近在做socket通信中用到了关于序列化工具选型的问题,在调研过程中开始趋向于用protobuf,可以省去了编解码的过程.能够实现快速开发,且只需要维护一份协议文件即可. 但是调研过程中发现了protobuf的一些弊端,比如需要生成相应的文件类,和业务绑定太紧密,所以在看了AVRO之后发现它完美解决了这个问题. 下面记录下对这两种序列化工具的入门与测评. 一.protobuf基本操作 protobuf简介: Protocol Buffers (a.k.a., protobuf) are Goo