web服務器的概念與基本原理 web服務器是什么( 二 )

主流Web服務器
還有比較多使用Tomcat,Jetty,WebSphere,WebLogic,Kerstrel等等 。
1.2. Web應用程序容器概念與基本原理1.2.1. Web應用程序容器的由來Web服務器的出現的標志著WWW時代的帶來,世界變得更加平面化 。當初嘗到甜頭的開創者們開始不滿足與在互聯網上獲取靜態資源,于是出現了CGI腳本來動態獲取資源 。再后來網絡發展方向也是朝著增強Web服務器動態獲取資源的能力前進 。以下是代表性的動態技術:
| 技術名詞 | 特點 |
| :————- |:————- | :————- |
| CGI(Common Gateway Interface,公用網關接口) | 以獨立進程運行,可以用多種語言開發,比如C,C++,VB,Perl,靈活但效率低,維護復雜 |
| PHP | 服務器端嵌入HTML腳本,開源,功能強大,擴展性較差 |
| JSP| 服務器端嵌入HTML腳本,跨平臺,部署前需編譯,主要缺點是編寫JSP比較復雜,需熟悉JAVA及相關技術 |
| ASP | 服務器端嵌入HTML腳本,開發簡單,功能強大,只能在windows下運行|
隨后Web服務器朝著企業級應用方向發展,快速的業務變化,迫使Web開發人員面對新的挑戰:如何快速寫出魯棒,可靠,符合業務需求的程序并順利部署?解決這個挑戰的一個有效的辦法是,創造一個Web程序開發框架(含運行環境,比如解釋執行JSP,Web API),這個框架解決魯棒性,可靠性問題,提供快速開發接口 。換言之,開發人員只需要專注于實現業務本身,如有更高的需求還可以對框架進行定制和擴展 。這個框架的另外一個名字是Web應用程序容器 。
1.2.2. Web應用程序容器的基本工作原理相對于Web服務器,該容器新增或強化了以下模塊:

  • 分配線程池資源 容器為每個請求分配一個線程進行處理,通常采取線程池的方式高效理由CPU算資源 。
  • 封裝Request上下文 一個請求對應一個Request上下文,它主要封裝了用戶請求的主要構成:URL,HTTP請求頭,以及基于請求頭構建的Session,Cookie等對象,方便編程使用 。
  • 封裝Response上下文 一個請求對應一個Response上下文,主要用于向用戶代理返回資源 ??梢栽谄渲袑懭胼敵隽?,或者重定向,或者返回錯誤碼等等 。
  • URL路由 在容器里,運行開發人員設置不同的路由匹配規則,比如讓.HTM返回.HTML,也可以自定義.xyz返回.HTML資源 。更加靈活的配置可以參考JAVA MVC或者ASP.NET MVC的配置方案 。
  • 動態資源處理模塊 通常在這里具體的容器和開發語言都有自己的高效開發模型,比如JAVA的Servlet,ASP.NET的Web Form,MVC 。
  • 回收資源 這里會回收剛才的線程資源,為了線程復用,除非服務器空閑一般會將線程返回線程池 ??梢钥闯?Web容器本身具備了做為一個Web服務器的功能,事實上通常實現Web容器功能的服務器就是一個Web服務器.比如Tomcat , IIS ,Jetty 。
主流Web容器
包括Tomcat , IIS ,Jetty。
還有比較多使用WebSphere,WebLogic等等 。
1.3. Web應用程序服務器概念及基本原理在Web服務器發展的同一個時期,應用服務器已經存在并發展很長一段時間了 。一些公司為Unix開發了Tuxedo(面向事務的中間件)、TopEnd、Encina等產品,這些產品都是從類似IMS和CICS的主機應用管理和監控環境衍生而來的 。大部分的這些產品都指定了“封閉的”產品專用通信協議來互連胖客戶機(“fat” client)和服務器 。在90年代,這些傳統的應用服務器產品開始嵌入HTTP通信功能,剛開始要利用網關來實現 。不久后它們之間的界線開始變得模糊了 。
同時,web服務器越來越成熟,可以處理更高的負載、更多的并發和擁有更好的特性;應用服務器開始添加越來越多的基于HTTP的通信功能 。所有的這些導致了web服務器與應用服務器的界線變得更窄了 。
目前,“應用服務器”和“web服務器”之間的界線已經變得模糊不清了 。但是人們還把這兩個術語區分開來,作為強調使用 。
當有人說到“web服務器”時,你通常要把它認為是以HTTP為核心、web UI為向導的應用 。當有人說到“應用服務器”時,你可能想到“高負載、企業級特性、事務和隊列、多通道通信(HTTP和更多的協議)” 。但現在提供這些需求的基本上都是同一個產品 。
Web應用服務器包括了Web容器,同時內置了支撐企業應用的事務,安全,集成,通信,高可用等等功能,極大了減少了重復開發量,保障了業務系統快速開發和部署,而它本身也是一個Web服務器 。Web應用服務器可以選擇使用大廠的WebLogic和WebSphere這種重量級產品外,也可以使用類似與Tomcat、jetty這樣的web containner 再加上第三方的框架(spring,hibernate等)來構建自己的Application Server;.NET Core平臺下可以選擇IIS, Apache,Nginx 與ASP.NET Core構建 。

推薦閱讀