Web服務器與應用服務器
平時在項目開發中我們經常聽說服務器,web服務器(Web Server)、應用服務器(The Application Server),這些對我來說開始感覺很迷糊,到底兩者之間有什么區別,今天通過網上資料的學習簡單的了解了一下,所以這里進行一次歸納。
概念:
應用服務器:就是提供應用的服務器,這里的應用很多,如果java應用、C#應用、ruby應用,如果tomcat。
Web服務器:提供web功能的服務器,主要就是http服務器,包括圖片的下載等一系列和文本相關的。(當然,應用服務器也提供http服務,例如tomcat為了提供方便。)
在UNIX和LINUX平台下使用最廣泛的免費web服務器是W3C、NCSA、APACHE服務器,而Windows平台使用IIS的Web服務器比較多。
常見的應用服務器:IBM WebSphere、BEA WebLogic、IPlanet、Oracle IAS、TOMCAT等
那么我們來看看為什么會有Web服務器。經常上網的人應該知道當我們瀏覽一個網頁的時候如果這個網頁里的圖片、Flash等信息越多的話,頁面顯示的也就越慢。所以說靜態資源會嚴重的影響頁面的打開速度。這時候我們就需要有Web服務器,Web服務器其中一個優點就是處理靜態信息上,例如一些靜態的html,圖片等靜態資源比較快;
應用服務器主要就是做如何解釋一個jsp,如果處理java文件等等,而Web服務器就是如果快速向瀏覽器傳遞信息,如果快速讓瀏覽器下載圖片等;
Web服務器可以解析(handle)http協議,當web服務器接收到一個http請求(request),會返回一個http響應(response),例如送回一個html頁面。為了處理一個請求(request),web服務器可以響應(response)一個靜態頁面或圖片,進行頁面跳轉(redirect),或者把動態響應(dynamic response)的的產生委托(delegate)給一些其它的程序例如cgi腳本,jsp(javaserver pages)腳本,servlets,asp(active server pages)腳本,服務器端(server-side)javascript,或者一些其它的服務器端(server-side)技術。無論它們的目的如何,這些服務器端(server-side)的程序通常產生一個html的響應(response)來讓瀏覽器可以瀏覽。要知道,web服務器的代理模型(delegation model)非常簡單。當一個請求(request)被送到web服務器里來時,它只單純的把請求(request)傳遞給可以很好的處理請求 (request)的程序。web服務器僅僅提供一個可以執行服務器端(server-side)程序和返回(程序所產生的)響 應(response)的環境,而不會超出職能范圍。服務器端(server-side)程序通常具有事務處理(transaction processing),數據庫連接(database connectivity)和消息(messaging)等功能。雖然web服務器不支持事務處理或數據庫連接池,但它可以配置(employ)各種策略(strategies)來實現容錯性(fault tolerance)和可擴展性(scalability),例如負載平衡(load balancing),緩沖(caching)。集群特征(clustering—features)經常被誤認為僅僅是應用程序服務器專有的特征。
應用程序服務器(the application server)根據我們的定義,作為應用程序服務器,它通過各種協議,可以包括http,把商業邏輯暴露給客戶端應用程序。web服務器主要是處理向瀏覽器發送html以供瀏覽,而應用程序服務器提供訪問商業邏輯的途徑以供客戶端應用程序x使用。應用程序使用此商業邏輯就象你調用對象的一個方法 (或過程語言中的一個函數)一樣。
應用程序服務器的客戶端(包含有圖形用戶界面(gui)的)可能會運行在一台pc、一個web服務器或者甚至是其它的應用程序服務器上。在應用程序 服務器與其客戶端之間來回穿梭(traveling)的信息不僅僅局限於簡單的顯示標記。相反,這種信息就是程序邏輯(program logic)。正是由於這種邏輯取得了(takes)數據和方法調用(calls)的形式而不是靜態html,所以客戶端才可以隨心所欲的使用這種被暴露的商業邏輯。
在大多數情形下,應用程序服務器是通過組件(component)的應用程序接口(api)把商業邏輯暴露(expose)(給客戶端應用程序) 的,例如基於j2ee(java 2 platform, enterprise edition)應用程序服務器的ejb(enterprise javabean)組件模型。此外,應用程序服務器可以管理自己的資源,例如看大門的工作(gate-keeping duties)包括安全(security),事務處理(transaction processing),資源池(resource pooling),和消息(messaging)。就象web服務器一樣,應用程序服務器配置了多種可擴展(scalability)和容錯(fault tolerance)技術。
最后總結一下
Web服務器:主要是處理web的數據元素的應用軟件就叫Web服務器,如果IIS、apache,Web服務器與客戶端大交道,它要處理的主要信息有:session、request、response、HTML、JS、CS等;
應用服務器:應用服務器如JSP,處理的是非常規性Web頁面(JSP文件),他動態生成Web頁面,生成的Web頁面再發送給客戶端(實際上當應用服務器處理完一個JSP請求並完成JSP生成HTML后它的任務就結束了,其余的就是WEB處理的過程了)。
兩者之間的關系:
WEB服務器一般是通用的,而應用服務器一般是專用的,如Tomcat只處理JAVA應用程序而不能處理ASPX或PHP。而Apache是一個WEB服 務器f(HTTP服務器),后來連接Tomcat應用服務器來支持java。
來自http://xdwangiflytek.iteye.com/blog/1339874
Apache & Tomcat & JBoss & Weblogic
概述:
Apache:全球應用最廣泛的http服務器
Tomcat:應用也算非常廣泛的web服務器,支持部分j2ee
JBoss:開源的應用服務器
Weblogic:應該說算是業界第一的應用服務器,全部支持j2ee1.4
Jboss也支持j2ee
JBoss和WebLogic都含有Jsp和Servlet容器,也就可以做web容器,
JBoss和WebLogic也包含EJB容器,是完整的J2EE應用服務器
Tomcat 只能做jsp和servlet的container
Jboss內嵌Tomcat,處理靜態頁面Jboss的速度要比較快。
Jboss作為應用服務器,而Tomcat做web服務器。
一、Tomcat
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,它是Apache 軟件基金會(Apache Software Foundation)的Jakarta項目中的一個核心項目,由Apache、Sun和其他一些公司及個人共同開發而成。Tomcat 5支持最新的Servlet 2.4和JSP 2.0規范。因為Tomcat技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛並得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器。
Tomcat很受廣大程序員的喜歡,因為它運行時占用的系統資源小,擴展性好,支持負載平衡與郵件服務等開發應用系統常用的功能;而且它還在不斷的改進和完善中,任何一個感興趣的程序員都可以更改它或在其中加入新的功能。
Tomcat是一個小型的輕量級應用服務器,在中小型系統和並發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP程序的首選。對於一個初學者來說,可以這樣認為,當在一台機器上配置好Apache服務器,可利用它響應對HTML 頁面的訪問請求。實際上Tomcat部分是Apach服務器的擴展,但它是獨立運行的,所以當你運行tomcat 時,它實際上作為一個與Apache 獨立的進程單獨運行的。
配置正確時,Apache為HTML頁面服務,而Tomcat實際上運行JSP 頁面和Servlet。另外,Tomcat和IIS、Apache等Web服務器一樣,具有處理HTML頁面的功能,另外它還是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。不過,Tomcat處理靜態HTML的能力不如Apache服務器。
Tomcat 最新版本是4.0x.4.0x與3.x的架構不同,而是重新設計的。Tomcat4.0x中采用了新的Servlet容器:Catalina,完整的實現了Servlet2.3和Jsp1.2規范。由於Java的跨平台特性,基於Java的Tomcat也具有跨平台性。
說到這里我們要介紹一下通常所說的應用服務器(如WebLogic)與Tomcat有何區別。應用服務器提供更多的J2EE特征,如EJB,JMS,JAAS等,同時也支持Jsp和Servlet。而Tomcat則功能沒有那么強大,它不提供EJB等支持。但如果與JBoss(一個開源的應用服務器)集成到一塊,則可以實現J2EE的全部功能。既然應用服務器具有Tomcat的功能,那么Tomcat有沒有存在的必要呢?事實上,我們的很多中小應用不需要采用EJB等技術,Jsp和Servlet已經足夠,這時如果用應用服務器就有些浪費了。而Tomcat短小精悍,配置方便,能滿足我們的需求,這種情況下我們自然會選擇Tomcat。
基於Tomcat的開發其實主要是Jsp和Servlet的開發。我們這里要提到另外一個工具Ant,Ant也是Jakarta中的一個子項目,它所實現的功能類似於Unix中的make。你需要寫一個build.xml文件,然后運行Ant就可以完成xml文件中定義的工作,這個工具對於一個大的應用來說非常好,我們只需在xml中寫很少的東西就可以將其編譯並打包成WAR。事實上,在很多應用服務器的發布中都包含了Ant。另外,在Jsp1.2中,可以利用標簽庫實現Java代碼與Html文件的分離,使Jsp的維護更方便。
Tomcat也可以與其它一些軟件集成起來實現更多的功能。如與上面提到的JBoss集成起來開發EJB,與Cocoon(Apache的另外一個項目)集成起來開發基於Xml的應用,與OpenJMS集成起來開發JMS應用,除了我們提到的這幾種,可以與Tomcat集成的軟件還有很多。
二、Jboss
JBoss是全世界開發者共同努力的成果,一個基於J2EE的開放源代碼的應用服務器。 因為JBoss代碼遵循LGPL許可,你可以在任何商業應用中免費使用它,而不用支付費用。JBoss支持EJB 1.1和EJB 2.0 EJB3.0的規范,它是一個管理EJB的容器和服務器。類似於Sun's J2SDK Enterprise Edition(J2EE),JBoss的目標是一個源代碼開放的J2EE環境。但是JBoss核心服務僅是提供EJB服務器。JBoss不包括serverlers/JSP page 的WEB容器,當然可以和Tomcat或Jetty綁定使用。
JBoss還具有如下六大優點:
1、JBoss是免費且開放源代碼J2EE的實現,它通過LGPL許可證進行發布。
2、JBoss需要的內存和硬盤空間比較小。
3、安裝非常簡單。先解壓縮JBoss打包文件再配置一些環境變量就可以了。
4、JBoss能夠"熱部署",部署BEAN只是簡單拷貝BEAN的JAR文件到部署路徑下就可以了。如果沒有加載就加載它;如果已經加載了就卸載掉,然后LOAD這個新的。
5、JBoss與Web服務器在同一個Java虛擬機中運行,Servlet調用EJB不經過網絡,從而大大提高運行效率,提升安全性能。
6、用戶可以直接實施J2EE-EAR,而不是以前分別實施EJB-JAR和Web-WAR,非常方便。
三、Weblogic
WebLogic是美國bea公司出品的一個application server,確切的說是一個基於j2ee架構的中間件,webserver是用來構建網站的必要軟件用來解析發布網頁等功能,它是用純java開發的。目前weblogic在世界application server市場上占有最大的份額,其他還有象IBM的websphere,免費的tomcat、resin等中間件。
BEA WebLogic是用於開發、集成、部署和管理大型分布式Web應用、網絡應用和數據庫應用的Java應用服務器。將Java的動態功能和Java Enterprise標准的安全性引入大型網絡應用的開發、集成、部署和管理之中。
BEA WebLogic Server擁有處理關鍵Web應用系統問題所需的性能、可擴展性和高可用性。
與BEA WebLogic Commerce ServerTM配合使用, BEA WebLogic Server可為部署適應性個性化電子商務應用系統提供完善的解決方案。
BEA WebLogic Server具有開發和部署關鍵任務電子商務Web應用系統所需的多種特色和優勢,包括:
1)領先的標准
對業內多種標准的全面支持,包括EJB、JSB、JMS、JDBC、XML和WML,使Web應用系統的實施更為簡單,並且保護了投資,同時也使基於標准的解決方案的開發更加簡便。
2)無限的可擴展性
BEA WebLogic Server以其高擴展的架構體系聞名於業內,包括客戶機連接的共享、資源pooling以及動態網頁和EJB組件群集。
3)快速開發
憑借對EJB和JSP的支持,以及BEA WebLogic Server 的Servlet組件架 構體系,可加速投放市場速度。這些開放性標准與WebGain Studio配合時,可簡化開發,並可發揮已有的技能,迅速部署應用系統。
4)部署更趨靈活
BEA WebLogic Server的特點是與領先數據庫、操作系統和Web服務器緊密集成。
5)關鍵任務可靠性
其容錯、系統管理和安全性能已經在全球數以千記的關鍵任務環境中得以驗證。
6)體系結構
BEA WebLogic Server是專門為企業電子商務應用系統開發的。企業電子商務應用系統需要快速開發,並要求服務器端組件具有良好的靈活性和安全性,同時還要支持關鍵任務所必需的擴展、性能、和高可用性。BEA WebLogic Server簡化了可移植及可擴展的應用系統的開發,並為其它應用 系統和系統提供了豐富的互操作性。
憑借其出色的群集技術,BEA WebLogic Server擁有最高水平的可擴展性和可用性。BEA WebLogic Server既實現了網頁群集,也實現了EJB組件群集,而且不需要任何專門的硬件或操作系統支持。網頁群集可以實現透明的復制、負載平衡以及表示內容容錯,如Web購物車;組件群集則處理復雜的復制、負載平衡和EJB組件容錯,以及狀態對象(如EJB實體)的恢復。
無論是網頁群集,還是組件群集,對於電子商務解決方案所要求的可擴展性和可用性都是至關重要的。共享的客戶機/服務器和數據庫連接以及數據緩存和EJB都增強了性能表現。這是其它Web應用系統所不具備的。