protobuf对象二进制序列化存储(详解)
首先下载protobuf库,可以用Nuget。
demo:
usingSystem;
namespaceTools
{
publicclassBufHelp
{
///<summary>
///对象锁
///</summary>
privatereadonlystaticObjectLocker=newObject();
/////<summary>
/////读写分离锁
/////</summary>
/////<remarks>aaaaa</remarks>
//privatestaticReaderWriterLockSlimrwl=newReaderWriterLockSlim();
///<summary>
///序列化-表字段业务信息
///</summary>
publicstaticboolProtoBufSerialize<T>(Tmodel,stringfilename)whereT:class
{
try
{
stringbinpath=Config.KeyCenter.KeyBaseDirectory+@"Config\";
if(!System.IO.Directory.Exists(binpath))
System.IO.Directory.CreateDirectory(binpath);
lock(Locker)
{
using(varfile=System.IO.File.Create(binpath+filename))
{
ProtoBuf.Serializer.Serialize<T>(file,model);
returntrue;
}
}
}
catch
{
returnfalse;
}
}
publicstaticTProtoBufDeserialize<T>(stringfilename)whereT:class
{
vardbpath=Config.KeyCenter.KeyBaseDirectory+@"Config\"+filename;
if(System.IO.File.Exists(dbpath))
{
lock(Locker)
{
using(varfile=System.IO.File.OpenRead(dbpath))
{
varresult=ProtoBuf.Serializer.Deserialize<T>(file);
returnresult;
}
}
}
returndefault(T);
}
}
}///<summary>
///序列化
///</summary>
publicstaticstringSerialize<T>(Tt)whereT:class
{
using(MemoryStreamms=newMemoryStream())
{
ProtoBuf.Serializer.Serialize<T>(ms,t);
returnEncoding.UTF8.GetString(ms.ToArray());
}
}
///<summary>
///反序列化
///</summary>
publicstaticTDeSerialize<T>(stringcontent)whereT:class
{
using(MemoryStreamms=newMemoryStream(Encoding.UTF8.GetBytes(content)))
{
Tt=ProtoBuf.Serializer.Deserialize<T>(ms);
returnt;
}
}
以上这篇protobuf对象二进制序列化存储(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
热门推荐
10 新人红包祝福语简短精辟
11 幼师给毕业祝福语简短
12 生日高考祝福语妹妹简短
13 下飞机祝福语简短英文
14 元宵发客户祝福语简短
15 爸妈金婚文案祝福语简短
16 新郎朋友红包祝福语简短
17 虎年五一祝福语大全简短
18 出阁宴祝福语姐姐简短