如何编写中间层.NET应用程序类/方法的版本

kru*_*ste 6 .net c# versioning asp.net-web-api2

我们有一个典型的N层.NET应用程序,它位于我们的数据库和Web API服务层之间.此应用程序包括业务层,数据存储库/访问以及相关的DTO和Business Objects.

我们有适当的解决方案来版本化我们的存储过程和Web API端点.问题是这个中间层版本的解决方案,实际的类方法和架构对象.所有Google搜索都会在源代码管理解决方案中提供源代码版本的结果,或者如何使用程序集信息进行版本化,这些都不是我们所指的,因此结果有限.

例如,我们有两个端点:

... api/v1/tax/charges

... api/v2/tax/charges

v1必须命中一个版本的方法CalculateTaxPctgs,v2命中另一个版本的更新业务逻辑.随着我们在v2中更改了一个字段的名称,需要使用不同版本的POCO Tax和TaxItems.

易于开发但难以管理且非常严格/静态的解决方案是创建两个不同的方法,CalculateTaxPctgs_V1和CalculateTaxPctgs_V2.这似乎不是一个好主意.

很难找到最佳实践,甚至是解决这种困境的替代解决方案.这是一个企业应用程序,每天需要数百万个请求,因此性能非常重要,但代码管理和可靠性也是如此.

mp3*_*ret 0

显然,这完全取决于您的解决方案的组合方式,但是您可以利用重定向程序集版本:

https://msdn.microsoft.com/en-us/library/7wd6ex19%28v=vs.110%29.aspx

您可以通过多种方式重定向您的应用程序以使用不同版本的程序集:通过发布者策略、通过应用程序配置文件;或者通过机器配置文件。