gpt4 book ai didi

c# - .Net 核心版本控制 : Folder structure/namespaces

转载 作者:行者123 更新时间:2023-12-03 23:46:11 28 4
gpt4 key购买 nike

我正在尝试找出 .Net core Web Api 2.0 中的版本控制,在看了很多“教程”后我有一些问题。
例如,我有一个包含很多 Controller /模型/等的大型 API。
1. 创建新版本的最佳方法是什么?

  • 我看到人们只是将所有 Controller 放在不同的文件夹中 /controllers/v1//controllers/v2/等,型号也在/models/v1/ , models/v2
  • 我已经看到将所有 Controller 版本放在同一个文件中,并使用属性来指定哪个 Controller 属于哪个版本。 (对我来说,这看起来很困惑,因为您无法了解哪些有多个版本,哪些没有)。
  • 我看到人们只是复制粘贴新版本文件夹中的几乎所有内容:/v1/controllers, /v1/models , /v2/controllers, /v2/models .这实质上只是将整个代码库克隆到一个新文件夹。 (我喜欢这个,因为如果可以删除旧版本,您只需删除整个文件夹即可完成)。

  • 2. 你如何处理命名空间的变化?
    例如,您有一个带有 v1 的文件夹并且它包含所有 Controller 、模型等。然后您想将所有内容复制到 v2对于新版本。所有这些文件中的所有命名空间仍然具有 .v1在里面。你如何将它们全部重命名为一个新的命名空间?

    最佳答案

    我已经看到几乎所有上述方法都可以很好地工作。但一如既往,这取决于很多因素。例如:

  • 一段时间后甚至有可能(在您的域中)停止支持以前的版本吗?
  • 你对你的消费者有影响吗?我的意思是你能强制他们升级吗?
  • 您能否将旧数据迁移到新数据(按需或通过单独的迁移步骤)
  • 您能否将旧 API 使用者重新路由到新 API?

  • 这些类型的问题可以帮助您确定哪个选项更可取。
    例如,如果以前的版本不能被弃用,因为你的 API 的外部使用者已经在维护中,并且没有简单的方法来迁移他们的数据和重新路由他们的请求,那么文件级分离将更适合你。在整个 API 级别( v1/controller )或概念级别( controller/v1 )上做这只是品味问题。我个人更喜欢前者,因为它在代码组织方面提供了更多的灵活性。 (它可以从版本演变到版本)

    关于c# - .Net 核心版本控制 : Folder structure/namespaces,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62514688/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com