为你的ASP程序制作一个编译组件(中)
代码修改
到目前为止,我们已经成功的将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展示了完成的类.