Protobuf-net基础

本文在于巩固基础

先了解什么是protobuf

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

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

点击 准备工作

下面看看一个简单的实例

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

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

Protobuf-net基础

这里的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("[email protected]");

            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,[email protected],TEXT
请按任意键继续. . .

你可能感兴趣的:(protobuf)