什么是MVC?
MVC是一种架构模式,它将应用程序分为三个主要逻辑组件
- 模型 Model
- 视图 View
- 控制器 Controller
MVC将业务逻辑层和表示层相互分离。它传统上用于桌面图形用户界面(GUI)。如今,MVC架构已经成为设计Web应用程序和移动应用程序的流行。
MVC的历史
- MVC架构于1979年由Trygve Reenskaug首次讨论
- MVC模型于1987年首次在Smalltalk编程语言中引入。
- 在1988年的一篇文章中,MVC首次被接受为一般概念
- 最近,MVC模式被广泛用于现代Web应用程序中
MVC的特点
- 高度可测试,可扩展和可插拔的框架
- 提供对HTML和URL的完全控制
- 利用Django、flask、ASP.NET,JSP,等提供的现有功能。
- 清晰的逻辑分离:模型,视图,控制器。分离任务即:业务逻辑,UI逻辑和输入逻辑
- SEO友好L的URL路由。强大的URL映射,用于可理解和可搜索的URL
- 支持测试驱动开发(TDD)
MVC架构
MVC架构图
image.png
三个重要的MVC组件是:
- 模型:它包括所有数据及其相关逻辑
- 视图:向用户显示数据或处理用户交互
- Controller:Model和View组件之间的接口
- 让我们详细看看这个组件:
- 视图
- View是表示数据表示的应用程序的一部分。
视图由从模型数据收集的数据创建。视图请求模型提供信息。
该视图还表示聊天,图表和表格中的数据。例如,任何客户视图都将包含所有UI组件,如文本框,下拉列表等。
- Controller
- Controller是处理用户交互的应用程序的一部分。控制器解释来自用户的鼠标和键盘输入,通知模型和视图以适当地改变。
Controller向模型发送命令以更新其状态(例如,保存特定文档)。控制器还将命令发送到其关联视图以更改视图的显示(例如,滚动特定文档)。
- 模型
- 模型组件存储数据及其相关逻辑,表示在控制器组件或任何其他相关业务逻辑之间传输的数据。例如,Controller对象将从数据库中检索客户信息。它操纵数据并发送回数据库或使用它来呈现相同的数据。
它响应来自视图的请求,并响应来自控制器的指令以更新自身。它也是负责维护数据的模式的最低级别。
MVC示例
让我们看看日常生活中的模型视图控制器:
例1:点餐
- 假设你去一家餐馆。你不会去厨房准备你可以在家里做的食物。相反,你只是去那里等待服务员来。
- 现在服务员来找你,你只需要点食物。服务员不知道你是谁,你想要什么,他只是写下你的食物订单的细节。
- 服务员到厨房。但她不准备你的食物。
- 厨师准备你的食物。服务员会将您的订单连同您的餐桌号码一起交给他。
- 厨师然后为你准备食物。他用成分来烹饪食物。我们假设您的订单是蔬菜三明治。然后,他需要从冰箱中取出的面包,西红柿,土豆,辣椒,洋葱,小块,奶酪等
- 厨师最后把食物交给服务员。现在服务员的工作就是把这些食物搬到厨房外面。
- 现在,服务员知道您订购的食品以及如何送达。
在这种情况下,
试图=你
服务员=控制器
库克=模型
冰箱=数据
例2:汽车驱动
汽车驱动机制是MVC模型的另一个例子。
每辆车都包含三个主要部分。
View =用户界面:(变速杆,面板,方向盘,制动器等)
控制器 - 机制(引擎)
模型 - 储存(汽油)
汽车从发动机运行从存储中获取燃料,但它仅使用提到的用户界面设备运行。
流行的MVC Web框架
这里是一些流行的MVC框架的列表。
- Django
- Flask
- tornada
- Ruby on Rails
- CakePHP
- Yii
- CherryPy
- Spring MVC
- Catalyst
- Zend Framework
- CodeIgniter
- Laravel
- Fuel PHP
- Symphony
MVC的优势:主要优势
这里是使用MVC架构的主要好处。
- 易于代码维护,易于扩展和扩展
- MVC模型组件可以与用户分开测试
- 更容易支持新型客户
- 可以并行地执行各种组件的开发。
- 它通过将应用程序划分为三个单元来帮助您避免复杂性。型号,视图和控制器
- 它仅使用Front Controller模式,通过单个控制器处理Web应用程序请求。
- 为测试驱动开发提供最佳支持
- 它适用于由大型Web设计人员和开发人员团队支持的Web应用程序。
- 提供干净的关注点分离(SoC eparation of concerns)。
- 搜索引擎优化(SEO Search Engine Optimization)友好。
- 所有分类和对象彼此独立,以便您可以单独测试它们。
- MVC允许将控制器上的相关动作逻辑分组在一起。
使用MVC的缺点
- 难以阅读,更改,单元测试和重用此模型
- 框架导航可能有时间复杂,因为它引入了新的抽象层,这要求用户适应MVC的分解标准。
- 没有正式的验证支持
- 增加了数据的复杂性和低效率
- -与现代用户界面结合有难度
- -需要多个程序员进行并行编程。
- -需要了解多种技术。
- -在Controller中维护大量代码
参数 |3层体系结构 |MVC体系结构
通信|这种类型的体系结构模式永远不会直接与数据层通信。|所有层使用三角形拓扑直接通信。
用法 |3层:广泛用于Web应用程序,其中客户端,数据层和中间件a在物理上独立的平台上运行。 |通常用于在单个图形工作站上运行的应用程序。
小结
今日头条极速版上每天赚5毛钱的办法
- MVC是一种架构模式,将应用程序分为1)模型,2)视图和3)控制器
- 模型:它包括所有数据及其相关逻辑
- 视图:向用户显示数据或处理用户交互
- Controller:Model和View组件之间的接口
- MVC架构于1979年由Trygve Reenskaug首次讨论
- MVC是一个高度可测试,可扩展和可插入的框架
- 一些流行的MVC框架是Django、flask、tornada、Rails,Zend Framework,CodeIgniter,Laravel,Fuel PHP等。