【问题标题】:Modularised ASP.NET MVC web site模块化 ASP.NET MVC 网站
【发布时间】:2017-03-21 14:33:18
【问题描述】:

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

  • 主网站 ASP.NET MVC
  • 模块 1(区域)
  • 模块 2(区域)
  • 其他模块..
  • 通用业务层
  • 通用数据层
  • 通用视图层

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

有什么解决办法吗?

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

感谢您的想法!

【问题讨论】:

  • 一个项目 == 一个网站。如果您希望您当前的区域成为单独的站点,则将它们分解为自己的项目。您可以将子域映射到区域,如果这就是您要查找的全部内容,但您仍然必须一次性部署整个网站,包括所有区域。没有办法只部署一个区域。
  • 嗨,克里斯,有什么解决方案可以实际拥有单独的可部署项目,但具有共同的观点?到目前为止,我发现的唯一解决方案是为这些视图、样式、脚本创建一个 NuGet 包并将其添加到所有项目中。
  • 这实际上可能是最好的方法。您可以使用 Razor Generator 通过类库共享视图,但静态资源仍然是一个问题。静态文件唯一真正的选择是将它们简单地托管在一个单独的域上,并在该域的项目中引用它们。

标签: c# asp.net-mvc architecture


【解决方案1】:

因此,答案还取决于您是想要拥有多个解决方案 (*.sln) 还是只是一个具有多个 mvc 项目的解决方案。

Ad.1 多个 sln / 目录。

在这种情况下,可能有趣的选项是使用一些静态内容(如样式、脚本等)配置虚拟目录。这样的虚拟目录可以很容易地在 IIS 上配置:https://msdn.microsoft.com/en-us/library/bb763173.aspx

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

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

解决方案:

  • MVC 应用 1(项目)
  • MVC 应用 2(项目)
  • 'Common Presentation Layer Files'(解决方案文件夹)
  • 其他项目 (projs)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多