MVC 模式是不是实现了 Web 框架的常见任务?
Posted
技术标签:
【中文标题】MVC 模式是不是实现了 Web 框架的常见任务?【英文标题】:Does MVC pattern implement common tasks of web framework?MVC 模式是否实现了 Web 框架的常见任务? 【发布时间】:2020-10-31 19:20:31 【问题描述】:Web 应用程序框架的常见任务(例如:Django 或 Laravel 或 .NET 或 beego):
request / response abstraction
session state
user authentication & authorisation
page templating
URL mapping
DB access
security
caching
MVC设计模式实现以上常见任务,如下图:
URL 映射 由MVC 的Controller 组件处理。控制器将请求路由到处理程序。例如:http.ServeMux
是 GOLang 的控制器 package
请求/响应抽象由Controller通过注册handlers来执行,由web开发者编写,如下图:
sm := http.NewServeMux() // in GoLang
sm.Handle("/", productHandler)
会话状态由网络开发者编写的handler代码处理
页面模板由MVC的模板引擎(视图组件)处理
用户认证和授权由网页开发者编写的handler代码处理
DB 访问由 MVC 的 model 组件处理。
security 和 caching 由 Web 开发人员编写的 handler 代码处理
这是对MVC设计模式的正确理解来实现Web应用程序框架的常见任务吗?
【问题讨论】:
不...... MVC 的概念早于网络的创建 @ScottStensland 是的,但是.... 查询中提到的七点是否有效? 使用众多设计模式中的任何一种的关键在于,任何给定的模式都只做一个清晰的重点工作......所以没有设计模式不是应用程序框架 "这是对MVC设计模式的正确理解吗...?"对于没有单一定义的 MVC 这么宽泛的东西没有“正确的理解”。 【参考方案1】:MVC 模式有很多定义。它随着时间的推移而发展,并在不同的框架和环境中以不同的方式使用。 当它被发明时,没有 HTTP 协议,请求/响应部分也不存在。还有其他一些处理用户请求的方式。随着时间的推移,新的模板引擎被发明出来,HTTP 成为网络上的主导协议。
MVC 被认为是一种纯粹的呈现模式,因为它主要编排视图和模型(无论模型代表什么)。此外,发明 MVC 的主要原因之一是关注点分离。重要的是要保持干净、简短,并让其他层来处理逻辑。
Web 应用程序框架的共同任务是充当 IoC 容器(控制反转)并让其组件担心具体职责。所以如果是web框架的话,大概会有session、cookie、MVC……组件。
-
控制器方法只是 HTTP 接口的一个实现。 URL Mapping 可以被视为控制器方法的参数。
请求/响应由 Web 组件(Java 中的 servlet)处理
会话状态由会话组件处理,并且可以由开发人员配置,例如会话过期时间或会话 cookie 类型甚至会话类型(数据库、内存中)
正确
通常框架中都有经过验证的auth组件,但是可以手动编写(不推荐)
DB 访问由 Java 中的 JDBC 等持久层处理。 MVC 中的模型负责应在屏幕上呈现或由用户提交的数据。
同5
【讨论】:
以上是关于MVC 模式是不是实现了 Web 框架的常见任务?的主要内容,如果未能解决你的问题,请参考以下文章