【发布时间】: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 这么宽泛的东西没有“正确的理解”。
标签: go model-view-controller design-patterns httpbackend servemux