ASP.NET MVC 5模块化Web应用程序架构?

yoe*_*ver 18 c# architecture asp.net-mvc modularity knockout.js

我目前就职的公司正在努力应对我们的应用范围的架构决策.目前我们有几个具有共同部分的应用程序(想象日历模块).到目前为止,我们一直在从其他现有应用程序复制代码,但在未来我们希望将应用程序发展为更加模块化的设计:

我们的情况

正如您在上图中所看到的,每个应用程序可能有不同版本的模块.

我们正在考虑可能的解决方案:

  • 构建一个核心应用程序框架,我们可以在其中安装我们的模块.我们正在考虑像Nuget这样的工具来实现这一目标.
  • 构建一个应用程序,其中所有模块都包含在(=一个代码库)中,但客户只获得为他激活的功能.我们在这里预测版本化的一些问题.

有什么建议吗?我们不能成为第一个努力解决这个问题的公司吗?我们所有的应用程序都是ASP.NET MVC 4/5 Web应用程序,使用Razor模板或JavaScript模板(knockout.js)构建.我们所有的应用程序都部署在Microsoft Azure上,我们拥有丰富的内部构建知识(MSBuild),CI服务器......

SBi*_*are 8

为每个模块分别进行项目/组装并将其作为Nuget包交付绝对是一个很好的策略.

优点:

  1. 可以维护和发布多个版本.不同的客户获得不同的版本
  2. 通过Nuget支持安装最新或特定版本.这有助于开发期间App A开发人员可以定位2.0版本的模块A而App B开发人员可以定位1.0.
  3. 单一源代码库,每个版本都有单独的分支.使用1.0请求更改的客户端将从分支1.0获取代码,仅提供所请求的修复.
  4. 每个模块都可以独立发布或更新.

挑战:

  1. 在开发期间调试使用Nuget安装的汇编代码.Nuget支持它内置.我们在我们的案例中实现了它(框架被多个平台使用).

  2. 模块代码中所需的代码更改(需要错误或新功能).这很棘手:

选项1:相同的开发人员继续进行更改,创建新包并在他的应用程序中安装新版本.必须授权更改,因为它是关键代码.

选项2:指定的团队负责修复框架代码中的问题或变更请求.