1. 程式人生 > >Servlet 與 CGI 的比較

Servlet 與 CGI 的比較

現象 ora style ati 平臺無關 對比 服務器 動態 可擴展性

和CGI程序一樣,Servlet可以響應用戶的指令(提交一個FORM等等),也可以象CGI程序一樣,收集用戶表單的信息並給予動態反饋(簡單的註冊信息錄入和檢查錯誤)。
然而,Servlet的機制並不僅僅是這樣簡單的與用戶表單進行交互。傳統技術中,動態的網頁建立和顯示都是通過CGI來實現的,但是,有了Servlet,您可以大膽的放棄所有CGI(perl?php?甚至asp!),利用Servlet代替CGI,進行程序編寫。
對比一:當用戶瀏覽器發出一個Http/CGI的請求,或者說 調用一個CGI程序的時候,服務器端就要新啟用一個進程 (而且是每次都要調用),調用CGI程序越多(特別是訪問量高的時候),就要消耗系統越多的處理時間,只剩下越來越少的系統資源,對於用戶來說,只能是漫長的等待服務器端的返回頁面了,這對於電子商務激烈發展的今天來說,不能不說是一種技術上的遺憾。
而Servlet充分發揮了服務器端的資源並高效的利用。每次調用Servlet時並不是新啟用一個進程

,而是在一個Web服務器的進程敏感詞享和分離線程,而線程最大的好處在於可以共享一個數據源,使系統資源被有效利用。
對比二:傳統的CGI程序,不具備平臺無關性特征,系統環境發生變化,CGI程序就要癱瘓,而Servlet具備Java的平臺無關性,在系統開發過程中保持了系統的可擴展性、高效性。
對比三:傳統技術中,一般大都為二層的系統架構,即Web服務器+數據庫服務器,導致網站訪問量大的時候,無法克服CGI程序與數據庫建立連接時速度慢的瓶頸,從而死機、數據庫死鎖現象頻繁發生。而我們的Servlet有連接池的概念,它可以利用多線程的優點,在系統緩存中事先建立好若幹與數據庫的連接,到時候若想和數據庫打交道可以隨時跟系統"要"一個連接即可,反應速度可想而知。

Servlet 與 CGI 的比較