protobuf对象二进制序列化存储(详解)
2017-02-15 10:49
731 查看
首先下载protobuf库,可以用Nuget。
demo:
using System; namespace Tools { public class BufHelp { /// <summary> /// 对象锁 /// </summary> private readonly static Object Locker = new Object(); ///// <summary> ///// 读写分离锁 ///// </summary> ///// <remarks>aaaaa</remarks> //private static ReaderWriterLockSlim rwl = new ReaderWriterLockSlim(); /// <summary> /// 序列化-表字段业务信息 /// </summary> public static bool ProtoBufSerialize<T>(T model, string filename) where T : class { try { string binpath = Config.KeyCenter.KeyBaseDirectory + @"Config\"; if (!System.IO.Directory.Exists(binpath)) System.IO.Directory.CreateDirectory(binpath); lock (Locker) { using (var file = System.IO.File.Create(binpath + filename)) { ProtoBuf.Serializer.Serialize<T>(file, model); return true; } } } catch { return false; } } public static T ProtoBufDeserialize<T>(string filename) where T : class { var dbpath = Config.KeyCenter.KeyBaseDirectory + @"Config\" + filename; if (System.IO.File.Exists(dbpath)) { lock (Locker) { using (var file = System.IO.File.OpenRead(dbpath)) { var result = ProtoBuf.Serializer.Deserialize<T>(file); return result; } } } return default(T); } } }/// <summary> /// 序列化 /// </summary> public static string Serialize<T>(T t) where T : class { using (MemoryStream ms = new MemoryStream()) { ProtoBuf.Serializer.Serialize<T>(ms, t); return Encoding.UTF8.GetString(ms.ToArray()); } } /// <summary> /// 反序列化 /// </summary> public static T DeSerialize<T>(string content) where T : class { using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(content))) { T t = ProtoBuf.Serializer.Deserialize<T>(ms); return t; } }
以上这篇protobuf对象二进制序列化存储(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章推荐
- protobuf对象二进制序列化存储
- hiredis 保存protobuf序列化后的二进制数据
- C# 使用 protobuf 进行对象序列化与反序列化
- protobuf序列化存储
- netty学习七:集成protobuf完成单个对象序列化以及在网络上传输
- C#使用Protocol Buffer(ProtoBuf)进行对象的序列化与反序列化
- Simple-Spring-Memcached使用Protobuf序列化Java对象
- Unity使用protobuf-net进行二进制序列化与反序列化
- 模仿protobuf的对象序列化系统
- redis存储对象与对象序列化详解
- 手工使用Protobuf-net工具来序列化对象
- protobuf-net的序列化与反序列化(本地存储)
- c++ java中关于protobuf反序列化对象实体和实体处理(函数)关系(二)
- c++ java中关于protobuf反序列化对象实体和实体处理(函数)关系 (一)
- Beetle使用Protobuf.net进行对象序列化传输
- 通讯协议序列化解读(一) Protobuf详解教程
- AS3对象序列化存储
- Memcached中Perl序列化存储的对象PHP无法读取的解决
- Memcached中Perl序列化存储的对象PHP无法读取的解决
- 使用Java序列化把对象存储到文件中,再从文件中读出来