0%

【TinyWebServer】工作两年,回看WebServer

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本身就可以很好的支持
  • 本文作者: 两猿社·社长
  • 本文链接: https://2yuan.club/posts/f9d605ee/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!