当我们需要维护遗留支持时,如何更新现有的数据结构
本文关键字:更新 何更新 数据结构 我们 维护 支持 | 更新日期: 2023-09-27 17:50:32
长话短说,我们有一个老化的应用程序,多年来我们一直在开发它。有一些固定的东西已经开始引起问题,这让我思考我们如何更好地构建数据。这样做的问题是,我们需要维护对客户端可能拥有的旧的序列化数据文件的支持,这使得如果我们对类进行任何彻底的更改,则很难迁移到新版本。
我的问题是,有没有一个好的、经过测试的过程/架构模式,可以在将来帮助我们,如果我们决定在重构代码上投入一些精力?
EDIT都是二进制序列化
只是想出来,但类似于COM用于"版本"的方式可能会起作用…类似于:
[Serializable]
public class Data
{
public string Field1 {get; set;}
}
[Serializable]
public class Data2
{
public Data2() { _version1 = new Data();}
[NonSerialized]
private Data _version1;
public string Field1
{
get { return _version1.Field1;}
set { _version1.Field1 = value;}
}
public int Field2 {get; set;}
}
[Serializable]
public class Data3
{
public Data3() { _version2 = new Data2();}
[NonSerialized]
private Data2 _version2;
public string Field1
{
get { return _version2.Field1;}
set { _version2.Field1 = value;}
}
public int Field2
{
get { return _version2.Field2;}
set { _version2.Field2 = value;}
}
public double Field3 {get; set;}
}
事实上,现在我看着摆在我面前的这个,我不能说它是一个理想的解决方案。它很快就会导致"版本号地狱"的泛滥,这很像现在的COM(有时检查各种DirectX接口名称)
也就是说,如果是一个可能的答案,那么我就不写了。