【问题标题】:asp.net mvc modular application howto/recommendationsasp.net mvc 模块化应用程序操作指南/建议
【发布时间】:2009-04-24 07:25:07
【问题描述】:

有没有人推荐以可插拔的模块化方式构建 ASP.Net MVC 应用程序?我的意思是一些博客文章/教程等。我刚刚阅读了Hammet's MEF and ASP.NET MVC sample blogpost,但我发现 MEF 还不够成熟,无法在生产中使用它。我无法在 Google 上搜索到有关此主题的任何其他相关帖子...

我知道我可以实现模块化实现自定义 ControllerProvider 和一些插件检查机制,但我想在开始重新实现轮子之前研究更多方法/最佳实践 :)


我的意思是这个主题的模块化应该只涵盖 Web 应用程序的观点 - 没有其他像模块化应用程序模型/服务等。我想找到将一个 Web 应用程序分成多个程序集的最佳方法,这些程序集将包含额外的控制器、视图、资源、JS+CSS 文件、图像等。所以应该有一些主要的 Web 应用程序项目来寻找可用的可插入 Web 应用程序程序集、加载它们、发布它们的控制器、使它们的视图和其他资源可用并且可能为每个 Web 应用模块准备一些带有条目的菜单。

我不想在这里讨论任何模型+服务的可插拔架构 - 只是 ASP.Net MVC 部分。

【问题讨论】:

  • 我正在考虑在不久的将来做一些非常相似的事情,到目前为止我还没有找到任何“开箱即用”的东西。然而,手动执行此操作应该相对简单,只需在 bin 中迭代程序集并查找某个接口的继承者。我认为...

标签: asp.net-mvc


【解决方案1】:

模块化是一个相当广泛的概念,我认为您的问题的答案必须是主观的。您要问的是一个架构决策,没有一种好的方法可以解决这个问题。根据项目的不同,您可能对系统的不同部分有不同的优先级和重要性。我认为 MVC 模式提供了足够的关注点分离,这实际上是每个模块化架构的目的。

如果您希望能够在现有应用程序中轻松插入新模块,那么如何定义模块?我认为您应该稍微缩小问题范围,以获得一些不模糊且有意义的答案。

【讨论】:

    【解决方案2】:

    作为起点,您可以从这篇文章中获得一些想法:

    Spark View Engine - Modularity

    以及示例代码:

    spark / src / Samples / Modules

    代码位于 Spark View Engine 树中(这是一个非常不错且功能强大的项目),但与它没有太大关系。它使用 Castle 来建立依赖关系和所有这些东西。

    顺便说一句,我一直在搞乱 MEF,但我现在并没有真正看到好处,我需要做的事情可以使用 Castle 和一些工具来完成(查询程序集的助手和类似的东西) .

    【讨论】:

      【解决方案3】:

      MVC Portable Areas 可以很好地解决这个问题

      【讨论】:

        【解决方案4】:

        我发现一篇文章解决了您所说的一些基本要求。不幸的是,这篇文章已经过时了大约一年,使用的是 ASP.NET MVC 3,所以我重写了它并测试了它的方法,使其可以与 ASP.NET MVC 4 一起使用。你可以read it here

        【讨论】:

          【解决方案5】:

          模块化的基本论据总是相同的......

          • 可测试性
          • 可维护性
          • 易于部署

          【讨论】:

            【解决方案6】:

            我知道这个问题已经得到解答。但是,我一直在寻找有关此主题的更多最新答案。正如原始答案所暗示的那样,我查看了 Areas,但也遇到了 Liviu Ignat 的以下链接(Part 1Part 2),它从可插拔模块的角度回答了这个问题。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-10-13
              • 2014-01-25
              • 2011-04-06
              • 2014-02-15
              • 2015-04-04
              • 2013-03-19
              • 1970-01-01
              相关资源
              最近更新 更多