模块化的ASP.NET MVC网站

时间:2017-03-21 14:33:18

标签: c# asp.net-mvc architecture

我目前正在重构一个巨大的ASP.NET MVC网站。我试图实现的主要思想是在同一解决方案中有一个主(前)网站和几个单独的网站,可以单独部署。原因是我们有不同的团队在不同的项目上工作。 目前的设置如下:

  • 主要网站ASP.NET MVC
  • 第1单元(区域)
  • 第2单元(区域)
  • 其他模块..
  • 公共业务层
  • 公共数据层
  • 公共视图图层

在对模块进行更改时,您必须部署主网站(因此虽然区域作为单独的项目,但不能单独部署)。区域正在使用RazorGenerator进行视图。公共视图层生成要在主网站/模块中使用的嵌入式资源。

任何解决方案?

我现在要完成的工作是将区域中的模块解压缩到完整的ASP.NET MVC网站,并将它们作为子域映射到主网站。这里的问题是我在所有项目中重复视图,样式,布局以及对主菜单,样式等进行更改意味着要遍历所有项目并进行相同的更改。不是一个可行的选择。

感谢您的想法!

1 个答案:

答案 0 :(得分:1)

因此,答案还取决于您是否想要多个解决方案(* .sln),或者它只是一个包含多个mvc项目的解决方案。

Ad.1多个sln /目录。

在这种情况下,可能有趣的选择是使用样式,脚本等静态内容配置虚拟目录。可以在IIS上轻松配置这样的虚拟目录:https://msdn.microsoft.com/en-us/library/bb763173.aspx

Ad.2一个解决方案,多个MVC项目:

然后我建议添加一些解决方案文件夹,例如“公共表示层文件”和“#39; - >然后我将所有要共享的文件移动到该解决方案文件夹中。接下来在那些MVC项目中,我会做以下事情=>右键单击=>添加现有项目=>作为一个链接。 因此,您将拥有原始文件的副本/快捷方式。您应该只在该公共文件夹中进行更新,并且更改将在所有其他mvc项目中可见。 https://msdn.microsoft.com/pl-pl/library/9f4t9t92(v=vs.90).aspx然后您可以单独发布MVC项目,如果这些静态文件的属性正常,则在发布期间将复制所有文件。所以结构看起来像:

解决方案:

  • MVC App 1(proj)
  • MVC App 2(proj)
  • '公共表示层文件' (解决方案文件夹)
  • 其他项目(项目)