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 组件是
- 模型:包括所有数据及其相关逻辑
- 视图:向用户显示数据或处理用户交互
- 控制器:模型和视图组件之间的接口
让我们详细了解每个组件
查看
视图是应用程序中表示数据呈现的部分。
视图由从模型数据收集的数据创建。视图请求模型提供信息,以便它向用户显示输出。
视图还通过图表、图示和表格表示数据。例如,任何客户视图都将包含文本框、下拉列表等所有 UI 组件。
控制器
控制器是应用程序中处理用户交互的部分。控制器解释用户的鼠标和键盘输入,并指示模型和视图进行相应的更改。
控制器向模型发送命令以更新其状态(例如,保存特定文档)。控制器还向其关联的视图发送命令以更改视图的呈现(例如,滚动特定文档)。
模型
模型组件存储数据及其相关逻辑。它表示在控制器组件或任何其他相关业务逻辑之间传输的数据。例如,控制器对象将从数据库中检索客户信息。它会操作数据并将其发送回数据库或用于渲染相同数据。
它响应来自视图的请求,并响应来自控制器的更新自身的指令。它也是模式中负责维护数据的最低级别。
MVC 示例
让我们从日常生活中的 MVC 模型示例
示例 1
- 假设您去一家餐馆。您不会去厨房准备食物,虽然您可以在家这样做。相反,您在那里等待服务员过来。
- 现在服务员过来,您点餐。服务员不知道您是谁,也不知道您想要什么,他只是记下了您食物订单的详细信息。
- 然后,服务员去厨房。在厨房里,服务员不准备您的食物。
- 厨师准备您的食物。服务员将您的订单连同您的桌号一起交给他。
- 厨师然后为您准备食物。他使用配料来烹饪食物。假设您点了一个蔬菜三明治。那么他需要面包、番茄、土豆、辣椒、洋葱、甜菜、奶酪等,他从冰箱中获取这些。
- 厨师最终将食物交给服务员。现在是服务员将食物送到厨房外的工作。
- 现在服务员知道您点了什么食物以及它们是如何上菜的。
在此 MVC 架构示例中,
View= You Waiter= Controller Cook= Model Refrigerator= Data
让我们再看一个 MVC 模型示例,
示例 2
汽车驾驶机制是 MVC 模型的一个示例。
- 每辆汽车都包含三个主要部分。
- 视图 = 用户界面:(档位杆、仪表盘、方向盘、刹车等)
- 控制器- 机制(引擎)
- 模型- 存储(汽油或柴油箱)
汽车由发动机驱动,从存储中获取燃料,但它仅使用指定的 UI 设备运行。
流行的 MVC Web 框架
这里是一些流行的 MVC 框架列表
- Ruby on Rails
- Django
- CakePHP
- Yii
- CherryPy
- Spring MVC
- Catalyst
- Rails
- Zend Framework
- CodeIgniter
- Laravel
- Fuel PHP
- Symphony
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 等。