應用服務器是指通過各種協(xié)議把商業(yè)邏輯曝露給客戶端的程序猪瞬。它提供了訪問商業(yè)邏輯的途徑以供客戶端應用程序使用憎瘸。應用服務器使用此商業(yè)邏輯就像調用對象的一個方法一樣。
定義
隨著Internet的發(fā)展壯大,“主機/終端”或“客戶機/服務器”的傳統(tǒng)的應用系統(tǒng)模式已經不能適應新的環(huán)境,于是就產生了新的分布式應用系統(tǒng),相應地,新的開發(fā)模式也應運而生陈瘦,即所謂的“瀏覽器/服務器”結構幌甘、“瘦客戶機”模式。應用服務器便是一種實現這種模式核心技術痊项。
Web應用程序駐留在應用服務器(Application Server)上锅风。應用服務器為Web應用程序提供一種簡單的和可管理的對系統(tǒng)資源的訪問機制。它也提供低級的服務鞍泉,如HTTP協(xié)議的實現和數據庫連接管理皱埠。Servlet容器僅僅是應用服務器的一部分。除了Servlet容器外咖驮,應用服務器還可能提供其他的Java EE(Enterprise Edition)組件边器,如EJB容器,JNDI服務器以及JMS服務器等托修。
市場上可以得到多種應用服務器忘巧,其中包括Apache的Tomcat、IBM的websphere睦刃、Caucho Technology的Resin砚嘴、Macromedia的JRun、NEC WebOTX Application Server、JBoss Application Server际长、BEA的WebLogic等耸采。其中有些如NEC WebOTX Application Server、WebLogic也颤、WebSphere不僅僅是Servlet容器洋幻,它們也提供對EJB(Enterprise JavaBeans)、JMS(Java Message Service)以及其他Java EE技術的支持翅娶。每種類型的應用服務器都有自己的優(yōu)點文留、局限性和適用性。
應用服務器和WEB服務器的區(qū)別
通俗的講竭沫,Web服務器傳送(serves)頁面使瀏覽器可以瀏覽燥翅,然而應用程序服務器提供的是客戶端應用程序可以調用(call)的方法(methods)。確切一點蜕提,你可以說:Web服務器專門處理HTTP請求(request)森书,但是應用程序服務器是通過很多協(xié)議來為應用程序提供(serves)商業(yè)邏輯(business logic)。
下面讓我們來細細道來:
Web型
Web服務器(Web Server)可以解析(handles)HTTP協(xié)議谎势。當Web服務器接收到一個HTTP請求(request)凛膏,會返回一個HTTP響應 (response),例如送回一個HTML頁面脏榆。為了處理一個請求(request)猖毫,Web服務器可以響應(response)一個靜態(tài)頁面或圖片, 進行頁面跳轉(redirect)须喂,或者把動態(tài)響應(dynamic response)的產生委托(delegate)給一些其它的程序例如CGI腳本吁断,JSP(JavaServer Pages)腳本,servlets,ASP(Active Server Pages)腳本坞生,服務器端(server-side)JavaScript,或者一些其它的服務器端(server-side)技術仔役。無論它們(譯者 注:腳本)的目的如何,這些服務器端(server-side)的程序通常產生一個HTML的響應(response)來讓瀏覽器可以瀏覽是己。
企業(yè)WEB服務器是面向企業(yè)網絡用戶的信息交流平臺,WEB在企業(yè)生產管理過程中的應用越來越多,是信息化應用的入口又兵,一些應用系統(tǒng)都集成在WEB服務器上。要知道赃泡,Web服務器的代理模型(delegation model)非常簡單寒波。當一個請求(request)被送到Web服務器里來時,它只單純的把請求(request)傳遞給可以很好的處理請求 (request)的程序(譯者注:服務器端腳本)升熊。Web服務器僅僅提供一個可以執(zhí)行服務器端(server-side)程序和返回(程序所產生的)響應(response)的環(huán)境俄烁,而不會超出職能范圍。服務器端(server-side)程序通常具有事務處理(transaction processing)级野,數據庫連接(database connectivity)和消息(messaging)等功能页屠。[2]
雖然Web 服務器不支持事務處理或數據庫連接池粹胯,但它可以配置(employ)各種策略(strategies)來實現容錯性(fault tolerance)和可擴展性(scalability),例如負載平衡(load balancing)辰企,緩沖(caching)风纠。集群特征(clustering-features)經常被誤認為僅僅是應用程序服務器專有的特征。[3]
應用程序型
應用程序服務器(The Application Server)
根據定義牢贸,作為應用程序服務器竹观,它通過各種協(xié)議,可以包括HTTP,把商業(yè)邏輯暴露給(expose)客戶端應用程序潜索。Web服務器主要是處理向 瀏覽器發(fā)送HTML以供瀏覽臭增,而應用程序服務器提供訪問商業(yè)邏輯的途徑以供客戶端應用程序使用。應用程序使用此商業(yè)邏輯就像你調用對象的一個方法(或過程 語言中的一個函數)一樣竹习。
應用程序服務器的客戶端(包含有圖形用戶界面(GUI)的)可能會運行在一臺PC誊抛、一個Web服務器或者甚至 是其它的應用程序服務器上。在應用程序服務器與其客戶端之間來回穿梭(traveling)的信息不僅僅局限于簡單的顯示標記整陌。相反拗窃,這種信息就是程序邏輯(program logic)。 正是由于這種邏輯取得了(takes)數據和方法調用(calls)的形式而不是靜態(tài)HTML,所以客戶端才可以隨心所欲的使用這種被暴露的商業(yè)邏輯泌辫。
在大多數情形下随夸,應用程序服務器是通過組件(component)的應用程序接口(API)把商業(yè)邏輯暴露(expose)(給客戶端應用程序)的,例如基于J2EE(Java 2 Platform, Enterprise Edition)應用程序服務器的EJB(Enterprise JavaBean)組件模型震放。此外逃魄,應用程序服務器可以管理自己的資源,例如看大門的工作(gate-keeping duties)包括安全(security)澜搅,事務處理(transaction processing),資源池(resource pooling)邪锌, 和消息(messaging)勉躺。就象Web服務器一樣,應用程序服務器配置了多種可擴展(scalability)和容錯(fault tolerance)技術觅丰。
其實饵溅,這里主要講的就是應用服務器和web服務器之間的分項職責。