12. CGI 程式設計

什麼是 CGI ? 什麼是 CGI 程式?

CGI 是 Common Gateway Interface 的簡稱,一般中譯為:共通閘道介面。

Common 是指共通的、不限於一種作法的意思,在這裡指的是語言的獨立性,換言之,可以用任何一種程式語言來實作。

Gateway 是說伺服器的應用能力是經由擴充得到的,它將查詢等要求交由外部程式處理,處理完了之後,再將結果傳回。

Interface 是指一種介面的意思,符合此一介面標準,便可以輕鬆地製作外部程式,而無需去擔心或處理低階的問題。

由於網際網路上的 WEB 伺服器 (我們稱為 Server 端) 採用 HTTP 協定,該協定只是單純的回應客戶端 (我們稱為 Client 端,通常是使用者的瀏覽器) 的文件要求,即 Client 端要求什麼,Server 就傳回什麼,因此在 HTTP 協定下,Server 只有傳回靜態文件的能力而已,無法像各種平台上的伺服器一樣,藉由執行各類應用程式,來達成客戶端的各種查詢或交易等要求。

為了彌補此一缺點,WEB 伺服器勢必要藉助外部程式來執行 Client 端的要求,再將處理結果傳回給 Client 端。例如:使用者輸入一個關鍵字,要求列出某些書籍的作者或書名,Server 接收到這個關鍵字之後,交由外部程式去處理,通常是由資料庫中去尋找,最後將尋著的結果回應給 Server,Server 再將它傳回給瀏覽器端的使用者。

CGI 就是提供給外部程式的一種介面,只要符合此一介面標準,程式設計師便可以輕鬆地使用該平台上支援的任何一種程式語言來撰寫外部程式,於是我們說:凡是符合 CGI 介面標準的外部程式,就稱之為 CGI 程式。

撰寫 CGI 程式,常見的語言有 Perl、Python、C、C++、VB,甚至某些 UNIX 中的 shell script 都有人使用。

我們可以這樣來看待 CGI 以及 CGI 程式:

CGI 程式是 WEB 伺服器應用能力的擴充(Extension),而 CGI 則是此一擴充能力的介面,熟悉瞭解此一介面的原理及運作方式,我們便可以為 WEB 伺服器建立即時互動的能力,以滿足客戶端的要求。

12.1 撰寫 CGI 程式需要那些工具?

一般而言,撰寫 CGI 程式,所需要的工具並不多,也不需要花大錢,各項工具都可以輕鬆找到。

    * 純文字的編輯器,例如:
       
          o Win95/98 中的記事本
          o PE II
          o 漢書
          o UltraEditor(推薦)
          o vi (Unix 系統中的編輯器,推薦)
          o Emacs (Unix 系統中的編輯器,推薦)
          o 其它
             
    * 選用一套語言編譯器,例如:
       
          o 若打算用 Perl 來撰寫 CGI 程式,則需 Perl 編譯器
            通常,若想在自己的機器上測試 CGI 程式,才需要
            自行安裝一套。
          o C/C++ 編譯器
          o 其它語言編譯器,視你所選用的語言而定