使用VB6的新的WebClass技術使得容易創建靈活而又功能 強大的基于Internet應用程序 簡而言之,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的啟動文件.接著保存該工程. 在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() 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 回傳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 _ SimpleReg.asp是特殊的ActiveXDLL啟動腳本.問號后的值表明WebClass Item(WCI)是tplSimple,WebClass事件(WCE)是RegisterMe,WebClass URLData(WCU)是空的.當用戶在瀏覽器中點擊Register Me按鈕時,這一行將激活ActiveX服務器DLL中的tplSimple_RegisterMe按鈕.就這樣,窗體的活動就跟服務器端的事件聯系起來,但是你能在瀏覽器中設定超鏈接以激活服務器里事件.WebClass對Web應用程序的開發如同魔法一般-它們將VB的事件驅動的編程方式擴展到基于瀏覽器的應用程序. 雙擊VB設計器的左邊窗格中的RegisterMe事件以顯示代碼窗口,將如下代碼添加到該事件中: If Len(Request.Form("Email")) = 0 Then Request.Form是一種返回來自瀏覽器頁面的數據的標準方法.它設置了一些Session變量并重新顯示同樣的HTML頁.在If聲明處設定一個斷點并運行工程.輸入一個email地址和名字,點擊Register Me按鈕.你將看到標題處被刷新了,但是文本框是空的,這是由于你在寫模板的時候沒有對它們輸入相應的值.終止工程并改變tplSimple_ProcessTag過程(從DevX中下載Listing 1;欲知細節,請看Download Free Code框).基于Session變量給文本框賦值.運行工程看看將發生什么. 用ADO進行數據訪問 最后,增加一種從數據庫中存儲和獲取記錄的方法.為簡單起見,我們用Microsoft Acess 97作為我們的數據庫.在你的源目錄下用Acess創建一個新的數據庫并命名為Register.mdb.添加一個有兩個域的表,它們分別是Email和Name,并存盤.當Acess提示你創建一個唯一的索引域時選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;欲知細節,請看Download Free Code框). 該代碼將窗體中的數據存入Session變量中,然后打開ADO記錄集并查找Email地址(從DevX中下載Listing 3). 如果找到,該代碼將返回記錄.如果沒有找到,它將添加新的記錄.該函數設定了連接串: private Function Connect() As String 在tplSimple_RegisterMe中設置一個斷點,運行程序,看看數據訪問代碼是如何工作的.這個簡單的例子向你表明了在ADO中編程是如何的簡單.記住在你的公司中所配置的任何 "真正"的應用程序應該包括出錯處理.一般來說,你也將用到注冊來保存諸如連接串信息這樣的變量并且你將需要提供一種刷新記錄,刪除不需要的記錄的方法. 當你編譯工程時,將會發生兩件事.第一件事是:如同在VB中的任何ActiveX工程一樣,將會在開發機上生成ActiveX DLL記錄.第二件事是:將產生一個以WebClass的NameInURL屬性所指定的名字命名的特殊的ASP啟動文件.在例程中,該文件的名字是:SimpleReg.asp.看看記事本中的腳本.當用戶在瀏覽器中輸入該文件的URL時,IIS創建一個SimpleReg.wcSimple WebClass的實例.微軟建議你無論如何不要改變該ASP腳本. 從用戶的觀點來看,注冊應用程序的WebClass版類似于1998年5月展示的那一系列.本系列的代碼的確跟早些時候展示的系列是類似的,不同之處在于:現在所有的代碼都包括在WebClass中,并且啟動的ASP文件不包括任何用戶信息. 注意事項 通過對在此前后的應用程序的比較,你應該對WebClass是怎么樣進行工作的有個一致的認識了.然而,你可能仍然不愿意立即把你的Web應用程序轉化為WebClass工程.轉化一個應用程序需要相當多的時間,但是你應該這樣做,因為這樣做存在切實的好處.比如說:WebClass允許你按照以前沒有的方式創建或者擴展應用程序. 總而言之,微軟為我們提供了一套用于開發互連網應用程序的工具集.當然用VB5開發Web應用程序也是可行的,但你得用大量的小編程技巧使得ASP腳本正確地跟VB DLL相互影響.脫離了VBScript的局限,也不存在缺乏真實的事件驅動的編程環境的困繞.WebClass給VB帶來Web開發的充分的功能-它的確是個好東西. |
溫馨提示:喜歡本站的話,請收藏一下本站!