为你的ASP程序制作一个编译组件(中)
发布时间:2006-10-14 2:59:10   收集提供:gaoqian
下一步是将VBScript对象中的所有代码拷贝出来并粘贴到新工程向导所显示的类窗口中去.只要拷贝从"class DBConnection"到"end class"之间的代码.在粘贴完代码以后,在属性窗口中将类的名字改成DBConnection,如图C所示.


同时将MTSTransactionMode改成3(使用事务处理过程).我们没有必要为这个对象添加任何为支持事务处理(transaction)过程特别编写的代码,但我们最好应该申明你的对象将支持事务处理.现在,在你的硬盘上保存你的工程和类.我觉得使用这些名字将减少混淆,但是如果你的口味和我不同,你也可以更改这些文件的名字. 

因为这个对象使用ADODB,所以下一步是在工程中添加对那个库的引用.选择"工程"菜单并选择"引用...".随后显示的对话框将显示一个你的计算机上可用的库文件的列表,如图D所示.浏览这个列表然后选择Microsoft ActiveX Data Objects 2.5 Library 复选框.我的系统上装了SQL 2000,但是如果你没有2.5版本,你可以选择你的系统上最近的版本.这个组件没有使用任何刚发布的功能,所以大多数Active Data Objects的版本能够正常工作. 

图D

代码修改
到目前为止,我们已经成功的将DBConnection 类的代码转移到了Visual Basic里面.对大部分地方来说,这个代码是完整的.除了类的构造函数中对ASP Application对象的引用和Server.CreateObject那一行以外,这个代码就可以编译了.为了保证一个编译良好的对象,一点点代码上的修改是必要的. 

首先,在代码窗口的顶部添加"Option Explicit"这一行以便当变量在它们被申明以前就使用的时候系统产生一个错误警告.同样,将对mConnectionString的维数申明移到Option Explicit申明下面.然后,如图B所示那样将Class_Initialize()过程改变一下.这个代码只是简单的将连接字符串代码直接移动到了对象内部.这增加了一点点安全性,因为一个编译后的对象能够连到数据库而不会向开发者或未授权的用户暴露实际的连接字符串. 

Listing B
Private Sub Class_Initialize()
   mConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
      & "Data Source=c:\temp\Music Collection.mdb;"
End Sub

为了确保你的组件不会暴露连接字符串,可以将Public Property GetConnectionString()代码从类中去掉.这能让ConnectionString属性变得只读,这就使得用户能够使用这个类来访问其他的数据源,但是它又阻止了这个属性被读取出来,于是用户就无法看见连接字符串了. 

你还可以去掉Class_Terminate()过程,因为它并不包含任何代码.可以用一个查找替换过程,"Server.CreateObject"作为查找文本而"CreateObject"作为替换文本来替换掉它们.这使得所有对象的创建过程对Visual Basic兼容.到这个时候你应该保存工程然后,仅仅是出于测试的目的,从文件菜单中选择创建DBUtil.dll编译这个dll.这个组件应该能够编译成功,虽然不做进一步的修改它就不能正常运行. 

余下的修改工作数不胜数但是简单.因为Visual Basic的类型检查比VBScript更强,你应该对类中的所有函数和变量做出类型限定.这个工作不会要多长时间却能帮助生成一个更高效的代码.列表C展示了完成的类. 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50