關於用COM封裝ASP代碼的文章,建議加入精華區

來源:互聯網
上載者:User
封裝|精華 ActiveX是微軟提出的廣泛應用於Windows系列的一種代碼封裝技術,提高了程式碼的可重用性,加快了程式項目的開發速度,一般被稱為“組件”。在VB6的整合式開發環境當中,我們可以看到一下幾種ActiveX項目:

  1、ActiveX EXE

  這是在“過程外”啟動並執行ActiveX/COM伺服器組件,也就是說他們啟動並執行過程和初始化組件的客戶機代碼不同。儘管可以用ASP訪問ActiveX EXE,但是不推薦改動IIS元庫,該庫允許所有的可執行檔由伺服器上啟動並執行指令碼代碼啟動。

  2、ActiveX OCXs

  這些特殊的組件把主應用程式顯示和操作組件所需的附加支援包含在GUI環境中。還可以把OCX組件放在網頁當中。但是,OCX是應用程式介面,不可以使用ASP來建立的。

  3、ActiveX文檔DLL和ActiveX文檔EXE

  Active文檔可以在OLE檔案箱應用程式中,例如IE或者Office Binder,顯示VB表單。但他們在ASP不能應用。

  4、ActiveX DLLs

  這些ActiveX/COM組件和初始化組件的客戶機在同一個進程中運行。而我們要討論的ActiveX DLL正是整個組件。一般微軟的附加組件和其他的一些第三方廠家提供的各種組件都是這種類型的ActiveX DLL,但是並不全是使用VB編寫的,同樣可以使用VC/JAVA等等語言來開發。

  探討完了什麼是ActiveX DLL,我們開始正式編寫我們自己的ActiveX DLL,以便來實現ASP中的同樣功能,眾所周知,ASP內建了Response、Request、Server、Session、Application五個對象,其實這五個內建對象正是IIS控制台初始化的五個ActiveX DLL組件,既然IIS可以初始化這五個組件用於ASP中,我們當然也可以直接在我們的ActiveX DLL中引用這些組件來實現我們的編程,也就是說我們可以在VB應用程式中通過引用這些組件來實現訪問ASP內建對象的功能。

  只要你安裝了PWS4或者IIS4以上的WEB伺服器,你就擁有了一個名稱叫做“Microsoft Active Server Pages Object”的物件程式庫,我們可以在VB的ActiveX DLL應用中引用這個物件程式庫,通過引用這個物件程式庫,我們就獲得了一個對象(類):ScriptingContext,這個對象也正是我們整個文章探討的核心對象。物件程式庫內的關係如下:

  物件程式庫      類        類成員

  ASPTypeLibrary ScriptingContext Application

                    Request

                    Response

                    Session

                    Server

  通過上面的關係圖,我們就可以很容易理解類ScriptingContent。下面我們來看一個具體的例子吧:

  1、 使用VB6建立一個新的ActiveX DLL項目

  2、 引用“Microsoft Active Server Pages Object”物件程式庫。

  3、 建立兩個組件事件:OnStartPage以及OnEndPage

  4、 在事件OnStartPage中建立類ScriptingContent的一個引用。

  5、 執行個體化類ScriptingContent。

  Test.cls (類實現)

  '對象的聲明

  Dim rp as Response

  Dim rq as Request

  Dim ap as Application

  Dim sr as Server

  Dim sn as Session

  '當組件被建立的時候會觸發這個事件

  Public Sub OnStartPage(mysc as ScriptingContent)

   '進行對象的執行個體化

   set rp=mysc.Response

   set rq=mysc.Request

   set sr=mysc.Server

   set ap=mysc.Application

   set sn=mysc.Session

   rp.write "<br>ActiveX DLL組件已經被建立了!<br>"

  End Sub

  '當組件被銷毀的時候觸發這個事件

  Public Sub OnEndPage()

   Rp.write "<br>ActiveX DLL組件已經被銷毀!<br>"

   '銷毀對象

   Set rp=nothing

   Set rq=nothing

   Set sr=nothing

   Set ap=nothing

   Set sn=nothing

  End Sub

  '定義我們自己的一個組件方法

  Public Sub HelloWorld()

   Rp.write "<H1>Hello,World!</H1>"

  End Sub

  這樣,我們就建立可以訪問ASP內建對象的ActiveX DLL了。我們命名這個組件項目為first,在VB中間編譯這項目成為一個DLL檔案first.dll,並且我們在系統中註冊這個DLL檔案。接下來,我們需要一個簡單的幾乎沒有什麼代碼的ASP程式來調用這個組件:

  test.asp

  <html>

   <head>

    <title>測試ActiveX DLL</title>

   </head>

   <body>

  <%

  Dim testme

  '建立我們剛才編譯成功的組件,一旦建立這個組件,同時會在葉面輸出文字“ActiveX DLL組件已經被

  '建立了!”

  set testme=server.createobject("first.test")

  '調用組件的方法

  testme.HelloWorld

  '登出組件,在登出的同時,會自動在葉面顯示“ActiveX DLL組件已經被銷毀!”

  set testme=nothing

  %>

   </body>

  </html>

  通過上面簡單的例子,我們可以看到使用ActiveX DLL同樣可以實現和ASP同樣的功能,並且帶來的代碼保密和程式運行更加高效的優點。ActiveX DLL和純ASP有著各自的優點和缺點,只要我們合理的運用這兩種技術,比如適當的將商業邏輯封裝在ActiveX DLL中,或者在需要保密的地方使用DLL封裝技術,一定可以編寫出高效快速的WEB應用程式。

  (以上程式在VB6企業版、Windows2000 Server中文版測試通過)




相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.