應用伺服器是指通過各種協議把商業邏輯曝露給客戶端的程序。它提供了訪問商業邏輯的途徑以供客戶端應用程式使用。應用伺服器使用此商業邏輯就像調用對象的一個方法一樣。
簡單的說,能實現動態網頁技術的伺服器叫做應用伺服器。
Web應用程式駐留在應用伺服器(Application Server)上。應用伺服器為Web應用程式提供一種簡單的和可管理的對系統資源的訪問機制。它也提供低級的服務,如HTTP協議的實現和資料庫連接管理。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、IBM的WebSphere等。其中有些如NEC WebOTX Application Server、WebLogic、WebSphere不僅僅是Servlet容器,它們也提供對EJB(Enterprise JavaBeans)、JMS(Java Message Service)以及其他Java EE技術的支持。每種類型的應用伺服器都有自己的優點、局限性和適用性。
通常,根據確定文檔內容的時間,所有文檔可以劃分為如下三類。
靜態
靜態:靜態We b 文檔是一個存儲於We b伺服器的文件。靜態文檔的作者在寫作的時候確定文檔的內容。由於文檔內容不會變化,所以對靜態文檔的每次訪問都返回相同結果。
動態
動態:動態web文檔不是以一個預先定義的格式存在,而是在瀏覽器訪問web伺服器時創建。當一個請求到達時,web伺服器運行一個應用程式創建動態文檔(dynamic documents),伺服器返回程序的輸出作為應答。由於每次訪問都要創建新的文檔,動態文檔的內容是變化的。
大型WEB伺服器在UNIX和LINUX平臺下使用最廣泛的免費HTTP伺服器是W3C、NCSA和APACHE伺服器,而Windows平臺NT/2000/2003使用IIS的WEB伺服器。在選擇使用WEB伺服器應考慮的本身特性因素有:性能、安全性、日誌和統計、虛擬主機、代理伺服器、緩衝服務和集成應用程式等,下面介紹幾種常用的WEB伺服器。
Microsoft的Web伺服器產品為Internet Information Server (IIS),IIS 是允許在公共Intranet或Internet上發布信息的Web伺服器。IIS是目前最流行的Web伺服器產品之一,很多著名的網站都是建立在IIS的平臺上。IIS提供了一個圖形界面的管理工具,稱為Internet服務管理器,可用於監視配置和控制Internet服務。
IIS是一種Web服務組件,其中包括Web伺服器、FTP伺服器、NNTP伺服器和SMTP伺服器,分別用於網頁瀏覽、文件傳輸、新聞服務和郵件發送等方面,它使得在網絡(包括網際網路和區域網)上發布信息成了一件很容易的事。它提供ISAPI(Intranet Server API)作為擴展Web伺服器功能的編程接口;同時,它還提供一個Internet資料庫連接器,可以實現對資料庫的查詢和更新。
WebSphere Application Server 是 一 種功能完善、開放的Web應用程式伺服器,是IBM電子商務計劃的核心部分,它是基於Java 的應用環境,用於建立、部署和管理Internet 和Intranet Web 應用程式。 這一整套產品進行了擴展,以適應Web 應用程式伺服器的需要,範圍從簡單到高級直到企業級。
WebSphere 針對以Web 為中心的開發人員,他們都是在基本HTTP伺服器和CGI 編程技術上成長起來的。IBM 將提供WebSphere 產品系列,通過提供綜合資源、可重複使用的組件、功能強大並易於使用的工具、以及支持HTTP 和IIOP 通信的可伸縮運行時環境,來幫助這些用戶從簡單的Web 應用程式轉移到電子商務世界。
BEA WebLogic Server 是一種多功能、基於標準的web應用伺服器,為企業構建自己的應用提供了堅實的基礎。各種應用開發、部署所有關鍵性的任務,無論是集成各種系統和資料庫,還是提交服務、跨Internet 協作,起始點都是BEA WebLogic Server。由於它具有全面的功能、對開放標準的遵從性、多層架構、支持基於組件的開發,基於Internet 的企業都選擇它來開發、部署最佳的應用。
BEA WebLogic Server 在使應用伺服器成為企業應用架構的基礎方面繼續處於領先地位。BEA WebLogic Server 為構建集成化的企業級應用提供了穩固的基礎,它們以Internet 的容量和速度,在連網的企業之間共享信息、提交服務,實現協作自動化。
Apache仍然是世界上用的最多的Web伺服器,市場佔有率達60%左右。它源於NCSAhttpd伺服器,當NCSA WWW伺服器項目停止後,那些使用NCSA WWW伺服器的人們開始交換用於此伺服器的補丁,這也是apache名稱的由來(pache 補丁)。世界上很多著名的網站都是Apache的產物,它的成功之處主要在於它的原始碼開放、有一支開放的開發隊伍、支持跨平臺的應用(可以運行在幾乎所有的Unix、Windows、Linux系統平臺上)以及它的可移植性等方面。
Tomcat是一個開放原始碼、運行servlet和JSP Web應用軟體的基於Java的Web應用軟體容器。Tomcat Server是根據servlet和JSP規範進行執行的,因此我們就可以說Tomcat Server也實行了Apache-Jakarta規範且比絕大多數商業應用軟體伺服器要好。
Tomcat是Java Servlet 2.2和JavaServer Pages 1.1技術的標準實現,是基於Apache許可證下開發的自由軟體。Tomcat是完全重寫的Servlet API 2.2和JSP 1.1兼容的Servlet/JSP容器。Tomcat使用了JServ的一些代碼,特別是Apache服務適配器。隨著Catalina Servlet引擎的出現,Tomcat第四版號的性能得到提升,使得它成為一個值得考慮的Servlet/JSP容器,因此目前許多WEB伺服器都是採用Tomcat。
特點:
* 支持安全的。。 上級目錄過濾
* 支持通用的MIME類型
* 支持簡單的目錄
* 支持目錄列表
* 支持使用index.html 作為首頁
* Trailing-slash redirection
* 程序總共代碼才200多行
這個httpd適合學習簡單的Web Server編寫學習,因為它只有一個簡單的框架,只能夠處理簡單的靜態頁,可以考慮用來放靜態頁。
特點:
* 支持GET、HEAD、POST方法
* 支持CGI功能
* 支持基本的驗證功能
* 支持安全。。 上級目錄功能
* 支持通用的MIME類型
* 支持目錄列表功能
* 支持使用index.html, index.htm, index.cgi 作為首頁
thttpd中是一個簡單,小型,輕便,快速和安全的http伺服器。
簡單:它能夠支持HTTP/1.1協議標準,或者超過了最低水平
小巧:它具有非常少的運行時間,因為它不fork子進程來接受新請求,並且非常謹慎的分配內存(性能對比表:http://www.acme.com/software/thttpd/benchmarks.html)
便攜:它能夠在大部分的類Unix系統上運行,包括FreeBSD, SunOS 4, Solaris 2, BSD/OS, Linux, OSF等等
快速:它的速度要超過主流的Web伺服器(Apache, NCSA, Netscape),在高負載情況下,它要快的多
安全:它努力的保護主機不受到攻擊,不中斷伺服器
thttpd 類似於lighttpd,對於並發請求不使用fork()來派生子進程處理,而是採用多路復用(Multiplex)技術來實現。因此效能很好。同時它還有一個特點就是基於URL的文件流量限制,這對於下載的流量控制而言是非常方便的。象Apache就必須使用插件實現,效率較thttpd低。
thttpd跟lighttpd類似,適合靜態資源類的服務,比如圖片、資源文件、靜態HTML等等的應用,性能應該比較好,同時也適合簡單的CGI應用的場合。
* 支持多個根目錄的虛擬主機
* 支持標準日誌記錄
* 支持自定義錯誤頁
* Trailing-slash redirection
mini_httpd 也是相對比較適合學習使用,大體實現了一個Web Server的功能,支持靜態頁和CGI,能夠用來放置一些個人簡單的東西,不適宜投入生產使用。
Lighttpd是一個德國人領導的開源軟體,其根本的目的是提供一個專門針對高性能網站,安全、快速、兼容性好並且靈活的web server環境。具有非常低的內存開銷,cpu佔用率低,效能好,以及豐富的模塊等特點。
lighttpd 是眾多OpenSource輕量級的web server中較為優秀的一個。支持FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫, Alias等重要功能,而Apache之所以流行,很大程度也是因為功能豐富,在lighttpd上很多功能都有相應的實現了,這點對於apache的用戶是非常重要的,因為遷移到lighttpd就必須面對這些問題。
實用起來lighttpd確實非常不錯,apache主要的問題是密集並發下,不斷的fork()和切換,以及較高(相對於lighttpd而言)的內存佔用,使系統的資源幾盡枯竭。而lighttpd採用了Multiplex技術,代碼經過優化,體積非常小,資源佔用很低,而且反應速度相當快。
利用apache的rewrite技術,將繁重的cgi/fastcgi任務交給lighttpd來完成,充分利用兩者的優點,現在那臺伺服器的負載下降了一個數量級,而且反應速度也提高了一個甚至是2個數量級!
lighttpd 適合靜態資源類的服務,比如圖片、資源文件、靜態HTML等等的應用,性能應該比較好,同時也適合簡單的CGI應用的場合。
Shttpd是另一個輕量級的web server,具有比thttpd更豐富的功能特性,支持CGI, SSL, cookie, MD5認證, 還能嵌入(embedded)到現有的軟體裡。最有意思的是不需要配置文件!由於shttpd可以嵌入其他軟體,因此可以非常容易的開發嵌入式系統的web server,官方網站上稱shttpd如果使用uclibc/dielibc(libc的簡化子集)則開銷將非常非常低。
特點:
* 小巧、快速、不膨脹、無需安裝、簡單的40KB的exe文件,隨意運行
* 支持GET, POST, HEAD, PUT, DELETE 等方法
* 支持CGI, SSL, SSI, MD5驗證, resumed download, aliases, inetd模式運行
* 標準日誌格式
* 非常簡單整潔的嵌入式API
* dietlibc friendly. NOT that friendly to the uClibc (*)
* 容易定製運行在任意平臺:Windows, QNX, RTEMS, UNIX (*BSD, Solaris, Linux)
由於shttpd可以輕鬆嵌入其他程序裡,因此shttpd是較為理想的web server開發原形,開發人員可以基於shttpd開發出自己的webserver!
打開APP閱讀更多精彩內容聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴