|
|
電信博物館 > 計算機網絡 > internet今昔談
> 初探Web技術
認識CGI
CGI是信息服務的標準外部應用接口。一個通過Web訪問的簡單HTML文檔是靜態的,即文件的內容是不變的。而一個CGI程序則不然,它是實時的,所以它輸出的是動態的信息。如果我們想在WWW和數據庫之間建立聯系,使人們可以從全球的任意地點都可以查詢數據庫的信息。我們就可以用CGI來完成這一工作:Web服務器通過CGI程序傳送信息給數據庫,從數據庫得到返回的數據,Web服務器再將數據傳給客戶方的瀏覽器。當然數據庫應用只是CGI應用的一個方面。CGI可以支持多種不同的應用、只要是按CGI規范寫的可執行的程序都可以是CGI應用。所以實際上對CGI程序沒有什么限制。
這是一套程序語言規則,用于描述WWW服務器程序與同一臺機器上的其他軟件的通訊,以及其他軟件(也就是所謂的CGI程序)向WWW服務器發送信息的方法。一個程序,只要嚴格按照CGI標準控制輸入和輸出,就可以成為CGI程序。通常,CGI程序是從WWW服務器上獲取數據并對之進行處理(例如將一個窗體表格的內容填寫到電子郵件信息中,或是將一串信息轉化為數據庫查詢)的小型程序。你經常可以看見CGI程序在包含“cgi-bin”的URL中被使用,不過也不總是這樣。
CGI是Web服務器運行時外部程序的規范,按照CGI編寫的程序可以擴展服務器的功能,完成服務器本身不能完成的工作,外部程序執行時可以生成HTML文檔,并將文檔返回Web服務器。CGI應用程序能夠與瀏覽器進行交互作用,還可以通過數據庫的API與數據庫服務器等外部數據源進行通信,如一個CGI程序可以從數據庫服務器中獲取數據,然后格式化為HTML文檔后發送給瀏覽器,也可以將從瀏覽器獲得的數據放到數據庫中。幾乎所有的服務器軟件都支持CGI,開發者可以使用任何一種Web服務器內置語言編寫CGI,其中包括流行的C、C++、VB和Delphi等。
標準CGI使用命令行參數或環境變量來表示服務器的詳細請求,服務器與瀏覽器間的通信采用標準輸入輸出方式。當服務器接收瀏覽器發來的CGI請求時,服務器對該請求進行分析,設置所需的環境變量或命令參數,然后創建一個子進程啟動CGI程序,CGI執行完畢后,使用標準輸出將執行結果返回給服務器。CGI的輸出可以有許多類型,比如HTML文檔、圖象、純文本或聲音等,它還可以輸出指向其他文檔的連接。
從以上可以看出,CGI程序應用是作為一個獨立的外部應用來運行,與服務器上的其他進程競爭處理器資源,這將導致運行速度減慢。而且,用CGI開發支持WWW的應用也是一個比較困難的過程。開發人員不僅要掌握HTML語言,還要掌握低級編程語言。而在將Web服務器訪問數據庫過程中,連接狀態的管理也是很重要的。如果沒有狀態管理,那么瀏覽器的每一次請求,都需要一個連接的建立與釋放的過程,效率較低。CGI不提供狀態管理功能。另外,必須用某個特定數據庫服務器的專用SQL語言來手工編寫數據庫接口,其移植性也不好。
[上一頁] [下一頁]
|
|
|