### 在 ASP 文件中调用 DLL

动态联接库(DLL)是加快应用程序关键部分的执行速度的重要方法，但有一点恐怕大部分人都不知道，那就是在 ASP 文件也能通过调用 DLL 来加快服务器的执行速度，下面我简单的介绍一下在 ASP 文件调用 DLL 的步骤。
首先，必须得有 DLL 文件，本例是通过 VB5.0 创建 ActiveX DLL 文件，这个文件模拟了一个掷色子的过程。
在 VB5.0 的环境下，新建一个工程，并双击新建工程窗口中 ActiveX DLL 图标，VB 将自动为项目添加一个类模块，并将该项目类型设置为 ActiveX DLL。在属性窗口将类模块的名称属性改为 clsDice。从工程菜单中，选择工程属性，将工程名称改为 MyDLL。从文件菜单中，选择保存 clsDice，将类模块保存为 myDice.cls。添加以下代码：
Option Explicit
Private Max, Point As Integer
Public Property Get Result() As Integer
Result = Point
End Property
Public Property Get Maxpoint() As Integer
Maxpoint = Max
End Property
Public Property Let Maxpoint(num As Integer)
Max = num
End Property
Public Sub Throw()
Randomize
Point = Int(Rnd * Max) + 1
End Sub
Private Sub Class_Initialize()
Max = 6
End Sub
这个类模块定义了 clsDice 对象的两个属性和一个方法，这些属性和方法模拟了掷色子的过程。其中 Maxpoint 属性表示色子的面数，加入 Property Let 语句将使客户能修改色子的面数；Result 属性表示最后掷出色子的点数；Throw 方法代表掷色子的动作；Private Sub Class_Initialize 语句将色子的面数缺省的设置为 6 面。
从文件菜单中，选择生成 MYDLL.DLL 并将它保存到适当的地方。至此，我们就创建了一个自己的 DLL 文件。
第二步要做的就是要在 ASP 文件中引用类 clsDice。
ASP(活动服务器页面 Active Server Pages)的所有代码都是在服务器上运行的，客户只能查看以 HTML 形式传回的结果。它使用“<%”和“%>”标记来标识脚本代码，并不传回客户端，在代码外部，使用 HTML 标记来标识内容。在下面 Dice.asp 的代码中使用了 CreateObject 函数创建了一个 clsDice 对象实例，该对象来自于上面创建的 ActiveX.DLL--MYDLL.DLL 文件，下面的例子使用了 VBScript 脚本语言。
<!--METADATA TYPE="typelib" FILE="Path/mydll.dll" -->
'装载 METADATA 标签中指定的类型库。 Path 是 mydll.dll 在机器上存放的路径
<html>
<head><title>在 ASP 文件使用 DLL</title></head>
<body>
<%
On Error Resume Next ‘当程序出现意外错误时能继续执行
If Request.Form("T1")="" then
Session("point") = 6
Else
Session("point")=Request.Form("T1")
End If
'用 Session("point")来存放色子的面数
Set dice1=Server.Createobject("MyDLL.clsDice")
'使用 set 语句创建 dice1 对象，其中 MyDLL 是上面创建 dll 文件时的工程名称（注意：不是文件的名称），clsDice 为类模块的名称。至此我们就可以用 Maxpoint,Result 和 Throw 属性（方法）来对 dice1 对象进行操作。
If Request.ServerVariables("Request_Method")="POST" then
dice1.Maxpoint = Session("point") ‘设定色子的面数
dice1.Throw ’掷色子
%>
<form method="POST" action="dice.asp">
<p>当色子的面数为<input type="text" name="T1" size="5" value=<% = session("point") %>>时</p>
<p><input type="submit" value="掷色子" name="B1"></p>
</form>
<p>结果为：<% = dice1.Result %>点 </p> ‘返回结果
<%
Else
dice1.Maxpoint = Session("point")
%>
<form method="POST" action="dice.asp">
<p>当色子的面数为<input type="text" name="T1" size="5" value=<% = session("point") %>>时</p>
<p><input type="submit" value="掷色子" name="B1"></p>
</form>
<%
End If
%>
</body>
在浏览器中浏览 http://localhoat/dice.asp，结果如附图。注意：只有在 WINDOWS NT+IIS3.0 以上或 WINDOWS9X+PWB 的环境下才能正确浏览。
以上代码在 WINDOWS NT4.0+SP3+IIS4.0+IE5.0+VB5.0 上编译运行通过，但还有不少的缺陷，但我的本意是向大家介绍如何在 ASP 中调用 DLL，所以我没有去完善它。