【问题标题】:MVC With N-Tier Architecture具有 N 层架构的 MVC
【发布时间】:2016-11-05 08:28:44
【问题描述】:

我一直在文章和问题之间跳来跳去,但似乎找不到我想要的信息。

当我开始学习 MVC 时,教程和文章指出:
*模型:是您的业务逻辑所在
*控制器:是数据访问和处理请求/响应发生的地方。

我使用 MVC 已经有一段时间了,我想将一个旧的简单项目迁移到 MVC。在项目中,我有一个业务和数据访问层。 在阅读了 N-Tier MVC 架构之后,我的理解发生了变化。

我通常认为是业务领域的模型现在已更改为更多取决于视图的演示文稿。确实,模型反映了业务实体,但它充当了它之上的另一层。

所以我的问题如下:假设我有一个 MVC 项目,并且我还有另外两个项目,业务和数据访问。这样的关系对吗?

*一个模型,其属性大多与其对应的业务实体相同。
*控制器调用DataAccess-Layer获取数据,数据作为业务对象返回,业务对象映射为模型,返回视图。

【问题讨论】:

  • 我投票结束这个问题,因为关于软件架构的问题属于programmers.stackexchange.com
  • @Rob 在引用其他网站时,指出cross-posting is frowned upon 通常会有所帮助
  • @gnat 这个问题可能会被模组移动,但如果他跨帖子,这将被删除。
  • stackoverflow上有很多关于软件架构的问题。在这里发帖之前,我已经阅读了太多。另外,我也不确定否决票。否决的选民可以详细说明吗?
  • @ykh 他们只是没有被抓住。这不是犯罪。把这个删了,问程序员吧。这就是它的用途。

标签: model-view-controller n-tier-architecture


【解决方案1】:
  1. 模型并不总是对应于业务实体。因为 MVC 中的模型用于反映将被发送到视图的实体。因此,它们可能比域业务实体更简单。您的领域模型将映射到 mvc 模型是正确的。
  2. 第二个声明我 100% 同意。

【讨论】:

  • 我理解你对模型的看法,但不认为有两个类代表同一个实体的重复。难道我们不能把 MVC 中的 Model 部分作为业务层,让控制器与之交互吗?
  • No) 因为来自 db 的实体有时会与 mvc 模型有很大不同。例如,您在视图中只需要来自 Person 的 2 个道具。在您的数据库中,您将拥有带有 10 个道具的人。您很可能会使用映射器或 ext 方法将一个实体映射到另一个实体
【解决方案2】:

这样的关系对吗?

我的回答是这取决于你的项目规模和团队规模,但让我解释一下我的项目架构。

  • MVC:表示层,是应用的启动项目。
  • Common:这是一个类库,其中包含一组核心类,例如帮助程序、基类等...该项目被所有其他项目引用。
  • 存储库:为了读取和写入数据库,我创建了一个项目并将其命名为存储库。这个项目是存储库和工作单元模式的组合。实施这些模式可以帮助您的应用与数据存储中的更改隔离开来。
  • 测试:在这个项目中编写了单元测试。

希望这会对你有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 2023-03-27
    相关资源
    最近更新 更多