浅谈浅谈.Net中的序列化和反序列化中的序列化和反序列化
序列化和反序列化相信大家都经常听到,也都会用, 然而有些人可能不知道:.net为什么要有这个东西以及.net Frameword如
何为我们实现这样的机制, 在这里我也是简单谈谈我对序列化和反序列化的一些理解。
一、什么序列化和反序列化一、什么序列化和反序列化
序列化通俗地讲就是将一个对象转换成一个字节流的过程,这样就可以轻松保存在磁盘文件或数据库中。反序列化是序列化的
逆过程,就是将一个字节流转换回原来的对象的过程。
然而为什么需要序列化和反序列化这样的机制呢?这个问题也就涉及到序列化和反序列化的用途了,
对于序列化的主要用途有:
将应用程序的状态保存在一个磁盘文件或数据库中,并在应用程序下次运行时恢复状态。例如, Asp.net 中利用序列化和反序
列化来保存和恢复会话状态。
一组对象可以轻松复制到Windows 窗体的剪贴板中,再粘贴回同一个或者另一个应用程序。
将对象按值从一个应用程序域中发送到另一个程序域
并且如果把对象序列化成内存中的字节流,就可以利用一些其他的技术来处理数据,例如,对数据进行加密和压缩等。
二、序列化和反序列简单使用二、序列化和反序列简单使用
.Net Framework 提供二种序列化方式:
二进制序列化
XML 和SOAP序列化
序列化和反序列化的简单使用:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace Serializable
{
[Serializable] public class Person
{
public string personName;
[NonSerialized] public string personHeight;
private int personAge;
public int PersonAge
{
get { return personAge; }
set { personAge = value; }
}
public void Write()
{
Console.WriteLine("Person Name: "+personName);
Console.WriteLine("Person Height: " +personHeight);
Console.WriteLine("Person Age: "+ personAge);
}
}
class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.personName = "Jerry";
person.personHeight = "175CM";
person.PersonAge = 22;
Stream stream = Serialize(person);
//为了演示,都重置
stream.Position = 0;
person = null;