码迷,mamicode.com
首页 > Web开发 > 详细

Protobuf-net基础

时间:2015-03-02 16:26:31      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

本文在于巩固基础

先了解什么是protobuf

Protobuf是google开源的一个项目,用户数据序列化反序列化,google声称google的数据通信都是用该序列化方法。它比xml格式要少的多,甚至比二进制数据格式也小的多。

Protobuf格式协议和xml一样具有平台独立性,可以在不同平台间通信,通信所需资源很少,并可以扩展,可以旧的协议上添加新数据,protobuf-net就是.net平台下的protobuf使用

点击 准备工作

下面看看一个简单的实例

上面准备工作完成后由三个文件(我这里只是举例,大家文件名肯定不一样)

技术分享

事先我已经写好的proto文件,我这里用记事本打开

技术分享

这里的package Msg编译成.cs文件后,Msg就是命名空间,message Person 编译后Person 是类名

下面是实例代码

class Program
    {
        static void Main(string[] args)
        {
            
           Deserialize(Serialize());
        }
        /// <summary>
        /// 序列化
        /// </summary>
        /// <returns></returns>
        private static byte[] Serialize()
        {
            var builder = Msg.Person.CreateBuilder();
            builder.SetId(1);
            builder.SetName("hello");
            builder.SetEmail("123456789@qq.com");
            builder.SetMsgType(Msg.Person.Types.Type.TEXT);
            Msg.Person person = builder.Build();
            
            return person.ToByteArray();
        }
        /// <summary>
        /// 反序列化
        /// </summary>
        /// <param name="bytes"></param>
        private static void Deserialize(byte[] bytes)
        {
            Msg.Person newPerson = Msg.Person.ParseFrom(bytes);
            Console.WriteLine(string.Format("{0},{1},{2},{3}", newPerson.Id, newPerson.Name, newPerson.Email, newPerson.MsgType));
        }
    }

结果为

1,hello,123456789@qq.com,TEXT
请按任意键继续. . .

Protobuf-net基础

标签:

原文地址:http://www.cnblogs.com/jixinyu/p/4308724.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!