我们有一个Web应用程序:前端应用程序+后端,它由几个逻辑层组成。这是简化的架构:
通过Web api的客户端应用程序到达聚合器,该聚合器调用sdk,然后更新和增强数据。 SDK可以包装其他DAL或Web API。服务直接与聚合器通信。
我们使用Visual Studio进行开发,最初,vs解决方案将所有层包含在一个地方:
我们使用Microsoft Stack和Azure Devops部署Web API和其他应用程序,例如Web作业和服务。为此,我们使用CICD流程(我们定义了构建和发布定义+触发器)。
当新代码被推送到git时,构建开始。创建新版本时会发布。
问题是,如果我们需要发布Web api,则将构建所有项目并执行相应的发行版。因此,我们决定将所有东西分离。现在我们有几种解决方案,而不是一种,我们按上图所示将它们分成几层:
解决方案1:
解决方案2:
解决方案3:
解决方案4:
解决方案5:
解决方案N ...
为了连接层,我们决定使用Nuget包,以便sdk位于一个nuget中,而sdk.models位于另一个nuget中,等等...
现在的问题是,例如,如果我想在sdk.models中进行更改,以下是手动步骤(无CICD)来更新所有内容:
纯粹的疯狂...
...但是它允许人们在每一层上独立工作。可以认为是优势。
现在,我们回到CICD。触发器链接到git push事件,如果提交了新代码,则创建build,然后发布定义发布内容。因此,例如在sdk的情况下,解决方案包含两个项目:sdk和sdk.models,因此,如果我将新代码添加到sdk.models并推送到git,则触发激活sdk和sdk.models的构建,并且一旦构建就绪然后发布将两个nuget包都推送到nuget feed。但这是不正确的,因为sdk应该更新对sdk.models包的较新版本的引用,然后才能发布。我看到解决问题的唯一方法是将sdk.models移至不同的解决方案/存储库。可以,除了我们将有更多的解决方案和存储库需要管理,而且调试和开发将变得更加困难...
问题: 您认为我所说的一切有意义吗?如何改善/改变它?拥有更高效的环境。请提供任何建议,批评或建议。
感谢您阅读。