多媒體

移動通信

計算機網絡

  無限網絡今日始
  羽檄交馳話通信
  計算機網絡的五臟六腑
  嫦娥孤凄與誰鄰
  因特網的游戲規(guī)則
  團結的力量――網絡互連
  Internet今昔談
  網絡應用萬花筒
  小心駛得萬年船

智能網

光通信

微波通信

衛(wèi)星通信

交換網

接入網

電信管理網

 

 

  
  電信博物館 > 計算機網絡 > internet今昔談 > 初探Web技術


 


認識CGI

  CGI是信息服務的標準外部應用接口。一個通過Web訪問的簡單HTML文檔是靜態(tài)的,即文件的內容是不變的。而一個CGI程序則不然,它是實時的,所以它輸出的是動態(tài)的信息。如果我們想在WWW和數(shù)據庫之間建立聯(lián)系,使人們可以從全球的任意地點都可以查詢數(shù)據庫的信息。我們就可以用CGI來完成這一工作:Web服務器通過CGI程序傳送信息給數(shù)據庫,從數(shù)據庫得到返回的數(shù)據,Web服務器再將數(shù)據傳給客戶方的瀏覽器。當然數(shù)據庫應用只是CGI應用的一個方面。CGI可以支持多種不同的應用、只要是按CGI規(guī)范寫的可執(zhí)行的程序都可以是CGI應用。所以實際上對CGI程序沒有什么限制。

  這是一套程序語言規(guī)則,用于描述WWW服務器程序與同一臺機器上的其他軟件的通訊,以及其他軟件(也就是所謂的CGI程序)向WWW服務器發(fā)送信息的方法。一個程序,只要嚴格按照CGI標準控制輸入和輸出,就可以成為CGI程序。通常,CGI程序是從WWW服務器上獲取數(shù)據并對之進行處理(例如將一個窗體表格的內容填寫到電子郵件信息中,或是將一串信息轉化為數(shù)據庫查詢)的小型程序。你經?梢钥匆奀GI程序在包含“cgi-bin”的URL中被使用,不過也不總是這樣。

  CGI是Web服務器運行時外部程序的規(guī)范,按照CGI編寫的程序可以擴展服務器的功能,完成服務器本身不能完成的工作,外部程序執(zhí)行時可以生成HTML文檔,并將文檔返回Web服務器。CGI應用程序能夠與瀏覽器進行交互作用,還可以通過數(shù)據庫的API與數(shù)據庫服務器等外部數(shù)據源進行通信,如一個CGI程序可以從數(shù)據庫服務器中獲取數(shù)據,然后格式化為HTML文檔后發(fā)送給瀏覽器,也可以將從瀏覽器獲得的數(shù)據放到數(shù)據庫中。幾乎所有的服務器軟件都支持CGI,開發(fā)者可以使用任何一種Web服務器內置語言編寫CGI,其中包括流行的C、C++、VB和Delphi等。

  標準CGI使用命令行參數(shù)或環(huán)境變量來表示服務器的詳細請求,服務器與瀏覽器間的通信采用標準輸入輸出方式。當服務器接收瀏覽器發(fā)來的CGI請求時,服務器對該請求進行分析,設置所需的環(huán)境變量或命令參數(shù),然后創(chuàng)建一個子進程啟動CGI程序,CGI執(zhí)行完畢后,使用標準輸出將執(zhí)行結果返回給服務器。CGI的輸出可以有許多類型,比如HTML文檔、圖象、純文本或聲音等,它還可以輸出指向其他文檔的連接。

  從以上可以看出,CGI程序應用是作為一個獨立的外部應用來運行,與服務器上的其他進程競爭處理器資源,這將導致運行速度減慢。而且,用CGI開發(fā)支持WWW的應用也是一個比較困難的過程。開發(fā)人員不僅要掌握HTML語言,還要掌握低級編程語言。而在將Web服務器訪問數(shù)據庫過程中,連接狀態(tài)的管理也是很重要的。如果沒有狀態(tài)管理,那么瀏覽器的每一次請求,都需要一個連接的建立與釋放的過程,效率較低。CGI不提供狀態(tài)管理功能。另外,必須用某個特定數(shù)據庫服務器的專用SQL語言來手工編寫數(shù)據庫接口,其移植性也不好。


[上一頁] [下一頁]