MVC 框架教程(入门):什么是 MVC、架构与示例

什么是 MVC 框架?

模型-视图-控制器 (MVC) 框架是一种将应用程序分离为三个主要逻辑组件的架构模式:模型、视图和控制器。因此得名 MVC。每个架构组件都用于处理应用程序特定的开发方面。MVC 将业务逻辑与表示层分离开来。它传统上用于桌面图形用户界面 (GUI)。如今,MVC 架构在 Web 技术中已广泛用于设计 Web 应用程序和移动应用程序。

MVC 历史

  • MVC 架构最早由 Trygve Reenskaug 于 1979 年提出
  • MVC 模型最早于 1987 年在 Smalltalk 编程语言中引入。
  • MVC 概念首次被广泛接受是在 1988 年的一篇文章中
  • 如今,MVC 模式被广泛用于现代 Web 应用程序

MVC 的特点

  • 易于且无障碍地进行测试。高度可测试、可扩展且可插入的框架
  • 要使用 MVC 模式设计 Web 应用程序架构,它提供了对 HTML 和 URL 的完全控制
  • 利用 ASP.NET、JSP、Django 等现有功能。
  • 清晰的逻辑分离:模型、视图、控制器。应用程序任务的分离,即业务逻辑、UI 逻辑和输入逻辑
  • URL 路由以实现 SEO 友好的 URL。强大的 URL 映射,可实现易于理解且可搜索的 URL
  • 支持测试驱动开发 (TDD)

MVC 架构

以下是 MVC 框架的详细架构

MVC Architecture
MVC 架构图

三个重要的 MVC 组件是

  • 模型:包括所有数据及其相关逻辑
  • 视图:向用户显示数据或处理用户交互
  • 控制器:模型和视图组件之间的接口

让我们详细了解每个组件

查看

视图是应用程序中表示数据呈现的部分。

视图由从模型数据收集的数据创建。视图请求模型提供信息,以便它向用户显示输出。

视图还通过图表、图示和表格表示数据。例如,任何客户视图都将包含文本框、下拉列表等所有 UI 组件。

控制器

控制器是应用程序中处理用户交互的部分。控制器解释用户的鼠标和键盘输入,并指示模型和视图进行相应的更改。

控制器向模型发送命令以更新其状态(例如,保存特定文档)。控制器还向其关联的视图发送命令以更改视图的呈现(例如,滚动特定文档)。

模型

模型组件存储数据及其相关逻辑。它表示在控制器组件或任何其他相关业务逻辑之间传输的数据。例如,控制器对象将从数据库中检索客户信息。它会操作数据并将其发送回数据库或用于渲染相同数据。

它响应来自视图的请求,并响应来自控制器的更新自身的指令。它也是模式中负责维护数据的最低级别。

MVC 示例

让我们从日常生活中的 MVC 模型示例

示例 1

MVC Examples

  • 假设您去一家餐馆。您不会去厨房准备食物,虽然您可以在家这样做。相反,您在那里等待服务员过来。
  • 现在服务员过来,您点餐。服务员不知道您是谁,也不知道您想要什么,他只是记下了您食物订单的详细信息。
  • 然后,服务员去厨房。在厨房里,服务员不准备您的食物。
  • 厨师准备您的食物。服务员将您的订单连同您的桌号一起交给他。
  • 厨师然后为您准备食物。他使用配料来烹饪食物。假设您点了一个蔬菜三明治。那么他需要面包、番茄、土豆、辣椒、洋葱、甜菜、奶酪等,他从冰箱中获取这些。
  • 厨师最终将食物交给服务员。现在是服务员将食物送到厨房外的工作。
  • 现在服务员知道您点了什么食物以及它们是如何上菜的。

在此 MVC 架构示例中,

View= You
Waiter= Controller
Cook= Model
Refrigerator= Data

让我们再看一个 MVC 模型示例,

示例 2

MVC Examples

汽车驾驶机制是 MVC 模型的一个示例。

  • 每辆汽车都包含三个主要部分。
  • 视图 = 用户界面:(档位杆、仪表盘、方向盘、刹车等)
  • 控制器- 机制(引擎)
  • 模型- 存储(汽油或柴油箱)

汽车由发动机驱动,从存储中获取燃料,但它仅使用指定的 UI 设备运行。

流行的 MVC Web 框架

这里是一些流行的 MVC 框架列表

MVC 的优势:主要好处

以下是使用 MVC 架构的主要优点

  • 代码易于维护,易于扩展和增长
  • MVC 模型组件可以独立于用户进行测试
  • 更容易支持新的客户端类型
  • 可以并行开发各种组件。
  • 它通过将应用程序分为三个单元来帮助您避免复杂性:模型、视图和控制器
  • 它只使用前端控制器模式,通过单个控制器处理 Web 应用程序请求。
  • 测试驱动开发 提供最佳支持
  • 它非常适合由大量网页设计师和开发人员组成的团队支持的 Web 应用程序。
  • 提供清晰的关注点分离 (SoC)。
  • 搜索引擎优化 (SEO) 友好。
  • 所有类和对象都是相互独立的,因此您可以单独测试它们。
  • MVC 设计模式允许将控制器上的相关操作进行逻辑分组。

使用 MVC 的缺点

  • 模型难以阅读、更改、单元测试和重用
  • 框架导航有时可能很复杂,因为它引入了新的抽象层,需要用户适应 MVC 的分解标准。
  • 无正式的验证支持
  • 复杂性增加和数据效率低下
  • 使用 MVC 处理现代用户界面的困难
  • 需要多名程序员进行并行编程。
  • 需要多种技术的知识。
  • 控制器中的大量代码维护

三层架构 vs MVC 架构

参数 三层架构 MVC 架构
沟通 这种架构模式从不直接与数据层通信。 所有层都通过三角形拓扑直接通信。
用途 三层:广泛用于 Web 应用程序,其中客户端、数据层和中间件运行在物理上分离的平台上。 通常用于在单个图形工作站上运行的应用程序。

摘要

  • MVC 是一种将应用程序分离为 1) 模型、2) 视图和 3) 控制器的架构模式
  • 模型:包括所有数据及其相关逻辑
  • 视图:向用户显示数据或处理用户交互
  • 控制器:模型和视图组件之间的接口
  • MVC 架构最早由 Trygve Reenskaug 于 1979 年提出
  • Java 中的 MVC 架构是一个高度可测试、可扩展且可插入的框架
  • 一些流行的 MVC 框架包括 Rails、Zend Framework、CodeIgniter、Laravel、Fuel PHP 等。