平時(shí)在項(xiàng)目開發(fā)中我們經(jīng)常聽說(shuō)服務(wù)器,web服務(wù)器(Web Server)、應(yīng)用服務(wù)器(The Application Server),這些對(duì)我來(lái)說(shuō)開始感覺很迷糊,到底兩者之間有什么區(qū)別,今天通過(guò)網(wǎng)上資料的學(xué)習(xí)簡(jiǎn)單的了解了一下,所以這里進(jìn)行一次歸納。 概念: 應(yīng)用服務(wù)器:就是提供應(yīng)用服務(wù)器,這里的應(yīng)用很多,如果java應(yīng)用、C#應(yīng)用、ruby應(yīng)用,如果tomcat; Web服務(wù)器:提供web功能的服務(wù)器,主要就是http服務(wù)器,包括圖片的下載等一系列和文本相關(guān)的。(當(dāng)然,應(yīng)用服務(wù)器也提供http服務(wù),例如tomcat為了提供方便。) 在UNIX和LINUX平臺(tái)下使用最廣泛的免費(fèi)web服務(wù)器是W3C、NCSA、APACHE服務(wù)器,而Windows平臺(tái)使用IIS的Web服務(wù)器比較多。 常見的應(yīng)用服務(wù)器:IBM WebSphere、BEA WebLogic、IPlanet、Oracle IAS、TOMCAT等 那么我們來(lái)看看為什么會(huì)有Web服務(wù)器。經(jīng)常上網(wǎng)的人應(yīng)該知道當(dāng)我們?yōu)g覽一個(gè)網(wǎng)頁(yè)的時(shí)候如果這個(gè)網(wǎng)頁(yè)里的圖片、Flash等信息越多的話,頁(yè)面顯示的也就越慢。所以說(shuō)靜態(tài)資源會(huì)嚴(yán)重的影響頁(yè)面的打開速度。這時(shí)候我們就需要有Web服務(wù)器,Web服務(wù)器其中一個(gè)優(yōu)點(diǎn)就是處理靜態(tài)信息上,例如一些靜態(tài)的html,圖片等靜態(tài)資源比較快; 應(yīng)用服務(wù)器主要就是做如何解釋一個(gè)jsp,如果處理java文件等等,而Web服務(wù)器就是如果快速向?yàn)g覽器傳遞信息,如果快速讓瀏覽器下載圖片等; Web服務(wù)器可以解析(handle)http協(xié)議,當(dāng)web服務(wù)器接收到一個(gè)http請(qǐng)求(request),會(huì)返回一個(gè)http響應(yīng)(response),例如送回一個(gè)html頁(yè)面。為了處理一個(gè)請(qǐng)求(request),web服務(wù)器可以響應(yīng)(response)一個(gè)靜態(tài)頁(yè)面或圖片,進(jìn)行頁(yè)面跳轉(zhuǎn)(redirect),或者把動(dòng)態(tài)響應(yīng)(dynamic response)的的產(chǎn)生委托(delegate)給一些其它的程序例如cgi腳本,jsp(javaserver pages)腳本,servlets,asp(active server pages)腳本,服務(wù)器端(server-side)javascript,或者一些其它的服務(wù)器端(server-side)技術(shù)。無(wú)論它們的目的如何,這些服務(wù)器端(server-side)的程序通常產(chǎn)生一個(gè)html的響應(yīng)(response)來(lái)讓瀏覽器可以瀏覽。要知道,web服務(wù)器的代理模型(delegation model)非常簡(jiǎn)單。當(dāng)一個(gè)請(qǐng)求(request)被送到web服務(wù)器里來(lái)時(shí),它只單純的把請(qǐng)求(request)傳遞給可以很好的處理請(qǐng)求 (request)的程序。web服務(wù)器僅僅提供一個(gè)可以執(zhí)行服務(wù)器端(server-side)程序和返回(程序所產(chǎn)生的)響 應(yīng)(response)的環(huán)境,而不會(huì)超出職能范圍。服務(wù)器端(server-side)程序通常具有事務(wù)處理(transaction processing),數(shù)據(jù)庫(kù)連接(database connectivity)和消息(messaging)等功能。雖然web服務(wù)器不支持事務(wù)處理或數(shù)據(jù)庫(kù)連接池,但它可以配置(employ)各種策略(strategies)來(lái)實(shí)現(xiàn)容錯(cuò)性(fault tolerance)和可擴(kuò)展性(scalability),例如負(fù)載平衡(load balancing),緩沖(caching)。集群特征(clustering—features)經(jīng)常被誤認(rèn)為僅僅是應(yīng)用程序服務(wù)器專有的特征。 應(yīng)用程序服務(wù)器(the application server)根據(jù)我們的定義,作為應(yīng)用程序服務(wù)器,它通過(guò)各種協(xié)議,可以包括http,把商業(yè)邏輯暴露給客戶端應(yīng)用程序。web服務(wù)器主要是處理向?yàn)g覽器發(fā)送html以供瀏覽,而應(yīng)用程序服務(wù)器提供訪問(wèn)商業(yè)邏輯的途徑以供客戶端應(yīng)用程序x使用。應(yīng)用程序使用此商業(yè)邏輯就象你調(diào)用對(duì)象的一個(gè)方法 (或過(guò)程語(yǔ)言中的一個(gè)函數(shù))一樣。 應(yīng)用程序服務(wù)器的客戶端(包含有圖形用戶界面(gui)的)可能會(huì)運(yùn)行在一臺(tái)pc、一個(gè)web服務(wù)器或者甚至是其它的應(yīng)用程序服務(wù)器上。在應(yīng)用程序 服務(wù)器與其客戶端之間來(lái)回穿梭(traveling)的信息不僅僅局限于簡(jiǎn)單的顯示標(biāo)記。相反,這種信息就是程序邏輯(program logic)。正是由于這種邏輯取得了(takes)數(shù)據(jù)和方法調(diào)用(calls)的形式而不是靜態(tài)html,所以客戶端才可以隨心所欲的使用這種被暴露的商業(yè)邏輯。 在大多數(shù)情形下,應(yīng)用程序服務(wù)器是通過(guò)組件(component)的應(yīng)用程序接口(api)把商業(yè)邏輯暴露(expose)(給客戶端應(yīng)用程序) 的,例如基于j2ee(java 2 platform, enterprise edition)應(yīng)用程序服務(wù)器的ejb(enterprise javabean)組件模型。此外,應(yīng)用程序服務(wù)器可以管理自己的資源,例如看大門的工作(gate-keeping duties)包括安全(security),事務(wù)處理(transaction processing),資源池(resource pooling),和消息(messaging)。就象web服務(wù)器一樣,應(yīng)用程序服務(wù)器配置了多種可擴(kuò)展(scalability)和容錯(cuò)(fault tolerance)技術(shù)。 最后總結(jié)一下, Web服務(wù)器:主要是處理web的數(shù)據(jù)元素的應(yīng)用軟件就叫Web服務(wù)器,如果IIS、apache,Web服務(wù)器與客戶端大交道,它要處理的主要信息有:session、request、response、HTML、JS、CS等; 應(yīng)用服務(wù)器:應(yīng)用服務(wù)器如JSP,處理的是非常規(guī)性Web頁(yè)面(JSP文件),他動(dòng)態(tài)生成Web頁(yè)面,生成的Web頁(yè)面再發(fā)送給客戶端(實(shí)際上當(dāng)應(yīng)用服務(wù)器處理完一個(gè)JSP請(qǐng)求并完成JSP生成HTML后它的任務(wù)就結(jié)束了,其余的就是WEB處理的過(guò)程了)。 兩者之間的關(guān)系: WEB服務(wù)器一般是通用的,而應(yīng)用服務(wù)器一般是專用的,如Tomcat只處理JAVA應(yīng)用程序而不能處理ASPX或PHP。而Apache是一個(gè)WEB服 務(wù)器f(HTTP服務(wù)器),后來(lái)連接Tomcat應(yīng)用服務(wù)器來(lái)支持java。 |
|