一、概述
大家知道,IIS(Internet Information Server)應(yīng)用程序是VisualBasic應(yīng)用程序,它在動(dòng)態(tài)的、基于瀏覽器的應(yīng)用程序中使用HTML和已編譯的VisualBasic代碼。IIS應(yīng)用程序駐留在Web服務(wù)器上,接受來(lái)自瀏覽器的請(qǐng)求,運(yùn)行與請(qǐng)求相關(guān)聯(lián)的代碼并返回響應(yīng)到瀏覽器。IIS應(yīng)用程序可以使用VisualBasic代碼來(lái)完成以前用腳本、CGI處理和其他方法完成的功能。IIS應(yīng)用程序可以在任何瀏覽器上運(yùn)行,因此它很容易得到廣泛的應(yīng)用。對(duì)用戶來(lái)說(shuō),一個(gè)IIS應(yīng)用程序好象是由一系列的HTML頁(yè)面組成。對(duì)開(kāi)發(fā)者來(lái)說(shuō),一個(gè)IIS應(yīng)用程序是由一些被稱為Webclass的特殊類型對(duì)象組成。而Webclass包含一系列稱為Webitem的資源。Webclass作為應(yīng)用程序的核心,處理來(lái)自瀏覽器的數(shù)據(jù)并向用戶發(fā)送信息。Webitem是Webclass為響應(yīng)一個(gè)請(qǐng)求發(fā)送給瀏覽器的HTML頁(yè)面和其他數(shù)據(jù)。
二、IIS應(yīng)用程序的開(kāi)發(fā)過(guò)程
IIS應(yīng)用程序的開(kāi)發(fā)過(guò)程大體分為五個(gè)步驟。我們結(jié)合一個(gè)公文數(shù)據(jù)檢索程序來(lái)說(shuō)明。
1、建立IIS應(yīng)用程序工程
當(dāng)建立一個(gè)IIS應(yīng)用程序時(shí),應(yīng)選擇IIS應(yīng)用程序類型工程。IIS應(yīng)用程序工程是一個(gè)ActiveXDLL工程類型,它自動(dòng)包括一個(gè)ActiveX設(shè)計(jì)器。這個(gè)稱為Webclass的設(shè)計(jì)器作為創(chuàng)建應(yīng)用程序的基礎(chǔ)。一個(gè)Webclass設(shè)計(jì)器對(duì)應(yīng)一個(gè)Webclass,但它可以包含多個(gè)HTML模板和Webitem。如果想在應(yīng)用程序中包括多個(gè)Webclass,必須在工程中插入另外的設(shè)計(jì)器。多數(shù)情況下,必須編寫代碼告訴Webclass當(dāng)應(yīng)用程序第一次啟動(dòng)時(shí)做哪些工作,使用Start事件來(lái)完成它。當(dāng)用戶第一次訪問(wèn)你的應(yīng)用程序時(shí),Start事件發(fā)生。使用Start事件代碼漫游到應(yīng)用程序中的第一個(gè)Webitem。
例如,我們建立一個(gè)名為SearchData的IIS應(yīng)用程序,編寫Webclass的Start事件代碼如下:
Private Sub Webclass_Start() Set NextItem=SearchTpl End sub |
2、添加HTML模板到Webclass
添加HTML模板到IIS應(yīng)用程序,可使Webclass在響應(yīng)用戶請(qǐng)求時(shí)向?yàn)g覽器發(fā)送HTML頁(yè)面。當(dāng)添加一個(gè)模板到Webclass時(shí),要選擇一個(gè)與它關(guān)聯(lián)的HTML頁(yè)面。一個(gè)Webclass可以包含多個(gè)模板Webitem,但每個(gè)模板Webitem僅能表示一個(gè)HTML頁(yè)面。你必須為每一個(gè)HTML頁(yè)面添加相應(yīng)的模板。在插入一個(gè)HTML頁(yè)面文件之后,可以使用HTML編輯器對(duì)頁(yè)面的內(nèi)容和布局進(jìn)行更改。例如,我們添加一個(gè)名為SearchTpl的模板Webitem,它與SearchCondition頁(yè)面關(guān)聯(lián),并編寫Respond事件將此HTML頁(yè)面的內(nèi)容寫到瀏覽器。
Private Sub SearchTpl_Respond() SearchTpl.Write Template End Sub |
與SearchTpl模板關(guān)聯(lián)的SearchCondition頁(yè)面讓用戶輸入檢索條件。其內(nèi)容如下:
<HTML> <head> 。糾etahttp-equiv="Content-Type" content="text/HTML;charset=gb_2312-80"> <title>檢索條件</title> </head> <body bgcolor="#FFFFFF"> 。糵orm action="SearchData_Webclass.asp?WCI=SearchResult" method="POST"> 。紁>起始日期<input Type="text" size="10" name="date1"></p> <p>終止日期<inputType="text" size="10" name="date2"></p> 。紁>文件字號(hào)<inputType="text" size="50" name="code"></p> <p>文件標(biāo)題<inputType="text" size="50" name="title"></p> 。紁><inputType="submit" name="submit" value="確定"> 。糹nputType="reset" name="clear" value="清除"> </p> 。/form> </body> </HTML> |
3、添加自定義的Webitem到Webclass
自定義的Webitem允許你通過(guò)VisualBasic代碼動(dòng)態(tài)地向?yàn)g覽器發(fā)送響應(yīng)。自定義的Webitem通常是一組過(guò)程代碼。IIS應(yīng)用程序中的大多數(shù)處理發(fā)生在自定義Webitem的事件過(guò)程中。IIS應(yīng)用程序接收HTML頁(yè)面的請(qǐng)求,與Webitem的事件進(jìn)行匹配,并運(yùn)行相應(yīng)的事件過(guò)程代碼。例如,我們添加一個(gè)名為SearchResult的自定義Webitem。它使用Request對(duì)象在SearchCondition頁(yè)面窗體中獲取用戶輸入的查詢條件,然后建立一個(gè)連接到ADO公文數(shù)據(jù)庫(kù),創(chuàng)建記錄集并從中檢索滿足條件的信息。
Private Sub SearchResult_Respond() ′為獲取窗體的信息聲明變量 Private sDate1 as String Private sDate2 as String Private sTitle as String Private sCode as String ′獲取窗體參數(shù)并賦給變量 sDate1=Request.Form("date1") sDate2=Request.Form("date2") sTitle=Request.Form("title") sCode=Request.Form("code") ′為數(shù)據(jù)庫(kù)連接和記錄集聲明對(duì)象變量 Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset Dim QueryStr As String′ '形成SQL數(shù)據(jù)查詢字符串 QueryStr="select form 公文 where "&"日期>="&"#" & sDate1 &"#"& "and" &"日期<="&"# "& sDate2 & "#"&" and" &"文件標(biāo)題like" & "* "&" *"& sTitle & “ * "&"*"& "and" &"文件字號(hào)like"&"*"&" "& sCode&" * "&"" ′建立數(shù)據(jù)庫(kù)連接 cn.ConnectionString="DSN=doc;UID=sa; PWD=sa;DATABASE=document" cn.Open ′創(chuàng)建記錄集 Open QueryStr,cn,adOpenStatic,adlockReadonly ′將結(jié)果信息逐個(gè)記錄地寫到一個(gè)表格 With Response .Write "<HTML>” .Write "<BODY>" .Write "<TABLE BORDER CELLSPACING=1 CELLPADDING=7>" Do While rs.EOF=False .Write "<TR><TD>" .Write rs("文件標(biāo)題") .Write "</TD><TD>" .Write rs("文件字號(hào)") .Write "</TD><TD>" .Write rs("日期") .Write "</TD><TR>" .Write rs("責(zé)任單位") .Write "</TD><TR>" .Write rs("主題詞") .Write "</TD><TR>" rs.MoveNext Loop .Write"</TABLE>" .Write"</BODY>" .Write"</HTML>" End With′ '關(guān)閉記錄集和數(shù)據(jù)庫(kù)連接 rs.Close cn.Close End Sub |
4、調(diào)試IIS應(yīng)用程序
調(diào)試一個(gè)IIS應(yīng)用程序的方法和調(diào)試其他VisualBasic應(yīng)用程序一樣,都是通過(guò)進(jìn)入運(yùn)行模式來(lái)進(jìn)行的。VisualBasic為IIS應(yīng)用程序創(chuàng)建虛擬目錄,使用瀏覽器打開(kāi)相應(yīng).asp文件啟動(dòng)Webclass。調(diào)試時(shí),可以使用VisualBasic的所有工具來(lái)調(diào)試你的工程。如設(shè)置斷點(diǎn)、查看變量、調(diào)試語(yǔ)句等。
5、部署IIS應(yīng)用程序
可以使用VisualBasic打包和展開(kāi)向?qū)?lái)包裝和部署你的IIS應(yīng)用程序。打包和展開(kāi)向?qū)⒐こ痰?DLL文件和所有相關(guān)的文件包裝到一個(gè)“壓縮包”或.cab文件中。然后可以部署這個(gè)壓縮包文件和相關(guān)文件到一個(gè)Web服務(wù)器上。
三、小結(jié)
利用VisualBasic開(kāi)發(fā)IIS應(yīng)用程序,不但可以使用VisualBasic的類模塊和ActiveX部件,而且能夠使用VisualBasic所有的工具來(lái)調(diào)試IIS應(yīng)用程序。這種開(kāi)發(fā)方法大大簡(jiǎn)化了IIS應(yīng)用程序的開(kāi)發(fā)過(guò)程,使我們更加方便地建立功能強(qiáng)大的Web站點(diǎn)。