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对象二进制序列化存储(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。