2009-04-24 112 views
7

有没有人推荐以可插拔模块化方式构建ASP.Net MVC应用程序?我的意思是一些博客帖子/教程等,我只读Hammet's MEF and ASP.NET MVC sample blogpost,但我没有发现MEF成熟到足以在生产中使用它。我无法谷歌退出任何其他有关职位有关这个主题的...asp.net mvc模块化应用程序howto /建议

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


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

我不想在这里讨论任何模型+服务可插拔体系结构 - 只是ASP.Net M VC部分。

+0

我期待在不久的将来做一些非常相似的事情,到目前为止,我还没有发现任何“开箱即用”的东西。但是,手动执行此操作应该相对简单,只需在bin中迭代程序集并查找某个接口的继承者即可。我认为... – roryf 2009-04-24 08:40:24

回答

3

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

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

+0

你是对的 - 我试图编辑帖子以缩小主题。 – Buthrakaur 2009-04-24 08:36:59

0

为模块化的基本参数都是一样的...

  • 可测
  • 可维护性
  • 易于部署的
1

用于部分请求的支持,以使第三部分控制器在MVC完全支持,看看这个帖子:http://blog.codeville.net/2008/10/14/partial-requests-in-aspnet-mvc/

很明显,MVC中的模块至少包含一个Controller和一个或多个Views。但也许你想要的仅仅是少数,因此重写控制器要比传统的WebForms架构容易得多。

或者您可能想要替换数据源,只需覆盖Model实体中的方法,然后启动并运行。它是MVC中的全部核心主体,您分离不同层次的逻辑,并且您被强制执行,与WebForms不同,它仍然允许您在链接中直接在视图中执行SQL。

(即MVC也支持它不是通过设计,而是通过继承。)

0

作为一个起点,你可以从这篇文章中抓住一些想法:

Spark View Engine - Modularity

和样例代码:

spark/src/Samples/Modules

的代码是在Spark视图引擎树(这是一个非常好的和强大的项目),但与它没有多大关系。它使用Castle来建立依赖关系和所有这些东西。顺便说一下,我一直在搞MEF,但我现在看不到这些好处,我需要做的事情可以用Castle和一些工具来完成(帮助者查询程序集以及类似的东西)。

1

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

0

我知道这个问题已经回答了。但是,我一直在四处搜寻有关此主题的更多当前答案。正如原始答案所示,我已经看过了Areas,但也遇到了Liviu Ignat的以下链接(Part 1Part 2),它从可插拔模块的角度回答了此问题。