WebClasses使注冊變得容易
發(fā)表時間:2024-06-08 來源:明輝站整理相關軟件相關文章人氣:
[摘要]使用VB6的新的WebClass技術使得容易創(chuàng)建靈活而又功能 強大的基于Internet應用程序 今年早些時候,我們曾向你展示了如何編寫一個注冊應用程序,它允許用戶訪問你的頁面并注冊一個軟件產品.["Create a User Registration Class,"VBPJ ...
使用VB6的新的WebClass技術使得容易創(chuàng)建靈活而又功能 強大的基于Internet應用程序
今年早些時候,我們曾向你展示了如何編寫一個注冊應用程序,它允許用戶訪問你的頁面并注冊一個軟件產品.["Create a User Registration Class,"VBPJ 1998年4月和"Add E-Mail Registration to your Server,"VBPJ 1998年5月].在注冊后,應用程序將通過e-mail給用戶發(fā)一個序列號,同時還存在一個跟Web的連接以繼續(xù)注冊過程.早些時候給你示范的VB5應用程序創(chuàng)建了一個運行在Web服務器上的ActiveX DLL和一個測定用戶的狀態(tài)的并適當?shù)恼{用該DLL的相應的ASP腳本.(Active Server Page).現(xiàn)在VB6為編寫這種類型的應用程序提供了一種新的手段,既使用新技術-WebClass.
簡而言之,WebClass是運行在Web服務器上的ActiveX DLL.它允許客戶端的瀏覽器上的HTML頁的超鏈接激活服務器DLL中的事件.WebClass的編程模式類似于傳統(tǒng)的VB模式-不同之處在于,VB中是窗體中包含控件,而WebClass應用程序是Web頁面包含控件.在服務器端,對于開發(fā)者來說他知道完整的的VB事件模型,這樣可以進行高度的交互式的Web開發(fā).在本專欄中,我們將討論如何創(chuàng)建一個簡單的WebClass應用程序,向你說明這事是多么簡單.
為創(chuàng)建一個簡單的WebClass應用程序,你應啟動VB6并在新工程的對話框中選擇IIS應用程序.在屬性窗口中將工程命名為SimpleReg.雙擊工程瀏覽器中的WebClass設計器.(你能可通過View菜單看到屬性窗口和工程瀏覽器).在屬性窗口中,命名WebClass為wcSimple并在NameURL屬性中輸入SimpleReg.這將在編譯ActiveX DLL時創(chuàng)建一個名為SimpleReg.asp的啟動文件.接著保存該工程.
一個WebClass應用程序通過使用HTML模板在用戶的瀏覽器上顯示HTML.由于VB6沒有包括HTML編輯器,你必須在VB6外創(chuàng)建一個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創(chuàng)建一個名為Web1Page.htm的副本.如果你用記事本或其他編輯器創(chuàng)建你的模板時請考慮到這一點.
在例程代碼中,SimpleReg.htm文件是一個由Visual InterDev創(chuàng)建的模板.在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過程類似于傳統(tǒng)的VB應用程序的Form_Load過程.運行程序并觀看你的瀏覽器所展示的HTML頁.退出瀏覽器并終止VB應用程序.(這是在調試開發(fā)過程中的正常的關閉WebClass的方法).
在WebClass設計器中,右擊tplSimple WebItem并從上下文菜單中選擇編輯HTML模板.你將在你的缺省的HTML編輯器中看到模板頁.閱讀源代碼,你能看到這是一個有三種特殊的被稱為標簽的部分組成的簡單的頁,格式如下:
<WC@TAGTITLE>Title</WC@TAGTITLE>
這些標簽的文本部分的("Title")在運行時被你所添加到WebClass的代碼取代.當執(zhí)行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參數(shù)中的HTML代碼以替換標簽.在tplSimple中設定斷點.WriteTemple加到WebClass_Start過程中,并運行你的應用程序.在斷點,用F8單步調試該工程以看看事件的發(fā)生的順序.你將看到ProcessTag過程被調用了三次-為模板中的每個標簽調用一次.真正酷的事是:在運行過程中過程將用能在瀏覽器中產生文本框的HTML代碼取代E-mail和Name標簽.
能交互式地調試你的服務器端的事件代碼是用VB開發(fā)WebClass應用程序的的非常強大的功能之一.在VB5的Web開發(fā)中,ASP腳本中的VBScript完成了大量的工作.你不可能在ASP腳本中交互式地調試VBScript-唯一可行的不幸的途徑是錯誤,再試.然而在VB6中,所有的服務器端的代碼都是在WebClass中運行的并且你可以利用VB的優(yōu)秀的設計環(huán)境進行交互式地調試.
連接一個事件
下一步是在該簡單的應用程序中為窗體中的Register Me按鈕添加事件處理代碼.回到VB的WebClass設計器,點擊tplSimple WebItem.在右邊的窗格中,你將看到一列該頁中的HTML成員,你可以將事件跟它們聯(lián)系起來.右擊Form1標簽并選擇Connect to Custom Event菜單項,并注意到緊挨著Form1的位于Target列中的事件名稱.快速的看一下HTML模板(右擊tplSimple并選擇編輯HTML模板).找到窗體的成員,它們現(xiàn)在是象這樣的.
<FORM method = 'post' action = SimpleReg.ASP?WCI=tplSimple _
&WCE=RegisterMe&WCU>
SimpleReg.asp是特殊的ActiveXDLL啟動腳本.問號后的值表明WebClass Item(WCI)是tplSimple,WebClass事件(WCE)是RegisterMe,WebClass URLData(WCU)是空的.當用戶在瀏覽器中點擊Register Me按鈕時,這一行將激活ActiveX服務器DLL中的tplSimple_RegisterMe按鈕.就這樣,窗體的活動就跟服務器端的事件聯(lián)系起來,但是你能在瀏覽器中設定超鏈接以激活服務器里事件.WebClass對Web應用程序的開發(fā)如同魔法一般-它們將VB的事件驅動的編程方式擴展到基于瀏覽器的應用程序.
雙擊VB設計器的左邊窗格中的RegisterMe事件以顯示代碼窗口,將如下代碼添加到該事件中:
If Len(Request.Form("Email")) = 0 Then
Session("Titile") = "Please" & "Enter an Email Address!"
Session("Email") = ""
Session("Name") = ""
Else
Session("Title") = "Here is" & "your Entry!"
Session("Email") = Request.Form("Email")
Session("Name") = Reuquest.Form("Name")
End If
TplSimple.WriteTemplate
Request.Form是一種返回來自瀏覽器頁面的數(shù)據(jù)的標準方法.它設置了一些Session變量并重新顯示同樣的HTML頁.在If聲明處設定一個斷點并運行工程.輸入一個email地址和名字,點擊Register Me按鈕.你將看到標題處被刷新了,但是文本框是空的,這是由于你在寫模板的時候沒有對它們輸入相應的值.終止工程并改變tplSimple_ProcessTag過程(從DevX中下載Listing 1;欲知細節(jié),請看Download Free Code框).基于Session變量給文本框賦值.運行工程看看將發(fā)生什么.
用ADO進行數(shù)據(jù)訪問
最后,增加一種從數(shù)據(jù)庫中存儲和獲取記錄的方法.為簡單起見,我們用Microsoft Acess 97作為我們的數(shù)據(jù)庫.在你的源目錄下用Acess創(chuàng)建一個新的數(shù)據(jù)庫并命名為Register.mdb.添加一個有兩個域的表,它們分別是Email和Name,并存盤.當Acess提示你創(chuàng)建一個唯一的索引域時選OK,把Register.mdb的一個拷貝放到你的C驅的根目錄下面.
在工程中,添加一個Microsoft ActiveX Data Object庫的引用,你能在Project Reference下找到….你可以用ADO庫1.5版或2.0版.如果你沒有安裝ADO庫,你可以從微軟的站點:http://www.microsoft.com/data/ado上下載MDAC2.0安裝工具包.改變tplSimple.RegisterMe過程中的代碼(從DevX中下載Listing 2;欲知細節(jié),請看Download Free Code框).
該代碼將窗體中的數(shù)據(jù)存入Session變量中,然后打開ADO記錄集并查找Email地址(從DevX中下載Listing 3).
如果找到,該代碼將返回記錄.如果沒有找到,它將添加新的記錄.該函數(shù)設定了連接串:
private Function Connect() As String
'返回一個ADO連接串
Const kDB = "DBQ=c:\register.mdb;"
Const kDrv = "Drive={Microsoft" & "Acess Driver (*.mdb)}"
Connect = kDB & kDrv
End Function
在tplSimple_RegisterMe中設置一個斷點,運行程序,看看數(shù)據(jù)訪問代碼是如何工作的.這個簡單的例子向你表明了在ADO中編程是如何的簡單.記住在你的公司中所配置的任何 "真正"的應用程序應該包括出錯處理.一般來說,你也將用到注冊來保存諸如連接串信息這樣的變量并且你將需要提供一種刷新記錄,刪除不需要的記錄的方法.
當你編譯工程時,將會發(fā)生兩件事.第一件事是:如同在VB中的任何ActiveX工程一樣,將會在開發(fā)機上生成ActiveX DLL記錄.第二件事是:將產生一個以WebClass的NameInURL屬性所指定的名字命名的特殊的ASP啟動文件.在例程中,該文件的名字是:SimpleReg.asp.看看記事本中的腳本.當用戶在瀏覽器中輸入該文件的URL時,IIS創(chuàng)建一個SimpleReg.wcSimple WebClass的實例.微軟建議你無論如何不要改變該ASP腳本.
從用戶的觀點來看,注冊應用程序的WebClass版類似于1998年5月展示的那一系列.本系列的代碼的確跟早些時候展示的系列是類似的,不同之處在于:現(xiàn)在所有的代碼都包括在WebClass中,并且啟動的ASP文件不包括任何用戶信息.
注意事項
通過對在此前后的應用程序的比較,你應該對WebClass是怎么樣進行工作的有個一致的認識了.然而,你可能仍然不愿意立即把你的Web應用程序轉化為WebClass工程.轉化一個應用程序需要相當多的時間,但是你應該這樣做,因為這樣做存在切實的好處.比如說:WebClass允許你按照以前沒有的方式創(chuàng)建或者擴展應用程序.
總而言之,微軟為我們提供了一套用于開發(fā)互連網(wǎng)應用程序的工具集.當然用VB5開發(fā)Web應用程序也是可行的,但你得用大量的小編程技巧使得ASP腳本正確地跟VB DLL相互影響.脫離了VBScript的局限,也不存在缺乏真實的事件驅動的編程環(huán)境的困繞.WebClass給VB帶來Web開發(fā)的充分的功能-它的確是個好東西.