Protobuf-net基础

本文在于巩固基础

先了解什么是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
请按任意键继续. . .

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