wsgi、uwsgi、asgi協議的關係

WSGI, UWSGI和ASGI

首先是介紹什麼是WSGI, 接着是什麼是UWSGI, 接着是ASGI

        首先須要介紹的是CGI, CGI全稱(Common Gateway Interface, 通用網關接口),定義的是客戶端與Web服務器交流方式的一個程序.例如正常狀況下客戶端發送來一個請求,CGI根據HTTP協議的將請求內容進行解析, 通過計算之後會將計算出來的內容封裝好,好比服務器返回一個html頁面,而且根據http協議構建返回的內容格式,涉及到的tcp鏈接、http原始請求和相應的格式這些, 都是由一個軟件來完成,完成以上的工做須要一個程序來完成, 即是CGI。html

  關於WSGI, 全稱Web服務器網關接口(Python Web Server Gateway Interface, WSGI),是爲Python語言定義的Web服務器和Web應用程序或框架之間的一種簡單而通用的接口..簡單來講就是用來處理Web服務端與客戶端的通訊問題的,(以django框架爲例,使用的是wsgiref模塊,該模塊的功能)python

以django框架爲例,使用的是wsgiref模塊,該模塊的功能是:
    監聽8000端口,把http請求根據WSGI協議將其轉換到applcation中的environ參數, 而後調用application函數.
    wsgiref會把application函數提供的響應頭設置轉換爲http協議的響應頭,把application的返回(return)做爲響應體,根據http協議,生成響應,返回給瀏覽器.

UWSGI是一個Web服務器, 實現了WSGI協議,uwsgi,http等協議,nginx

uwsgi是一個二進制協議, 可以攜帶任何類型的信息,uwsgi數據包的前4個字節用於面描述信息的類型,該協議主要工做在tcp方式下,uwsgi是一種線路協議而不是通訊協議,所以經常使用於在uWSGI服務器與其餘網絡服務器的數據通訊.web

uwsgi 協議是一個 uWSGI服務器自有的協議,用於定義傳輸信息的類型數據庫

Nginx中HttpUwsgiModule的做用是與uWSGI服務器進行交換。WSGI是一種Web服務器網關接口。它是一個Web服務器(如nginx,uWSGI等服務器)與web應用(如用Flask框架寫的程序)通訊的一種規範。django

對於管理人員來講,uWSGI服務器提供了各類配置方法:命令行、環境變量、XML、INI、YAML、JSON、SQlite3數據庫和LDAP。瀏覽器

除此以外,它的設計徹底模塊化,這意味着,可使用不一樣的插件以便知足不一樣的技術應用,從而實現兼容性.
關於ASGI服務器

 是異步網關協議接口,介於網絡服務和python飲用應用之間的標準接口,可以處理多種通用的協議類型,包括http,http2和websocket.websocket

關於WSGI和ASGI的區別是網絡

WSGI是基於http協議模式開發的,不支持websocket,而ASGI的誕生解決了python中的WSGI不支持當前的web開發中的一些新的協議標準,同時ASGI支持原有模式和Websocket的擴展, 即ASGI是WSGI的擴展.

關於ASGI的應用案例, 下一篇博客咱們再聊

相關文章
相關標籤/搜索