Web 的演化歷史1
時(shí)間:2023-09-05 11:12:01 | 來(lái)源:網(wǎng)站運(yùn)營(yíng)
時(shí)間:2023-09-05 11:12:01 來(lái)源:網(wǎng)站運(yùn)營(yíng)
Web 的演化歷史1:
本文是測(cè)試進(jìn)階社群的 python 測(cè)試開(kāi)發(fā)篇第一節(jié),總章節(jié)編號(hào) 22.010,完整教程請(qǐng)加入社群后查看。測(cè)試開(kāi)發(fā)篇主要講測(cè)試開(kāi)發(fā)人員需要理解的web開(kāi)發(fā)知識(shí)。另有python基礎(chǔ)篇(已完結(jié)),接口測(cè)試篇(已完結(jié))和測(cè)試?yán)碚撈ɡ碚撈形赐杲Y(jié))。在接口測(cè)試篇中,我們已經(jīng)認(rèn)識(shí)了接口,并能使用簡(jiǎn)單的腳本來(lái)調(diào)用一些接口。我們還搭建了測(cè)試框架并在項(xiàng)目實(shí)戰(zhàn)中把待測(cè)的http接口封裝成了本地python接口。通過(guò)調(diào)用這些自己封裝的本地接口來(lái)實(shí)現(xiàn)了接口測(cè)試的自動(dòng)化:
這里體現(xiàn)了把表示業(yè)務(wù)邏輯的http接口先做封裝再做組合的設(shè)計(jì)思想。這也是接口測(cè)試的主要設(shè)計(jì)思想。但是,在學(xué)習(xí)接口測(cè)試篇時(shí),我們對(duì)HTTP API的理解仍然停留于表面,不夠深入。正所謂知其然而不知其所以然。
為了深入其中,我們必須從web開(kāi)發(fā)開(kāi)始。同時(shí),我們的學(xué)習(xí)目標(biāo)并不是去做專職的web開(kāi)發(fā)人員。因此,本篇的學(xué)習(xí)將會(huì)繼續(xù)遵循“最簡(jiǎn)單”的原則來(lái)進(jìn)行。但,即使是最簡(jiǎn)單的web開(kāi)發(fā)學(xué)習(xí),我們?nèi)粤η舐槿鸽m小,卻五臟俱全。
Web 的演化歷史
靜態(tài)網(wǎng)頁(yè)時(shí)代:最早在上個(gè)世紀(jì)90年代初期,web網(wǎng)站就是展示一些html文件。后來(lái)這種類型的web仍然一直存在,我們叫他為靜態(tài)網(wǎng)頁(yè)。訪問(wèn)靜態(tài)網(wǎng)頁(yè)時(shí),客戶端的瀏覽器向服務(wù)端發(fā)送一個(gè)Get請(qǐng)求,等待服務(wù)端返回html文件,并展示在瀏覽器上。這個(gè)過(guò)程非常簡(jiǎn)單。
CGI時(shí)代:在1993年,動(dòng)態(tài)網(wǎng)頁(yè)出現(xiàn)了。動(dòng)態(tài)網(wǎng)頁(yè)起始于 CGI(Common Gateway Interface), CGI 定義了客戶端與服務(wù)端的交互協(xié)議。首先我們引入應(yīng)用程序(application,縮寫(xiě)app)的概念??蛻舳藨?yīng)該是運(yùn)行在一臺(tái)電腦上的客戶端app,服務(wù)端也是運(yùn)行在一臺(tái)電腦上的服務(wù)端app,這兩臺(tái)電腦上的兩個(gè)app,依照網(wǎng)絡(luò)通信協(xié)議來(lái)完成信息的交互。
那么接下來(lái)的問(wèn)題就是,當(dāng)數(shù)據(jù)從客戶端發(fā)送給服務(wù)端之后,服務(wù)端怎么去處理這個(gè)數(shù)據(jù)呢。實(shí)際上,在服務(wù)端運(yùn)行著一個(gè)獨(dú)立的業(yè)務(wù)處理app,這是一個(gè)運(yùn)行在服務(wù)器本地的應(yīng)用程序,例如,linux服務(wù)器上的一個(gè)正在運(yùn)行的應(yīng)用程序。當(dāng)服務(wù)端app收到請(qǐng)求后,它按照CGI定義的方式(cgi定義了三種傳遞數(shù)據(jù)的方式,感興趣的讀者請(qǐng)自行搜索)把數(shù)據(jù)傳遞給這個(gè)業(yè)務(wù)處理app(按約定好的方式傳遞數(shù)據(jù),這就是協(xié)議,雖然他和網(wǎng)絡(luò)協(xié)議不同,但他們也有相通之處。)。當(dāng)業(yè)務(wù)處理app處理完服務(wù)端app給他的數(shù)據(jù)之后,他會(huì)把結(jié)果返回給服務(wù)端app,服務(wù)端app再把這個(gè)結(jié)果返回給客戶端app。
這里,業(yè)務(wù)處理app就是CGI應(yīng)用程序。服務(wù)端app就是俗稱web server(web服務(wù)器)的一種應(yīng)用軟件。而客戶端app就指的是瀏覽器(這樣這整個(gè)就是B/S browser/server架構(gòu))。這里我們注意到CGI應(yīng)用程序是運(yùn)行在服務(wù)端的電腦上的普通的應(yīng)用程序。(這臺(tái)電腦我們也稱為服務(wù)器,注意其代表物理機(jī)器,和上面提過(guò)的代表特定的應(yīng)用程序的web server的區(qū)別。)CGI應(yīng)用程序唯一的特別之處就是它要能夠按照CGI協(xié)議規(guī)定來(lái)處理輸入輸出。因此,它由什么語(yǔ)言編寫(xiě)基本都可以。寫(xiě)CGI程序可以用c,c++,python,perl,甚至shell等等,總之不管他用什么語(yǔ)言,現(xiàn)在基本都已經(jīng)淘汰了,國(guó)內(nèi)只有個(gè)別廠商還在使用CGI。另外,CGI時(shí)代主要的計(jì)算工作都是在服務(wù)器端的CGI程序上完成的,客戶端拿到的就是計(jì)算好的HTML了。這個(gè)時(shí)候的html可是要用print命令一點(diǎn)一點(diǎn)在服務(wù)端數(shù)據(jù)處理app里print出來(lái)的,可想而知有多難寫(xiě)了。
PHP/ASP/JSP(web編程腳本語(yǔ)言)時(shí)代:
1994年就有PHP了,這里開(kāi)始出現(xiàn)了頁(yè)面模板的概念。這里我們假設(shè)它仍然用CGI的方式運(yùn)行以便于理解。
1.首先預(yù)先準(zhǔn)備好html文件,然后在其中放入一些特定的占位符號(hào)。
2.服務(wù)端app調(diào)用業(yè)務(wù)處理app。
3.業(yè)務(wù)處理app進(jìn)行計(jì)算,但這次不再由他計(jì)算整個(gè)頁(yè)面應(yīng)該返回的html了,而是只計(jì)算其中的關(guān)鍵數(shù)據(jù)。比如電子商務(wù)網(wǎng)站中,客戶端app請(qǐng)求顯示購(gòu)物車(chē),那么這里業(yè)務(wù)處理app就是去計(jì)算購(gòu)物車(chē)?yán)镉心男┥唐?。這里的“計(jì)算”包括讀取數(shù)據(jù)庫(kù)、做數(shù)學(xué)計(jì)算、做字符串處理等等,是廣義上的計(jì)算。
4.業(yè)務(wù)處理app讀取對(duì)應(yīng)的html文件,注意這個(gè)文件中有一些第一步放進(jìn)去的占位符號(hào)。這個(gè)文件也叫html頁(yè)面模板。
5.在4的html模板中,用3的計(jì)算結(jié)果替換1的占位符號(hào)。得到完整html。
6.把這個(gè)html返回給服務(wù)端app。
且不說(shuō)服務(wù)端的業(yè)務(wù)處理app的運(yùn)行方式后來(lái)在這個(gè)時(shí)代發(fā)生了變化(也就是web server變成了類似于中間件的東西,業(yè)務(wù)處理app運(yùn)行于webserver之上,而不再直接運(yùn)行在操作系統(tǒng)上。以后章節(jié)還會(huì)細(xì)講。),這里的頁(yè)面模板技術(shù)一直沿用至今仍在使用,并且在python語(yǔ)言里也有頁(yè)面模板。主流的flask,django等框架都支持以頁(yè)面模板形式開(kāi)發(fā)web頁(yè)面。這個(gè)時(shí)代數(shù)據(jù)庫(kù)技術(shù)加 web編程腳本語(yǔ)言就可以做電子商務(wù)網(wǎng)站等很多互動(dòng)性強(qiáng)的網(wǎng)站了。另外,這里提到的頁(yè)面模板技術(shù),后面的章節(jié)會(huì)帶大家親手寫(xiě)一遍。
本文首發(fā)于測(cè)試進(jìn)階付費(fèi)社群的荔枝微課直播間,
完整的測(cè)試開(kāi)發(fā)教程正在我的荔枝微課直播間火熱更新中,
掃碼即可加入。付費(fèi)請(qǐng)?jiān)谖⑿哦恕?020年8月1日之前費(fèi)用為168元/年。之后為218元/年。也支持以永久形式獨(dú)立購(gòu)買(mǎi)專欄。
關(guān)于付費(fèi)社群的課程由任何問(wèn)題請(qǐng)聯(lián)系我微信89507288