2009-10-20 30 views
8

我很惊讶我找不到更多的关于在我们的项目中使用ASP.NET MVC困扰我的问题。大型网站的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)给我们带来了这个决定。)

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

谢谢 Jon。

+0

看一看FubuMVC为COM塑形Web应用程序。 ASP.NET MVC在组合性方面很薄弱。 –

回答

0

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

+0

将你的课程分开是相当不错的,但是你应该为你的Mvc项目保留与域模型不同的模型。 –

3

Asp.Net MVC2支持区域。

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

从他的帖子。

每个区域都可以被实现为可以 然后由主 应用程序引用一个单独 ASP.NET MVC项目。这有助于建立一个大型 应用程序时管理 复杂性和便于多个 团队在一个单一 应用程序一起工作一起