zoukankan      html  css  js  c++  java
  • 🍖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

  • 相关阅读:
    微软免费人工智能课程
    如何定义,创建,启动一个线程
    什么是进程,什么是线程?
    Hashtable 数据遍历的几种方式
    action中result没有值
    <global-results>怎么用
    普通请求和ajax请求的区别
    result默认返回action中的所有数据,要想返回指定的数据怎么做呢
    ajax技术的应用?
    什么是国际化
  • 原文地址:https://www.cnblogs.com/songhaixing/p/14583268.html
Copyright © 2011-2022 走看看