動態|伺服器|設計|伺服器 就伺服器端處理而言,ASP是產生動態Web網頁的一種相對較新的技術。動態網頁意味著什麼呢?先暫時不考慮用戶端相關功能上的進展,也不討論用戶端指令碼、Java Applet、動態HTML或ActiveX控制項等內容。這裡的動態網頁是專指伺服器響應用戶端請求產生的頁面,並且根據情況每次產生的頁面可能是不同的。
舉個簡單的例子,建立一個只包含當前日期和時間的頁面。每次請求該頁面時將顯示一個不同的值,因為日期和時間取決於伺服器的時鐘,或取決於提供日期和時間的一個資源(例如一個獨立的伺服器或來自於互連網上一個標準時鐘)。當然,實際上動態網頁要比這複雜得多,也許顯示資料庫記錄的當前值或者郵件伺服器上等待著的郵件訊息的摘要。重要的是伺服器不僅閱讀一個無格式的HTML頁面、或磁碟上的文字檔以及把它們發送給客戶,而且,必須完成一些工作來建立該頁面。
Internet伺服器應用編程介面
傳統的技術是使用與Web伺服器的一個介面,它被稱為Internet伺服器應用編程介面(Internet Server Application Programming Interface,ISAPI)。
ISAPI可用於執行其他的應用程式,這些應用程式通過C語言風格的stdin和stdout資料流函數來讀取用戶端請求的值並建立Web伺服器的響應。ISAPI應用程式所必須做的全部事情就是編寫相應結果頁面的文本和HTML,並通過stdout函數輸出到Web伺服器。事實上ASP DLL內部真正做的事情是更物件導向的。
IIS自開始就運行ISAPI的應用程式和指令碼解譯器。它提供一個特殊的解譯器動態連結程式庫,給出訪問伺服器的請求和響應的另一種方法,儘管受到一定的限制。它通過伺服器端包含指令實現,之所以這樣說,是因為它們是在伺服器上執行的,並且結果包含在傳送給用戶端的響應中。這個特性在IIS中是通過一個名為ssinc.dll的動態連結程式庫實現的。預設情況下,IIS把副檔名為.shtml、.shtm或.stm的任意頁面都映射到這個動態連結程式庫。開啟預設Web網站的Properties對話方塊,在Application Setting中單擊Configuration按鈕,可以看到這種映射。
這樣,帶有這些被映射的副檔名的頁面將被傳送給ssinc.dll進行處理。因此,執行頁面中所有的伺服器端包含語句,結果(如有的話)插入到伺服器的響應中,即插入到用戶端接收到的頁面中。
因為這些檔案是映射到ssinc.dll檔案而不是映射到ASP動態連結程式庫(asp.dll)的,所以在這些頁面中的所有ASP代碼將被忽略並且按照原有狀態傳送給用戶端,用戶端將能夠看到這些指令碼。然而,在ASP 3.0版本中有一個避免這種情況的方法,稍後在討論Server對象的Execute和Transfer方法時,研究這個方法。