2009-01-08 88 views
5

我很幸運,沒有任何基於cgi-bin .cgi的web開發。但通常那些誰似乎沒有'錯過'那些日子。基於CGI-BIN的Web開發的主要缺點是什麼?

我最近加入的一個項目在處理需要與具有基於CGI-BIN的API的遺留系統通信的頁面時存在性能問題。該系統是COGNOS 7.

我收到的反饋意見是'COGNOS很慢',但其他人報告COGNOS取得了巨大成功,我認爲它更多地與通過CGI-BIN訪問有關,而不是COGNOS本身的表現。

所有這一切說什麼是由CGI-BIN基於網絡發展非高性能,困難等方面的主要問題...

回答

4

基於CGI-BIN的系統的基本架構問題是每個HTTP請求都需要服務器啓動一個新進程。這會影響在許多方面的表現:

  • 它是昂貴的啓動過程,在程序中OS頁面,設置等過程
  • 資源不能跨請求共享,使任何DB連接等必須建立在每個請求
  • 用戶會話狀態不能在內存中保存,所以它必須與每個請求
0

主要缺點,恕我直言,是一樣的缺點,即所有低級別編碼有 - 而不是在問題領域編程,你必須編程在實施領域。最終結果的核心是相同的 - 基於HTTP請求將HTTP響應發送給客戶端。然而,從編程的角度來看,這一點非常複雜,從

+0

沒有關於Web服務器如何與應用程序進行通信的任何連接與「到達點」的難度有何聯繫 – Quentin 2009-09-23 09:18:19

+0

@David Dorward:你是對的。但是,在開發到CGI界面時,您正在處理每個應用程序中的所有較低級別的細節。無論是ASP.NET,Rails,Django還是其他任何框架,框架都允許程序員專注於問題領域,而不用擔心通信協議的細節,從而允許程序員「達到他或她的要求」應用程序,而不是CGI規範。 – 2009-09-23 15:09:55

1

對我來說,與CGI最大的痛苦是被持久化我的CGI程序每次啓動時都必須「學習」所有內容。如果他們一直在運行,那當然不會是這種情況,當然......

0

對於各種語言(例如mod_perl),Apache有幾種解決方案,以便只調用一次腳本,然後保存在內存中以便快速恢復。仍然有很多GCI協議驅動的網站,如果編碼和設置良好,其中許多網站的延遲時間相當低。

相關問題