1. 程式人生 > >Web伺服器父與子Apache和Tomcat區別

Web伺服器父與子Apache和Tomcat區別

熟悉三國的朋友都知道曹操,曹操有二十五個兒子,其中最得曹操寵愛的是曹丕、曹植、曹彰三個,曹丕性格陰冷,擅長政治;曹植才華橫溢,放浪不羈;曹彰武藝高強,戰功卓著。曹操一直希望這三個兒子當中選取自己的繼承人,最後與曹操性格最為相近的曹丕脫穎而出。但是我們永遠都不會否認曹植的才華和曹彰的武功。

Apache是世界使用排名第一的Web伺服器軟體。它可以執行在幾乎所有廣泛使用的計算機平臺上,由於其跨平臺和安全性被廣泛使用,是最流行的Web伺服器端軟體之一。在Apache基金會裡面Apache Server永遠會被賦予最大的支援,畢竟大兒子最親嘛,而Apache的開源伺服器軟體Tomcat同樣值得關注,畢竟Tomcat是開源免費的產品,使用者會給予最大的支援。但是經常在用Apache和Tomcat等這些伺服器時,你總感覺還是不清楚他們之間有什麼關係,在用Tomcat的時候總出現Apache,總感到迷惑,到底誰是主誰是次,請看下面的解析:

解析一:

Apache支援靜態頁,Tomcat支援動態的,比如Servlet等。

一般使用Apache+Tomcat的話,Apache只是作為一個轉發,對JSP的處理是由Tomcat來處理的。

Apche可以支援PHPcgiperl,但是要使用Java的話,你需要Tomcat在Apache後臺支撐,將Java請求由Apache轉發給Tomcat處理。

Apache是Web伺服器,Tomcat是應用(Java)伺服器,它只是一個Servlet(JSP也翻譯成Servlet)容器,可以認為是Apache的擴充套件,但是可以獨立於Apache執行。

這兩個有以下幾點可以比較的:

> 兩者都是Apache組織開發的;

> 兩者都有HTTP服務的功能;

> 兩者都是免費的。

不同點:

Apache是專門用了提供HTTP服務的,以及相關配置的(例如虛擬主機、URL轉發等等);

Tomcat是Apache組織在符合Java EE的JSP、Servlet標準下開發的一個JSP伺服器。

解析二:

Apache是一個Web伺服器環境程式,啟用它可以作為Web伺服器使用,不過只支援靜態網頁,如(ASP,PHP,CGI,JSP)等,動態網頁的支援就不行了。

如果要在Apache環境下執行JSP的話就需要一個直譯器來執行JSP網頁,而這個JSP直譯器就是Tomcat,為什麼還要JDK呢?因為JSP需要連線資料庫的話,就要JDK來提供連線資料庫的驅程,所以要執行JSP的Web伺服器平臺就需要Apache+Tomcat+JDK。

整合的好處是:

> 如果客戶端請求的是靜態頁面,則只需要Apache伺服器響應請求;

> 如果客戶端請求動態頁面,則是Tomcat伺服器響應請求;

> 因為JSP是伺服器端解釋程式碼的,這樣整合就可以減少Tomcat的服務開銷。

C是一個結構化語言,如譚老爺子所說:它的重點在於演算法和資料結構。C程式的設計首要考慮的是如何通過一個過程,對輸入(或環境條件)進行運算處理得到輸出(或實現過程(事務)控制),而對於C++,首要考慮的是如何構造一個物件模型,讓這個模型能夠契合與之對應的問題域,這樣就可以通過獲取物件的狀態資訊得到輸出或實現過程(事務)控制。

解析三:

Apache:側重於HTTP Server;

Tomcat:側重於Servlet引擎,如果以Standalone方式執行,功能上與Apache等效,支援JSP,但對靜態網頁不太理想;

換句話說,Apache是一輛卡車,上面可以裝一些東西如Html等。但是不能裝水,要裝水必須要有容器(桶),而這個桶也可以不放在卡車上。

小結

總體來說,Tomcat也許永遠不會成為Apache最重要的產品,但是誰也阻止不了Tomcat成為主流產品,Apache對於這個小兒子同樣也會給相當大的關心。