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

Kir*_*iki 16 model-view-controller

维基百科说:

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

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

ter*_*ško 36

好的..首先是条款:

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

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

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

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

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

我们来举个例子:

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

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

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

Post Scriptum

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

我把它称为"贫血",因为它们既妨碍了View (它应该是MVP中的被动对象,而不是简单的模板)和模型层(是的,它应该是一个复杂的层,而不是ORM实例的集合).

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

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


Pit*_*kos 11

也许下图可以帮助..

MVC               Human language    backend/frontend
---------------   ---------------   ---------------
model          -> data           -> backend
controllers    -> actions        -> backend/frontend (depends on implementation)
views          -> GUI            -> frontend
Run Code Online (Sandbox Code Playgroud)