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