容器的概念似乎是從java開始提出的,在其它語言里都沒有類似的描述。從我們開始接觸的tomcat,jetty等等,在我們做腳本語言的看來都是服務器,但是在java中卻被稱為web容器,那么什么是web容器呢?
2 回答

臨摹微笑
TA貢獻1982條經驗 獲得超2個贊
web服務器,嚴格意義上講就是實現http協議的最基本功能,能監聽指定服務器端口,并接受請求發出響應的服務系統。例如apache、nginx等都是此類。不過現實中很多web服務器出于種種考慮回內置針對特定語言或架構的處理體系,例如iis內置了asp.net的處理架構,apache也可以通過擴展提供php、rails等處理架構(這些特別內置的模塊,你也可以簡單理解為web容器了)。如果web服務器自己不處理特別請求,那么可以通過cgi等方式轉發給后端處理,例如apache、nginx都可以通過fastcgi將請求轉發給后端端口,例如php-fpm服務,或python的什么服務等等。
其實在java之前一直不太有web容器這種說法,到目前似乎也只有java是這么提的。這主要是因為整個java的web開發是基于javaEE的servlet技術體系,該體系規范規定了web請求的整個生命周期的方方面面。但是規范只是規定了實現的標準,或者說是接口(interface),具體實現都是各廠商自己搞定,所以這就出現了各種不同的web容器,例如tomcat、jetty、jboss等等。
又說回來,這些容器為了方便開發者,大多都提供了web服務器的功能,不過和專業的web服務器相比總有些缺失不足,所以一般只用來做開發用,生產環境主要還是作為后端服務。
添加回答
舉報
0/150
提交
取消