?? 28-4.cfm.htm
字號:
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
<META NAME="Generator" CONTENT="Microsoft Word 97">
<TITLE>用Visual Basic來創(chuàng)建服務(wù)器端組件</TITLE>
</HEAD>
<BODY>
<B><FONT FACE="宋體" LANG="ZH-CN" SIZE=5><P ALIGN="JUSTIFY">用Visual Basic來創(chuàng)建服務(wù)器端組件</P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> Visual Basic是用來開發(fā)一個組件最容易和最快的途徑,其缺點在于自由線程對象不能用VB來編寫,這意味著在這個環(huán)境下不適合開發(fā)應(yīng)用范圍組件。VB4或VB5都適用,我們的例子使用VB5。</P>
<P ALIGN="JUSTIFY"> 以下步驟是創(chuàng)建一個組件所必須的,它比用Java 少一些步驟,這是因為VB不用類庫。</P>
<P ALIGN="JUSTIFY"> 1. 編寫源代碼。</P>
<P ALIGN="JUSTIFY"> 2. 創(chuàng)建項目。</P>
<P ALIGN="JUSTIFY"> 3. 注冊你的組件。</P>
<P ALIGN="JUSTIFY"> 4. 在ASP頁中引用組件。</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋體" LANG="ZH-CN"><P ALIGN="JUSTIFY">編寫源代碼</P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">啟動一個新的VB5 ActiveX DLL項目,因為我們需要創(chuàng)建一個DLL,不存在用戶界面。VB顯示一個缺省的代碼窗口名叫Class1,按F4并將屬性表按下面設(shè)置:</P>
<P ALIGN="JUSTIFY">(Name)VBSoaringSites。</P>
<P ALIGN="JUSTIFY"> Instancing 5 </FONT><FONT SIZE=3>–</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3> MultiUse</P>
<P ALIGN="JUSTIFY"> 如果你使用VB4,將Public設(shè)置成True,選擇Project|Project 1 Properties將項目名改為<B>SoaringSites</B>并選中Unattended Execution 選項。最后單擊對話框的Make表欄并選擇Auto Increment,按OK鍵保存設(shè)置。</P>
<P ALIGN="JUSTIFY"> 你可能添加一個ASP.DLL作為引用到你項目中去。選擇Projects|References并選擇Microsoft Activc Pages 1.0 Library,如圖28.4所示。我們的VB組件不同于Java組件的一點在于我們不使用OnStartPage和 OnEndPage事件,所以我們可以跳過這個引用。它之所以保存作為例子的一部分是因為你會發(fā)現(xiàn)對于其他組件來說,它可能是有用的。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> 例表28.4中的代碼同Java例子不一樣,Java 例子是直接在客戶端輸出,而這個例子將返回一個字符串給ASP頁,然后ASP頁顯示結(jié)果。</P>
<P ALIGN="JUSTIFY">在SoaringSites Code窗口中輸入源代碼,如表28.4所示。請注意Option Explicit。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">表28.4 VbSoaringSites 源代碼</P>
<P ALIGN="JUSTIFY"><HR ALIGN="RIGHT" SIZE=1></P>
<P ALIGN="JUSTIFY">Option Explicit</P>
<P ALIGN="JUSTIFY">Public Function ListSoaringSites(sState As String) As String Dim sOutput As String</P>
<P ALIGN="JUSTIFY"> sOutput = "Requested State: " & sState sOutput = sOutput & "<P>"</P>
<P ALIGN="JUSTIFY"> If UCase(sState) = "WA" Then sOutput = sOutput _ & "Arlington, WA<BR>" _ & "Burlington, WA<BR>" _ & "Pullman, WA<BR>" _ & "Richland, WA<BR>" _ & "Wenatchee, WA<BR>" _ & "Yakima, WA<BR>" ElseIf UCase(sState) = "WI" Then sOutput = sOutput _ & "<BR>West Bend, WI<BR>" Else sOutput = sOutput & "No sites found for " & sState End If</P>
<P ALIGN="JUSTIFY"> ListSoaringSites = sOutput</P>
<P ALIGN="JUSTIFY"><HR ALIGN="LEFT" SIZE=1>End Function</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">在所有步驟都完成之后,你的工程項目看起來應(yīng)象圖28.5所示。注意你的項目和module名稱,因為操作系統(tǒng)使用你輸入的這些名稱來注冊組件。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋體" LANG="ZH-CN"><P ALIGN="JUSTIFY">構(gòu)建Dll(動態(tài)連接庫) </P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY">保存你的工作。本CD中的例子使用AspUnleashed\Chapter28\VbSoaringSites作為保存目錄。</P>
<P ALIGN="JUSTIFY">選擇File|Make VbSoaringSites DLL來創(chuàng)建DLL。這個組件將保存在同你保存源代碼相同路徑下。將此DLL拷貝到SSA站點的Components目錄,使用Microsoft Management Console確保這個目錄的屬性包括Run in Separate Memory space使得你可以在以后安裝不同版本的DLL時不需要重起你的計算機(詳細情況請見第二章)。</P>
<P ALIGN="JUSTIFY"> 在命令行中通過以下兩條命令注冊DLL。</P>
<P ALIGN="JUSTIFY">cd \ssa\Components</P>
<P ALIGN="JUSTIFY">RegSvr32 VbSoaringSites.dll</P>
<P ALIGN="JUSTIFY"> </P>
<B><P ALIGN="JUSTIFY">警告</P>
</B><P ALIGN="JUSTIFY"> 如果這不是你首次注冊這個VbSoaringSite DLL,在將新的版本的組件復(fù)制到Components目錄前首先注銷老的DLL,如果不這樣做的結(jié)果將會導(dǎo)致注冊表中加入多重注冊信息,從而需要用乏味的RegEdit來清除其他錯誤的引用。</P>
<P ALIGN="JUSTIFY"> 以下是注銷舊的DLL的命令。</P>
<P ALIGN="JUSTIFY">cd \ssa\Components</P>
<P ALIGN="JUSTIFY">RegSvr32 /unregister VbSoaringSites.dll</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><B><FONT FACE="宋體" LANG="ZH-CN"><P ALIGN="JUSTIFY">在頁面中使用組件</P>
</B></FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"> 列表28.5中所顯示的代碼與Java 組件代碼的唯一區(qū)別在于它調(diào)用了另一個不同的ASP頁。列表28.6中顯示了更多的代碼不同,我們在里面首先提取一個字符串,然后再使用它,因為VB的DLL并不直接向客戶端作輸出。</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">表28.5 VBSoaringSites.asp</P>
<P ALIGN="JUSTIFY"><HR ALIGN="RIGHT" SIZE=1></P>
<P ALIGN="JUSTIFY"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML><HEAD> <TITLE>Soaring Sites Results</TITLE></HEAD></P>
<P ALIGN="JUSTIFY"><BODY BGCOLOR="#FFFFFF"><FONT SIZE="2" FACE="Verdana, Arial, Helvetica"></P>
<P ALIGN="JUSTIFY"><CENTER><H1>Soaring Sites</H1></CENTER><HR Color="Red"></P>
<P ALIGN="JUSTIFY"><FORM ACTION="VBSoaringSitesAction.asp"> Enter a state abbreviation to search for a site: &nbsp; <INPUT NAME="State" SIZE="2"><BR> <INPUT TYPE="SUBMIT"></FORM></P>
<P ALIGN="JUSTIFY"><HR ALIGN="RIGHT" SIZE=1></BODY></HTML></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">表28.6 VBSoaringSitesAction.asp</P>
<P ALIGN="JUSTIFY"><HR ALIGN="RIGHT" SIZE=1><% Option Explicit %></P>
<P ALIGN="JUSTIFY"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><HTML><HEAD> <TITLE>Soaring Sites Results</TITLE></HEAD></P>
<P ALIGN="JUSTIFY"><BODY BGCOLOR="#FFFFFF"><FONT SIZE="2" FACE="Verdana, Arial, Helvetica"></P>
<P ALIGN="JUSTIFY"><%</P>
<P ALIGN="JUSTIFY">Dim oSoaringSites</P>
<P ALIGN="JUSTIFY">Dim sSiteList</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">Set oSoaringSites=Server.CreateObject(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>SoaringSites.vbSoaringSites</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>)</P>
<P ALIGN="JUSTIFY"> </P>
</FONT><FONT SIZE=3><P ALIGN="JUSTIFY">‘</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>Set the string to return value of function</P>
<P ALIGN="JUSTIFY">sSiteList=oSoaringSites.ListSoaringSites(Request(</FONT><FONT SIZE=3>“</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>State</FONT><FONT SIZE=3>”</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>))</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">Response.Write sSiteList </FONT><FONT SIZE=3>‘</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>Display the result</P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY">Set oSoaringSites=Nothing </FONT><FONT SIZE=3>‘</FONT><FONT FACE="宋體" LANG="ZH-CN" SIZE=3>De-reference the object</P>
<P ALIGN="JUSTIFY">%></P>
<P ALIGN="JUSTIFY"> </P>
<P ALIGN="JUSTIFY"><HR ALIGN="LEFT" SIZE=1></BODY></HTML></P></FONT></BODY>
</HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -