c#中的序列化是指将对象写入流的过程,反序列话是指将对象从流中读取的过程。
protobuf-net:
Protobuf是google开源的一个项目,用户数据序列化反序列化,google声称google的数据通信都是用该序列化方法。它比xml格式要少的多,甚至比二进制数据格式也小的多。
Protobuf格式协议和xml一样具有平台独立性,可以在不同平台间通信,通信所需资源很少,并可以扩展,可以旧的协议上添加新数据
ProtobufHelper类
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 using ProtoBuf; 7 8 namespace Protobuf_Ne 9 { 10 class ProtobufHelper 11 { 12 /// <summary> 13 /// 序列化 14 /// </summary> 15 /// <typeparam name="T"></typeparam> 16 /// <param name="path">文件地址</param> 17 /// <param name="t">数据集合</param> 18 public static void Serialize<T>( string path,T t) 19 { 20 //写入本地文件 21 using (Stream file = File.Create(path)) 22 { 23 Serializer.Serialize<T>(file, t); 24 file.Close(); 25 } 26 //写入内存 27 //using (MemoryStream ms = new MemoryStream()) 28 //{ 29 // Serializer.Serialize<T>(ms, t); 30 // Serializer.Serialize<T>(file, t); 31 // return Encoding.UTF8.GetString(ms.ToArray()); 32 //} 33 } 34 /// <summary> 35 /// 反序列化 36 /// </summary> 37 /// <typeparam name="T"></typeparam> 38 /// <param name="path">文件地址</param> 39 /// <returns></returns> 40 public static T DeSerialize<T>(string path) 41 { 42 using (Stream file = File.OpenRead(path)) 43 { 44 return Serializer.Deserialize<T>(file); 45 } 46 //读取内存中的数据 47 //using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(content))) 48 //{ 49 // T t = Serializer.Deserialize<T>(ms); 50 // return t; 51 //} 52 } 53 } 54 }