CGI WSGI ASGI的概念和區別

2021-10-23 07:10:28 字數 1920 閱讀 8462

此文件用於解讀理解wsgiasgi兩個概念,目標解決一下幾個問題:

先說一下cgi,(通用閘道器介面, common gateway inte***ce/cgi),定義客戶端與web伺服器的交流方式的乙個程式。例如正常情況下客戶端發來乙個請求,根據http協議web伺服器將請求內容解析出來,進過計算後,再將加us安出來的內容封裝好,例如伺服器返回乙個html頁面,並且根據http協議構建返回內容的響應格式。涉及到tcp連線、http原始請求和相應格式的這些,都由乙個軟體來完成,這時,以上的工作需要乙個程式來完成,而這個程式便是cgi

那什麼是wsgi呢?維基上的解釋為,web伺服器閘道器介面(python web server gateway inte***ce,wsgi),是為python語言定義的web伺服器和web應用程式或框架之間的一種簡單而通用的介面。從語義上理解,貌似wsgi就是python為了解決web伺服器端與客戶端之間的通訊問題而產生的,並且wsgi是基於現存的cgi標準而設計的,同樣是一種程式(或者web元件的介面規範?)。

wsgi區分為兩部分:一種為「伺服器」或「閘道器」,另一種為「應用程式」或「應用框架」。

所謂的wsgi中介軟體同時實現了api的兩方,即在wsgi伺服器和wsgi應用之間起調解作用:從wsgi伺服器的角度來說,中介軟體扮演應用程式,而從應用程式的角度來說,中介軟體扮演伺服器。中介軟體具有的功能:

看了這麼多,總結一下,其實可以說wsgi就是基於python的以cgi為標準做一些擴充套件。

非同步閘道器協議介面,乙個介於網路協議服務和python應用之間的標準介面,能夠處理多種通用的協議型別,包括httphttp2websocket

然而目前的常用的wsgi主要是針對http風格的請求響應模型做的設計,並且越來越多的不遵循這種模式的協議逐漸成為web變成的標準之一,例如websocket

asgi嘗試保持在乙個簡單的應用介面的前提下,提供允許資料能夠在任意的時候、被任意應用程序傳送和接受的抽象。並且同樣描述了乙個新的,相容http請求響應以及websocket資料幀的序列格式。允許這些協議能通過網路或本地socket進行傳輸,以及讓不同的協議被分配到不同的程序中。

以上,wsgi是基於http協議模式的,不支援websocket,而asgi的誕生則是為了解決python常用的wsgi不支援當前web開發中的一些新的協議標準。同時,asgi對於wsgi原有的模式的支援和websocket的擴充套件,即asgiwsgi的擴充套件。

ARC的概念和分類的概念

1.arc的概念及原理 指標的分類 強指標和弱指標 預設情況下指標都是強指標,關鍵字 strong 弱指標關鍵字 weak arc是自動記憶體管理,它是乙個編譯器的特性,就像點語法。只不過是編譯器幫我們新增並且不允許我們自己使用retain,release,autorelease,retaincou...

物件導向的概念和類和物件的概念

es6中的物件導向是和其他語言基本比較相似 js正常來說是基於物件語言 很多程式都是基於物件開發 不是物件導向 但是在es6中 我們引入了其他語言中的物件導向 面向過程就是 你需要什麼 寫什麼 物件導向 他就是 你直接封裝好乙個功能 需要的時候 在 呼叫 物件導向的好處 1.避免 冗餘 2.便於後期...

linux概念和linux命令的概念

什麼是linux?linux表示linux核心,決定軟體的執行順序。什麼是shell?表示保護核心的殼,使用者或軟體通過shell來訪問核心。如何在linux中執行命令 開啟shell 在命令提示符後輸入動作 kiosk foundation7 desktop 字元作用 kiosk使用者 分隔符fo...