【问题标题】: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设计模式实现以上常见任务,如下图:

  1. URL 映射 由MVC 的Controller 组件处理。控制器将请求路由到处理程序。例如:http.ServeMux 是 GOLang 的控制器 package

  2. 请求/响应抽象Controller通过注册handlers来执行,由web开发者编写,如下图:

    sm := http.NewServeMux()     // in GoLang
    
    sm.Handle("/", productHandler)
    
  3. 会话状态由网络开发者编写的handler代码处理

  4. 页面模板由MVC的模板引擎(视图组件)处理

  5. 用户认证和授权由网页开发者编写的handler代码处理

  6. DB 访问由 MVC 的 model 组件处理。

  7. securitycaching 由 Web 开发人员编写的 handler 代码处理


这是对MVC设计模式的正确理解来实现Web应用程序框架的常见任务吗?

【问题讨论】:

  • 不...... MVC 的概念早于网络的创建
  • @ScottStensland 是的,但是.... 查询中提到的七点是否有效?
  • 使用众多设计模式中的任何一种的关键在于,任何给定的模式都只做一个清晰的重点工作......所以没有设计模式不是应用程序框架
  • "这是对MVC设计模式的正确理解吗...?"对于没有单一定义的 MVC 这么宽泛的东西没有“正确的理解”。

标签: go model-view-controller design-patterns httpbackend servemux


【解决方案1】:

MVC 模式有很多定义。它随着时间的推移而发展,并在不同的框架和环境中以不同的方式使用。 当它被发明时,没有 HTTP 协议,请求/响应部分也不存在。还有其他一些处理用户请求的方式。随着时间的推移,新的模板引擎被发明出来,HTTP 成为网络上的主导协议。

MVC 被认为是一种纯粹的呈现模式,因为它主要编排视图和模型(无论模型代表什么)。此外,发明 MVC 的主要原因之一是关注点分离。重要的是要保持干净、简短,并让其他层来处理逻辑。

Web 应用程序框架的共同任务是充当 IoC 容器(控制反转)并让其组件担心具体职责。所以如果是web框架的话,大概会有session、cookie、MVC……组件。

  1. 控制器方法只是 HTTP 接口的一个实现。 URL Mapping 可以被视为控制器方法的参数。
  2. 请求/响应由 Web 组件(Java 中的 servlet)处理
  3. 会话状态由会话组件处理,并且可以由开发人员配置,例如会话过期时间或会话 cookie 类型甚至会话类型(数据库、内存中)
  4. 正确
  5. 通常框架中都有经过验证的auth组件,但是可以手动编写(不推荐)
  6. DB 访问由 Java 中的 JDBC 等持久层处理。 MVC 中的模型负责应在屏幕上呈现或由用户提交的数据。
  7. 同5

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-19
    • 1970-01-01
    • 2014-03-28
    • 2018-10-04
    • 2017-05-01
    • 2013-09-01
    • 2011-05-06
    • 1970-01-01
    相关资源
    最近更新 更多