2

我正在整理一个 MVC 4 项目,该项目可能会在未来几年内广泛发展。带着从零开始的奢侈和挑战,我试图找出路由和组织我的控制器和视图的最佳实践。

MvcCodeRouting NuGet 包很有吸引力,我打算使用它。但是,我不确定使用 MVC 区域是否也是明智的。如果使用 MvcCodeRouting,似乎 MVC 区域是多余的,但我不确定区域提供的额外代码组织是否仍然是可取的。

为了说明我的意思,让我们以这个虚构的评分应用程序为例。它具有以下高级领域:

  • 公共门户
  • 经过身份验证的学生门户
  • 认证教师门户
  • 经过身份验证的管理员门户

假设每个门户最终会有 100 个不同的视图(让我们雄心勃勃!)。如果实现了这种规模,MVC 区域似乎是划分代码的好方法,在每个区域中使用 MvcCodeRouting。或者也许我们应该按照我们喜欢的方式组织代码,让 MvcCodeRouting 完成繁重的工作。

因此,Areas plus MvcCodeRouting 设计看起来像这样(文件夹结构):

  • MvcWeb项目
    • 领域
      • 行政
        • 控制器
        • 楷模
        • 意见
      • 上市
        • 控制器
        • 楷模
        • 意见
      • 学生
        • 控制器
        • 楷模
        • 意见
      • 老师
        • 控制器
        • 楷模
        • 意见
    • 内容
    • 控制器
    • 脚本
    • 意见

没有区域的 MvcCodeRouting 设计看起来像这样(文件夹结构):

  • MvcWeb项目
    • 内容
    • 控制器
      • 行政
      • 上市
      • 学生
      • 老师
    • 楷模
      • 行政
      • 上市
      • 学生
      • 老师
    • 脚本
    • 意见
      • 行政
      • 上市
      • 学生
      • 老师

这些设计中隐含的是 MvcCodeRouting 将用于通过命名空间进一步组织类。

在这些设计中,哪个是更好的方法?为什么?还有另一种更好的方法吗?在一种设计或另一种设计中,在门户之间共享资源是更容易还是更困难?

请注意,这只是整个代码解决方案的前端,因此其背后的整个服务/域/数据库都有自己特定的架构。出于这个问题的目的,我只是对如何在 MVC 中构建这些不同的应用程序领域感兴趣。

4

2 回答 2

3

我不会将区域仅用于文件夹组织。使用 MvcCodeRouting 完全不需要区域,因为您可以使用命名空间来代替,并且同时使用两者可能会造成混淆。

让我建议您可以与 MvcCodeRouting 一起使用的其他文件夹结构:

选项1

  • MvcWeb项目
    • 行政
      • 控制器
      • 楷模
    • 上市
      • 控制器
      • 楷模
    • 学生
      • 控制器
      • 楷模
    • 老师
      • 控制器
      • 楷模
    • 意见
      • 行政
      • 上市
      • 学生
      • 老师
    • 内容
    • 脚本

选项#2 在这个选项中,您可以将 ViewModels 放在与使用它的控制器相同的目录/命名空间中。

  • MvcWeb项目
    • 控制器
      • 行政
      • 上市
      • 学生
      • 老师
    • 意见
      • 行政
      • 上市
      • 学生
      • 老师
    • 内容
    • 脚本

MvcCodeRouting 没有改变的一件事是 Views 文件夹的位置。

于 2013-01-14T17:58:13.433 回答
0

MvcCodeRouting 能否帮助嵌入/提供其他静态内容,如 CSS 和 JS 文件?

于 2016-09-26T14:34:51.320 回答