1. 程式人生 > 其它 >servlet與cgi的對比

servlet與cgi的對比



下面有關servlet和cgi的描述,說法錯誤的是?
  • servlet處於伺服器程序中,它通過多執行緒方式執行其service方法
  • CGI對每個請求都產生新的程序,服務完成後就銷燬
  • servlet在易用性上強於cgi,它提供了大量的實用工具例程,例如自動地解析和解碼HTML表單資料、讀取和設定HTTP頭、處理Cookie、跟蹤會話狀態等
  • cgi在移植性上高於servlet,幾乎所有的主流伺服器都直接或通過外掛支援cgi

Servlet 與 CGI 的比較

和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有連線池的概念,它可以利用多執行緒的優點,在系統快取中事先建立好若干與資料庫的連線,到時候若想和資料庫打交道可以隨時跟系統"要"一個連線即可,反應速度可想而知。