ASP.NETMVC 5如何模块化Web应用程序体系结构?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (61)

我目前所雇用的公司正在为我们的应用范围做出一个架构决策。目前我们有几个具有公共部分的应用程序(像日历模块一样思考)。到现在为止,我们一直在复制来自其他现有应用程序的代码,但将来我们希望将我们的应用程序发展为更加模块化的设计:

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

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

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

对此有何建议?我们不能成为第一个为此问题而奋斗的公司吗?我们所有的应用程序都是ASP.NET MVC 4/5 Web应用程序,它们使用Razor模板或JavaScript模板(knockout.js)构建。我们所有的应用程序都部署在Microsoft Azure上,并且我们对构建脚本(MSBuild),CI服务器...

提问于
用户回答回答于

还可以尝试使用插件体系结构,只是将构成应用程序的不同模块构建为插件,然后将每个应用程序所需的模块构建为单个代码库。在这种情况下,为任何特定用户安装一个组件,将是添加或拔出插件的问题。许多大型项目可以使用此特定架构,因为它可以减少复制和粘贴,增加和重用以及开发速度。可以检查nopcommerce开放源代码项目,了解它是如何完成的。

用户回答回答于

为每个模块分开项目/组装并将其作为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:指定的团队负责解决框架代码中的问题或更改请求。

所属标签

可能回答问题的人

  • 学生

    3 粉丝476 提问7 回答
  • uncle_light

    5 粉丝518 提问6 回答
  • 最爱开车啦

    8 粉丝503 提问5 回答
  • 骑牛看晨曦

    4 粉丝522 提问5 回答

扫码关注云+社区

领取腾讯云代金券