适用于大型网站的ASP.NET MVC项目结构

时间:2009-10-20 17:19:13

标签: asp.net-mvc project-structure

我很惊讶我找不到更多关于使用ASP.NET MVC困扰我的项目的问题的讨论。

如何处理具有多个项目的Visual Studio解决方案? MVC框架在主项目中具有Models / Views / Controllers文件夹。但是,如果您想沿着逻辑分组将解决方案分解为多个项目并将模型/视图/控制器与其一起带来怎么办?当我提前到项目结束时,每个文件夹中都会有很多类。它不会绘制一个干净整洁的结构,有助于维护。我们想要一种方法来将类移动到与它们相关的项目,或者至少使用文件夹结构来帮助组织。

我假设一个选项是在主项目使用的所有其他项目中使用相同的命名空间,但我不是那种方法的忠实用户b / c这不是我们的方法通常在定义命名空间时采用。

我想我们至少可以在M / V / C文件夹中创建子文件夹,而不是将文件夹名称转发到命名空间。我假设那些课程可以找到?

我们项目的一些背景:这是一个面向公众的网站,有许多用户可以执行的业务交易(大约50-60)。每个事务都有一系列用户导航的网页,以完成网站提供的不同服务。我们正在为每个事务使用单个控制器(关于我们是否应该为每个事务定义一个控制器,或者我们是否应该使用更高级别的分组并因此减少控制器的数量,我们已经进行了很长时间的讨论,但是我们已经有一些信息了在网上遇到(http://codebetter.com/blogs/ian_cooper/archive/2008/12/03/the-fat-controller.aspx)让我们做出了这个决定。)

有哪些建议?让其他人以他们满意的方式解决这个问题吗?

由于 乔恩。

3 个答案:

答案 0 :(得分:3)

查看 Areas

区域是从MonoRail借来的概念,它将控制器组织到逻辑文件夹中。

http://haacked.com/archive/2008/11/04/areas-in-aspnetmvc.aspx

答案 1 :(得分:3)

Asp.Net MVC2支持区域。

Scott Gu有一篇博客谈论Area Support here

从他的帖子。

  

每个区域都可以实现为   单独的ASP.NET MVC项目可以   然后由主要参考   应用。这有助于管理   建设大型企业时的复杂性   应用并促进多重   团队一起工作   一起申请

答案 2 :(得分:0)

我总是删除“models”文件夹并引用代表我的业务逻辑层和数据访问层的单独的类库。我也有一些解决方案,我的控制器保存在与我的视图不同的项目中。我同意在较大的应用程序中,单个项目模型是不合适的。即使在较小的应用程序中,特别是在必须与其他应用程序共享模型代码的情况下,将模型类放在实际的MVC项目中也是一个坏主意。