日期:2011-06-12  浏览次数:20909 次

使用VB6的新的WebClass技术使得容易创建灵活而又功能 强大的基于Internet应用程序
今年早些时候,我们曾向你展示了如何编写一个注册应用程序,它允许用户访问你的页面并注册一个软件产品.["Create a User Registration Class,"VBPJ 1998年4月和"Add E-Mail Registration to your Server,"VBPJ 1998年5月].在注册后,应用程序将通过e-mail给用户发一个序列号,同时还存在一个跟Web的连接以继续注册过程.早些时候给你示范的VB5应用程序创建了一个运行在Web服务器上的ActiveX DLL和一个测定用户的状态的并适当的调用该DLL的相应的ASP脚本.(Active Server Page).现在VB6为编写这种类型的应用程序提供了一种新的手段,既使用新技术-WebClass.

简而言之,WebClass是运行在Web服务器上的ActiveX DLL.它允许客户端的浏览器上的HTML页的超链接激活服务器DLL中的事件.WebClass的编程模式类似于传统的VB模式-不同之处在于,VB中是窗体中包含控件,而WebClass应用程序是Web页面包含控件.在服务器端,对于开发者来说他知道完整的的VB事件模型,这样可以进行高度的交互式的Web开发.在本专栏中,我们将讨论如何创建一个简单的WebClass应用程序,向你说明这事是多么简单.

为创建一个简单的WebClass应用程序,你应启动VB6并在新工程的对话框中选择IIS应用程序.在属性窗口中将工程命名为SimpleReg.双击工程浏览器中的WebClass设计器.(你能可通过View菜单看到属性窗口和工程浏览器).在属性窗口中,命名WebClass为wcSimple并在NameURL属性中输入SimpleReg.这将在编译ActiveX DLL时创建一个名为SimpleReg.asp的启动文件.接着保存该工程.
一个WebClass应用程序通过使用HTML模板在用户的浏览器上显示HTML.由于VB6没有包括HTML编辑器,你必须在VB6外创建一个HTML模板(VB6的DHTML设计器完全跟WebClass无关).你可以用任意的HTML编辑器,但由于Visual Studio包括Visual InterDev(VID) 6.0,所以VID是合理的选择.

在VB6的Tools|Options菜单中为Visual Basic设定Visual Staudio为缺省的HTML编辑器.在Advanced标号,将如下Visual InterDev的路径-C:\Promram Files\Microsoft Visual Studio\Common\IDE|IDE98\Devenv.exe填入外部的HTML编辑框中.你将通知Visual InterDev制作用于你的工程的模板文件的副本.如:你的模板叫WebPage.htm的话,那InterDev创建一个名为Web1Page.htm的副本.如果你用记事本或其他编辑器创建你的模板时请考虑到这一点.

在例程代码中,SimpleReg.htm文件是一个由Visual InterDev创建的模板.在WebClass设计器的左边的窗格中,选择HTML Template WebItem文件夹.如下操作可在工程中添加SimpleReg模板:点击AddHTML Template WebItem键并在文件选择对话框中选择SimpleReg.htm文件(见图1).命名该新的WebItem为tplSimple.双击tplSimple查看关于WebClass的代码.找到WebClass_Start过程并用如下代码代替原来生成的代码以在加载WebClass时显示模板:

Private Sub WebClass_Start()
'显示主要的HTML模板 www.knowsky.com
Session("Title") = "Enter Your" & "Registration Information"
tplSimple.WriteTemplate
End Sub

WebClass_Start过程类似于传统的VB应用程序的Form_Load过程.运行程序并观看你的浏览器所展示的HTML页.退出浏览器并终止VB应用程序.(这是在调试开发过程中的正常的关闭WebClass的方法).

在WebClass设计器中,右击tplSimple WebItem并从上下文菜单中选择编辑HTML模板.你将在你的缺省的HTML编辑器中看到模板页.阅读源代码,你能看到这是一个有三种特殊的被称为标签的部分组成的简单的页,格式如下:

<WC@TAGTITLE>Title</WC@TAGTITLE>

这些标签的文本部分的("Title")在运行时被你所添加到WebClass的代码取代.当执行WrieteTemplate方法时,它为HTML模板中的所找到的每个标签调用一次称为ProcessTag的特殊过程.回到VB,双击tplSimple WebItem显示代码窗口.在代码窗口的上部的组合框内选择tpSimple_ProcessTag过程,并添加如下代码:

Dim sHTM As String
Select Case TagName
Case "WC@TAGTITLE"
TagContents =Session("Title")
Case "WC@TAGMAIL"
sHTM = "Enter Email Address:<br>"
sHTM = sHTM & "<input type= 'text'"
sHTM = sHTM & " name= 'Email'><br>"
TagContents = sHTM
Case "WC@TAGNAME"
sHTM = "Name:<br>"
sHTM = sHTM & "<input type= 'text'"
sHTM = sHTM & " name= 'Name'><br>"
TagContents = sHTM
End Select

回传TagContent参数中的HTML代码以替换标签.在tplSimple中设定断点.WriteTemple加到WebClass_Start过程中,并运行你的应用程序.在断点,用F8单步调试该工程以看看事件的发生的顺序.你将看到ProcessTag过程被调用了三次-为模板中的每个标签调用一次.真正酷的事是:在运行过程中过程将用能在浏览器中产生文本框的HTML代码取代E-mail和Name标签.

能交互式地调试你的服务器端的事件代码是用VB开发WebClass应用程序的的非常强大的功能之一.在VB5的Web开发中,ASP脚本中的VBScript完成了大量的工作.你不可能在ASP脚本中交互式地调试VBScript-唯一可行的不幸的途径是错误,再试.然而在VB6中,所有的服务器端的代码都是在WebClass中运行的并且你可以利用VB的优秀的设计环境进行交互式地调试.

连接一个事件

下一步是在该简单的应用程序中为窗体中的Register Me按钮添加事件处理代码.回到VB的WebClass设计器,点击tplSimple WebItem.在右边的窗格中,你将看到一列该页中的HTML成员,你可以将事件跟它们联系起来.右击Form1标签并选择Connect to Custom Event菜单项,并注意到紧挨着Form1的位于Target列中的事件名称.快速的看一下HTML模板(右击tplSimple并选择编辑HTML模板).找到窗体的成员,它们现在是象这样的.

<FORM method = 'post' action = SimpleReg.ASP?WCI=tplSimple _
&WCE=RegisterMe&WCU>

SimpleReg.asp是特殊的ActiveXDLL启动脚本.问号后的值表明WebClass Item(WCI)是tplSimple,WebClass事件(WCE)是RegisterMe,WebClass URLData(WCU)是空的.当用户在浏览