2016-03-25 63 views
0

当前正在使用具有Web Api项目/框架的客户端,它们用于多个客户端。 98%的代码被重用,但他们复制并粘贴每个新客户端的存储库。复制和粘贴后,唯一真正改变的是Web.Configs,并且每隔一段时间对OOTB api进行一些扩展。例如。也许他们站在api api/rockets/的自定义模块或者他们扩展现有的api并添加一些新的方法&行动。C#Web API项目共享策略

我找不到任何方式使用.net将其关闭。目前我想我可以通过git用叉子解决这个问题,但我想知道是否有任何方法可以用.net解决这个问题。有没有办法扩展现有的Web项目?

回答

2

git方法是这样做的一种方式,但我可能会去找Nuget包。

提取所有解决方案中通用的所有解决方案,甚至是资源并制作一个包。 利用软件包版本控制等。如果你有一个bug,在包里修改它,只需在项目中运行一个nuget-update,甚至只需设置持续集成即可在任何依赖关系发生变化时重建和更新。

+0

我想这样做,但是所有基础webproject中的东西像startup.cs(owin stuff),app_start等呢? – Nix

+0

Nuget的一个重要功能是可以包含配置甚至源代码,然后在其中进行转换。 https://docs.nuget.org/Create/Configuration-File-and-Source-Code-Transformations。 无论如何,一个折衷是复杂的。由于没有银弹​​,我建议尽量保持简单。 如果你不得不在Nuget的特性中挖掘得太多,那么它可能会走向错误的方向,如果是这样的话,那么在git中分叉方法可能并不是那么糟糕。 –

0

一个选项是为使用“区域”的多个客户端创建单个Web项目。这样你可以打开/关闭每个人都是单独的。

您也可以将您的通用业务逻辑放入Nuget包中,并将其导入每个客户。但是,每次分叉业务逻辑将是一个非常糟糕的主意。如果发现缺陷会发生什么?您将被迫在N个项目中修复相同的问题。

+0

我们有一些非常严格的安全要求来保持envs sep。对我们而言,问题不像分叉我们真正想要扩展和定制它的那么简单。我只是无法弄清楚如何在.net中构造它以使其可扩展。 – Nix