CGI、FastCGI、WSGI、uWSGI、uwsgi关系

引入

CGI、FastCGI、WSGI、uWSGI、uwsgi是什么 ?

之间的关系?

一.CGI

  • 通用网关接口(Common Gateway Interface/CGI)是外部应用程序与Web服务器之间的接口标准,用来规定一个程序该如何与web服务器程序之间通信
  • CGI程序可以用任何脚本语言或者是完全独立编程语言实现,只要这个语言可以在这个系统上运行
  • 用来规范web服务器传输到php解释器中的数据类型以及数据格式,包括URL、查询字符串、POST数据、HTTP header等,也就是为了保证web server传递过来的数据是标准格式的
  • 总结 : CGI是一个标准,定义了客户端服务器之间如何传数据

二.fastCGI

  • 快速通用网关接口 (Fast Common Gateway Interface/FastCGI) 是一种让交互程序与Web服务器通信的协议, 它是早期 CGI 的一个增强版本

  • 像是一个常驻(long-live)型的CGI , 废除了 CGI fork-and-execute (来一个请求 fork 一个新进程处理, 处理完再把进程 kill 掉)的工作方式, 转而使用一种长生存期的方法, 减少了进程消耗, 从而使服务器可以同时处理更多的网页请求

  • 使用fastCGI的服务器 :

- Apache HTTP Server (部分)
- Cherokee HTTP Server
- Hiawatha Webserver
- Lighttpd
- Nginx
- LiteSpeed Web Server
- Microsoft IIS
  • 总结 : CGI 的升级版

image-20210324184933531


三.WSGI

  • 全称 Web Server Gateway Interface 或者 Python Web Server Gateway Interface

  • Web服务器网关接口, 是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口; 自从 WSGI 被开发出来以后, 许多其它语言中也出现了类似接口

  • WSGI 是作为 Web 服务器与 Web 应用程序或应用框架之间的一种低级别的接口, 以提升可移植 Web 应用开发的共同点; WSGI 是基于现存的 CGI 标准而设计的

# 例 : 
Web server(web服务器:比如uWSGI) 与 Web application(web应用框架:比如django)进行交互
uwsgi协议需要将过来的请求转给django处理,那么uWSGI和django的交互和调用就需要一个统一的规范
这个规范就是WSGI(Web Server Gateway Interface)
  • WSGI 的官方定义是: the Python Web Server Gateway Interface; 从名字就可以看出来,这东西是一个Gateway,也就是网关: 网关的作用就是在协议之间进行转换
  • 实现WSGI协议的模块 :
1.django : wsgiref模块, 本质上就是编写一socket服务端, 用于接收用户请求
2.Flask : werkzeug、wsgi模块, 本质上就是编写一个socket服务端,用于接收用户请求
  • 总结 : 为Python定义的web服务器和web框架之间的接口标准

四.wsgiref

  • Python中的一个WSGI模块 : wsgiref
  • 它是用纯Python编写的WSGI服务器的 ‘‘参考实现’’
  • 所谓 ‘‘参考实现’’ 是指该实现完全符合WSGI标准,但是不考虑任何运行效率,仅供开发和测试使用

五.uWSGI

  • uWSGI 是一个Web服务器, 它实现了WSGI、uwsgi、http等协议, 用于接收前端服务器转发的动态请求并处理后发给 web 应用程序
  • 类似的web服务器
uWSGI : 用c语言写的,性能比较高
gunicorn : python写的, 在unix上被广泛使用
tornado : python写的, 异步非阻塞web服务器, 也可以部署django项目
wsgiref、werkzeug(是符合WSGI协议的web服务器+工具包(封装了一些东西))
  • Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换
  • 总结 : 一个Web Server, 即一个实现了WSGI的服务器, 处理发来的请求

六.uwsgi

  • 它是uWSGI服务器实现的独有的线路协议, 用于定义传输信息的类型, 是用于前端服务器与 uwsgi 的通信规范

  • uwsgi和WSGI都是基于CGI扩展出来的

  • 总结 : uWSGI自有的一个协议

image-20210324204141909


七.区分 WSGI、uwsgi、uWSGI

  • WSGI是一种通信协议
  • uwsgi是uWSGI自有的一种线路协议,常用于在uWSGI服务器与其他网络服务器的数据通信
  • 而uWSGI是实现了uwsgi和WSGI两种协议的Web服务器

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

给你骨质唱疏松

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值