2008-12-23 44 views
1

我在项目上做了一些重要的重构和功能添加,并且刚刚打破了向后兼容我的数据。我通过创建一系列我用来存放数据的类中的子类来实现,并且在旧的序列化对象中加载不再有效。你会做什么预工程来确保未来版本的应用程序的数据兼容性?

您采用什么样的预制或策略来避免这些情况类型?我应该完全忘记序列化吗?这似乎特别容易出现这些问题。

回答

1

我使用XML。关于XML的一个小问题就是它可以在不破坏向后兼容性的情况下进行扩展。

换句话说...

<root> 
    <something one="1" two="2"/> 
</root> 

...从A版本,没有问题是与...向后兼容

<root> 
    <something one="1" two="2" three="3"/> 
    <somethingElse five="5"/> 
</root> 

...从版本B.

+0

虽然如果你要这样做,全力以赴。需要验证,并使用大量装饰器和噪声,以便interop将使用完整的XML系统。像IM-XML这样的真实世界的系统需要特定的订单,而MRIS的XML订阅源不过是一个CSV容器。 – geocar 2008-12-24 01:08:31

0

除了一般采用的是序列化机制这至少在一定程度宽容的变化,如dacracot介绍,我试图设定,让我可以做一些每级调整反序列化的过程。旧数据格式的转换代码很难看,但不像丢失所有序列化的代码那么丑陋。

相关问题