咨詢電(diàn)話(huà):023-88959644    24小(xiǎo)時(shí)服務熱線:400-023-8809
NEWS CENTER ·
新聞動态
關注中技(jì)互聯 關注前沿

WEB服務器(qì)和(hé)應用服務器(qì)之間(jiān)的區(qū)别

發表日期:2014-11-03    文章編輯:    浏覽次數(shù):163    标簽:

通(tōng)俗的講,Web服務器(qì)傳送(serves)頁面使浏覽器(qì)可(kě)以浏覽,然而應用程序服務器(qì)提供的是客戶端應用程序可(kě)以調用(call)的方法(methods)。确切一點,你(nǐ)可(kě)以說:Web服務器(qì)專門(mén)處理(lǐ)HTTP請(qǐng)求(request),但(dàn)是應用程序服務器(qì)是通(tōng)過很(hěn)多(duō)協議來(lái)為(wèi)應用程序提供(serves)商業邏輯(business logic)。

下面讓我們來(lái)細細道(dào)來(lái):

Web服務器(qì)(Web Server)

Web服務器(qì)可(kě)以解析(handles)HTTP協議。當Web服務器(qì)接收到一個(gè)HTTP請(qǐng)求(request),會(huì)返回一個(gè)HTTP響應(response),例如送回一個(gè)HTML頁面。為(wèi)了處理(lǐ)一個(gè)請(qǐng)求(request),Web服務器(qì)可(kě)以響應(response)一個(gè)靜态頁面或圖片,進行(xíng)頁面跳(tiào)轉(redirect),或者把動态響應(dynamic response)的産生(shēng)委托(delegate)給一些(xiē)其它的程序例如CGI腳本,JSP(JavaServer Pages)腳本,servlets,ASP(Active Server Pages)腳本,服務器(qì)端(server-side)JavaScript,或者一些(xiē)其它的服務器(qì)端(server-side)技(jì)術(shù)。無論它們(譯者注:腳本)的目的如何,這些(xiē)服務器(qì)端(server-side)的程序通(tōng)常産生(shēng)一個(gè)HTML的響應(response)來(lái)讓浏覽器(qì)可(kě)以浏覽。

要知道(dào),Web服務器(qì)的代理(lǐ)模型(delegation model)非常簡單。當一個(gè)請(qǐng)求(request)被送到Web服務器(qì)裏來(lái)時(shí),它隻單純的把請(qǐng)求(request)傳遞給可(kě)以很(hěn)好的處理(lǐ)請(qǐng)求(request)的程序(譯者注:服務器(qì)端腳本)。Web服務器(qì)僅僅提供一個(gè)可(kě)以執行(xíng)服務器(qì)端(server-side)程序和(hé)返回(程序所産生(shēng)的)響應(response)的環境,而不會(huì)超出職能範圍。服務器(qì)端(server-side)程序通(tōng)常具有(yǒu)事務處理(lǐ)(transaction processing),數(shù)據庫連接(database connectivity)和(hé)消息(messaging)等功能。

雖然Web服務器(qì)不支持事務處理(lǐ)或數(shù)據庫連接池,但(dàn)它可(kě)以配置(employ)各種策略(strategies)來(lái)實現容錯性(fault tolerance)和(hé)可(kě)擴展性(scalability),例如負載平衡(load balancing),緩沖(caching)。集群特征(clustering—features)經常被誤認為(wèi)僅僅是應用程序服務器(qì)專有(yǒu)的特征。

應用程序服務器(qì)(The Application Server)

根據我們的定義,作(zuò)為(wèi)應用程序服務器(qì),它通(tōng)過各種協議,可(kě)以包括HTTP,把商業邏輯暴露給(expose)客戶端應用程序。Web服務器(qì)主要是處理(lǐ)向浏覽器(qì)發送HTML以供浏覽,而應用程序服務器(qì)提供訪問商業邏輯的途徑以供客戶端應用程序使用。應用程序使用此商業邏輯就象你(nǐ)調用對象的一個(gè)方法(或過程語言中的一個(gè)函數(shù))一樣。

應用程序服務器(qì)的客戶端(包含有(yǒu)圖形用戶界面(GUI)的)可(kě)能會(huì)運行(xíng)在一台PC、一個(gè)Web服務器(qì)或者甚至是其它的應用程序服務器(qì)上(shàng)。在應用程序服務器(qì)與其客戶端之間(jiān)來(lái)回穿梭(traveling)的信息不僅僅局限于簡單的顯示标記。相反,這種信息就是程序邏輯(program logic)。 正是由于這種邏輯取得(de)了(takes)數(shù)據和(hé)方法調用(calls)的形式而不是靜态HTML,所以客戶端才可(kě)以随心所欲的使用這種被暴露的商業邏輯。

在大(dà)多(duō)數(shù)情形下,應用程序服務器(qì)是通(tōng)過組件(component)的應用程序接口(API)把商業邏輯暴露(expose)(給客戶端應用程序)的,例如基于J2EE(Java 2 Platform, Enterprise Edition)應用程序服務器(qì)的EJB(Enterprise JavaBean)組件模型。此外,應用程序服務器(qì)可(kě)以管理(lǐ)自己的資源,例如看大(dà)門(mén)的工作(zuò)(gate-keeping duties)包括安全(security),事務處理(lǐ)(transaction processing),資源池(resource pooling), 和(hé)消息(messaging)。就象Web服務器(qì)一樣,應用程序服務器(qì)配置了多(duō)種可(kě)擴展(scalability)和(hé)容錯(fault tolerance)技(jì)術(shù)。

一個(gè)例子

例如,設想一個(gè)在線商店(diàn)(網站(zhàn))提供實時(shí)定價(real-time pricing)和(hé)有(yǒu)效性(availability)信息。這個(gè)站(zhàn)點(site)很(hěn)可(kě)能會(huì)提供一個(gè)表單(form)讓你(nǐ)來(lái)選擇産品。當你(nǐ)提交查詢(query)後,網站(zhàn)會(huì)進行(xíng)查找(lookup)并把結果內(nèi)嵌在HTML頁面中返回。網站(zhàn)可(kě)以有(yǒu)很(hěn)多(duō)種方式來(lái)實現這種功能。我要介紹一個(gè)不使用應用程序服務器(qì)的情景和(hé)一個(gè)使用應用程序服務器(qì)的情景。觀察一下這兩中情景的不同會(huì)有(yǒu)助于你(nǐ)了解應用程序服務器(qì)的功能。

情景1:不帶應用程序服務器(qì)的Web服務器(qì)

在此種情景下,一個(gè)Web服務器(qì)獨立提供在線商店(diàn)的功能。Web服務器(qì)獲得(de)你(nǐ)的請(qǐng)求(request),然後發送給服務器(qì)端(server-side)可(kě)以處理(lǐ)請(qǐng)求(request)的程序。此程序從數(shù)據庫或文本文件(flat file,譯者注:flat file是指沒有(yǒu)特殊格式的非二進制(zhì)的文件,如properties和(hé)XML文件等)中查找定價信息。一旦找到,服務器(qì)端(server-side)程序把結果信息表示成(formulate)HTML形式,最後Web服務器(qì)把會(huì)它發送到你(nǐ)的Web浏覽器(qì)。

簡而言之,Web服務器(qì)隻是簡單的通(tōng)過響應(response)HTML頁面來(lái)處理(lǐ)HTTP請(qǐng)求(request)。

情景2:帶應用程序服務器(qì)的Web服務器(qì)

情景2和(hé)情景1相同的是Web服務器(qì)還(hái)是把響應(response)的産生(shēng)委托(delegates)給腳本(譯者注:服務器(qì)端(server-side)程序)。然而,你(nǐ)可(kě)以把查找定價的商業邏輯(business logic)放到應用程序服務器(qì)上(shàng)。由于這種變化,此腳本隻是簡單的調用應用程序服務器(qì)的查找服務(lookup service),而不是已經知道(dào)如何查找數(shù)據然後表示為(wèi)(formulate)一個(gè)響應(response)。 這時(shí)當該腳本程序産生(shēng)HTML響應(response)時(shí)就可(kě)以使用該服務的返回結果了。

在此情景中,應用程序服務器(qì)提供(serves)了用于查詢産品的定價信息的商業邏輯。(服務器(qì)的)這種功能(functionality)沒有(yǒu)指出有(yǒu)關顯示和(hé)客戶端如何使用此信息的細節,相反客戶端和(hé)應用程序服務器(qì)隻是來(lái)回傳送數(shù)據。當有(yǒu)客戶端調用應用程序服務器(qì)的查找服務(lookup service)時(shí),此服務隻是簡單的查找并返回結果給客戶端。

通(tōng)過從響應産生(shēng)(response-generating)HTML的代碼中分離出來(lái),在應用程序之中該定價(查找)邏輯的可(kě)重用性更強了。其他的客戶端,例如收款機,也可(kě)以調用同樣的服務(service)來(lái)作(zuò)為(wèi)一個(gè)店(diàn)員給客戶結帳。相反,在情景1中的定價查找服務是不可(kě)重用的因為(wèi)信息內(nèi)嵌在HTML頁中了。

總而言之,在情景2的模型中,在Web服務器(qì)通(tōng)過回應HTML頁面來(lái)處理(lǐ)HTTP請(qǐng)求(request),而應用程序服務器(qì)則是通(tōng)過處理(lǐ)定價和(hé)有(yǒu)效性(availability)請(qǐng)求(request)來(lái)提供應用程序邏輯的。

警告(Caveats)

現在,XML Web Services已經使應用程序服務器(qì)和(hé)Web服務器(qì)的界線混淆了。通(tōng)過傳送一個(gè)XML有(yǒu)效載荷(payload)給服務器(qì),Web服務器(qì)現在可(kě)以處理(lǐ)數(shù)據和(hé)響應(response)的能力與以前的應用程序服務器(qì)同樣多(duō)了。

另外,現在大(dà)多(duō)數(shù)應用程序服務器(qì)也包含了Web服務器(qì),這就意味着可(kě)以把Web服務器(qì)當作(zuò)是應用程序服務器(qì)的一個(gè)子集(subset)。雖然應用程序服務器(qì)包含了Web服務器(qì)的功能,但(dàn)是開(kāi)發者很(hěn)少(shǎo)把應用程序服務器(qì)部署(deploy)成這種功能(capacity)(譯者注:這種功能是指既有(yǒu)應用程序服務器(qì)的功能又有(yǒu)Web服務器(qì)的功能)。相反,如果需要,他們通(tōng)常會(huì)把Web服務器(qì)獨立配置,和(hé)應用程序服務器(qì)一前一後。這種功能的分離有(yǒu)助于提高(gāo)性能(簡單的Web請(qǐng)求(request)就不會(huì)影(yǐng)響應用程序服務器(qì)了),分開(kāi)配置(專門(mén)的Web服務器(qì),集群(clustering)等等),而且給最佳産品的選取留有(yǒu)餘地。

如沒特殊注明(míng),文章均為(wèi)中技(jì)互聯原創,轉載請(qǐng)注明(míng)來(lái)自www.zjcoo.com
相關新聞

CopyrightZJCOO technology Co., LTD. All Rights Reserved.    

渝ICP 備11003429号

  • qq客服
  • 公衆号
  • 手機版
  • 新浪微博