C# 中的版本控制 ASP.NET 核心
Versioning in C# ASP.NET Core
我是 ASP.NET Core 3.1-latest
版本控制的新手
假设我的产品在 1.0 版中附带了如下所示的模型:
public class MySelf
{
public string Name {get; set;}
public string CarName {get; set;}
//more properties follows
}
此模型已投入生产,现在我想获取汽车名称列表。
所以我想在现有模型 class 中引入一个新的 属性,而不破坏版本 1.0 或让客户选择在 v1[=14= 中有新的 属性 ]
public class MySelf
{
public string Name {get; set;}
public List<string> CarNames {get; set;} // new property
//more properties follows up to for example 8-10
}
如何为新模型做这个然后版本?
控制器示例
[ApiVersion("1.0")] ///existing version
[ApiVersion("1.1")] //New Version
public class SelfController : ControllerBase
{
[HttPost]
public IActionResult GetDetails(MySelf myselftDetails)
{
//implementation
}
[HttPost,MapToVersion("1.1")]
public IActionResult GetDetails(MySelf myselftDetails)
{
//for Version2 how do we solve that
}
}
我们使用的一项技术是为每个版本启动多个模型。
例如:
[ApiVersion("1.0")] ///existing version
[ApiVersion("2.0")] //New Version
public class SelfController : ControllerBase
{
[HttPost]
public IActionResult GetDetails(MySelfV1 myselftDetails)
{
}
[HttPost,MapToVersion("2.0")]
public IActionResult GetDetails(MySelfV2 myselftDetails)
{
}
}
假设每个版本都是没有向后兼容性的重大更改。语义版本控制必须是从 v1 到 v2 的跳转。
我是 ASP.NET Core 3.1-latest
版本控制的新手假设我的产品在 1.0 版中附带了如下所示的模型:
public class MySelf
{
public string Name {get; set;}
public string CarName {get; set;}
//more properties follows
}
此模型已投入生产,现在我想获取汽车名称列表。
所以我想在现有模型 class 中引入一个新的 属性,而不破坏版本 1.0 或让客户选择在 v1[=14= 中有新的 属性 ]
public class MySelf
{
public string Name {get; set;}
public List<string> CarNames {get; set;} // new property
//more properties follows up to for example 8-10
}
如何为新模型做这个然后版本?
控制器示例
[ApiVersion("1.0")] ///existing version
[ApiVersion("1.1")] //New Version
public class SelfController : ControllerBase
{
[HttPost]
public IActionResult GetDetails(MySelf myselftDetails)
{
//implementation
}
[HttPost,MapToVersion("1.1")]
public IActionResult GetDetails(MySelf myselftDetails)
{
//for Version2 how do we solve that
}
}
我们使用的一项技术是为每个版本启动多个模型。
例如:
[ApiVersion("1.0")] ///existing version
[ApiVersion("2.0")] //New Version
public class SelfController : ControllerBase
{
[HttPost]
public IActionResult GetDetails(MySelfV1 myselftDetails)
{
}
[HttPost,MapToVersion("2.0")]
public IActionResult GetDetails(MySelfV2 myselftDetails)
{
}
}
假设每个版本都是没有向后兼容性的重大更改。语义版本控制必须是从 v1 到 v2 的跳转。