gpt4 book ai didi

asp.net-mvc - 让 MVC Controller 轻而模型重

转载 作者:行者123 更新时间:2023-12-04 03:53:29 25 4
gpt4 key购买 nike

我听说 Controller 应该保持轻便而模型要重。

对于 Controller 中应该保留什么以及模型中应该保留什么的最佳实践,我有些困惑。

在我们的组织中,我们在哪里使用 Entity Framework 并将表放在那里。

对于 Controller ,我们使用 LINQ,然后将信息发送到 View 。

对 Controller 和模型中应该包含哪些代码有点困惑。

最佳答案

Disclaimer
The whole topic is a giant mess. Especially when it comes to Web MVC. For all practical purposes it is impossible to use classical MVC pattern for web, because the view should be observing model. Theoretically you could implement something like that with WebSockets, but keeping a persistent model for each user is not a realistic solution.



这是你必须了解的 MVC

经典 MVC 和受 MVC 启发的模式中最重要的思想 Separation of Concerns .它将应用程序分为两个主要层:
  • 表示层

    管理用户界面。它处理界面的创建和对用户对该界面的操作作出 react 。该接口(interface)可能是桌面应用程序或 HTML 网页的 GUI,但它也可以是 REST API 或火星探测器上的接收器-响应器。这就是为什么 Web 应用程序可以在前端和后端实现 MVC 模式的原因。

    必需的部分是 View 和 Controller ,但在 web 上下文中,完全实现的 View 通常也使用多个模板来创建界面。
  • 模型层

    这是所有业务规则和逻辑所在的地方。 手机 在 MVC 中不是一个单一的实体。相反,它是一个包含不同结构的层。其中一些结构还负责与存储的交互。

  • 控制者的职责是什么?

    Controller 是表示层的一部分,它处理用户输入。在基于 Web 的实现的上下文中, View 和 Controller 之间通常具有 1:1 的关系,其中 Controller 接收来自浏览器的请求,并根据所述请求的内容更改模型层和 View 的状态。

    如果您使用的是经典 MVC 或 Model2 MVC,那么这就是 Controller 职责的范围。

    在 MVP 和 MVVM 模式中,您有一个被动 View ,类似 Controller 的结构负责从模型层获取信息并将其传递给当前 View 实例。 This post可能会提供有关受 MVC 启发的模式的一些其他详细信息。

    但 Controller 绝不负责任何形式的业务逻辑。如果是,则意味着您有一个泄漏的抽象,因为表示层的结构会起作用,这应该在模型层中。

    通常, Controller 将是您应用程序中最简单的结构。

    模型呢?

    如前所述,模型是一个层,它包含所有领域业务逻辑和相关功能。该层,就像表示层一样,由多组结构组成:
  • 域对象 [1]

    在谈论“模型”时,这些结构通常是人们的意思。它们也被称为 model objectsbusiness objects .这是大多数领域业务逻辑结束的地方。
  • 数据存储结构

    该组将包含所有类,它们抽象与存储的交互(SQL 数据库、缓存系统、noSQL、远程 SOAP 或 REST API)。他们通常会实现data mapper 的一些变体。或 repository pattern ,但您也可以使用其他一些解决方案,例如 unit of work .实现细节并不那么重要。重要的是它们允许您从域对象中存储数据并将信息检索到域对象中。
  • 服务

    或者你可以称之为“组件”。模型层中有高级抽象,这有助于域对象和存储结构之间的交互。通常表示模型层的大块,如“识别服务”、“邮件”、“文章管理”,并为表示层提供交互的接口(interface)。
  • 关于asp.net-mvc - 让 MVC Controller 轻而模型重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12012817/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com