1. 程式人生 > >web服務器,應用程序服務器,http服務器的區別

web服務器,應用程序服務器,http服務器的區別

it

WEB服務器、應用程序服務器、HTTP服務器有何區別?IIS、Apache、Tomcat、Weblogic、WebSphere都各屬於哪種服務器? 這個概念很重要。

Web服務器的基本功能就是提供Web信息瀏覽服務。它只需支持HTTP協議、HTML文檔格式及URL。與客戶端的瀏覽器配合。因為Web服務器主要支持的協議就是HTTP,所以通常情況下HTTP服務器和WEB服務器是相等的.

應用程序服務器(簡稱應用服務器),我們先看一下微軟對它的定義:"我們把應用程序服務器定義為“作為服務器執行共享業務應用程序的底層的系統軟件”。 就像文件服務器為很多用戶提供文件一樣,應用程序服務器讓多個用戶可以同時使用應用程序(通常是客戶創建的應用程序)"

通俗的講,Web服務器向客戶端傳送頁面使瀏覽器可以瀏覽,然而應用程序服務器提供的是客戶端應用程序可以調用的方法。確切一點,你可以說:Web服務器專門處理HTTP請求(request),但是應用程序服務器是通過很多協議來為應用程序提供商業邏輯 (business logic)。

以Java EE為例,Web服務器主要是處理靜態頁面處理和作為 Servlet的容器,用來解釋和執行servlet/JSP,而應用服務器是運行業務邏輯的,主要是EJB、 JNDI和JMX API等J2EE API方面的,還包含事務處理、數據庫連接等功能,所以在企業級應用中,應用服務器提供的功能比WEB服務器強大的多。

以這樣的定義,IIS、Apache、Tomcat都可以屬於Web服務器,Weblogic、WebSphere都屬於應用服務器。

Apache:在Web服務器中,Apache是純粹的Web服務器,經常與Tomcat配對使用。它對HTML頁面具有強大的解釋能力,但是不能解釋嵌入頁面內的服務器端腳本代碼(JSP/Servlet)。

Tomcat:早期的Tomcat是一個嵌入Apache內的JSP/Servlet解釋引擎。Apache+Tomcat就相當於IIS+ASP。後來的Tomcat已不再嵌入Apache內,Tomcat進程獨立於Apache進程運行。 而且,Tomcat已經是一個獨立的Servlet和JSP容器,業務邏輯層代碼和界面交互層代碼可以分離了。因此,有人把Tomcat叫做輕量級應用服務器。

IIS:微軟早期的IIS,就是一個純粹的Web服務器。後來,它嵌入了ASP引擎,可以解釋VBScript和JScript服務器端代碼了,這時,它就可以兼作應用服務器。當然,它與J2EE應用服務器根本無法相比,但是,從功能上說,從原理上說,它勉強可以稱之為應用服務器。確切地說,它是兼有一點應用服務器功能的Web服務器。

總結:Apache是純粹的web服務器,而Tomcat和IIS因為具有了解釋執行服務器端代碼的能力,可以稱作為輕量級應用服務器或帶有服務器功能的Web服務器。Weblogic、WebSphere因為能提供強大的J2EE功能,毫無疑問是絕對的應用服務器。對於處於中間位置的Tomcat,它可以配合純Web服務器Apache一起使用,也可以作為應用服務器的輔助與應用服務器一起部署:

Tomcat與Web服務器

Tomcat是提供一個支持Servlet和JSP運行的容器。Servlet和JSP能根據實時需要,產生動態網頁內容。而對於Web服務器來說, Apache僅僅支持靜態網頁,對於支持動態網頁就會顯得無能為力;Tomcat則既能為動態網頁服務,同時也能為靜態網頁提供支持。盡管它沒有通常的Web服務器快、功能也不如Web服務器豐富,但是Tomcat逐漸為支持靜態內容不斷擴充。大多數的Web服務器都是用底層語言編寫如C,利用了相應平臺的特征,因此用純Java編寫的Tomcat執行速度不可能與它們相提並論。

般來說,大的站點都是將Tomcat與Apache的結合,Apache負責接受所有來自客戶端的HTTP請求,然後將Servlets和JSP的請求轉發給Tomcat來處理。Tomcat完成處理後,將響應傳回給Apache,最後Apache將響應返回給客戶端。

而且為了提高性能,可以一臺apache連接多臺tomcat實現負載平衡。

在大多數情形下,應用程序服務器是通過各種組件的應用程序接口(API)把商業邏輯暴露給客戶端應用程序的。

應用程序服務器還可以管理自己的資源,例如看大門的工作包括安全(security),事務處理(transaction processing),資源池(resource pooling),和消息(messaging)。就象Web服務器一樣,應用程序服務器配置了多種可擴展(scalability)和容錯(fault tolerance)技術。

應用程序服務器與web服務器案例:

例如,假設一個在線商店的網站提供實時定價和有效的資訊信息。這個站點很可能會提供一個表單(form)讓你來選擇產品。當你提交查詢後,網站會進行查找並把結果內嵌在HTML頁面中返回。網站可以有很多種方式來實現這種功能。下面介紹一個不使用應用程序服務器 的情景和一個使用應用程序服務器的情景。觀察一下這兩中情景的不同會有助於我們了解應用程序服務器的功能。

情景1:不帶應用程序服務器的Web服務器

在此種情景下,一個Web服務器獨立提供在線商店的功能。Web服務器獲得你的請求,然後發送給服務器端可以處理請求的程序。此程序從數據庫或文本文件(是指沒有特殊格式的非二進制的文件)如在XML文件等中查找定價信息。一旦找到,服務器端程序把結果信息表示成HTML形式,最後Web服務器把會它發送到你的Web瀏覽器。

簡而言之,Web服務器只是簡單的通過響應HTML頁面來處理HTTP請求。

情景2:帶應用程序服務器的Web服務器

情景2和情景1相同的是Web服務器還是把響應發送給服務器端腳本程序。然而,你可以把查找定價的商業邏輯放到應用程序服務器上。由於這種變化,此腳本只是簡單的調用應用程序服務器的查×××,而不是已經知道如何查找數據然後構建一個響應報文。這時當該腳本程序產生HTML響應(response)時就可以使用該服務的返回結果了。

  在此情景中,應用程序服務器提供(serves)了用於查詢產品的定價信息的商業邏輯。(服務器的)這種功能(functionality)沒有指出有關顯示和客戶端如何使用此信息的細節,相反客戶端和應用程序服務器只是來回傳送數據。當有客戶端調用應用程序服務器的查×××(lookup service)時,此服務只是簡單的查找並返回結果給客戶端。

通過從構建響應報文HTML的代碼中分離出來,在應用程序之中該定價(查找)邏輯的可重用性更強了。其他的客戶端,例如收款機,也可以調用同樣的服務(service)來作為一個店員給客戶結帳。相反,在情景1中的定價查×××是不可重用的因為信息內嵌在 HTML頁中了。

總而言之,在情景2的模型中,在Web服務器通過回應HTML頁面來處理HTTP請求(request),而應用程序服務器則是通過處理定價和有效性(availability)請求(request)來提供應用程序邏輯的。

Servlet簡介

Servlet是使用Java Servlet應用程序設計接口及相關類和方法的Java程序。它在Web服務器上或應用服務器上運行並擴展了該服務器的能力。Servlet裝入Web服務器並在Web服務器內執行。

Servlet是以Java技術為基礎的服務器端應用程序組件,Servlet的客戶端可以提出請求並獲得該請求的響應,它可以是任何Java程序、瀏覽器或任何設備。

Servlet運行原理

當Web服務器接收到一個HTTP請求時,它會先判斷請求內容——如果是靜態網頁數據,Web服務器將會自行處理,然後產生響應信息;如果牽涉到動態數據,Web服務器會將請求轉交給Servlet容器。此時Servlet容器會找到對應的處理該請求的Servlet實例來處理,結果會送回Web服務器,再由Web服務器傳回用戶端。

Servlet的運行過程

Servlet程序是由WEB服務器調用,web服務器收到客戶端的Servlet訪問請求後:

①Web服務器首先檢查是否已經裝載並創建了該Servlet的實例對象。如果是,則直接執行第④步,否則,執行第②步。

②裝載並創建該Servlet的一個實例對象。

③調用Servlet實例對象的init()方法。

④創建一個用於封裝HTTP請求消息的HttpServletRequest對象和一個代表HTTP響應消息的HttpServletResponse對象,然後調用Servlet的service()方法並將請求和響應對象作為參數傳遞進去。

⑤WEB應用程序被停止或重新啟動之前,Servlet引擎將卸載Servlet,並在卸載之前調用Servlet的destroy()方法。

課本修正

--with-http_flv_module

目前,由於Flash的流行,網絡上絕大多數的微視頻網站都采用了Flv格式來播放視頻。

在互聯網上播放視頻,有兩種方式,一種是文件方式,即通過HTTP協議訪問視頻文件,這種方式的缺點是不能從特定的幀開始播放;另外一種就是采用專門的流媒體服務器,這種方式的缺點是要搭建復雜的流媒體服務器。不過,現在有了一種集合了以上兩種方式優點的一種解決方案,即通過HTTP來實現偽流媒體

搭建Flv視頻服務器,建議采用輕量級的HTTP服務器,畢竟Flv文件只是靜態文件。輕量級的HTTP服務器有兩種選擇:lighttpd和nginx。選擇任何一個都可以,在提供Flv服務方面,兩者相差不多。

下載後進行編譯,要將“ --with-http_flv_module ” 加上,這個是用來專門提供Flv服務的模塊.FLV激活方式如下:

在server配置中,加入如下語句,表明所有的flv文件由flv模塊進行處理:

1.location ~ \.flv { flv; }


web服務器,應用程序服務器,http服務器的區別