Protobuf-Net 下载安装使用
来源:互联网 发布:电子地图绘制软件 编辑:程序博客网 时间:2024/06/05 03:24
在序列化速度的跑分中,Protobuf一骑绝尘,序列化速度快,性能强,体积小,所以打算了解下这个利器
1:安装篇
谷歌官方没有提供.net的实现,所以在nuget上找了一个移植的
Nuget里搜索Protobuf-net,下载,自动添加到项目中
项目引用中添加你需要的protobuf-net版本(在文件夹中找到dll拖拽到引用中)
2:定义数据结构
using ProtoBuf;namespace ConsoleApplication1{[ProtoContract]class Person{[ProtoMember(1)]public int Id { get; set; }[ProtoMember(2)]public string Name { get; set; }[ProtoMember(3)]public Address Address { get; set; }}[ProtoContract]class Address{[ProtoMember(1)]public string Line1 { get; set; }[ProtoMember(2)]public string Line2 { get; set; }}}
3:封装简单操作类
using System.IO;using System.Text;using ProtoBuf;namespace ConsoleApplication1{public class ProtobufHelper { /// <summary> /// 序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="t"></param> /// <returns></returns> public static string Serialize<T>(T t) { using (MemoryStream ms = new MemoryStream()) {Serializer.Serialize<T>(ms, t);return Encoding.UTF8.GetString(ms.ToArray()); } } /// <summary> /// 反序列化 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="content"></param> /// <returns></returns> public static T DeSerialize<T>(string content) { using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(content))) {T t = Serializer.Deserialize<T>(ms);return t; } } }}
4:操作体验
using System;using System.Collections.Generic;using System.IO;namespace ConsoleApplication1{class Program{static void Main(string[] args){var p1 = new Person{Id = 1,Name = "八百里开外",Address = new Address{Line1 = "Line1",Line2 = "Line2"}};var p2 = new Person{Id = 2,Name = "一枪",Address = new Address{Line1 = "Flat Line1",Line2 = "Flat Line2"}};List<Person> pSource = new List<Person>() { p1, p2 };string content = ProtobufHelper.Serialize<List<Person>>(pSource);Console.Write(content);//写入文件File.WriteAllText("D://hello.txt", content);Console.WriteLine("\r\n****解析部分*****");List<Person> pResult = ProtobufHelper.DeSerialize<List<Person>>(content);foreach (Person p in pResult){Console.WriteLine(p.Name);}Console.Read();}}}
0 0
- Protobuf-Net 下载安装使用
- Unity 使用 Protobuf-net
- protobuf安装与使用
- protobuf 安装和使用
- protobuf 安装与使用
- protobuf 安装与使用
- protobuf安装使用
- Protobuf windows安装使用
- Unity中使用Protobuf-net
- Protobuf-net ProtoGen的使用
- Unity3d protobuf-net的使用
- protobuf + vs2013 下载.安装与编译!
- Protobuf 的安装使用总结
- protobuf的安装和使用
- protobuf 的安装与使用
- protobuf的安装和使用
- mac protobuf java安装使用
- ProtoBuf安装和使用简介
- [绍棠] 应用内支付(IAP)详解
- 如何学习ios应用开发?
- Centos中使用cron定时执行任务
- 关于keychain
- IOS7 UI状态保持和恢复
- Protobuf-Net 下载安装使用
- Android应用开发性能优化完全分析
- SSH框架之Hibernate的查询详解(2)、hql查询优化
- 娱乐节目电子投票系统
- CDHtmlDialog屏蔽网页右键菜单
- 服务器出现502错误 可能进程过多导致
- Thrift源码分析(二)-- 协议和编解码
- 详解Dagger2
- ORB特征