5. 尝试开始源码阅读之旅
从现在起,尝试开始阅读一门语言的基础框架源码,如何开始呢?第一步肯定是下载源码并搭建调试环境,但接下来,面对一个庞大的框架,从哪个类或者方法开始阅读呢?
建议按照“事情发展的顺序”来进行,对于一个后端应用来说,主要的功能就是相应客户端的请求。为了避免前端语言的干扰,我们以JSON请求为例,比如以POST方式提交一个JSON到后端服务,服务接收到请求并进行处理,最终将处理结果返回给客户端,基本上就是这样的处理流程。而这个流程一般以HTTP协议的请求为主。
5.1 简要回顾一下HTTP相关知识
一个请求可以分为请求地址和请求方法,请求头和请求体。如下图所示
响应头部主要包括HTTP协议的版本、状态码、响应内容的格式等,响应体一般为响应的具体内容。
所以,后端服务器就是实现了接收HTTP请求并进行处理,然后返回相应结果的功能。而后端服务一般由HTTP服务器(IIS、Apache、Tomcat等,Tomcat比较特殊,既实现了HTTP服务器的功能,又实现了servlet容器的功能。)+处理程序组成,所以与计算机网络相关的内容一般由HTTP服务器进行处理,如果不想深入学习这部分的同学可以跳过。
那么,我们只需要实现接收到HTTP服务传过来的请求数据并处理返回给HTTP服务器即可。
5.2 从哪开始阅读
客户端发出的请求就像唐僧取经一样,携带通关文牒(可能存在的Token等)经过层层磨难(多层组件的处理)到达西天取得真经(HTML、JSON、XML等)返回。
那么可以将整个故事分为两部分:
框架的构建及启动:取经路的构建过程,八十一难不是瞬间构成的。
请求的处理流程:请求是都经过了那些环节,被做了哪些验证和处理。
对框架源码的阅读也可以从这两条线出发。
6. 思考一下
从框架设计的角度,先思考一下,都会有哪些组件,组合关系如何,大概会涉及哪些设计原则和设计模式?也可以大概画个流程图。
涉及不同请求格式的处理,例如XML、JSON等,那么每种格式就可能会有对应的一个或一组处处理类,对于单独的处理类,会用到工厂模式?对于多个处理类的管理,策略模式?
庞大的框架构建工程,建造者模式?
各种状态的监听,观察者模式?
现在可以选一门目标语言开始学习了,
下一篇:如何在Idea中调试最新版本的Tomcat10源代码,以Tomcat为例,开启新的源码阅读。