对象序列化 是将对象状态转换为可保持或传输的格式的过程。
反序列化 是将流转换为对象
序列化和反序列化相结合
可以使对象数据轻松的存储和传递

在 .NET 中,如果是对象可序列化,需要在 声明对象的开始部分加上 [Serializable]
这个属性,并且不能被继承
如一个类

[Serializable]
public class
A
{
    public string title;
}

public class B :
A
{
    public int total;
}

则 对象B 不可被序列化


.NET 提供了3种序列化的方式 BinaryFormatter, SoapFormatter和 XmlSerializer
,下面对这3种方式分别以代码形式做介绍

预备工作:
创建一个 实体对象
[Serializable]
public class
Entity
{
    private int _total;
   
private string _title;
    private double
_timeCount;
    private int
_pageCount;

public Entity()
   
{
    }

public int
Total
    {
        get
{ return _total; }
        set { _total =
value; }
    }

public string
Title
    {
        get
{ return _title; }
        set { _title =
value; }
    }

public double
TimeCount
    {
       
get { return _timeCount; }
        set {
_timeCount = value; }
    }

public
int PageCount
   
{
        get { return _pageCount;
}
        set { _pageCount = value;
}
    }
}

1. BinaryFormatter
说明: 需要引入命名空间
System.Runtime.Serialization 和
System.Runtime.Serialization.Formatters.Binary

//序列化对象
        Entity entity = new
Entity();
        entity.Total =
10;
        entity.Title =
"测试";
        entity.TimeCount =
0.18;
        entity.PageCount =
5;

IFormatter formatter = new
BinaryFormatter();
        Stream stream =
new FileStream(@"D:\程序\DotNet技术\PDSource框架\Web\Serializer\myFile.txt",
FileMode.Create, FileAccess.Write,
FileShare.None);

formatter.Serialize(stream,
entity);
       
stream.Close();

//反序列化对象
        IFormatter formatter1 =
new BinaryFormatter();
        Stream
stream1 = new FileStream(@"D:\程序\DotNet技术\PDSource框架\Web\Serializer\myFile.txt",
FileMode.Open, FileAccess.Read,
FileShare.Read);
        Entity entity1 =
(Entity)formatter1.Deserialize(stream1);
       
stream1.Close();

Response.Write(entity1.Total + "
" + entity1.Title + "
" +
entity1.TimeCount + "
" + entity1.PageCount);

2. SoapFormatter
说明:
需要引入命名空间 System.Runtime.Serialization 和
System.Runtime.Serialization.Formatters.Soap

//序列化对象
        Entity entity = new
Entity();
        entity.Total =
10;
        entity.Title =
"测试";
        entity.TimeCount =
0.18;
        entity.PageCount =
5;

IFormatter formatter = new
SoapFormatter();
        Stream stream =
new FileStream(@"D:\程序\DotNet技术\PDSource框架\Web\Serializer\myFile2.txt",
FileMode.Create, FileAccess.Write,
FileShare.None);

formatter.Serialize(stream,
entity);

stream.Close();

//反序列化对象
        IFormatter formatter1 =
new SoapFormatter();
        Stream
stream1 = new
FileStream(@"D:\程序\DotNet技术\PDSource框架\Web\Serializer\myFile2.txt",
FileMode.Open, FileAccess.Read,
FileShare.Read);
        Entity entity1 =
(Entity)formatter1.Deserialize(stream1);
       
stream1.Close();

Response.Write(entity1.Total + "
" + entity1.Title + "
" +
entity1.TimeCount + "
" + entity1.PageCount);

3. XmlSerializer
说明:
需要引入命名空间
System.Xml.Serialization

//序列化对象
        Entity entity = new
Entity();
        entity.Total =
10;
        entity.Title =
"测试";
        entity.TimeCount =
0.18;
        entity.PageCount =
5;

XmlSerializer formatter =
new XmlSerializer(typeof(Entity));
       
Stream stream = new
FileStream(@"D:\程序\DotNet技术\PDSource框架\Web\Serializer\myFile3.xml",
FileMode.Create, FileAccess.Write,
FileShare.None);
       
formatter.Serialize(stream,
entity);
       
stream.Close();

//反序列化对象
        XmlSerializer formatter1
= new
XmlSerializer(typeof(Entity));
       
Stream stream1 = new
FileStream(@"D:\程序\DotNet技术\PDSource框架\Web\Serializer\myFile3.xml",
FileMode.Open, FileAccess.Read,
FileShare.Read);

stream1.Seek(0,
SeekOrigin.Begin);

Entity
entity1 =
(Entity)formatter1.Deserialize(stream1);
       
stream1.Close();

Response.Write(entity1.Total + "
" + entity1.Title + "
" +
entity1.TimeCount + "
" + entity1.PageCount);

asp.net中对象的序列化,方便网络传输的更多相关文章

  1. Asp.net中Json的序列化和反序列化(一)

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...

  2. ASP.NET中JSON的序列化和反序列化

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍 ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介 ...

  3. ASP.NET 中JSON 的序列化和反序列化

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...

  4. Asp.Net中JSON的序列化和反序列化-----JavaScriptSerializer ,加上自己工作心得

    在工作中和手机通信用到web服务和javascriptSerializer,返回json数据,供手机端调用,一开始返回的数据是一大堆,比如 [{"word_picture9":&q ...

  5. ASP.NET中JSON的序列化和反序列化(转)

    JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...

  6. [转]ASP.NET中JSON的序列化和反序列化

    本文转自:http://www.cnblogs.com/zhaozhan/archive/2011/01/09/1931340.html JSON是专门为浏览器中的网页上运行的JavaScript代码 ...

  7. 为什么需要用到序列化?为什么HttpSession中对象要序列化

    简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比你自己好的保存对象状态的 ...

  8. 【原创】C++中对象的序列化

    1.对象序列化 对象的序列化是指将对象的状态信息转换为可以存储或者传输的形式的过程.对象的反序列化是与序列化相反的过程. 在序列化期间,对象将其当前的状态写入到临时或者永久性的存储区,可以通过从存储区 ...

  9. java中对象的序列化和反序列化

    [对象的序列化和反序列化 ] 1.定义:序列化--将对象写到一个输出流中.反序列化则是从一个输入流中读取一个对象.类中的成员必须是可序列化的,而且要实现Serializable接口,这样的类的对象才能 ...

随机推荐

  1. PHP之ThinkPHP数据操作CURD

    两个数据表 具体操作如下: /**********************数据库操作********************/       ////////添加数据//////////         ...

  2. uiatuomator提示shortMsg=java.lang.RuntimeException

    自动化要做断言,原本打算使用的testng,因为它断言后就能出结果,还能生成报告,但是在实践过程中,硬是没有成功,所以还是放弃,使用的junit,后面使用的cts框架生成的邮件,现在记录使用junit ...

  3. js Date.UTC() 与 php strtotime()生成的时间截不一样

    Difference in UTC date between PHP and Javascript 工作中,因使用highcharts显示数据,需要将PHP 将日期转换为UTC 时区的时间截,然后通过 ...

  4. orale做报表常用函数和表达式的总结

    最近一段时间连续的做了几十张报表,通过原生sql对数据进行分析 ,也算是有了一定的了解,发现其中一些函数和表达式使用频率较高,现总结如下: (1).round()函数   round函数说白了就是把一 ...

  5. Delphi推出Delphi XE4支持IOS开发

    Delphi 新推出 Delphi XE4 ,这是一个支持 iOS 应用开发的新版本.Delphi XE4 带来 Embarcadero 全新的 ARM 编译器 下载地址

  6. ~/.ssh目录找不到解决方法

    执行 cd ~/.ssh发现ssh目录找不到 [root@ocdp2 ~]# cd ~/.ssh -bash: cd: /root/.ssh: No such file or directory 原因 ...

  7. HW-IP合法性_Java

    描述 现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉 ...

  8. Mysql主从配置+读写分离

    Mysql主从配置+读写分离     MySQL从5.5版本开始,通过./configure进行编译配置方式已经被取消,取而代之的是cmake工具.因此,我们首先要在系统中源码编译安装cmake工具. ...

  9. 实现ios屏幕的横竖屏自适应

    整理总结中... 刷新 可以通过 -setNeedsUpdateConstraints -layoutIfNeeded 两个方法来刷新约束的改变,使UIView重新布局, 和CoreGraphic的- ...

  10. 12天学好C语言——记录我的C语言学习之路(Day 7)

    12天学好C语言--记录我的C语言学习之路 Day 7: 昨天进行了一天的数组学习,今天大家可以先写几个昨天的程序热热身,回顾回顾,然后今天第一个新程序也是关于数组的,比较难,准备好就开始啦! //输 ...