- 2
- 0
- 约6.23千字
- 约 13页
- 2019-01-03 发布于江苏
- 举报
NET中对象序化研究论文
NET中对象序列化研究论文
摘要实现序列化最重要的两个原因是:将对象的状态保存在存储媒体中以便以后重新创建出完全相同的副本;按值将对象从一个应用程序域发送至另一个应用程序域。例如,序列化可用于在中保存会话状态;将对象复制到Windows窗体的剪贴板中;它还可用于按值将对象从一个应用程序域远程传递至另一个应用程序域。本文简要介绍了中使用的序列化。
关键词.NET;序列化;封送
1引言
序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。
在面向对象的环境中实现序列化机制时,必须在易用性和灵活性之间进行一些权衡。只要对此过程有足够的控制能力,就可以使该过程在很大程度上自动进行。例如,简单的二进制序列化不能满足需要,或者,由于特定原因需要确定类中哪些字段需要序列化。以下各部分将探讨.NET框架提供的可靠的序列化机制,并着重介绍如何根据需要自定义序列化过程。
2持久存储
我们经常需要将对象的字段值保存到磁盘中,并在以后在内存中还原次对象。尽管不使用序列化也能完成这项工作,但这种方法通常很繁琐而且容易出错,并且在需要跟踪对象的层次结构时,会变得越来越复杂。可以想象一下编写包含大量对象的大型业务应用程序的情形,程序员不得不为每一个对象编写代码,以便将字段和属性保存至磁盘以及从磁盘还原这些字段和属性。序列化提供了轻松实现这个目标的快捷方法。
公共语言运行时(CLR)管理对象在内存中的分布,.NET框架则通过使用反射提供自动的序列化机制。对象序列化后,类的名称、程序集以及类实例的所有数据成员均被写入存储媒体中。对象通常用成员变量来存储对其它实例的引用。类序列化后,序列化引擎将跟踪所有已序列化的引用对象,以确保同一对象不被序列化多次。.NET框架所提供的序列化体系结构可以自动正确处理对象图表和循环引用。对对象图表的惟一要求是,由正在进行序列化的对象所引用的所有对象都必须标记为Serializable。否则,当序列化程序试图序列化未标记的对象时将会出现异常。当反序列化已序列化的类时,将重新创建该类的对象,并自动还原所有数据成员的值。
3按值封送
按值封送是指将对象序列化为字节流,并从一个应用程序域传输至另一个应用程序域,然后进行反序列化,从而在第二个应用程序域中产生出该对象的一个副本,这在COM技术中经常提到。在.Net中,对象仅在创建对象的应用程序域中有效,除非对象是从MarshalByRefObject派生得到或标记为Serializable,否则,任何将对象作为参数传递或作为结果返回到另外一个应用程序域都将失败。
如果对象标记为Serializable,则该对象将被自动序列化,并从一个应用程序域传输至另一个应用程序域,然后进行反序列化,从而在第二个应用程序域中产生出该对象的一个精确副本。
如果对象是从MarshalByRefObject派生得到,则从一个应用程序域传递至另一个应用程序域的是对象引用,而不是对象本身。也可以将从MarshalByRefObject派生得到的对象标记为Serializable。远程使用此对象时,负责进行序列化并已预先配置为SurrogateSelector的格式化程序将控制序列化过程,并用一个代理替换所有从MarshalByRefObject派生得到的对象。如果没有预先配置为SurrogateSelector,序列化体系结构将遵从下面的标准序列化规则。
4基本序列化
要使一个类可序列化,最简单的方法是使用Serializable属性对它进行标记,如下所示:
[Serializable]
publicclassMyObject
{
publicintn1=0;
publicintn2=0;
publicStringstr=null;
}
以下代码片段说明了如何将此类的一个实例序列化为一个文件:
MyObjectobj=newMyObject();
=1;
=24;
=“一些字符串”;
IFormatterformatter=newBinaryFormatter();
Streamstream=newFileStream(““,,,);
(stream,obj);
();
本例使用二进制格式化程序进行序列化。只需创建一个要使用的流和格式化程序的实例,然后调用格式化程序的Serialize方法。流和要序列化的对象实例作为参数提供给此调用。类中包括private变量的所有成员变量,都将被序列化,但这一点在本例中未明确体现出来。在这
您可能关注的文档
- ERP功能需求析论文 .doc
- ERP对企业管水平的作用综述 .doc
- ERP沙盘应用究 .doc
- ERP沙盘模拟践教学创业能力培养.doc
- ERP的财务预体制建立 .doc
- ERP环境下公财务管理研究 .doc
- ERP系统的医运营管理 .doc
- EVA剩余收益价论文 .doc
- ERP采购和付内部控制系统研究论文 .doc
- Excel函数放教育学籍管理论文.doc
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
最近下载
- 2023大型娱乐场所综合能源服务项目规划设计典型案例.docx VIP
- 2023科技园区综合能源服务项目规划设计典型案例.pdf VIP
- 2023商业综合体综合能源服务项目规划设计典型案例1.pdf VIP
- 三槐堂王氏族谱辈份.docx VIP
- 半导体产业半导体功率器件市场研究报告.doc VIP
- (学习资料)综合能源服务项目规划设计典型案例.docx VIP
- 近代日本宫中势力的国体论与立宪中的君权定位——以岩仓具视为中心考察_张艳茹.pdf VIP
- 认识日本之一:从丰臣秀吉到吉田松阴.pdf VIP
- 安川变频器技术手册V1000 中文.pdf VIP
- 2023医院类综合能源服务项目典型设计案例.pdf VIP
原创力文档

文档评论(0)