ASP 指南
簡介
“Active Server Page (ASP)”應用程式的成功常常取決於對體繫結構和設計這兩方面的取捨。考慮到 ASP 技術的範圍之廣和當前應用程式固有的複雜性,這種取捨是非常困難的。本文中,我將為您提供一些特定的指導方針,以助您成功開發基於 ASP 的應用程式。
--------------------------------------------------------------------------------
從過去成功的開發模式經驗中,我們總結出以下原則。
--------------------------------------------------------------------------------
我已將指導方針整理成一組開發原則。在評估解決方案和技術時,可以應用以下原則協助您做出決策。以下原則是我長期以來從成功的開發模式所得的經驗積累。
原則 1:採用標準方法
建立命名規範並使目錄結構標準化,可以協助您大大提高 ASP 應用程式的可讀性和可維護性。雖然目前尚無 ASP 應用程式的正式標準,許多開發人員還是建立了一些通用方式。在此,我將與您共用一些更為通用的方式。
因為 ASP 技術依靠指令碼引擎進行工作,而且指令碼具有類型不嚴密的天性,命名規範也很模糊。在類型非常嚴密的語言中,變數將按照它的實際類型進行聲明。在使用 ASP 技術時,通常按照處理變數的方式(而不是其實際資料類型)在 ASP 代碼中聲明變數。例如,在使用“Visual Basic(R) Scripting Edition (VBScript)”時,儘管所有的 VBScript 變數都是 Variant,你還是會將成功標誌聲明為 bSuccess(b 代表布爾型),而不是 vSuccess(v 代表 Variant)。
下表是一些通行的命名規範。
變數首碼:
首碼 使用的變數 變數樣本
b or bln Boolean bSuccess
c or cur Currency cAmount
d or dbl Double dblQuantity
dt or dat Date and Time dtDate
f or flt Float fRatio
l or lng Long lMilliseconds
i or int Integer iCounter
s or str String sName
a or arr Array aUsers()
o or obj COM Object oPipeline
資料庫物件的變數首碼:
首碼 使用的變數 變數樣本
cnn Connection cnnPubs
rst Recordset rstAuthors
cmd Command cmdEmployee
fld Field fldLastName
範圍及首碼的用法:
首碼 說明
g_ 建立於 Global.asa。
m_ 對於 ASP 頁或在 Include 檔案中是局部的。
(沒有首碼) 非靜態變數,對於過程來說首碼是局部的
Knowledge Base (KB) 中的一篇文章“Q110264 INFO: Microsoft Consulting Services Naming Conventions for Visual Basic”(英文)對命名規範提供了真知灼見。
儘可能採用目錄結構為您的各個應用程式組件提供始終如一的位置。您應用程式的實際目錄結構當然由您自己決定,但通常是將映像、文檔、include 檔案和組件分別放置在單獨的目錄中。以下是簡單 ASP 應用程式目錄結構樣本。
目錄結構樣本:
\SimpleAspApp
\Docs
\Images
\Includes
一個好的目錄結構允許您有選擇地應用 NTFS 許可權。您還可以從 ASP 應用程式內部使用相對路徑。例如,可以使用以下代碼,從位於 SimpleAspApp 目錄的 default.asp 頁,引用 Includes 目錄中的 include 檔案 top.asp:
./includes/top.asp
注意我的 include 檔案的副檔名是 .asp,而不是 .inc。這樣做是出於安全方面的考慮,而且使用 .asp 副檔名(而不是 .inc),還能夠在 Visual InterDev(R) 中使用彩色編碼。
有關結構化 ASP 應用程式的其他一些提示和技巧,請參閱文章“ASP Conventions”(英文)。
原則 2:設計為在服務下運行
ASP 將在服務下運行。設計 ASP 應用程式時,您馬上會面臨在傳統型應用程式中不會遇到的安全環境和線程問題。在案頭環境中,通常只處理作為互動式使用者啟動並執行單線程執行,而且有權訪問當前的案頭系統。在“Internet 資訊服務 (IIS)”中,類比不同使用者環境的多個客戶機線程調用您的應用程式,而且您的應用程式被限於“系統”案頭。
這對您來說意味著什嗎?請學習 IIS 的安全模式。還要提醒您:僅因為某些東西能在 Visual Basic IDE 下能夠正常運行,並不意味著它就能在 ASP 技術中安全運行。Visual Basic IDE 並沒有準確地類比運行時環境。常見的設計錯誤包括:在 ASP 技術中使用需要使用者介面的 .OCX 控制項,使用對線程來說不安全的組件,和使用要求特殊的使用者內容相關的組件。要避免的一個最簡單的問題,就是從應用程式中試圖訪問 HKEY_CURRENT_USER (HKCU) 登錄機碼(例如,不要調用 Visual Basic 的 GetSetting 和 SaveSetting 函數,它們都依賴於 HKCU)。同樣,不要出現需要使用者進行人機互動的訊息框或其他對話方塊。
以下文章是有關 ASP 技術中的安全和驗證問題的相當不錯的入門讀物:
“Authentication and Security for Internet Developers”(英文)
“Q172925 INFO: Security Issues with Objects in ASP and ISAPI Extensions”(英文)
原則 3:封裝商務邏輯
ASP 技術通過產生 HTML 輸出提供了表示服務。簡而言之,它會產生使用者介面。您需要將商務邏輯從 ASP 表示指令碼中分隔開來。即使您不使用 COM 組件將商務邏輯從 ASP 代碼中分隔開來,至少也要將商務邏輯分隔到函數和 include 檔案中,以提高可維護性、可讀性和可重用性。在需要排除故障和隔離問題時,您還能體會模組化設計方法的好處。
呼叫指令碼內部調用函數和方法,可避免代碼亂作一團,並能在 ASP 應用程式中添加結構。下面舉例說明從 ASP 代碼中,將邏輯分離到方法調用中:
lt;% Main()
MyBizMethod()
...
Sub Main()
GetData()
DisplayData()
End Sub
%>
在使用包含 ASP 功能的技術時,可以應用這一原則。下面舉一個使用 Visual Basic WebClass 時的例子,說明如何使用這一原則:
因為 Web