NET中对象序列化方法毕业论文(3)

2013-04-29 01:14
导读:如果对象未实现 Serializable,将使用默认的序列化策略,对所有未标记为 NonSerialized 的字段都进行序列化。 8 版本控制 .NET 框架支持版本控制和并排执行,
     如果对象未实现 Serializable,将使用默认的序列化策略,对所有未标记为 NonSerialized 的字段都进行序列化。8  版本控制     .NET 框架支持版本控制和并排执行,并且,如果类的接口保持一致,所有类均可跨版本工作。由于序列化涉及的是成员变量而非接口,所以,在向要跨版本序列化的类中添加成员变量,或从中删除变量时,应谨慎行事。特别是对于未实现 ISerializable 的类更应如此。若当前版本的状态发生了任何变化(例如添加成员变量、更改变量类型或更改变量名称),都意味着如果同一类型的现有对象是使用早期版本进行序列化的,则无法成功对它们进行反序列化。     如果对象的状态需要在不同版本间发生改变,类的作者可以有两种选择:实现 ISerializable。这使您可以精确地控制序列化和反序列化过程,在反序列化过程中正确地添加和解释未来状态。     使用 NonSerialized 属性标记不重要的成员变量。仅当预计类在不同版本间的变化较小时,才可使用这个选项。例如,把一个新变量添加至类的较高版本后,可以将该变量标记为 NonSerialized,以确保该类与早期版本保持兼容。9  序列化规则     在设计新类时应考虑序列化。需要考虑的问题有:是否必须跨应用程序域来发送该类的对象?是否要远程使用此类?用户将如何使用此类?是否要派生出一个需要序列化的新类。只要有这种可能性,就应将类标记为可序列化。除下列情况以外,最好将所有类都标记为可序列化:     所有的类都永远也不会跨越应用程序域。如果某个类不要求序列化但需要跨越应用程序域,请从 MarshalByRefObject 派生此类。      类存储仅适用于其当前实例的特殊指针。例如,如果某个类包含非受控的内存或文件句柄,请确保将这些字段标记为 NonSerialized 或根本不序列化此类。      某些数据成员包含敏感信息。在这种情况下,建议实现 ISerializable 并仅序列化所要求的字段。 参考文献     [1] 潘爱民著.Com原理与应用.清华大学出版社     [2] Simon Robinson K.Scott等著.C#高级编程. 清华大学出版社     [3] David J. Kruglinski Scot Wingo George Shepherd 著.VC++6.0技术内幕. 北京希望电子出版社
上一篇:基于构造超平面的两阶段决策树算法的研究 下一篇:没有了