<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          從Python看Web架構(gòu)的發(fā)展

          共 1992字,需瀏覽 4分鐘

           ·

          2021-05-16 01:43

          來源 | https://www.cnblogs.com/stay-real/p/14464321.html


          靜態(tài)web與動態(tài)web

          在靜態(tài)WEB程序中,客戶端使用WEB瀏覽器(IE、FireFox等)經(jīng)過網(wǎng)絡(luò)(Network)連接到服務(wù)器上,使用HTTP協(xié)議發(fā)起一個請求(Request),告訴服務(wù)器我現(xiàn)在需要得到哪個頁面,所有的請求交給WEB服務(wù)器,之后WEB服務(wù)器根據(jù)用戶的需要,從文件系統(tǒng)(存放了所有靜態(tài)頁面的磁盤)取出內(nèi)容。
          之后通過WEB服務(wù)器返回給客戶端,客戶端接收到內(nèi)容之后經(jīng)過瀏覽器渲染解析,得到顯示的效果。


          由于這種應(yīng)用不能與用戶交互、無法顯示個性化的內(nèi)容,所以動態(tài)網(wǎng)頁技術(shù)應(yīng)運而生。

          在動態(tài)WEB程序中,程序依然使用客戶端和服務(wù)端,客戶端依然使用瀏覽器(IE、FireFox等),通過網(wǎng)絡(luò)(Network)連接到服務(wù)器上,使用HTTP協(xié)議發(fā)起請求(Request),現(xiàn)在的所有請求都先經(jīng)過一個WEB Server 來處理,用于區(qū)分是請求的是靜態(tài)資源還是動態(tài)資源。

          如果WEB Server 發(fā)現(xiàn)客戶端請求的是靜態(tài)資源,則WEB服務(wù)器從靜態(tài)文件系統(tǒng)中取出內(nèi)容,發(fā)送回客戶端瀏覽器進(jìn)行解析執(zhí)行。

          如果WEB Server 發(fā)現(xiàn)客戶端請求的是動態(tài)資源,則先將請求轉(zhuǎn)交給 Web應(yīng)用程序,由Web應(yīng)用程序組織數(shù)據(jù),最后把處理結(jié)果交給WEB服務(wù)器,之后通過WEB服務(wù)器將內(nèi)容發(fā)送回客戶端瀏覽器。


          web服務(wù)器與web應(yīng)用程序的接口


          gateway interface 是 web server 和 web應(yīng)用程序 之間的接口規(guī)范,這種接口規(guī)范規(guī)定了web服務(wù)器:

          如何將 request 參數(shù)化后傳遞給 web應(yīng)用程序,web應(yīng)用如何將它的輸出發(fā)送給 webserver,

          以及如何調(diào)用 web應(yīng)用程序。

          CGI、FASTCGI、WSGI 都是web服務(wù)器 與 web應(yīng)用程序的接口規(guī)范,如:

          web Server + CGI + shell + DBweb Server + FastCGI + shell php + DBweb server + Serverlet + java + MVCweb Server + WSGI + Python + MVC

          web應(yīng)用程序的再抽象

          隨著web應(yīng)用的動態(tài)化, 傳統(tǒng)的靜態(tài)web server對于動態(tài)內(nèi)容無能為力,CGI技術(shù)用于生成動態(tài)內(nèi)容。

          但是CGI技術(shù)的性能很差, 主要是因為對于每個請求都要創(chuàng)建一個進(jìn)程來運行cgi程序, 而進(jìn)程創(chuàng)建的開銷比較大, 嚴(yán)重拖慢了響應(yīng)速度。

          隨后fastcgi技術(shù)出現(xiàn)了, 為了解決cgi技術(shù)中存在的問題, fastcgi使用一種進(jìn)程管理器, 用來維持一個進(jìn)程池,提前創(chuàng)建進(jìn)程,從而提高了響應(yīng)速度。


          uWSGI 是一個 WSGI 協(xié)議的實現(xiàn),包括四個部分:

          實現(xiàn)了 uwsgi協(xié)議, 與web server 通信
          web server 內(nèi)置支持協(xié)議模塊:
          application server協(xié)議支持模塊: 實現(xiàn)了 WSGI, 與 python 框架交互
          進(jìn)程控制程序: 為web request 的處理創(chuàng)建工作進(jìn)程

          為什么要隔離 framework 和webserver?

          如果在nginx中直接用WSGI, 那么 nginx線程中就要啟動python解釋器。通常最好在與主Web服務(wù)器不同的進(jìn)程中運行Python。 

          這樣,Web服務(wù)器可以具有許多微小的線程,這些線程可以非常快地提供靜態(tài)內(nèi)容,而單獨的Python進(jìn)程又大又笨重,并且每個進(jìn)程都在運行自己的Python解釋器。

          更靈活。開發(fā)人員可以從Green Unicorn切換到uWSGI,而無需修改實現(xiàn)WSGI的應(yīng)用程序或框架。

          易于擴(kuò)展。一次為成千上萬個動態(tài)內(nèi)容的請求提供服務(wù)是WSGI服務(wù)器的任務(wù),而不是框架,職責(zé)分離對于有效地擴(kuò)展和分派Web流量很重要。

          web框架

          Web框架的作用主要是方便我們開發(fā) web應(yīng)用程序,HTTP請求的動態(tài)數(shù)據(jù)就是由 web框架層來提供的。

          沒有框架時,實現(xiàn)業(yè)務(wù)邏輯要面對如何設(shè)計路由邏輯,數(shù)據(jù)如何訪問, 視圖如何設(shè)計等問題。

          以MVC開發(fā)模式來說, 我們要實現(xiàn)MVC 這三個方面的各種細(xì)節(jié)。每次開發(fā)一個新的app都有大量重復(fù)的工作要做。 

          這些重復(fù)的固定的工作與流程被抽象出來,每次只用開發(fā)相應(yīng)的業(yè)務(wù)邏輯, 大大加快了web開發(fā)的速度。



          本文完~


          學(xué)習(xí)更多技能

          請點擊下方公眾號


          瀏覽 42
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人性爱在线播放 | 亚洲小电影 | 骚逼天堂 | 日韩在线播放视频 | 国产在线观看国产精品产拍 |