protobuffer 序列化 php,.NET中使用Protobuffer 实现序列化和反序列化的详解

.NET中使用Protobuffer实现序列化和反序列化

1. 到官方下载protobuf-net.dll,官方地址:http://code.google.com/p/protobuf-net/

2. 建一个控制台应用程序

3. 添加类库:protobuf-net.dll到应用程序。

示例代码:

准备一个要测试的实体类(注意类和方法都要加上protoBuffer序列化的特性):[ProtoContract]

public class Student

{

[ProtoMember(1)]

public intStudentId { get; set; }

[ProtoMember(2)]

public stringName { get; set; }

[ProtoMember(3)]

public stringClassName { get; set; }

}

然后对这个类进行序列化和反序列化using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using ProtoBuf;

using ProtoBufferDemo.Entity;

using System.IO;

namespace ProtoBufferDemo

{

class Program

{

private const string TestPath = @"D:/1.txt";

static void Main(string[] args)

{

序列化//

Student stu = new Student()

{

StudentId = 1,

Name = "zhangsan",

ClassName = "classOne"

};

if (!File.Exists(TestPath))

{

FileStream fs = File.Create(TestPath,1024, FileOptions.Asynchronous);

fs.Dispose();

}

Console.WriteLine("开始序列化并导出到文件...");

using (Stream s = new FileStream(TestPath,FileMode.Open ,FileAccess.ReadWrite))

{

Serializer.Serialize(s, stu);

s.Close();

}

Console.WriteLine("序列化完毕");

//反序列化

Console.WriteLine("反序列化并输出...");

using (Stream s = new FileStream(TestPath,FileMode.Open))

{

Student st = Serializer.Deserialize(s);

Console.WriteLine("studentName:"+ stu.Name + "/r/n" +

"studentId:"+ stu.StudentId + "/r/n" +

"className:" + stu.ClassName);

s.Close();

}

Console.Read();

}

}

}

现在考虑一下多个实体的情况,测试一下序列化一个集合:class Program

{

private const string TestPath = @"D:/1.txt";

static void Main(string[] args)

{

序列化//

List stu = new List()

{

new Student(){

StudentId = 1,

Name = "zhangsan",

ClassName = "classOne"},

new Student(){StudentId = 2,

Name = "lisi",

ClassName = "classTwo"}

};

if (!File.Exists(TestPath))

{

FileStream fs = File.Create(TestPath,1024, FileOptions.Asynchronous);

fs.Dispose();

}

Console.WriteLine("开始序列化并导出文件...");

using (Stream s = new FileStream(TestPath,FileMode.Open, FileAccess.ReadWrite))

{

Serializer.Serialize>(s,stu);

s.Close();

}

Console.WriteLine("序列化完毕");

//反序列化

Console.WriteLine("反序列化并输出...");

using (Stream s = new FileStream(TestPath,FileMode.Open))

{

List sl = Serializer.Deserialize>(s);

foreach (var student in sl)

{

Console.WriteLine("studentName:"+ student.Name + "/r/n" +

"studentId:" + student.StudentId + "/r/n" +

"class Name:" + student.ClassName);

}

s.Close();

}

Console.Read();

}

}

以上就是.NET中使用Protobuffer 实现序列化和反序列化的详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值