许多框架遵循MVC架构模式从用户接口中分离数据模型与业务规则。
架构模式是在给定上下文中解决软件架构中通用的、可重用的常见问题的解决方案。
架构模式解决了软件工程中的各种问题,例如计算机硬件性能限制,高可用性和业务风险最小化。
模型-视图-控制器(通常称为MVC)是一种软件设计模式,通常用于开发用户界面,将相关的程序逻辑分为三个可以相互连接的部分。这样做是为了将信息的内部表示形式与呈现给用户接收的信息分开。
MVC即Model-View-Controller
(模型-视图-控制器)
model是应用程序的动态数据结构,管理应用程序的数据、逻辑和规则,并从控制器接收用户输入。
view最终以特定格式展示model对象。
view代表信息的表示形式,例如图表、表格,同一种信息可以给多种表示形式,例如同一组数据用柱状图和饼状图来展示。
controller对象接受用户输入并过滤,把过滤后的数据传递给model对象。
优点
可同时开发
多个开发人员可同时处理Model,Controller和View。
高内聚性
MVC将相关的Actions一起放在了Controller中, 特定模型的view也被放在了一起。
松散耦合
MVC框架的本质是一个View与Controller之间低耦合的模型
易于修改
由于职责分离,开发、修改更加容易。
可测试性
通过清晰地分离各部分,更好地独立测试每个部分。
缺点
代码可导航性
引入了间接层导致框架导航可能很复杂,并且要求用户适应MVC的分解标准。
多组件一致性
将特征分解为三个组件会导致较为分散。因此要求开发人员在代码管理上要有一致性。
必然破坏集中性
应用程序在用户看到的内容和用户使用的内容之间进行大量交互。因此,每个功能的计算和状态会集中到Model,Controller和View三部分之一,从而消除了MVC所谓的优势。
直接处理HTTP请求和响应
Web服务器和浏览器通过HTTP协议进行通信,服务器等待来自浏览器的HTTP请求,然后在HTTP响应中返回信息。Web框架使用户可以通过框架快速处理这些请求和响应。
URL路由。
大多数站点将提供许多不同的资源,可通过不同的URL进行访问。一起处理所有这些内容将很难维护,因此Web框架提供了将URL模式映射到特定处理程序功能的简单机制,可以更改用于交付特定功能的URL,而不必更改基础代码。
输入表单管理和验证。
可以通过多种方式在HTTP请求中对数据进行编码。
GET
:从服务器获取文件或数据的HTTP 请求可以编码URL参数中或URL结构中所需的数据。
POST
:用于更新服务器上资源的HTTP 请求将在请求的正文中包含更新信息作为POST数据
。
HTTP请求还可以在客户端Cookie中包含有关当前会话或用户的信息。
Web框架通常提供模板系统,具有模板引擎的HTML、XML、JSON和其他组件设置。
这些允许您使用占位符指定输出文档的结构,该占位符用于将在生成页面时添加的数据。模板通常用于创建HTML,但也可以创建其他类型的文档。Web框架还通常提供一种机制,使从存储的数据轻松生成其他格式变得容易,包括JSON和XML。
抽象并简化数据库访问,通过对象关系映射器(ORM)进行数据库连接配置和确定性数据操作。
网站使用数据库来存储要与用户共享以及有关用户的信息。Web框架通常提供抽象数据库读取、写入、查询和删除操作的数据库层,此抽象层称为对象关系映射器(ORM)。
使用ORM的优点:
针对跨站点请求伪造(CSRF)、SQL注入、跨站点脚本(XSS)和其他常见恶意攻击的Web安全防护。
Session(会话)存储和检索。