WEBserver、應用程式server、HTTPserver差別

來源:互聯網
上載者:User

標籤:環境   load   多使用者   實現   edit   函數   func   sphere   請求   

WEBserver、應用程式server、HTTPserver差別

  WEBserver、應用程式server、HTTPserver有何差別?IIS、Apache、Tomcat、Weblogic、WebSphere都各屬於哪種server,這些問題困惑了非常久,今天最終梳理清楚了:

-Webserver的準系統就是提供Web資訊瀏覽服務。它僅僅需支援HTTP協議、HTML文檔格式及URL。

與client的網路瀏覽器配合。由於Webserver主要支援的協議就是HTTP,所以通常情況下HTTPserver和WEBserver是相等的(有沒有支援除HTTP之外的協議的webserver,作者沒有考證過),說的是一回事。

  應用程式server(簡稱應用server),我們先看一下微軟對它的定義:”我們把應用程式server定義為“作為server運行共用商務應用程式的底層的系統軟體”。 就像檔案server為非常多使用者提供檔案一樣,應用程式server讓多個使用者能夠同一時候使用應用程式(一般是客戶建立的應用程式)”

  通俗的講,Webserver傳送(serves)頁面使瀏覽器能夠瀏覽。然而應用程式server提供的是client應用程式能夠調用(call)的方法(methods)。確切一點。你能夠說:Webserver專門處理HTTP請求(request),可是應用程式server是通過非常多協議來為應用程式提供(serves)商業邏輯 (business logic)。

  以Java EE為例,Webserver主要是處理靜態頁面處理和作為 Servlet容器,解釋和運行servlet/JSP,而應用server是運行商務邏輯的,主要是EJB、 JNDI和JMX API等J2EE API方面的,還包括交易處理、資料庫連接等功能,所以在企業級應用中。應用server提供的功能比WEBserver強大的多。

  以這樣的定義,IIS、Apache、Tomcat都能夠屬於Webserver,Weblogic、WebSphere都屬於應用server。

  Apache:在Webserver中,Apache是純粹的Webserver,常常與Tomcat配對使用。它對HTML頁面具有強大的解釋能力。可是不能解釋嵌入頁面內的server端指令碼代碼(JSP/Servlet)。

  Tomcat:早期的Tomcat是一個嵌入Apache內的JSP/Servlet解釋引擎Apache+Tomcat就相當於IIS+ASP。後來的Tomcat已不再嵌入Apache內。Tomcat進程獨立於Apache進程運行。 並且,Tomcat已經是一個獨立的Servlet和JSP容器,商務邏輯層代碼和介面互動層代碼能夠分離了。

因此,有人把Tomcat叫做輕量級應用server。

  IIS:微軟早期的IIS。就是一個純粹的Webserver。

後來,它嵌入了ASP引擎。能夠解釋VBScript和JScriptserver端代碼了。這時,它就能夠兼作應用server。

當然。它與J2EE應用server根本無法相比,可是,從功能上說,從原理上說,它勉強能夠稱之為應用server。確切地說,它是兼有一點應用server功能的Webserver。

  綜上:Apache是純粹的webserver。而Tomcat和IIS由於具有瞭解釋運行server端代碼的能力,能夠稱作為輕量級應用server或帶有server功能的Webserver。Weblogic、WebSphere由於能提供強大的J2EE功能。毫無疑問是絕對的應用server。對於處於中間位置的Tomcat,它能夠配合純WebserverApache一起使用,也能夠作為應用server的輔助與應用server一起部署:

  • 一、Tomcat與應用server

      到眼下為止,Tomcat一直被覺得是Servlet/JSP API的運行器,也就所謂的Servlet容器。然而,Tomcat並不僅僅如此,它還提供了JNDI和JMX API的實現機制。儘管如此,Tomcat仍然還不能算是應用server,由於它不提供大多數J2EE API的支援。

      非常有意思的是,眼下很多的應用server通常把Tomcat作為它們Servlet和JSP API的容器。由於Tomcat同意開發人員僅僅需通過增加一行致謝,就能夠把Tomcat嵌入到它們的應用中。遺憾的是。很多商業應用server並沒有遵守此規則。

      對於開發人員來說,假設是為了尋找利用Servlet、JSP、JNDI和JMX技術來產生Java Web應用的話。選擇Tomcat是一個優秀的解決方式;可是為了尋找支援其他的J2EE API,那麼尋找一個應用server或者把Tomcat作為應用server的輔助。將是一個不錯的解決方式;第三種方式是找到獨立的J2EE API實現,然後把它們跟Tomcat結合起來使用。儘管整合會帶來相關的問題,可是這樣的方式是最為有效。

  • 二、Tomcat與Webserver

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

      一般來說,大的網站都是將Tomcat與Apache的結合,Apache負責接受全部來自client的HTTP請求,然後將Servlets和JSP的請求轉寄給Tomcat來處理。Tomcat完畢處理後,將響應傳回給Apache。最後Apache將響應返回給client。

      並且為了提高效能。能夠一台apache串連多台tomcat實現Server Load Balancer。

      關於WEBserver、應用程式server的更具體差別能夠參考以下這篇文章:

      通俗的講,Webserver傳送(serves)頁面使瀏覽器能夠瀏覽,然而應用程式server提供的是client應用程式能夠調用(call)的方法(methods)。

    確切一點,你能夠說:Webserver專門處理HTTP請求(request),可是應用程式server是通過非常多協議來為應用程式提供(serves)商業邏輯 (business logic)。

      以下讓我們來細細道來:

      Webserver(Web Server)

      Webserver能夠解析(handles)HTTP協議。當Webserver接收到一個HTTP請求(request),會返回一個HTTP響應 (response),比如送回一個HTML頁面。為了處理一個請求(request),Webserver能夠響應(response)一個靜態頁面或圖片,進行頁面跳轉(redirect)。或者把動態響應(dynamic response)的產生託付(delegate)給一些其他的程式比如CGI指令碼。JSP(JavaServer Pages)指令碼,servlets,ASP(Active Server Pages)指令碼,server端(server-side)JavaScript。或者一些其他的server端(server-side)技術。

    不管它們(譯者注:指令碼)的目的怎樣,這些server端(server-side)的程式通常產生一個HTML的響應(response)來讓瀏覽器能夠瀏覽。

      要知道。Webserver的代理模型(delegation model)非常easy。當一個請求(request)被送到Webserver裡來時,它僅僅單純的把請求(request)傳遞給能夠非常好的處理請求 (request)的程式(譯者注:server端指令碼)。Webserver僅僅提供一個能夠運行server端(server-side)程式和返回(程式所產生的)響應(response)的環境,而不會超出職能範圍。server端(server-side)程式通常具有交易處理(transaction processing),資料庫連接(database connectivity)和訊息(messaging)等功能。

      儘管Webserver不支援交易處理或資料庫連接池。但它能夠配置(employ)各種策略(strategies)來實現容錯性(fault tolerance)和可擴充性(scalability)。比如Server Load Balancer(load balancing),緩衝(caching)。叢集特徵(clustering—features)常常被誤覺得僅僅是應用程式server專有的特徵。

      應用程式server(The Application Server)

      依據我們的定義。作為應用程式server。它通過各種協議。能夠包括HTTP。把商業邏輯暴露給(expose)client應用程式。

    Webserver主要是處理向瀏覽器發送HTML以供瀏覽,而應用程式server提供訪問商業邏輯的途徑以供client應用程式使用。應用程式使用此商業邏輯就象你調用對象的一個方法 (或過程語言中的一個函數)一樣。

      應用程式server的client(包括有圖形化使用者介面(GUI)的)可能會運行在一台PC、一個Webserver或者甚至是其他的應用程式server上。在應用程式server與其client之間來回穿梭(traveling)的資訊不僅僅局限於簡單的顯示標記。

    相反,這樣的資訊就是程式邏輯(program logic)。正是由於這樣的邏輯取得了(takes)資料和方法調用(calls)的形式而不是靜態HTML,所以client才幹夠隨心所欲的使用這樣的被暴露的商業邏輯。

      在大多數情形下,應用程式server是通過組件 (component) 的應用程式介面(API)把商業邏輯暴露(expose)(給client應用程式)的,比如基於J2EE(Java 2 Platform, Enterprise Edition)應用程式server的EJB(Enterprise JavaBean)組件模型。此外,應用程式server能夠管理自己的資源。比如看大門的工作(gate-keeping duties)包括安全(security),交易處理(transaction processing)。資源集區(resource pooling),和訊息(messaging)。就象Webserver一樣,應用程式server配置了多種可擴充(scalability)和容錯(fault tolerance)技術。

一個範例

  比如。設想一個線上商店(網站)提供即時定價(real-time pricing)和有效性(availability)資訊。

這個網站(site)非常可能會提供一個表單(form)讓你來選擇產品。當你提交查詢 (query)後,網站會進行尋找(lookup)並把結果內嵌在HTML頁面中返回。網站能夠有非常多種方式來實現這樣的功能。我要介紹一個不使用應用程式server 的情景和一個使用應用程式server的情景。觀察一下這兩中情景的不同會有助於你瞭解應用程式server的功能。

情景1:不帶應用程式server的Webserver

  在此種情景下,一個Webserver獨立提供線上商店的功能。

Webserver獲得你的請求(request),然後發送給server端(server- side)能夠處理請求(request)的程式。此程式從資料庫或文字檔(flat file,譯者注:flat file是指沒有特殊格式的非二進位的檔案。如properties和XML檔案等)中尋找定價資訊。一旦找到,server端(server-side)程式把結果資訊表示成(formulate)HTML形式。最後Webserver把會它發送到你的Web瀏覽器。

簡而言之,Webserver僅僅是簡單的通過響應(response)HTML頁面來處理HTTP請求(request)。

情景2:帶應用程式server的Webserver

  情景2和情景1相同的是Webserver還是把響應(response)的產生託付(delegates)給指令碼(譯者注:server端 (server-side)程式)。然而,你能夠把尋找定價的商業邏輯(business logic)放到應用程式server上。

由於這樣的變化,此指令碼僅僅是簡單的調用應用程式server的尋找服務(lookup service),而不是已經知道怎樣尋找資料然後表示為(formulate)一個響應(response)。這時當該指令碼程式產生HTML響應(response)時就能夠使用該服務的返回結果了。

  在此情景中。應用程式server提供(serves)了用於查詢產品的定價資訊的商業邏輯。(server的)這樣的功能(functionality)沒有指出有關顯示和client怎樣使用此資訊的細節。相反client和應用程式server僅僅是來回傳送資料。當有client調用應用程式server的尋找服務(lookup service)時,此服務僅僅是簡單的尋找並返回結果給client。

  通過從響應產生(response-generating)HTML的代碼中分離出來。在應用程式之中該定價(尋找)邏輯的可重用性更強了。其他的client。比如收款機。也能夠調用相同的服務(service)來作為一個店員給客戶結帳。相反,在情景1中的定價尋找服務是不可重用的由於資訊內嵌在 HTML頁中了。

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

警告(Caveats)

  如今,XML Web Services已經使應用程式server和Webserver的界線混淆了。

通過傳送一個XML有效載荷(payload)給server,Webserver如今能夠處理資料和響應(response)的能力與曾經的應用程式server相同多了。

  另外。如今大多數應用程式server也包括了Webserver。這就意味著能夠把Webserver當作是應用程式server的一個子集(subset)。

儘管應用程式server包括了Webserver的功能,可是開發人員非常少把應用程式server部署(deploy)成這樣的功能(capacity)(譯者注:這樣的功能是指既有應用程式server的功能又有Webserver的功能)。

相反,假設須要,他們一般會把Webserver獨立配置,和應用程式server一前一後。這樣的功能的分離有助於提高效能(簡單的Web請求(request)就不會影響應用程式server了),分開配置(專門的Webserver。叢集(clustering)等等),並且給最佳產品的選取留有餘地。

WEBserver、應用程式server、HTTPserver差別

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.