跨版本序列化和反序列化.net对象的最佳实践

时间:2009-03-06 10:07:16

标签: .net xml serialization object

使用.NET XML序列化程序将对象序列化到数据库。对象可以随时间变化,因此数据库中一次存在多个版本。

有关构建代码的最佳方法的任何建议,以便您仍然可以将此对象反序列化为最新版本。 (接口/地图/手动序列化等)

5 个答案:

答案 0 :(得分:2)

在序列化对象中具有架构版本号。使用自定义反序列化,首先检查版本属性,如果它是旧版本,请在反序列化之前将其升级到最新模式。

答案 1 :(得分:2)

Look here这是关于WCF数据合约版本控制的最佳实践,这比您真正想要的更具体,但这些模式解决了与您相同的问题,您可以在任何您想要的技术中使用它们。

答案 2 :(得分:1)

这一切都取决于您的申请。它是一个分布式丰富的应用程序,旧应用程序可能会遇到来自中央数据库或其他来源的新数据对象? (就像旧版本的办公应用程序需要有一些方法来处理更新的文档格式。)

如果是这样,我会说,使用显式架构版本编号进行自定义序列化和反序列化。我会在每个元素和属性上放置显式元数据,说明读者是否必须理解元素/属性(如果没有,则说明默认值)。这当然会消耗相当多的空间并增加代码复杂性......

但答案实际上取决于您为什么要序列化到数据库。您对使用数据库的关系功能不感兴趣吗?否则,O / R映射解决方案可能会引起关注。

答案 3 :(得分:0)

不要删除/重命名属性。只添加它们。

为所有属性分配默认值。

这将保证xml序列化程序能够将旧的xml反序列化为新对象,并且该对象将具有“理智”值。

答案 4 :(得分:0)

Alex Reitbort说的话。

您还可以实现ISerializable接口来处理旧值

相关问题