手把手带你写一个 Web 框架
叶剑峰
腾讯高级工程师,前滴滴技术专家
22731 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
特别放送 (1讲)
手把手带你写一个 Web 框架
15
15
1.0x
00:00/00:00
登录|注册

大咖助阵|大明:抽象,抽象,还是抽象

实现平等原则
Register + init
不提供多样化的接口实现
设计接口和接入实现的方式
隔离出来的是一个可测试的单元
为新的抽象提供实现
为了特定实现,引入新的抽象
用于支撑核心抽象的实现
支撑核心抽象的实现
准确界定Web框架的边界
精准描述Web框架的主要责任
ServeHTTP
设计方式
实现引入的接口
核心的抽象
分析框架要解决什么
自顶向下的设计方式
AOP解决方案
模板支持
特定格式支持
文件操作类
参数解析校验功能
路由问题
接入机制
超前一步设计
隔离
借鉴类似的框架
依赖于个人的经验
自顶向下的设计
次级抽象
核心抽象
重要的是抽象,抽象的表达形式是多样的
正确认识问题
将抽象落地为代码,即设计
建立对现实世界抽象
总结
设计方式
次级问题
核心问题
如何适应变更
如何识别变更点
构建抽象的过程
构建抽象
设计的前提
程序是人对现实世界的抽象的形式化描述
Web框架
抽象

该思维导图由 AI 生成,仅供参考

你好,我是大明。
之前我在极客时间的毛剑老师的 Go 进阶训练营里,为基础不太好的同学开了一个小课,主要是通过讲如何设计一个 Web 框架来带领学员一起巩固 Go 基础,侧重点在 Go 语法上,没有深入讨论设计本身以及设计理念。
但是,教会如何用一个框架是个很简单的问题,教会如何做抽象才是一个很难、但很有价值的问题。所以今天我想借这篇加餐的机会,围绕 Web 框架的设计,来分享一下我平时在做设计和落地时对抽象的一些体会。
在开始讨论之前,我们要先搞清楚一个问题:为什么抽象那么重要?
因为我认为,程序是人对现实世界的抽象的形式化描述。它包含两层含义:第一个含义是要先建立对现实世界抽象;第二个是能够将这个抽象落地为代码,也就是设计。因此,抽象是设计的前提。
通俗点就是,如果你不能正确认识问题,怎么奢求自己能够正确解决问题呢?所以,我们先稍微讨论一下 Web 框架,看看它背后对应的问题。

Web 框架

Web 框架要解决的问题是什么?处理 HTTP 请求。进一步细想,我们会想到具体如何处理请求,但这不是 Web 框架的事情,而是用户的事情。比如说用户登录的请求,Web 框架肯定是不知道如何处理的。
所以我们能够认识到,Web 框架主要负责:接收请求、找到用户处理逻辑调用一下、再把响应写回去。也就是三件事:接受请求、分发请求、写回响应。如果用伪代码来描述就是:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了抽象设计在技术开发中的重要性和方法。作者以Web框架设计为例,强调了抽象的关键作用,并介绍了构建抽象和识别变更点的方法。通过实际案例,文章详细介绍了设计接口和接入实现的方式,以及如何识别变更点并构建抽象。作者提出了自顶向下的设计方式,并探讨了如何适应变更的方法。此外,文章还讨论了接口的质量对设计的影响,以及接入机制的设计难点。总的来说,本文通过深入浅出的方式阐述了抽象设计的重要性和方法,对于技术人员在设计和开发过程中具有一定的借鉴意义。文章内容涵盖了技术设计的实际问题和解决方法,对读者快速了解抽象设计的重要性和方法具有一定的参考价值。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《手把手带你写一个 Web 框架》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(2)

  • 最新
  • 精选
  • Casin
    最近刚好在设计系统,学习了

    作者回复: 感谢

    2022-07-14归属地:北京
  • Vincent
    高屋建瓴,对于抽象的价值与过程,又加深了
    2021-11-24
    3
收起评论
显示
设置
留言
2
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部