2012-01-30 44 views
14

当您拥有大量控制器时,在单个项目解决方案中引入区域可以改善分离,并且可以轻松地将模块复制到解决方案中或从解决方案中复制出来。但是,在大型企业解决方案中,我倾向于将逻辑分解为单独的项目。MVC企业领域 - 好还是坏?

因此拥有独立的UI,Controller,SOA,Model和Repository项目。在这种情况下,区域没有任何意义,再加上他们往往不需要的额外的顶级网址,虽然我相信你可以省略Url的区域,如果你保持你的控制器的独特性,但不是那有点臭?

也许区域适用于中等复杂的网站,或者当模块代码更好地保存在一个位置,以便它可以复制到其他网站或删除。

+1

也许这可能是一些利益:http://stackoverflow.com/questions/6656843/how-to-reuse-areas-controllers-views-models-routes-in-multiple-apps-or-websi。它可以让你将你的代码分成多个项目。 – 2012-01-30 08:54:41

+0

我认为你要找的是便携式区域,而不是普通区域。 – 2012-01-30 17:44:18

回答

13

我不确定这是否是正确的问题。对于小型项目而言,区域可能会过度杀伤,但很难想象一个非平凡的大型项目不会使用区域来帮助组织课程。

我使用MVC领域,为企业和喜欢它的原因几件事情:

  1. ,通常人们都在工作特性给定域中(例如,搜索,结帐等)。如果区域名称与您的业务域相对应,则MVC区域有助于减少实现功能所需的时间,因为相关的类很容易找到。
  2. MVC路由为您提供了大量的灵活性了解如何构造URL。我曾经使用Action Controller "pattern",但对于非公开的网址,我刚刚完全支持Area默认路由,以使事情变得简单。
  3. 区域为您提供造型的独特优势,更重要的是,封装在网站部分级别的行为。每个区域都有自己的Web配置,您可以在其中控制基本视图页面或添加托管处理程序。

你是绝对正确的服务应该是在单独的项目/解决方案完全,抽象通过仓库的数据访问,在多个客户端可以访问常用业务功能的环境。

但是,MVC领域在Web项目增长时为UI /路由混乱提供了一些顺序,对我而言,无论上下文如何,它都是无价的。

+0

+1,为什么区域有用的优秀概述。 – kprobst 2012-01-30 17:33:57

1

首先,在回答之前,这只是我的看法,主要是关于模型。

我看到它的方式,区域可能就这么邪恶..如果你有很多区域,你的解决方案资源管理器变成一个迷宫,并且它可能很难找到一些东西。

我建议在解决方案中创建一个新的库项目,并将逻辑放在那里。

最好的好处(而不是你可以找到更容易找到的东西)是你的应用程序变得更加模块化。如果您在ASP.NET MVC应用程序中创建了一个库并为其指定了引用,那么不能在之间轻松地出错并在逻辑中涉及UI。