在一个单一的项目解决方案中,当您有很多控制器时,会引入区域,可以提高分离度,并允许将模块轻松地复制到或从解决方案中复制出来.然而,在大型企业解决方案中,我倾向于将逻辑分为单独的项目.
因此具有单独的UI,Controller,SOA,Model和Repository项目.在这种情况下,区域没有任何意义,加上他们通常不需要额外增加一个顶级的Url,尽管我相信你可以省略Url中的区域,如果你保持你的控制器是唯一的,但不是那有点臭吗
解决方法
我不知道这是否是正确的问题.对于小型项目而言,区域可能会过度,但是很难想象一个非平凡的大型项目,不使用区域来帮助组织课堂.
我为企业使用MVC区域,并喜欢几件事情:
>通常人们正在处理给定域内的功能(例如搜索,结帐等).如果区域名称对应于您的业务域,MVC区域有助于缩短实现功能所需的时间,因为相关类很容易找到.
> MVC路由为您提供了如何结构化URL的灵活性.我曾经使用Action Controller “pattern”,但对于非公开的网址,我刚刚完全接受了“区域”默认路由,使事情变得容易.
>区域给您的风格明显优势,更重要的是,在现场部分级别封装行为.每个区域都有自己的Web配置,您可以在其中控制基本视图页面或添加托管处理程序.
您绝对正确的是,服务应该在单独的项目/解决方案中,通过存储库抽象数据访问,在多个客户端可以访问常见业务功能的环境中.
但是,随着Web项目的发展,MVC区域为UI /路由混乱提供了一些顺序,而对于我来说,无论上下文如何,这些都是无价的.