雖然ASP.NET代碼封裝方案很好,完全可以取代ASP,但是用慣了ASP,而且對一些小項目也不想動用到.NET這個傍然大物,因為電腦效能跟不上,所以還是存在ASP封裝的種種問題,經過多次實驗,對轉換成DLL的過程寫下一些心得:
1、代碼和DLL的區別
DLL代碼前要加上以下一段,目的是引用ASP五大對象:
Private Context As ScriptingContext<br />Private Application As Application<br />Private Response As Response<br />Private Request As Request<br />Private Session As Session<br />Private Server As Server</p><p>Public Sub OnStartPage(PassedScriptContext As ScriptingContext)<br /> Set Context = PassedScriptContext 'Asp運行環境對象<br /> Set Application = Context.Application 'Asp 五大對象<br /> Set Request = Context.Request<br /> Set Response = Context.Response<br /> Set Server = Context.Server<br /> Set Session = Context.Session<br />End Sub要引用MicroSoft Active Server Pages Objects Library
如果DLL裡也封裝了資料庫連接(Connections)和資料集(RecordSet),DLL工程可以使用原來ASP裡的資料庫寫法,也可以通過以下引用組件的方法實現:MicroSoft ActiveX Data Objects 2.7 Library
同時把原ASP程式裡的Server.CreateObject("ADODB.CONNECTION")改成下面樣子,加在代碼頭部
Public conn As New ADODB.connection<br /> Public rs As New ADODB.Recordset
另外:程式結束時要記得關閉串連,免得佔用系統資源,影響伺服器運行.
Set rs = Nothing<br /> rs.Close<br /> Set conn = Nothing '將串連設為空白,釋放它所佔用的資源。<br /> conn Close '將串連關閉(無釋放串連所佔用的資源)
3、DLL調試
按常規辦法,經常要操作重啟IIS,很煩,最簡單的辦法,寫一個BAT命令儲存成sss.bat,放在案頭上,每次修改完DLL之前運行一次,然後在VB6裡產生DLL,就可以運行程式了,不需要再註冊一次DLL,為什嗎?我也不清楚:
regsvr32 E:\VB\vbdll\my.dll -u<br /> net stop "world wide web publishing service"<br /> net Start "world wide web publishing service"4、改變ASP指令碼編寫習慣
一般我會先寫一個普通的ASP程式,運行成功需交付客戶時才轉換成DLL,這時,要注意ASP代碼編寫時把程式碼和HTML分成明顯的兩部分,不要混在一起亂糟糟的轉換時要花很多精力去修改和整理。
5、其它。。。(想到再寫)