C# .Net核心版本控制:文件夹结构/名称空间
我正在试图弄清楚.Net核心Web Api 2.0的版本控制,在看了很多“教程”之后,我有一些问题 例如,我有一个包含许多控制器/模型等的大型api 1。创建新版本的最佳方法是什么?C# .Net核心版本控制:文件夹结构/名称空间,c#,.net,.net-core,asp.net-core-webapi,C#,.net,.net Core,Asp.net Core Webapi,我正在试图弄清楚.Net核心Web Api 2.0的版本控制,在看了很多“教程”之后,我有一些问题 例如,我有一个包含许多控制器/模型等的大型api 1。创建新版本的最佳方法是什么? 我见过有人把所有的控制器放在不同的文件夹中,/controllers/v1//controllers/v2/等等,模型也放在/models/v1/,models/v2等等 我见过将所有控制器版本放在同一个文件中,并使用属性指定哪个控制器属于哪个版本。(对我来说,这看起来很混乱,因为你忘记了哪些有多个版本,哪些没有
- 我见过有人把所有的控制器放在不同的文件夹中,
//controllers/v1/
等等,模型也放在controllers/v2/
,/models/v1/
等等models/v2
- 我见过将所有控制器版本放在同一个文件中,并使用属性指定哪个控制器属于哪个版本。(对我来说,这看起来很混乱,因为你忘记了哪些有多个版本,哪些没有)
- 我看到人们只是复制粘贴新版本文件夹中的几乎所有内容:
、/v1/controllers、/v1/models
。实际上,这只是将整个代码库克隆到一个新文件夹中。(我喜欢这一个,因为如果可以删除旧版本,只需删除整个文件夹即可)/v2/controllers、/v2/models
例如,您有一个文件夹,其中包含
v1
和所有控制器、模型等,然后您希望将所有内容复制到v2
以获得新版本。所有这些文件中的所有名称空间仍然包含.v1
。如何将它们重命名为一个新的名称空间?我已经看到几乎所有上述方法都可以很好地工作。但一如既往,这取决于许多因素。例如:
- 有没有可能(在您的域中)在一段时间后停止支持以前的版本
- 你对你的消费者有影响力吗?我是说你能强迫他们升级吗
- 您能否将旧数据迁移到新数据(按需或通过单独的迁移步骤)
- 您能否将旧的API使用者重新路由到新的API
- 等等
v1/controller
)或概念级别(controller/v1
)上这样做只是品味的问题。我个人更喜欢前者,因为它在代码组织方面提供了更多的灵活性。(它可以从一个版本发展到另一个版本)