為你的ASP程式製作一個編譯組件(上)

來源:互聯網
上載者:User

編寫定製的Active Server Page(ASP)代碼來完成一些任務,比方說資料庫訪問的能力是重要的.但是,一個由指令碼寫成的解決方案最明顯的問題就是效能.在這篇文章中,我將向你展示如何將一個資料庫物件的指令碼版本轉換成一個動態連結程式庫(dll),或是就象它的通常的名字,一個COM組件.為了產生這個編譯版本,我將使用Visual Basic 6 service pack 4.我曾經向你展示了如何建立一個VBScript對象來簡化對資料來源的訪問.因為這個對象有可能被大量使用,所以它是一端理想的可以編輯成COM組件的代碼.

Visual Basic對建立COM組件來說是一個很好的開發環境,而且在6.0版本中,編譯器變得非常的高效.在許多情況下,它可以產生和C++一樣快的代碼.這並不是說,你不應該使用C++.經常,一些項目要求一個只能由C++產生的高效的組件.但是因為開發的速度和使用的容易性,我所參與的大多數工程都喜歡選擇Visual Basic.當然,你對開發語言的選擇純粹是個人愛好的問題,所以我會把語言選擇的問題留給你.

初始的指令碼代碼 為了讓你回憶起以前的內容,列表A顯示了上一篇文章中資料庫物件的VBScript版本.

轉換到Visual Basic中來 將這段指令碼轉換成一個Visual Basic 組件並不困難.第一步當然是啟動Visual Basic.啟動後顯示的螢幕(除非你已經要求Visual Basic 不顯示它了)是A所示的建立工程對話方塊.注意到裡面有一個ActiveX dll選項.只需要選中這個選項然後單擊建立按鈕就可以產生一個新的所有屬性都設定成建立一個COM dll的Visual Basic工程.它會自動產生一個名叫Class 1的新類.

單擊"工程"菜單然後選擇"Project 1屬性"來開啟B所示的對話方塊.這裡,你可以改變工程的名字或是設定決定組件如何被編譯的選項.將工程命名為DBUtil然後選中"獨立運行"複選框".這個選項告訴Visual Basic這個組件沒有任何使用者互動過程.這基本上就是說所有的錯誤資訊和輸出都會輸出到事件記錄中去.其餘所有的設定都置為預設值然後單擊確定.

使你的類開始工作
既然你已經擁有了一個能夠啟動並執行COM組件了,那麼現在就是讓它參與工作的時候了.讓這個組件能在ASP中使用有幾步工作要做.第一步,修改架構(framework)中的pageDeclare.asp檔案來用一個object置標來引用這個剛剛編譯成功的組件(列表D).

Listing D
<%@ LANGUAGE="VBScript" %>
<object runat="server" progid="DBUtil.DBConnection" id="dbConnect"></object>
<%
option explicit

'<!--#include virtual="/includes/classes/dbAccess.asp"-->

dim gExpirePage
dim gPageTitle
dim gHeaderInclude
dim gBodyTagInclude

'dim dbConnect

'set dbConnect = new DBConnection

'Set defaults
gExpirePage = true
gPageTitle = ""
gHeaderInclude = ""
gBodyTagInclude = ""
%>

object置標是偉大的因為不象VBScript對象,dll在被使用以前不會被初始化.這樣做以後,如果你的頁面使用架構但並不需要dbConnect對象,它就不會引入任何多餘的動作.注意object置標指明了對象應該在伺服器上運行.這是必須的以便這個置標不會跑到瀏覽器那端去然後企圖在用戶端上建立這個對象.

要使這個組件工作的最後一件事情是在你電腦的註冊表裡註冊它.最好的方法是使用Microsoft Transaction Server (MTS),它實際上就是Windows 2000機器上的COM+.開啟控制台然後選擇管理工具.在管理工具中,雙擊元件服務表徵圖.用左邊的面板瀏覽"元件服務|電腦|我的電腦|COM+應用程式".單擊"COM+應用程式圖示"然後在上面按右鍵.從快顯功能表中選擇"建立|應用程式".隨著提示建立一個空的應用程式.然後,用任何你喜歡的名字命名這個應用程式並確保選擇了"伺服器應用程式(Server Application)"這一項.如果我們的組件需要訪問ASP對象,比如Application和Session,那麼這個選項就應該選擇"庫應用程式(Library Application)".但是對於資料庫訪問來說,"伺服器應用程式"是個更好的選項.

對於"應用程式標誌(Application Identity)"一項,只要你還在一個開發用的機器上並用是用IIS登入的話,你可以選擇"互動使用者(Interactive User)".如果這是一個沒有人登入的伺服器,你就需要申明一個使用者帳號.所以你需要建立一個應用程式和組件能夠使用的安全認證帳號.這對於一個管理了一個或多個域的伺服器來說將是複雜的配置過程,因此如果你能對這個測試過程使用"互動使用者"選項是最好不過的了.

現在,你應該能夠在左邊的面板裡瀏覽你新的程式並單擊你應用程式的組件檔案夾了.要註冊你的組件,只需要開啟一個Explorer視窗然後將dll拖動到元件服務視窗右邊的面板裡就行了.一個名字為DBUtil.DBConnection的表徵圖就會顯現出來,E所示.

只要你去掉"set dbConnect=nothing"這一行musiclist.asp檔案就準備運行了.這個調用已經失效,因為此時對象已經由MTS管理.一旦你刪除了那一行,musiclist.asp就會象以前那樣顯示出來.

總結
我希望本文向你展示了將一個VBScript對象轉換成一個Visual Basic編譯過的dll並將它用在你的ASP頁面裡是多麼的容易.如果我們從頁面裡將"set dbConnect = nothing"這句刪除,那麼從VBScript對象轉換成dll就只需要修改pageDeclare.asp檔案.

編譯後的組件還缺乏適當的錯誤處理代碼.既然它現在已經是一個Visual Basic對象了,那麼你就可以使用on error goto的方式來捕捉函數中發生的任何錯誤.一旦捕捉到了一個錯誤,你可以要麼報告這個錯誤,要麼將它記到事件記錄中去.在將來的幾節中,我們將探索如何編寫一個session對象並用常規的運算式來驗證資料.  

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.