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 }
View Code

相关文章: