一个快速回答的问题:为什么关于ASP的书中,讨论使用子程序和函数的代码的那么少?
虽然一行一行地写ASP代码要更加简单,但是以程序的形式来编码却有许多益处。
首先,非程序化的代码不容易移植到Visual Basic。也许目前你没有这个计划,但是总有一天你会为了
其性能或可扩展性而将一些代码移植到组件中。
其次是程序是运行得更快。对ASP性能的最大消耗是上下文转换,每次从ASP代码区< % % > 移到无格式的
HTML时都会发生。因为你不会在程序内部编码一个上下文转换,就不讳感觉到这种消耗。另外,ASP的
缓冲器也显示当子程序用程序化代码点击页面时会有很大的不同。这里是使用程序化代码的ASP应用程序
"Hello World" 的必须部分:
Private Sub Main()
Response.Write "Hello World!"
End Sub
Call Main
为了完整起见,我在程序中包含了一个上下文转换的小例子。如果你试验这个代码,它会运行,但是请
不要在你自己的应用程序内部这样做。
< %@ Language=VBScript % >
< %
Private Sub DoStuff()
% >
This is < b > HTML Text! < /b >
< %
End Sub
% >
< HTML >
< HEAD >
< META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0" >
< /HEAD >
< BODY >
< P >< % Call DoStuff % >< /P >
< /BODY >
< /HTML >
程序化的代码还有一些其它益处。首先你会发现再利用包含在程序中的代码部分更加容易。其次,要
实现同样的目的所需要的代码行更少。第三,你将要开始开发一个大的可再利用代码库。开始时它的
形式是.inc 文件,最后你自己的普通COM组件看起来就像Jeff Gordon(著名赛车选手)一样棒。
移植你的代码
有几件事与从VBScript向Visual Basic移植代码一样简单。一般来说,你需要移走代码并增加数据类型。
有时,也可以在Visual Basic中应用一些更有效的算法,但是必须先保证代码可以正常工作。
在我们这个应用程序举例中,将要移植一些简单的代码到两个Visual Basic COM 组件中。将一些HTML
表格格式拖到表述类中,将ADO 对象代码拖到包裹了ADO 的数据存取类中。通过将这两个类都放入
ActiveX DLL 工程文件中可以使工程文件稍稍简单化。在实际工作中,可以为每一层创建单独的工程
文件,但是这个工程文件要在一个DLL中表明思路。如果你想纠正这种情况,就将数据存取类移到另一个
工程文件中并作为一个DLL编译。必须在表述要应用它的DLL工程文件中增加对这个新DLL的引用。
在这个样本工程文件中使用的数据库是一个Northwind 数据库,它与Visual Basic包含在一起。在这个
样本工程文件的ZIP 文件中,我为那些没有安装Visual Basic的人做了这个文件的一个表格的版本。样本
工程文件中还包含一个与ASP代码一起使用的编译过的DLL。