使用VB将ASP代码封装生成DLL文件
发布时间:2008-09-05 00:40:25 作者:佚名 我要评论
一、引言 Server端的脚本运行环境,它简单易用,不需要编译和连接,脚本可以在 Server端直接运行,并且它支持多用户、多线程,在 Web开发中得到了广泛的应用。服务器端的组件有别于客户端的组件。客户端的组件是通过网络传输,依靠HTML来起作用,而且只能在IE上有用。
一、引言
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中的代码:
使用article.dll前的index.asp中的代码:
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 "<html>" & vbCrLf Response.Write "<head>" & vbCrLf Response.Write "<meta http-equiv=""Content-Type"" content=""text/html; charset=gb2312"">" & vbCrLf Response.Write "<title>文章管理系统-CSSTUDIO</title>" & vbCrLf Response.Write "</head>" & vbCrLf Response.Write "<body bgcolor=""#FFFFFF"" topmargin=""0"">" & vbCrLf Response.Write "<table width=""100%"" border=""0"" cellpadding=""2"" cellspacing=""0"">" & vbCrLf Response.Write " <tr>" & vbCrLf Response.Write " <td width=""742"" height=""20"">文章标题</td>" & vbCrLf Response.Write " <td width=""90"">点击</td>" & vbCrLf Response.Write " <td width=""145"">添加日期</td>" & vbCrLf Response.Write " </tr>" & vbCrLf Response.Write "</table>" & vbCrLf While Not rs.EOF And Rows < rs.PageSize Response.Write "<table width=""100%"" border=""0"" cellspacing=""0"" cellpadding=""0"">" & vbCrLf Response.Write " <tr>" & vbCrLf Response.Write " <td width=""747"" height=""20"">☆<a href=""view.asp?id=" Response.Write rs("ArticleID") Response.Write """>" & vbCrLf Response.Write " " Response.Write rs("标题") Response.Write "</a></td>" & vbCrLf Response.Write " <td width=""94"">" Response.Write rs("点击") Response.Write "</td>" & vbCrLf Response.Write " <td width=""148"">" Response.Write rs("添加日期") Response.Write "</td>" & vbCrLf Response.Write " </tr>" & vbCrLf Response.Write "</table>" & vbCrLf rs.MoveNext Wend Response.Write "</body>" & vbCrLf Response.Write "</html>" & vbCrLf rs.Close Set rs = Nothing conn.Close Set conn = Nothing Exit Sub Err: If Err.Number = -13572468 Then Exit Sub Resume Next End Sub |
使用article.dll后的index.asp中的代码:
以下是引用片段: <%Dim AspTransBuilderObject Set AspTransBuilderObject = Server.CreateObject("article.Class1") AspTransBuilderObject.AspClassInit Set AspTransBuilderObject = Nothing%> |
使用article.dll前的index.asp中的代码:
以下是引用片段: <% 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 %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>文章管理系统-CSSTUDIO</title> </head> <body bgcolor="#FFFFFF" topmargin="0"> <table width="100%" border="0" cellpadding="2" cellspacing="0"> <tr> <td width="742" height="20">文章标题</td> <td width="90">点击</td> <td width="145">添加日期</td> </tr> </table> <% While Not Rs.Eof And Rows<Rs.PageSize %> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="747" height="20">☆<a href="view.asp?id=<% = rs("ArticleID") %>"> <% =rs("标题") %></a></td> <td width="94"><% = rs("点击") %></td> <td width="148"><% = rs("添加日期") %></td> </tr> </table> <% Rs.MoveNext Wend %> </body> </html> <% rs.close set rs=nothing conn.close set conn=nothing %> |
四、结论
因为这些代码是在服务器端运行的,所以客户端不需要安装任何东西。这仅仅是用ActiveX DLL所能实现的功能的小小的例子。你们可以写好自己的更大的组件,而且还可以用VB中的很多控件。让我们用组件来扩展我们的程序的功能吧!也希望多多的看到我们中国人的组件。但愿本文能起到抛砖引玉的作用。
相关文章
如何安装Yellow Leads Extractor免费版?网页抓取工具使用教程
Yellow Leads Extractor免费版安装教程!Yellow Leads Extractor 允许用户在浏览器中进行 100% 可定制的搜索,当您拥有此程序后,您无需做大量工作即可从黄页获取信息,您只2024-03-29怎么安装WordRake for Outlook免费版?WordRake安装步骤
如何免费安装WordRake?WordRake 提供超过 35,000 种编辑算法,以提高简洁性,WordRake专为法律、商业和政府作家设计,尊重合法有效的短语并将写作转换为简单的英语2024-03-22如何安装PDF Shaper Ultimate免费版?PDF工具箱免费版安装教程
怎么安装PDF Shaper Ultimate免费版?PDF Shaper Ultimate是一个强大的 PDF 编辑软件,它提供了一整套的 PDF 工具和实用程序,您可以很容易地分割和合并的PDF文件;提取PDF2024-03-21如何安装Splunk Enterprise Mac免费版?Splunk数据可视化分析软件安装教
如何免费安装Splunk Enterprise数据分析软件?Splunk Enterprise是一款简单好用的数据收集软件,Splunk mac最新版可收集、索引和利用所有应用程序、服务器和设备(物理、虚2024-03-20怎么安装TopoGrafix ExpertGPS免费版?ExpertGPS安装教程
TopoGrafix ExpertGPS是领先的GPS地图软件,可帮助大家下载全球航空照片和街道地图,USGS地形图和NOAA海图,保存地图 到您的硬盘驱动器以供离线使用,断开笔记本电脑的连接2024-03-19- 如何安装GERMES免费版?Astroprocessor GERMES旨在执行占星计算并表达结果分析,对于专业人士而言,该计划提供灵活且易于定制的工具,用于解决各种占星术,例如整改,长期和2024-03-15
如何设置Typora显示代码行号? Typora代码显示行号的设置技巧
刚用Typora的时候,发现居然不显示行号,如果代码很多不显示代码行号,看上去很乱,我们显示行号就行,详细请看下文介绍2024-03-12- 作为前端开发人员,我们经常需要为网站和应用程序添加文本内容,与传统的文本编辑器不同,富文本编辑器可让您轻松创建各种类型的文本内容,包括加粗字体、斜体字、框架、列2024-02-21
- Typora 是一款由 Abner Lee 开发的轻量级 Markdown 编辑器,该怎么安装Typora呢?下面我们就来看看详细的图文教程2024-02-21
如何用mathtype7? MathType7数学公式编辑器使用图文教程2024最新
在我们的日常工作中,经常会使用和编辑到数学公式,那么我们该怎么编辑数学公式呢?今天我们就来看看 MathType7的使用方法2024-02-21
最新评论