wsgi、uwsgi、asgi协议的关系

WSGI, UWSGI和ASGI

首先是介绍什么是WSGI, 接着是什么是UWSGI, 接着是ASGI

        首先需要介绍的是CGI, CGI全称(Common Gateway Interface, 通用网关接口),定义的是客户端与Web服务器交流方式的一个程序.例如正常情况下客户端发送来一个请求,CGI根据HTTP协议的将请求内容进行解析, 经过计算以后会将计算出来的内容封装好,比如服务器返回一个html页面,并且根据http协议构建返回的内容格式,涉及到的tcp连接、http原始请求和相应的格式这些, 都是由一个软件来完成,完成以上的工作需要一个程序来完成, 便是CGI。

  关于WSGI, 全称Web服务器网关接口(Python Web Server Gateway Interface, WSGI),是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口..简单来说就是用来处理Web服务端与客户端的通信问题的,(以django框架为例,使用的是wsgiref模块,该模块的功能)

以django框架为例,使用的是wsgiref模块,该模块的功能是:
    监听8000端口,把http请求根据WSGI协议将其转换到applcation中的environ参数, 然后调用application函数.
    wsgiref会把application函数提供的响应头设置转换为http协议的响应头,把application的返回(return)作为响应体,根据http协议,生成响应,返回给浏览器.

UWSGI是一个Web服务器, 实现了WSGI协议,uwsgi,http等协议,

uwsgi是一个二进制协议, 能够携带任何类型的信息,uwsgi数据包的前4个字节用于面描述信息的类型,该协议主要工作在tcp方式下,uwsgi是一种线路协议而不是通信协议,因此常用于在uWSGI服务器与其他网络服务器的数据通信.

uwsgi 协议是一个 uWSGI服务器自有的协议,用于定义传输信息的类型

Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。

对于管理人员来说,uWSGI服务器提供了各种配置方法:命令行、环境变量、XML、INI、YAML、JSON、SQlite3数据库和LDAP。

除此之外,它的设计完全模块化,这意味着,可以使用不同的插件以便满足不同的技术应用,从而实现兼容性.
关于ASGI

 是异步网关协议接口,介于网络服务和python饮用应用之间的标准接口,能够处理多种通用的协议类型,包括http,http2和websocket.

关于WSGI和ASGI的区别是

WSGI是基于http协议模式开发的,不支持websocket,而ASGI的诞生解决了python中的WSGI不支持当前的web开发中的一些新的协议标准,同时ASGI支持原有模式和Websocket的扩展, 即ASGI是WSGI的扩展.

关于ASGI的应用案例, 下一篇博客我们再聊

猜你喜欢

转载自blog.csdn.net/bruce_van/article/details/98477037