在ASP中編寫DLL的問題
發(fā)表時間:2024-01-03 來源:明輝站整理相關軟件相關文章人氣:
[摘要]ActiveX DLL 可以用來保護代碼的一些部分,因為作為開發(fā)人員我們知道,用ASP進行工作時,源代碼控制是一個艱難而瑣碎的過程。ActiveX DLL 是經過編譯的代碼,沒有工程文件中的源代碼就不能對其進行修改。這就給開發(fā)人員帶來許多可能:開發(fā)自動操作公共程序的程序并將它們作為共享軟件來分發(fā),...
ActiveX DLL 可以用來保護代碼的一些部分,因為作為開發(fā)人員我們知道,用ASP進行工作時,源代碼控制是一個艱難而瑣碎的過程。ActiveX DLL 是經過編譯的代碼,沒有工程文件中的源代碼就不能對其進行修改。這就給開發(fā)人員帶來許多可能:開發(fā)自動操作公共程序的程序并將它們作為共享軟件來分發(fā),分發(fā)至少有一些源代碼保護的ASP應用程序,不斷開發(fā)自己的ASP程序指令,以在一個全方位多功能的結果中提高ASP的性能。
你所安裝的第一個ActiveX DLL 文件將注冊并安裝Visual Basic 6 的運行時間文件,它允許運行經過編譯的代碼。但是要注意,這還要求重新啟動服務器。當一個現存的DLL被安裝并使用之后,如果想要對其進行升級, 服務器就將給出一個錯誤信息提示,說此文件正被另一個過程所使用。要糾正這一問題,也要重新啟動服務器后才能完成DLL的升級。請記住在開發(fā)中要使用一個測試環(huán)境。
雖然這個例子非常簡單,用一個ASP包含文件就可以輕易地實現,但當開發(fā) ActiveX DLL 時,你可以使用 Visual Basic 的全套基本指令、系統(tǒng)外殼指令以及所有控制臺所能進行的操作,因此也就允許在線網站和內部互聯網的全部自動控制。這樣就把原來用ASP包含文件實現的 ActiveX DLL 的性能進行了拓展。
在用組合框選擇填充的數據庫域中存儲查詢關鍵字的值,提高數據的完整性,輕易地在整個數據庫中進行層疊式更新,這些都是很普通的操作。舉例來說,現在有一個拼寫錯誤的文本描述,可以在查循表中進行修改,所有選擇了這個描述的相關條目都會自動地修改,因為我們已經存儲了與這個描述相關的數字。組合框以查詢表的內容為基礎,這些內容將查詢關鍵字的值與其描述聯系起來,如果系統(tǒng)使用了許多查詢的話,產生這些組合框的代碼會變得非常重復。本文用 ActiveX DLL 來簡化創(chuàng)建HTML組合框的程序,用一個數據庫查詢表中的內容進行填充。例子中的表名為lookup_table,它有以下域:
Lookup_Key: 存儲在數據庫中的值
Lookup_Field: 對查詢元素進行分類
Lookup_Description: 顯示在組合框中的描述
要創(chuàng)建ActiveX DLL,步驟如下:
開始一個新的visual basic 工程文件;
選擇ActiveX DLL 作為工程文件類型;
在Properties 窗口,命名類模塊和工程文件。將工程文件命名為keiths_lookup ,將模塊命名為lookup 。 ASP引用DLL函數時要使用這些名字。以后在ASP碼中,將要引用一個名為keiths_lookup.lookup的服務器對象。
用同樣的名字保存工程文件和模塊,其中工程文件的擴展名為.vbp ,類模塊的擴展名為.cls 。在本例中 工程文件的名字為keiths_lookup,模塊的名字為lookup。
在工程菜單中,選擇References 。這是你可以使用的其它應用程序對象。在本例中,檢查Microsoft ActiveX data objects 2.0 庫和Microsoft ActiveX Data Objects Recordset 2.0 庫。
在包含查詢表的IIS服務器數據庫中創(chuàng)建一個名為Sumnet 的數據集。這個數據庫沒有用戶名和口令。
現在可以鍵入以下代碼:
Public Function html_combo(comboname As String, Lookup_field As String) As String
Dim outstring As String
Dim conn As ADODB.Connection
Dim rst As ADODB.Recordset
Dim sqlstring As String
Set conn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
Sqlstring = "SELECT [Lookup_Description],[Lookup_Key] FROM
[Lookup_Table] WHERE [Lookup_Field] = '" & Lookup_Field & "'"
conn.Open "DSN=Sumnet;UID=;PWD=.;"
rst.Open sqlstring, conn, 3, 3
If Not rst.EOF Then
rst.MoveFirst
outstring = "< Select name='" & comboname & "' >"
Do While Not rst.EOF
outstring = outstring & "< Option Value='" &
rst.Fields("lookup_key") & "' >" & _
rst.Fields("lookup_description") & "< /Option > "
rst.MoveNext
Loop
End If
outstring = outstring & "< /Select >"
html_combo = outstring
rst.Close
conn.Close
End Function
然后,保存工程文件和類模塊。
編譯工程文件的步驟如下:
啟動Visual Studio 6.0 工具中的Package Deployment Wizard ;
選擇剛才創(chuàng)建的ActiveX 工程文件;
點擊Package;
選擇打包腳本名或使用默認值;
選擇Standard Setup ;
選擇一個放置安裝文件的文件夾;
選擇單個cab;
點擊Next使用其它默認選項;
在IIS服務器上運行setup。
現在可以通過ASP代碼使用DLL,因為在系統(tǒng)數據庫中它已經被注冊了。下面的ASP代碼將使用所創(chuàng)建的LL內部的函數。它將產生三個組合框,一個用州來填充,一個用位置填充,另外一個用年齡組。第一個參數將成為網頁上的對象名,第二個參數是用來填充組合框中查詢域的值。
< %@ Language="VBSCRIPT" % >
< %
Set look = Server.CreateObject("keiths_lookup.lookup")
% >
< HTML >< BODY >
< %=look.html_combo("State","States")% >
< %=look.html_combo("Position","Positions")% >
< %=look.html_combo("Age_group","Age_Groups")% >
< /BODY >
< /HTML >
這個例子非常簡單。通過使用更多的參數,如表名、域名等,可以創(chuàng)建許多便攜式的函數,這些函數可以用在你的工作中所遇到的各種各樣的應用程序中。
因為這些代碼是在服務器一端水平上運行的,所以客戶機不需要安裝任何東西。這僅僅是用ActiveX DLL所能實現的功能的小小的例子。只需要一點點努力,就可以得到一個在網絡用戶中不同凡響的多功能應用程序。
(出處:熱點網絡)