如何理解 CGI, WSGI?

時間 2021-06-02 13:12:08

1樓:馮斯特洛

我的理解 CGI和WSGI一樣都是一種介面規範.

但是CGI站在伺服器(譬如,apache)的角度,針對所有語言.

WSGI針對python.

乙個伺服器(譬如uwsgi),可以支援多種介面規範,譬如CGI,WSGI等.

對於我們寫web應用的人來說,你既可以用python寫CGI應用,也可以寫WSGI應用.

只不過現在沒人用CGI了而已.

2樓:

WSGI是乙個介面,介面就是把兩個模組連線起來。理解介面,重點不在介面本身,而在連線的兩個模組,介面……只是個介面而已了。具體需要理解:

1、這個介面連線了哪兩個模組?

2、兩個模組各自做了什麼工作,通過介面連線後,共同實現了什麼功能?

3、為什麼不在1個模組內做完所有的事,要劃分成兩個模組?(介面的好處:分工)

下面來分析【使用者通過瀏覽器訪問網頁】的全過程,理解這個就能回答前兩個問題了。

1 首先理解:使用者通過瀏覽器訪問網頁,具體經過了哪些環節?

(1)使用者輸入URL

(2)瀏覽器代為封裝成符合http格式的Request請求,包含請求首行、請求頭和請求體

(3)Request請求是應用層資料,再由OS完成TCP、IP、MAC層封裝,送到網絡卡處以位元流形式送送

(4)經過網路傳輸,位元流到達伺服器端,被伺服器接收。

(5)伺服器OS逐一去掉 MAC、IP、TCP層封裝,剝出應用層資料,也就是Request請求,並交給應用層的Web應用

(6)Web解析Request請求內容,並生成Respond響應,交給伺服器OS

(7)Respond響應也是應用層資料,由伺服器OS完成TCP、IP、MAC層封裝,送到網絡卡處以位元流形式送送

(8)經過網路傳輸,位元流到達伺服器端,被使用者機器接收。

(9)使用者機器OSS逐一去掉 MAC、IP、TCP層封裝,剝出應用層資料,也就是Respond響應,並交給應用層的瀏覽器。

(10)瀏覽器根據Response響應內容,組織顯示給使用者看。

【伺服器OS】

從位元流拆出Request請求,以及將Response打包成位元流。

主要在實現http協議,具體有:

1收到 Request;

2解析Request具體請求內容,呼叫資源生成html,並組織成乙個Response;

3發出Response;

答案,通過呼叫WSGI介面。WSGI介面是抽象的,具體實現一般是呼叫函式。

最後回答開頭的兩個問題:

1、這個介面連線了哪兩個模組?

2、兩個模組各自做了什麼工作,通過介面連線後,共同實現了什麼功能?

3樓:

WSGI是一套符合Python標準的規範。然而這個規範裡主要由服務和程式組成,每乙個請求都會讓服務去觸發乙個函式(程式),服務負責返回函式的結果給讓它觸發的web客戶端(請求的發起者)。為何是符合Python規範,因為這裡的函式是Python用實現的

4樓:小石頭

CGI是一種設計思想,其最早的實現是每次請求都直接呼叫作業系統來建立程序、銷毀程序;但是cgi的實現也可以基於event模型,這樣不必新建程序,甚至不必建立新的執行緒,從而使效率獲得提公升。具體過程:

1、在建立socket後,將http_receiver作為通道event的處理函式,收取每個字元;

catch

2、在http_receiver中捕捉eof,完成http報文頭的提取;在這裡要同時處理認證,認證通過的給出cgi函式,並要將引數、ip位址、埠等都傳到cgi函式:

www_give_cgi $channel $channel $args $request $chost $cport

3、在cgi函式中根據ip位址、埠判斷使用者,並給出適合該使用者的響應。

5樓:塗飛平

cgi通過環境變數,輸入輸出流完成web server與處理邏輯的http協議的互動,由於是基於流方式,所以各種語言都可以寫cgi程式。wsgi是將web server引數python化,,由於其處理了引數封裝和結果解析,才有python世界web框架的氾濫,在python下,寫web框架就像喝水一樣簡單:)

如何理解 TCP IP, SPDY, WebSocket 三者之間的關係?

龍騰道默默地 TCP是基於IP IP是一種協議,不是IP位址 實現的,HTTP 1.1 SPDY WebSocket HTTP2.0是基於TCP實現的。IP 乙個底層網路定址協議。TCP 乙個相對可靠確保資訊送達 且按順序送達的中層資訊傳輸協議,效能相對於UDP較差。HTTP 1.1 上層網頁資訊傳...

如何理解functional programming裡的currying與partial application

李欣宜 定義乙個多參函式f arg1,arg2 argn 時,如果每個引數argi的型別為ti,這個多參函式最後的返回結果的型別為rtype,那麼可以說f的型別為 t1 t2 tn rtype 這是很多語言對於多參函式的解釋,把這些引數作為乙個tuple或者list傳入,即 t1 t2 tn 型別的...

如何理解 It make A one of Canada s most popular cities to live in ?

加拿大公共健康 這個語法有問題。It makes.A stands for a city s name. 首先,絕對是It makes.然後,回答題主的問題 1 正解 2 最高端要求有範圍的限定,所以平時一般看到的最高端都加定冠詞。但是Canada s已經是個範圍的限定,就不需要了,再舉幾個例子 o...