欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【使用VB将ASP代码封装生成DLL文件】,下面是详细的分享!
使用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 "<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=http://www.chinaz.com/program/2008/1010/""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=http://www.chinaz.com/program/2008/1010/"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中的很多控件。让我们用组件来扩展我们的程序的功能吧!也希望多多的看到我们中国人的组件。但愿本文能起到抛砖引玉的作用。
以上所分享的是关于使用VB将ASP代码封装生成DLL文件,下面是编辑为你推荐的有价值的用户互动:
相关问题:asp.net中,怎么将已经编写好的类文件封装成dll文件?
答:用Visual Studio,新建一个项目,把类放进去,然后生成解决方案,在项目文件夹中的BIN文件夹下,就可以找到编译好的DLL文件了。 >>详细
相关问题:asp.net怎么把一个类封装成为dll文件
答:ascx是用户控件,在页面上直接引用就可以了,不需要封装,你发布的时候,编译器会帮你编译成dll,不用担心代码安全问题。 页面上用的时候在顶端添加引用 然后在要用的地方加上个标签就可以了 =================================================... >>详细
相关问题:用ASP生成的dll文件是干什么用的?
答:其实就是用vb将asp代码进行dll封装,最大的作用就是防止别人盗用你的asp程序,因为dll不可反编译!(就是一旦封装成了dll,就再也打不开,出了你自己,没人知道里面是什么东西了) >>详细
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
