博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
浅谈对象的序列化(Serialize)
阅读量:5321 次
发布时间:2019-06-14

本文共 1851 字,大约阅读时间需要 6 分钟。

序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,就使得数据能够被轻松地存储和传输。

.NET Framework 提供两种序列化技术:

二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等等。远程处理使用序列化“通过值”在计算机或应用程序域之间传递对象。

XML 序列化仅序列化公共属性和字段,且不保留类型保真度。当您希望提供或使用数据而不限制使用该数据的应用程序时,这很有用。由于 XML 是一个开放式标准,因此,对于通过 Web 共享数据,它是一个有吸引力的选择。SOAP 同样是一个开放式标准,这使它也成为一个颇具吸引力的选择。

 

例如:

XML 序列化可具有多种形式,从简单的到复杂的都有。例如,可以序列化仅包含公共字段和属性的类,如介绍 XML 序列化中所示。下面的示例用于处理各种高级方案,包括如何使用 XML 序列化来生成符合特定 XML 架构 (XSD) 文档要求的 XML 流。

除了对公共类的实例进行序列化之外,DataSet 的实例也可以被序列化,如下面的示例所示:

private void SerializeDataSet(string filename){

    XmlSerializer ser = new XmlSerializer(typeof(DataSet));
       
    // Creates a DataSet; adds a table, column, and ten rows.
    DataSet ds = new DataSet("myDataSet");
    DataTable t = new DataTable("table1");
    DataColumn c = new DataColumn("thing");
    t.Columns.Add(c);
    ds.Tables.Add(t);
    DataRow r;
    for(int i = 0; i<10;i++){
        r = t.NewRow();
        r[0] = "Thing " + i;
        t.Rows.Add(r);
    }
    TextWriter writer = new StreamWriter(filename);
    ser.Serialize(writer, ds);
    writer.Close();
}
一般是把一个对象序列化是用来作传输用,用在分布式处理.

其他地也有应用.就说 dottext 这个程序吧,里面有几个象就使用了XML序列化,这样可以使用XML文件来配制对象.

XML 序列化将对象的公共字段和属性或者方法的参数和返回值转换(序列化)为符合特定 XML 架构定义语言 (XSD) 文档的 XML 流。XML 序列化产生强类型类,并为存储或传输目的将其公共属性和字段转换为序列格式(在此情况下,为 XML)。

由于 XML 是一种开放式标准,因此无论使用什么平台,任何应用程序都可根据需要处理 XML 流。例如,用 ASP.NET 创建的 XML Web services 使用 XmlSerializer 类创建 XML 流,用来在整个 Internet 中或 Intranet 上的 XML Web services 应用程序之间传递数据。相反地,反序列化获取这样的 XML 流并重新构造对象。

XML 序列化还可用于将对象序列化为符合 SOAP 规范的 XML 流。SOAP 是一种基于 XML 的协议,它是专门为使用 XML 来传输过程调用而设计的。

若要序列化或说白了就是为了数据通用,xml数据还能跨越防火墙

反序列化对象,请使用 XmlSerializer 类。若要创建要序列化的类,请使用 XML 架构定义工具。
主要是对象与流的相互转化。

比如客户端修改数据之后,希望进行判断再修改数据库;这就需要把数据库里的数据先取到DataSet;这个DataSet可以以session变量形式保存在Server端,也可以用ViewState形式发到页面里用带宽换Server的处理能力;如果是后者,就需要在DataSet和http流中转化,就需要序列化/反序列化。

转载于:https://www.cnblogs.com/glume/archive/2007/04/05/700752.html

你可能感兴趣的文章
Codeforces Round #514 (Div. 2)
查看>>
[ACM_贪心] Radar Installation
查看>>
android 数据库 SQLite的笔记
查看>>
转载:《TypeScript 中文入门教程》 14、输入.d.ts文件
查看>>
net3:文件上传与图片显示以及HiddenField隐藏字段值的使用
查看>>
android 多列显示 之 GridView(含源码)
查看>>
5.Twisted学习
查看>>
前端笔记-bom
查看>>
MATLAB作图方法与技巧(一)
查看>>
IE6 IE7 ‘JSON’ 未定义
查看>>
Python入门:生成器定义
查看>>
数据结构:八大数据结构分类
查看>>
JavaScript的事件队列(Event Queue)---宏任务和微任务
查看>>
下拉刷新和上拉加载更多(第三方框架MJRefresh)
查看>>
python main函数
查看>>
NetWare
查看>>
webpack笔记三 管理输出
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
Google透露Android Market恶意程序扫描服务
查看>>
Java IO编程全解(六)——4种I/O的对比与选型
查看>>