在模型 - 视图 - 控制器原理中,前端是什么,后端是什么?

时间:2012-06-16 20:53:34

标签: model-view-controller

维基百科说:

  

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

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

5 个答案:

答案 0 :(得分:35)

好的..首先是条款:

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

如果你阅读GUI Architectures并研究一般的MVC模式,你就会明白 MVC不是关于后端和前端的分离。特别是涉及MVC-inspired patterns时,我们将其用于Web应用程序。

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

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

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

我们举一个例子:

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

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

  

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

Post Scriptum

由于您已经使用Rails构建了一些应用程序,因此您对MVC的理解可能会失真。我说这个的原因是因为,因为RoR最初是作为原型框架(注意所有脚手架和其他用于生成丢弃代码的功能),并且由于它的起源,Rails实际上正在实现一个非常贫穷的MVP版本。

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

我建议你阅读两本出版物,以便更好地掌握这个主题:

第二个是尽可能接近模式的初始定义。这与“GUI架构”文章一起,应该为您提供坚实的基础。而PoEAA的书(难以阅读,顺便说一句)将为您提供扩展它的背景。

答案 1 :(得分:9)

也许下图可以帮助..

MVC               Human language    backend/frontend
---------------   ---------------   ---------------
model          -> data           -> backend
controllers    -> actions        -> backend/frontend (depends on implementation)
views          -> GUI            -> frontend

答案 2 :(得分:3)

  • views = frontend
  • models = backend
  • controllers =前端和后端之间的粘合

答案 3 :(得分:1)

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

答案 4 :(得分:1)

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

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