处理Web API中数据协定更改的最佳实践

时间:2014-10-29 12:21:43

标签: asp.net-web-api datacontract

假设我的网络API中有我的car对象,如下所示:

[DataContract(Name = "Car")]
public class Car
{
    [DataMember]
    private string Model;
}

然后在网络API运行一段时间之后,我想在汽车对象中再添加一个字段,如:

[DataContract(Name = "Car")]
public class Car
{
    [DataMember]
    private string Model;

    [DataMember]
    private int HorsePower;
}

但它有时会导致原始客户端中断。我在互联网上搜索过,发现使用API​​版本和数据合约版本可以解决这个问题,通过以下类定义,我可以让我的新版本API在新版本数据合同上运行。

[DataContract(Name = "Car")]
public class CarV1
{
    [DataMember]
    private string Model;
}

[DataContract(Name = "Car")]
public class CarV2
{
    [DataMember]
    private string Model;

    [DataMember]
    private int HorsePower;
}

但这似乎不是一种非常灵活的方法,如果数据合同发展很多,我的代码中会有很多冗余,很难跟踪这么多版本。

有没有更好的方法来解决这个问题?

0 个答案:

没有答案