熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

如何在ASP代碼中調用VB組件的方法

2013-11-13 10:08:28  來源: .NET編程 

  本篇文章通過與傳統的設計方法相比較介紹了如何在ASP代碼中調用VB組件的方法在本篇文章中我們假設讀者具有VB和ASP的相關入門知識
  
  服務器端組件和客戶端組件的比較
  
  服務器端組件和客戶端組件有許多不同之處服務器端組件是在計算機服務器上注冊的DLL文件客戶端組件則在浏覽器運行的計算機上注冊在IE中這些客戶端組件被稱作ActiveX浏覽器插件組件
  
  ActiveX客戶端組件可以使用VB編寫並通過互聯網或內聯網發送給浏覽器生成很精彩的效果問題是ActiveX客戶端組件只限於IE而使用VB編寫的服務器端組件則能夠產生純HTML代碼適用於所有的浏覽器服務器端組件的最大問題是該組件必須在Windows+IIS環境中或與IIS的API兼容的應用中運行相比較而言在服務器端實現這種兼容性似乎更容易一些
  
  IIS服務器端組件駐留在與IIS相同的內存空間中並隨時准備服務器上處理的ASP網頁的調用從理論上說我們可以在返回浏覽器的ASP代碼中插入任何文本或代碼但一般來說大多數服務器端組件被用來處理需要大量時間的計算或數據庫信息查找然後將所得到的結果以HTML代碼的形勢返回給浏覽器
  
  VB組件的解析
  
  由於本篇文章旨在討論編寫VB組件的基本方法因此在能夠說明問題的情況下其中的例子將是十分簡單的在詳細討論編寫VB組件之前我們將首先從概念上對VB組件作一番剖析
  
  在使用VB編寫服務器端的組件時有三個分層次的概念(在VB和ASP代碼中都會用到)需要注意
  
  ·Project名字
  
  ·Class名字
  
  ·Method名字
  
  VB工程的名字就是Project名字許多開發人員都將Project名字看作是組件名字但VB只將它看作是工程的名字在我們的例子中Project名字是ExampleProject當然了我們可以隨意命名自己的工程名字Class名字名字是ExampleClassMethod名字是ExampleMethod
  
  工程名字(組件名字)也可以是由組件代碼編譯後得到的DLL文件的名字該DLL文件將包含有被IIS用來向浏覽器返回文本或HTML代碼的經過編譯的VB代碼
  
  方法名字指的是管理特定代碼功能的VB代碼部分例如計算日期或顯示數據庫中所有作者的清單組件方法有點角個黑盒子它完成特定的工作或根據輸入的信息返回特定的信息一般情況下在一個組件中可以有多個方法為了更有效地管理組件的方法可以將方法按照相似的分類組合在一起這就是組件類的作用
  
  組件類能夠在內存中生成組件類代碼的一個拷貝在使用ASP代碼創建對象時它也被稱作對象這就是實例化一旦有了組件類代碼實例的對象引用我們就可以從ASP代碼中調用類中包含的方法
  
  在我們的例子中工程方法的名字將用來在ASP代碼中實例化VB組件並以方法參數的形式從ASP代碼中向VB代碼傳送值在ASP代碼中接收從VB方法中返回的值
  
  從ASP文件中調用VB組件
  
  我們用來調用VB組件的ASP文件將使用對象變量保存VB對象的引用在ASP文件中可以使用ASP Server對象的CreateObject()方法創建一個對象該方法將返回一個它創建的對象的引用在例子中我們將使用objReference作為組件的對象變量下面的代碼顯示ASP代碼在實例化VB組件時需要使用組件的工程名和類名(ExampleProject和ExampleClass)
  
  實例化VB組件的ASP代碼
  
  Set objReference = ServerCreateObject(ExampleProjectExampleClass) 
  
  
  VB組件將從ASP代碼中接受個變量的值並向ASP代碼返回一個值該值將存儲在名字為strMethodReturn的ASP變量中下面的代碼顯示出ASP代碼是如何得到由VB組件返回的值的它向VB方法傳送三個名字分別為ParamParam和Parma的三個參數值
  
  strMethodReturn = objReferenceExampleMethod(Param Param Param)
  
  ParamParamParam這三個參數必須與VB組件中方法的定義完全相同下面是二行實例化VB組件的類並調用類的方法獲得返回值的ASP代碼的例子
  
  Set objReference = ServerCreateObject(ExampleProjectExampleClass)
  strMethodReturn = objReferenceExampleMethod(Param Param Param)
  
  下面的圖表直觀地顯示了VB組件的工程類和方法名字是如何與ASP文件中的組件實例化代碼協調的在逐步地學習如何編寫例子中的VB代碼和ASP文件時可以將下面的圖表作為參考
  
 

  VB方法的作用
  
  我們例子中簡單的VB組件將獲得用戶的名字和年齡然後返回一個以天計的用戶的年齡而且有一個可選項能夠提醒某個用戶是否已經超過了
  
  如果我們向組件傳送一個虛構的Eric Clapton作為方法的第一個參數值將第二個參數設置為我們將得到下面的返回字符串
  
  Eric Clapton is over days old
  
  如果我們將可選的第三個參數設置為True(這一參數將使方法判斷用戶是否已經超過歲)我們將會得到下面的返回字符串
  
  Eric Clapton is over days OLD
  
  由於使用了三個完全不同的變量━━用戶的姓名年齡以及表示他們是否超過了因此我們需要使用三個方法參數將這些信息從ASP文件傳送給VB代碼在VB中考慮要使用哪些數據類型是十分重要的我們將使用一個名字為strName的字符串型變量表示用戶的姓名名字為intAge的整型變量表示用戶的年齡名字為blnAgeEmphasisOn的布爾型變量表明用戶是否已經超過了
  
  三個方法參數(傳送給VB組件的方法代碼的變量)
  

  在VB中創建服務器端組件
  
  啟動VB後新工程窗口中雙擊ActiveX DLL圖標一旦VB加載了新的ActiveX DLL工程至少會看到二個打開的窗口工程窗口和屬性窗口如果有一個窗口顯示不出來可以從VB的菜單中選擇查看菜單項(分別使用查看>工程管理器查看>屬性窗口
  
  由於VB對第一個工程和類的缺省命名分別是ProjectClass我們可以將它們分別改為ExampleProject 和ExampleClass工程名字的修改可以在工程窗口中進行在工程窗口中新輸入的工程名字左側有一個帶有+或的小方框如果顯示的是+號選擇該小方框+號就會變成缺省的類名(Class)就會顯示在工程名字的下面在工程窗口中選擇缺省的類名在屬性窗口中將缺省的類名修改為ExampleClass
  
  在保存工程時VB會將包含類的代碼保存在一個擴展名為CLS的文件工程文件的擴展名為VBP其中存儲有工程的各種設置文件名和文件存儲的位置
  
  服務器端組件的屬性值
  
  在屬性窗口中顯示ExampleClass類的屬性注意Instancing屬性的值為 MultiUse如果將工程的類型設置為標准的EXE工程該屬性的值就會隨之發生改變
  
  在VB的菜單中選擇工程>ExampleProject屬性就會顯示出工程屬性窗口常規標簽的右下端的線程模式屬性的值應當被設置為單元線程這將使多個訪問者能夠同時使用我們的組件類的不同的實例另外選擇無人值守執行駐留內存二個選項避免VB中的內存洩露問題
  
  VB方法的代碼
  
  現在我們就需要使用VB的代碼窗口來輸入VB代碼了如果代碼窗口還是一片空白那就輸入下面的代碼好了
  
  Option Explicit
   它將要求我們必須定義所有的變量
   
   Public Function ExampleMethod(ByVal strName As String _
              ByVal intAge As Integer _
         Optional ByVal blnAgeEmphasisOn As Boolean = False) As String
  
  在上面的代碼中我們將方法定義成了一個Public函數這意味著該組件之外的任何代碼都能夠調用它由於是一個函數它還會向調用它的代碼返回一個值
  
  Public Function ExampleMethod() As String 
  
  
  上面的代碼表示ExampleMethod()函數將向它的調用者返回一個字符串類型的值
  
  我們的VB方法帶有個從ASP代碼接受值的參數變量最後一個參數變量是可選的所有用來從VB組件之外接收值的參數變量都需要在VB方法的括號間定義和使用我們可以象在方法內定義的變量那樣使用以這種方式定義為方法參數的變量二者之間唯一的區別是外面的ASP代碼來決定它們的值
  
  下面是三個變量和它們的數據類型
  
  
     ByVal strName As String
      ByVal intAge As Integer
   Optional ByVal blnAgeEmphasisOn As Boolean = False
  
  上面的代碼定義了三個方法參數的數據類型指明它們是按值傳送的而且第三個參數是可選的如果沒有第三個參數則其缺省值為False
  
  然後我們將在方法的定義中添加一些必要的逗號空格和底劃線(_)這樣才能符合VB的語法要求我們將把參數列表放在方法定義的括號中間得到的方法定義如下
  
  Public Function ExampleMethod(ByVal strName As String _
               ByVal intAge As Integer _
          Optional ByVal blnAgeEmphasisOn As Boolean = False) As
From:http://tw.wingwit.com/Article/program/net/201311/12678.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.