33.1 Web 框架
现在大家做的大部分工作都和 Web 开发有关系,我们学习的不是怎么使用 Go 语言来写一个 Web 程序,我们关键是通过 Web 开发分清楚对于一个复杂的系统我们要去怎么样去鉴定各自的边界,我们知道 Web 开发包含的内容非常的多,我们需要做的是怎么样把这些功能整合到一起,它们各自边界是什么,它们各自相关代码的流程是什么,这些东西没有什么复杂度的问题,关键要搞清楚流程。
我们学习 Web 框架的时候,很多人只能说照着对方的例子或者文档照抄,几乎没有尝试过怎么去优化或者发现 Web 框架本身有什么问题,是否适合当前应用,因为很难拿到一个衡量标准去做这件事。因为我们并没有真正理解框架内部是什么样的,只是因为熟悉它或者公司已经拿这个东西再用了。但是用的东西未必适合当前这个项目。到目前为止大部分人都停留在用代码往项目上靠,而不是因为某个项目去选择某类代码,这是两种不同的境界。
Web Server
首先我们分清楚 Web 开发严格来说分成两个部分,首先是 Web Server,然后是 Web Framework。这两个东西是完全不一样的,不要一说到 Web 开发就是 Web 框架之类的东西。只不过现在大部分人不会去写 Web Server,而会使用现成的 Nginx。或者说现在很多 Web Framework 会内置 Web Server,但一定要搞清楚这两者并不是一回事。
Web Server 干什么用的呢,首先它会通过 Socket 去处理网络请求,就是说用这个东西来完成网络通信部分,那么我们在这上面基于 TCP 协议、在 TCP 协议之上走 HTTP 协议去解析。
对于 Web Server 来说更关注的不是说解析之后怎么去处理,它关注的重点在 Socket 和 TCP 层