用 VB 将 ASP 代码封装成 DLL 一、引言
Server 端的脚本运行环境,它简单易用,不需要编译和连接,脚本可以在 Server 端直 接运行,并且它支持多用户、多线程,在 Web 开发中得到了广泛的应用。服务器端的组件 有别于客户端的组件。客户端的组件是通过
网络传输,依靠 HTML 来起作用,而且只能在 IE 上有用。但是服务器端的组件是运行在服务器端,它在服务器上执行各种操作。因此,所有 的浏览器都能享用,它依靠的是服务器而不是浏览器。但是,因为 ASP 脚本是纯文本格式, 所以恶意者通过源代码可以很容易地看到原本不该看到的页面内容。因此,保护 ASP 源代 码显得非常重要。将 ASP 代码封装成 DLL,不仅加快了 ASP 代码的执行速度,而且也能保护 原代码。 IIS 被请求执行一个 ASP 程序,它首先会在 ASP 文件中找到标签之间的代码,并且 当 执行它(也可以是 之间的代码)。如果这个 ASP 程序在先前被调用过,那么它就会用内存
中的编译过的程序来向用户返回
HTML 代码,如果没有,那么它就重新编译。 这样就大大节省 了服务器的资源。
二、实现方法
启动你的 VB,选择 ActiveX 图标。这个图标可以在新建工程找到!
VB 会提供一个默认的 工程名(project1)和类名(class1)。在动手之前请首先确认我们拥有 Microsoft ActiveX Data Object 2.0 Library,它在我们的
程序非常有用。从菜单中选择"工程",然后在其中选择"引用", 就会出现"引用"窗口,从中选择 Microsoft ActiveX Data Object 2.0 Library。
现在我们有了我们自己的工程(project1)和类名(class1)。以后我们就会在 ASP 代码中使 用它们的名字来引用这个组件。在 ASP 中我们就这样引用,如下:
Set ObjReference = Server.CreateObject("ProjectName.ClassName")
为了在类中使用 ASP 的方法,你必须在此类中写上初始和终止这两个函数。输入如下代 码:程序清单中
Class1.cls 中的 Private Sub Class_Initialize()和 Private Sub Class_Terminate()
将 ASP 代码中的关键功能制作成动态链接库(.dll),部分隐藏 ASP
源代码。 例如:程 序清单中的 Global.bas 和 Class1.cls 中输入的代码(代码的主要功能是检索数据库中的记录 并显示出来)。
在 VB 的下拉菜单中选择文件→生成 article.dll→选择要保存的目录。找到 article.dll 将 其复制到
系统盘 system32 文件夹中,最后一步
注册 DLL 文件。在开始菜单中选择运行输入 regsvr32 c:\winnt\system32\article.dll。
三、程序清单
Global.bas 中的代码:
Public objContext As ObjectContext
Public Application As ASPTypeLibrary.Application
Public Server As ASPTypeLibrary.Server
Public Session As ASPTypeLibrary.Session
Public Response As ASPTypeLibrary.Response
Public Request As ASPTypeLibrary.Request
Class1.cls 中的代码:
Private Sub Class
_Initialize()
On Error Resume Next
Set objContext = GetObjectContext
Set Application = objContext.Item("Application")
Set Server = objContext.Item("Server")
Set Session = objContext.Item("Session")
Set Request = objContext.Item("Request")
Set Response = objContext.Item("Response")
End Sub
Private Sub Class_Terminate()
On Error Resume Next
Set Application = Nothing
Set Server = Nothing
Set Session = Nothing
Set Request = Nothing
Set Response = Nothing
Set objContext = Nothing
End Sub
Public Sub AspClassInit()
On Error GoTo Err
Set conn = Server.CreateObject("ADODB.Connection")
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;" &; _
"Data Source=" &; Server.MapPath("Article.mdb")
conn.Open strcon
Set rs = Server.CreateObject("ADODB.Recordset")
sql = "select * from Article order by ArticleID desc"
rs.Open sql, conn, 1, 1
Response.Write "" &; vbCrLf Respo