TinyWebserver是Web服务器吗?Web服务器、Web框架和应用服务器有什么区别?不同开发语言下的Web技术栈本质是否相通?
你好,我是社长。
作为公众号的老朋友,我从2020年初开始写文章,大概四个月的时间,更新了《TinyWebServer》《UART》两个系列文章,之后便”消失”了两年的时间。
“消失”的这段时间,除了被迫学习,忙工作上的事情外,其实一直在关注网络上对于TinyWebServer的讨论。今天,我想从Web服务器,Web框架,应用服务器的角度和大家再聊一聊WebServer。
TinyWebServer现状
如果是学习C++的新同学,我想你大概率听说过WebServer,也许更熟悉的,是许多同学嘴边那句”烂大街的Web服务器”。
C++服务器变成校招简历常客,应该是在19年linyacool开源WebServer项目之后,如果说是谁造成了WebServer烂大街,我想TinyWebServer应该是有一点责任的。
那时候TinyWebServer还是个只有几十星的repo,随着项目详解的更新和同学们的口口相传,现在的TinyWebServer已经是一个8.5K星星的项目了。虽然上过几个公众号的热榜,但我总有一种被大家错爱的感觉,以前大多是因为项目大部分代码在书上都可以找到,工作后我慢慢发现项目好像存在一些问题。
TinyWebServer是Web服务器吗?
群里的朋友应该知道,我今年从深圳某大厂离职回到了成都。之前在深圳,我的语言是Python/Golang,偶尔也会维护PHP的代码。
web服务器和web框架
python开发环境下,两者都是必须的
- Web服务器
- 处理网络IO,通过响应html页面来处理http请求
- 只能用来处理http请求
- 应用服务器
- 除http协议外,还支持其他协议
- Web框架
部署方式
- 为什么不同的语言部署方式不同?
- 解释性语言一定会有特殊的web服务器吗?python有uwsgi
- python
- nginx + uwsgi + django
- nginx + gunicorn + uvicorn + fastapi
- …
- golang
- 二进制文件部署
- java
- nginx + tomcat + springboot
- php
- nginx + php-fm
- 项目中的cgi是什么,你为什么删掉了?删掉之后还是webserver吗?
cpp
- CGI
- 为什么会出现
- 是什么东西
- 怎么用
- fastcgi
python
wsgi是个应用程序服务器进程内调用应用程序使用的接口规范,是针对python语言的;
uwsgi fastcgi scgi 则是web服务器与应用程序服务器进程间使用的协议,与语言无关
php
go
- golang需要独立的web服务器吗?go本身就可以很好的支持