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的應用案例, 下一篇博客我們再聊

更多精彩,可以關注樓主的公眾號,

 

最全面的django面試題總結: 回復django面試題即可獲取, pycharm供給激活壓縮包, 回復pycharm破解包即可獲取,破解步驟在我的這一篇博客(點我直達)已經破解百次, 屢試不爽.

以及其他樓主精心打造的原創文章,歡迎各位來訪.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM