首先下载protobuf库,可以用Nuget。
demo:
using System;
namespace Tools
{
public class BufHelp
{
///
/// 对象锁
///
private readonly static Object Locker = new Object();
/
/ 读写分离锁
/
/ aaaaa
//private static ReaderWriterLockSlim rwl = new ReaderWriterLockSlim();
///
/// 序列化-表字段业务信息
///
public static bool ProtoBufSerialize(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(file, model);
return true;
}
}
}
catch
{
return false;
}
}
public static T ProtoBufDeserialize(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(file);
return result;
}
}
}
return default(T);
}
}
}///
/// 序列化
///
public static string Serialize(T t) where T : class
{
using (MemoryStream ms = new MemoryStream())
{
ProtoBuf.Serializer.Serialize(ms, t);
return Encoding.UTF8.GetString(ms.ToArray());
}
}
///
/// 反序列化
///
public static T DeSerialize(string content) where T : class
{
using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(content)))
{
T t = ProtoBuf.Serializer.Deserialize(ms);
return t;
}
}
以上这篇protobuf对象二进制序列化存储(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
时间: 2017-02-13