C# Web API 项目共享攻略

C# Web API Project Sharing Strategy

目前正在与一个客户合作,该客户拥有用于多个客户的网络 Api Project/Framework。 98% 的代码被重用,但他们为每个新客户复制并粘贴存储库。在复制和粘贴之后,唯一真正改变的是 Web.Configs 和不时对 OOTB api 的一些扩展。例如。也许他们为 api api/rockets/ 建立了一个自定义模块,或者他们扩展了现有的 api 并添加了一些新的方法和操作。

我找不到任何方法来使用 .net 实现这一目标。目前我在想我可以通过 git 用分叉解决这个问题,但我想知道是否有任何方法可以用 .net 解决这个问题。有没有办法扩展现有的 Web 项目?

git 方法是一种方法,但我可能会选择 Nuget 包。

提取所有解决方案通用的所有内容,甚至资源并打包。 利用包版本控制等。如果您遇到错误,请在包中修复它,然后简单地 运行 项目中的 nuget 更新,或者甚至只是设置您的持续集成以在任何依赖项更改时重建和更新。

一个选项是为使用 "Areas" 的多个客户端创建一个 Web 项目。这样你就可以 on/off 每个人都是单独的。

您还可以将常用的业务逻辑放入 Nuget 包中,然后为每个客户导入。但是每次都分叉业务逻辑是一个非常糟糕的主意。如果发现缺陷会怎样?您将被迫在 N 个项目中修复相同的问题。

这个方法非常简单。我们将所有内容提取到一个通用的 C# 库中,将所有共享内容转换为 git 个子模块。然后我们使用 Autofac Multitenant 来注册一些特定于客户端的覆盖。这实际上非常容易。