|
使用子程序和函數(shù) 作 者 : 青蘋果電腦工作室
一個(gè)快速回答的問題:為什么關(guān)于ASP的書中,討論使用子程序和函數(shù)的代碼的那么少?
雖然一行一行地寫ASP代碼要更加簡單,但是以程序的形式來編碼卻有許多益處。
首先,非程序化的代碼不容易移植到Visual Basic。也許目前你沒有這個(gè)計(jì)劃,但是總有一天你會為了 其性能或可擴(kuò)展性而將一些代碼移植到組件中。
其次是程序是運(yùn)行得更快。對ASP性能的最大消耗是上下文轉(zhuǎn)換,每次從ASP代碼區(qū)< % % > 移到無格式的 HTML時(shí)都會發(fā)生。因?yàn)槟悴粫诔绦騼?nèi)部編碼一個(gè)上下文轉(zhuǎn)換,就不諱感覺到這種消耗。另外,ASP的 緩沖器也顯示當(dāng)子程序用程序化代碼點(diǎn)擊頁面時(shí)會有很大的不同。這里是使用程序化代碼的ASP應(yīng)用程序 "Hello World" 的必須部分:
Private Sub Main() Response.Write "Hello World!" End Sub
Call Main
為了完整起見,我在程序中包含了一個(gè)上下文轉(zhuǎn)換的小例子。如果你試驗(yàn)這個(gè)代碼,它會運(yùn)行,但是請 不要在你自己的應(yīng)用程序內(nèi)部這樣做。
< %@ Language=VBScript % > < % Private Sub DoStuff() % > This is < b > HTML Text! < /b > < % End Sub % > < HTML > < HEAD > < META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0" > < /HEAD > < BODY > < P >< % Call DoStuff % >< /P > < /BODY > < /HTML >
程序化的代碼還有一些其它益處。首先你會發(fā)現(xiàn)再利用包含在程序中的代碼部分更加容易。其次,要 實(shí)現(xiàn)同樣的目的所需要的代碼行更少。第三,你將要開始開發(fā)一個(gè)大的可再利用代碼庫。開始時(shí)它的 形式是.inc 文件,最后你自己的普通COM組件看起來就像Jeff Gordon(著名賽車選手)一樣棒。
移植你的代碼
有幾件事與從VBScript向Visual Basic移植代碼一樣簡單。一般來說,你需要移走代碼并增加數(shù)據(jù)類型。 有時(shí),也可以在Visual Basic中應(yīng)用一些更有效的算法,但是必須先保證代碼可以正常工作。
在我們這個(gè)應(yīng)用程序舉例中,將要移植一些簡單的代碼到兩個(gè)Visual Basic COM 組件中。將一些HTML 表格格式拖到表述類中,將ADO 對象代碼拖到包裹了ADO 的數(shù)據(jù)存取類中。通過將這兩個(gè)類都放入 ActiveX DLL 工程文件中可以使工程文件稍稍簡單化。在實(shí)際工作中,可以為每一層創(chuàng)建單獨(dú)的工程 文件,但是這個(gè)工程文件要在一個(gè)DLL中表明思路。如果你想糾正這種情況,就將數(shù)據(jù)存取類移到另一個(gè) 工程文件中并作為一個(gè)DLL編譯。必須在表述要應(yīng)用它的DLL工程文件中增加對這個(gè)新DLL的引用。
在這個(gè)樣本工程文件中使用的數(shù)據(jù)庫是一個(gè)Northwind 數(shù)據(jù)庫,它與Visual Basic包含在一起。在這個(gè) 樣本工程文件的ZIP 文件中,我為那些沒有安裝Visual Basic的人做了這個(gè)文件的一個(gè)表格的版本。樣本 工程文件中還包含一個(gè)與ASP代碼一起使用的編譯過的DLL。
|