azure-devops - 将经典 ASP.NET 解决方案迁移到 Azure Repo
问题描述
我们的开发团队部署了大约 6 个 ASP.NET 应用程序(Web 表单、SOAP 服务、RESTful 服务和可执行文件)。这些应用程序都引用了相同的少数 .DLL 库,这些库包含我们的大部分业务代码,并且这些库引用了一些较低级别的框架和安全库(这些都在 C# 中)。现在它全部托管在天蓝色的 TFVC 中。
我们正在创建一个新的 Azure 组织,并将所有内容迁移到 Azure Git,更重要的是,我们正在使用 Pipelines 设置 CI/CD。到目前为止,我们只有一个用于部署的巨型解决方案,可以容纳一切。应用程序项目只使用对库项目的项目引用,当我为部署构建它时,它会构建它。然后,我们只需使用 Web 部署将每个应用程序独立发布到我们的 Azure 虚拟机。
我们将需要为这些应用程序中的每一个提供管道,并且我们正在尝试找出最好的方法来 (1) 在我们的 Repos 存储库中构建我们的项目,以及 (2) 如何最好地引用这些库。
是否应该将库构建到包中,然后我们从我们拉入管道的工件提要中引用它们?此外,每个应用程序和库应该是存储库中自己的项目,还是作为一个大型项目流动得更好?我不确定这些问题是否有明确的答案,但我希望有一些可以参考的方向或最佳实践。
解决方案
是否应该将库构建到包中,然后我们从我们拉入管道的工件提要中引用它们?
将库构建到包中是一个不错的选择,尤其是那些被多个应用程序引用的库。使用nuget包会减少项目之间的引用关系,让我们更容易管理我们的项目。
检查此线程以获得更多 nuget 优势,并检查此线程以选择Project reference 或 NuGet。
每个应用程序和库应该是存储库中自己的项目,还是作为一个大型项目流动得更好?
如您所知,这个问题很难有明确的答案。虽然现在越来越多的声音支持 monorepos,但建议 monorepos 仍然存在争议,确实在某些情况下我们仍然想要多个存储库,例如:
- 单个存储库太大而无法高效。
- 您的存储库是松散耦合或解耦的。
- 开发人员通常只需要开发一个或一小部分存储库。
- 您通常希望独立开发存储库,并且只需要偶尔同步它们。
- 你想鼓励更多的模块化。
- 不同的团队在不同的存储库上工作。
所以,就像 DJ 说的,你必须自己选择。
您可以查看以下线程以获取有关此主题的更多信息:
希望这可以帮助。
推荐阅读
- html - 当我们在 Google Chrome 开发者工具上使用“删除元素”时,它真的会从实时全局服务器中删除该元素吗?
- python - 如何获取 GCP Cloud Function 实际调用的 URL,包括查询参数(Python 运行时)
- angular - 通过 Angular 服务订阅
- google-play-developer-api - paymentState 不会从试用期改变
- java - 使用spring 4从系统环境变量中获取数据
- c# - 如果我知道大部分时间结果将被缓存,则避免 async/await
- r - 如何合并长度不等但已知块长度的数据帧?
- r - 建立回归结果表
- android - java.lang.IllegalStateException:默认 FirebaseApp 未初始化
- html - 将 HTML 背景颜色设置为 JS 变量