protobuf對象二進制序列化存儲(詳解)。本站提示廣大學習愛好者:(protobuf對象二進制序列化存儲(詳解))文章只能為提供參考,不一定能成為您想要的結果。以下是protobuf對象二進制序列化存儲(詳解)正文
首先下載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對象二進制序列化存儲(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。