一、什么是Web服務器
Web服務(wu)器(qi)(qi)指的(de)(de)是(shi)(shi)提供(gong)web功能(neng)的(de)(de)服務(wu)器(qi)(qi),主要就是(shi)(shi)HTTP服務(wu)器(qi)(qi),包括圖片的(de)(de)下(xia)載(zai)等系列和(he)文本相關(guan)的(de)(de)內容。Web服務(wu)器(qi)(qi)支持以(yi)HTP協議的(de)(de)方式來(lai)訪(fang)間(jian),當Web服務(wu)器(qi)(qi)接收到一個(ge)HTTP請求時,它同樣會以(yi)HTTP協議格式返回一個(ge)響(xiang)(xiang)應,這個(ge)響(xiang)(xiang)應可(ke)以(yi)是(shi)(shi)一個(ge)靜態的(de)(de)HTML頁(ye)面(mian),也可(ke)以(yi)是(shi)(shi)過處(chu)理的(de)(de)一個(ge)動態的(de)(de)頁(ye)面(mian),還可(ke)以(yi)是(shi)(shi)音頻(pin)、視頻(pin)等信(xin)息。為了(le)處(chu)理一個(ge)請求,Web服務(wu)器(qi)(qi)可(ke)以(yi)做(zuo)出個(ge)響(xiang)(xiang)應,并進行(xing)頁(ye)面(mian)跳轉(zhuan),或者把動態響(xiang)(xiang)應的(de)(de)產生委托給一些(xie)(xie)(xie)其(qi)他的(de)(de)程序,例(li)如CGI腳本、JSP、Servlet或者一些(xie)(xie)(xie)其(qi)他的(de)(de)服務(wu)器(qi)(qi)端(duan)程序。Web服務(wu)器(qi)(qi)一般(ban)都使(shi)用(yong)了(le)一些(xie)(xie)(xie)特有的(de)(de)機制(例(li)如容錯機制)來(lai)保證Web服務(wu)器(qi)(qi)有較好(hao)的(de)(de)擴展性和(he)不間(jian)斷地提供(gong)服務(wu)。常見的(de)(de)Web服務(wu)器(qi)(qi)有IIS和(he)?Apache。
二、什么是應用服務器
應用程序服務(wu)(wu)器是(shi)為(wei)應用程序提供業務(wu)(wu)邏輯的(de)代(dai)碼。它是(shi)基(ji)于組件的(de),位于以服務(wu)(wu)器為(wei)中心的(de)架構的(de)中間層。
這個(ge)架構主要(yao)基(ji)于Web。中間(jian)層是(shi)業務邏輯所在的(de)應(ying)(ying)用服(fu)(fu)務器。而第三(san)層,則(ze)是(shi)事(shi)務服(fu)(fu)務器的(de)數據庫。應(ying)(ying)用程序服(fu)(fu)務器充當(dang)的(de)是(shi)用戶和數據庫之間(jian)的(de)交互(hu)。
應用服(fu)務(wu)(wu)器通過(guo)各種協議把商業邏(luo)(luo)輯(ji)曝露給客戶端的(de)(de)程序。它還(huan)可以包(bao)括計算機(ji)、web服(fu)務(wu)(wu)器或其他應用服(fu)務(wu)(wu)器上的(de)(de)圖形用戶界面(mian)。業務(wu)(wu)邏(luo)(luo)輯(ji)通過(guo)組(zu)件(jian)API公開。它還(huan)管理自己(ji)的(de)(de)資(zi)(zi)源(yuan)以及執行安全性、事(shi)務(wu)(wu)處理、資(zi)(zi)源(yuan)池以及消息傳(chuan)遞(di)。
對(dui)(dui)于高(gao)端需求,應用服務器往往具有(you)高(gao)可用性監視、集(ji)群化(hua)、負(fu)載平衡、集(ji)成冗余和高(gao)性能(neng)分(fen)布式應用服務,以及(ji)對(dui)(dui)復雜的數據庫訪問的支持。
在流行(xing)的應用(yong)服務器(qi)平(ping)臺中(zhong)有(you)J2EE,WebLogic,Glassfish,JBoss企業應用(yong)平(ping)臺,以及(ji)Apache Tomcat和(he)Apache Geronimo等(deng)等(deng)。
三、Web服務器和Web應用服務器的關系
Web服(fu)(fu)務(wu)(wu)器一般是(shi)(shi)通用(yong)的(de),而(er)(er)應用(yong)服(fu)(fu)務(wu)(wu)器一般是(shi)(shi)專用(yong)的(de),例如?Tomcat只能(neng)處(chu)理(li)Java應用(yong)程(cheng)序而(er)(er)不能(neng)處(chu)理(li)ASPX或PHP。需要(yao)注意的(de)是(shi)(shi),Web服(fu)(fu)務(wu)(wu)器與(yu)應用(yong)服(fu)(fu)務(wu)(wu)器是(shi)(shi)并(bing)列關系,二者不存在(zai)相互(hu)包容關系。在(zai)使(shi)用(yong)的(de)時(shi)候(hou),如果訪問的(de)頁面只有HTML,用(yong)Web服(fu)(fu)務(wu)(wu)器就足夠了,但是(shi)(shi)如果是(shi)(shi)JSP,此時(shi)就需要(yao)應用(yong)服(fu)(fu)務(wu)(wu)器,因為只有應用(yong)服(fu)(fu)務(wu)(wu)器才能(neng)解析(xi)(xi)JSP里的(de)Java代碼,并(bing)將解析(xi)(xi)結果以(yi)HTML的(de)格式返回給用(yong)戶(hu)。
四、Web服務器和其他類型的服務器有何區別
應用程序服務器(qi)與Web服務器(qi)不同,因為前者通過(guo)多種協議(yi)處(chu)理向應用程序提供業務邏輯,而Web服務器(qi)響應并處(chu)理HTTP請求(qiu)。雖然Web服務器(qi)可能不支持(chi)事務或數據庫連接池,但它可能具有容錯和(he)可擴展性(xing)功能,如(ru)負(fu)載平(ping)衡、緩存和(he)集群。
應用服務器與數(shu)據(ju)庫(ku)服(fu)務(wu)器(qi)不同,因(yin)為該服(fu)務(wu)器(qi)執行諸如數(shu)據(ju)分(fen)析、存儲、數(shu)據(ju)處理、歸檔(dang)以及(ji)其他與數(shu)據(ju)管理相(xiang)關的任務(wu)。數(shu)據(ju)庫(ku)服(fu)務(wu)器(qi)則使用諸如ODBC、JDBC等協議來命(ming)名。