27

维基百科说:

MVC 为数据库、用户和数据处理组件提供前端和后端。将软件系统分离为前端和后端简化了开发并分离了维护。

我仍然看不到模型-视图-控制器原理与前端和后端概念之间的联系。可以将访问数据库的模型视为后端,将视图视为前端吗?

4

5 回答 5

54

好的..首先是条款:

  • 前端- 是用户可见的部分:HTML、CSS、客户端 Javascript。这一切基本上都是“前端”。在桌面应用程序前端将是 GUI。
  • 后端- 是不可见的部分。在您的 java、ruby、php 或任何其他服务器端代码的 Web 应用程序中。它可以被解释或编译,因为它的“如何”工作对它的“什么”没有影响。

如果您阅读GUI Architectures并总体上研究 MVC 模式,您就会明白MVC 不是后端和前端的分离。特别是当涉及到受 MVC 启发的模式时,我们将其用于 Web 应用程序。

MVC 和相关模式的目标是将表示与领域业务逻辑分开。

以下是 MVC 部分的基本职责:

  • 模型- 业务逻辑
  • 视图- 表示逻辑
  • 控制器- 改变模型和视图的状态(基于用户输入)

举个例子:

  • twitter 的替代客户端应用程序
  • 使用 OAuth 进行身份验证
  • 用户可以输入不同的搜索词组
  • 通过 Twitter 的 REST API 获取信息
  • 验证数据
  • 解析 JSON 响应
  • 操纵 DOM 来呈现信息

这一切都可以通过客户端 JavaScript 完成。你可以让 MVC 三元组运行“前端”同时,提供 REST API 的“后端”是一个类似 MVC 的结构。只有这一次视图生成 JSON 响应,而不是 HTML。

*结论:您可以在后端和前端使用 MVC 模式。**

后经

由于您一直在使用 Rails 构建一些应用程序,因此您对 MVC 的理解可能有些曲解。我之所以这么说是因为,由于 RoR 最初是作为原型框架制作的(注意所有用于生成一次性代码的脚手架和其他功能),并且由于它的起源,Rails 实际上是在实现一个非常贫乏的 MVP 版本。

我称之为“贫血”,因为他们削弱了 View (它应该是 MVP 中的被动对象,而不是简单的模板)和模型层(是的,它应该是一个复杂的层,而不是 ORM 实例的集合)

我建议您阅读两篇出版物以更好地掌握该主题:

第二个是尽可能接近模式的初始定义。这与“GUI 架构”文章一起,应该为您在该主题上打下坚实的基础。PoEAA 书(硬读,顺便说一句)会给你扩展它的上下文。

于 2012-06-17T00:01:35.000 回答
18

也许下图可以帮助..

MVC               Human language    backend/frontend
---------------   ---------------   ---------------
model          -> data           -> backend
controllers    -> actions        -> backend/frontend (depends on implementation)
views          -> GUI            -> frontend
于 2015-06-02T11:02:00.493 回答
2
  • 视图 = 前端
  • 模型 = 后端
  • 控制器 = 前端和后端之间的粘合
于 2012-06-16T20:58:01.750 回答
1

前端是用户看到哪些是视图。后端是控制器和模型。

于 2012-06-16T20:56:52.667 回答
1

在这种情况下,后端传统上意味着更深层次的操作系统代码,甚至是用户无法看到/控制的代码。

前端是用户看到的实际视图。

于 2012-06-16T20:59:00.937 回答