Web服務(wù)器父與子 Apache和Tomcat區(qū)別
熟悉三國(guó)的朋友都知道曹操,曹操有二十五個(gè)兒子,其中最得曹操寵愛(ài)的是曹丕、曹植、曹彰三個(gè),曹丕性格陰冷,擅長(zhǎng)政治;曹植才華橫溢,放浪不羈;曹彰武藝高強(qiáng),戰(zhàn)功***。曹操一直希望這三個(gè)兒子當(dāng)中選取自己的繼承人,***與曹操性格最為相近的曹丕脫穎而出。但是我們永遠(yuǎn)都不會(huì)否認(rèn)曹植的才華和曹彰的武功。
Apache是世界使用***的Web服務(wù)器軟件。它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上,由于其跨平臺(tái)和安全性被廣泛使用,是***的Web服務(wù)器端軟件之一。在Apache基金會(huì)里面Apache Server永遠(yuǎn)會(huì)被賦予***的支持,畢竟大兒子最親嘛,而Apache的開(kāi)源服務(wù)器軟件Tomcat同樣值得關(guān)注,畢竟Tomcat是開(kāi)源免費(fèi)的產(chǎn)品,用戶會(huì)給予***的支持。但是經(jīng)常在用Apache和Tomcat等這些服務(wù)器時(shí),你總感覺(jué)還是不清楚他們之間有什么關(guān)系,在用Tomcat的時(shí)候總出現(xiàn)Apache,總感到迷惑,到底誰(shuí)是主誰(shuí)是次,因此特意在網(wǎng)上查詢了一些這方面的資料,總結(jié)了一下。(51CTO編輯推薦:Tomcat 7功能與應(yīng)用指南)
解析一:
Apache支持靜態(tài)頁(yè),Tomcat支持動(dòng)態(tài)的,比如Servlet等,
一般使用Apache+Tomcat的話,Apache只是作為一個(gè)轉(zhuǎn)發(fā),對(duì)JSP的處理是由Tomcat來(lái)處理的。
Apche可以支持PHPcgiperl,但是要使用Java的話,你需要Tomcat在Apache后臺(tái)支撐,將Java請(qǐng)求由Apache轉(zhuǎn)發(fā)給Tomcat處理。
Apache是Web服務(wù)器,Tomcat是應(yīng)用(Java)服務(wù)器,它只是一個(gè)Servlet(JSP也翻譯成Servlet)容器,可以認(rèn)為是Apache的擴(kuò)展,但是可以獨(dú)立于Apache運(yùn)行。
這兩個(gè)有以下幾點(diǎn)可以比較的:
◆兩者都是Apache組織開(kāi)發(fā)的
◆兩者都有HTTP服務(wù)的功能
◆兩者都是免費(fèi)的
不同點(diǎn):
Apache是專門用了提供HTTP服務(wù)的,以及相關(guān)配置的(例如虛擬主機(jī)、URL轉(zhuǎn)發(fā)等等)
Tomcat是Apache組織在符合Java EE的JSP、Servlet標(biāo)準(zhǔn)下開(kāi)發(fā)的一個(gè)JSP服務(wù)器.
- Runtime r=Runtime.getRuntime();
- Process p=null;
- try
- {
- p=r.exec("notepad");
- }
- catch(Exception ex)
- {
- System.out.println("fffff");
- }
解析二:
Apache是一個(gè)Web服務(wù)器環(huán)境程序,啟用他可以作為Web服務(wù)器使用,不過(guò)只支持靜態(tài)網(wǎng)頁(yè) 如(ASP,PHP,CGI,JSP)等動(dòng)態(tài)網(wǎng)頁(yè)的就不行。
如果要在Apache環(huán)境下運(yùn)行JSP的話就需要一個(gè)解釋器來(lái)執(zhí)行JSP網(wǎng)頁(yè),而這個(gè)JSP解釋器就是Tomcat, 為什么還要JDK呢?因?yàn)镴SP需要連接數(shù)據(jù)庫(kù)的話 就要jdk來(lái)提供連接數(shù)據(jù)庫(kù)的驅(qū)程,所以要運(yùn)行JSP的Web服務(wù)器平臺(tái)就需要Apache+Tomcat+JDK。
整合的好處是:
◆如果客戶端請(qǐng)求的是靜態(tài)頁(yè)面,則只需要Apache服務(wù)器響應(yīng)請(qǐng)求。
◆如果客戶端請(qǐng)求動(dòng)態(tài)頁(yè)面,則是Tomcat服務(wù)器響應(yīng)請(qǐng)求。
◆因?yàn)镴SP是服務(wù)器端解釋代碼的,這樣整合就可以減少Tomcat的服務(wù)開(kāi)銷。
C是一個(gè)結(jié)構(gòu)化語(yǔ)言,如譚老爺子所說(shuō):它的重點(diǎn)在于算法和數(shù)據(jù)結(jié)構(gòu)。C程序的設(shè)計(jì)首要考慮的是如何通過(guò)一個(gè)過(guò)程,對(duì)輸入(或環(huán)境條件)進(jìn)行運(yùn)算處理得到輸出(或?qū)崿F(xiàn)過(guò)程(事務(wù))控制),而對(duì)于C++,首要考慮的是如何構(gòu)造一個(gè)對(duì)象模型,讓這個(gè)模型能夠契合與之對(duì)應(yīng)的問(wèn)題域,這樣就可以通過(guò)獲取對(duì)象的狀態(tài)信息得到輸出或?qū)崿F(xiàn)過(guò)程(事務(wù))控制。
解析三:
Apache:側(cè)重于HTTP Server
Tomcat:側(cè)重于Servlet引擎,如果以Standalone方式運(yùn)行,功能上與Apache等效 , 支持JSP,但對(duì)靜態(tài)網(wǎng)頁(yè)不太理想;
Apache是Web服務(wù)器,Tomcat是應(yīng)用(Java)服務(wù)器,它只是一個(gè)Servlet(JSP也翻譯成Servlet)容器,可以認(rèn)為是Apache的擴(kuò)展,但是可以獨(dú)立于Apache運(yùn)行。
換句話說(shuō),Apache是一輛卡車,上面可以裝一些東西如Html等。但是不能裝水,要裝水必須要有容器(桶),而這個(gè)桶也可以不放在卡車上。
小結(jié)
總體來(lái)說(shuō),Tomcat也許永遠(yuǎn)不會(huì)成為Apache最重要的產(chǎn)品,但是誰(shuí)也阻止不了Tomcat成為主流產(chǎn)品,Apache對(duì)于這個(gè)小兒子同樣也會(huì)給相當(dāng)大的關(guān)心。
【本文系網(wǎng)絡(luò)整理,不代表51CTO觀點(diǎn)】
【編輯推薦】