- Login
帳號:
密碼:
ASP MENU
線上教學
   ASP 教學
VB.NET 教學
JSP 教學
JAVA 教學
完整 ASP 教學
程式下載
   ASP 程式下載
提供 ASP 程式
程式量身訂做
   收費標準
填寫需求表
討論交流專區
   程式討論區
電腦資訊交流
工作機會
   社會人就職情報
汎亞人力銀行
大台中人力銀行
大高雄人力銀行
相關連結
   ASP 虛擬空間
ASP 相關網站
聯絡我們
   意見信箱
加入會員程式討論區線上購物回首頁
ASP 教學
[轉貼] 如何把ASP編寫成DLL

這篇文章主要是把ASP代碼變成組件,開發者不僅是加快了ASP的速度,而且也能保護自己的代碼.下面,我們會來編寫一個非常簡單的組件,重點是知道怎樣開發DLL組件,而不是其復雜的代碼!這些都要靠你們自己以后的努力了.

服務器端組件

首先,服務器端的組件要有別於客戶端的組件.客戶端的組件是通過網絡傳輸,依靠HTML來起作用.而且只能在IE上有用.但是服務器端的組件是運行在服務器端,它在服務器上執行各種操作.因此,所有的瀏覽器都能享用,它依靠的是服務器而不是瀏覽器.

當IIS被請求執行一個ASP程序,它首先會在ASP文件中找到  〈%  %>標簽之間的代碼,並且執行它(也可以是〈script  runat=server>〈/script>之間的代碼).如果這個ASP程序在先前被調用過,那麼它就會用記憶體中的編譯過的程序來向使用者返回HTML代碼,如果沒有,那麼它就重新編譯.這里ASP就比CGI多一點速度優勢,因為CGI是每一個請求都使用一個線程.這樣就大大消耗了服務器的資源.

想不想你寫的程序自己就能在IIS運行!?!現在你就行了!使用VB5(當然現在是VB6了),你就能建立Dynamic  Linked  Libraries  (DLL  文件),它能在IIS上直接運行(如果有asp文件來請求的話).

系統和軟體的要求

你需要一個32位的操作系統來運行ASP.當然你也得安裝IIS或PWS.我們下面的程序是在windows95+PWS+VB5的環境下開發的.

我們開始吧

啟動你的VB,選擇ActiveX圖標.這個圖標可以在新建工程找到!VB會提供一個預設的工程名(project1)和類名(class1).我們會將這兩個名字都改掉.在改名之前,請首先確認我們擁有Microsoft  Active  Server  Pages  Object  Library,它在我們的程序非常有用.從功能表中選擇"工程",然后在其中選擇"引用",就會出現"引用"視窗
從中選擇Microsoft  Active  Server  Pages  Object  Library.

給工程和類命名

現在我們來根據自己的愛好來為project1和class1來命名吧!給它們命名也是很重要的,我們以后會用這個工程名和類名來創建這個組件的實例!后面詳細介紹.

如何改名,我就不想多說了!
我們的工程名改為Exmaple,類名為Helloword

怎樣使用工程和類

現在我們有了我們自己的工程(Example1)和類名(HelloWorld).以后我們就會在ASP代碼中使用它們的名字來引用這個組件.在ASP中我們就這樣引用,如下:

Set  ObjReference  =  Server.CreateObject("ProjectName.ClassName")

對於我們工程的引用就是:
Set  ObjReference  =  Server.CreateObject("Example1.HelloWorld")
現在我們就能用ObjReference來調用我們在組件中所創建的函數,子程序.下面我們會來寫一個SayHello的子程序,  我們執行它的代碼如下:


〈%
Set  ObjReference  =  Server.CreateObject("Example1.HelloWorld")
ObjReference.SayHello
%>


為了在Helloword類中使用ASP的方法,你必須在此類中寫一個OnStartPage
子函數.如下:  


Public  Sub  OnStartPage(PassedscriptingContext  As  scriptingContext)
Set  MyscriptingContext  =  PassedscriptingContext
End  Sub


現在,無論什麼時候使用者訪問一個帶有本組件的ASP文件,IIS就會把scriptingContext傳送給我們的對象請我們使用.這個scriptingContext包括了全部的ASP方法和屬性.實現上,這使得我們有能力訪問所有ASP的對象.看下面的代碼:


Public  Sub  OnStartPage(PassedscriptingContext  As  scriptingContext)
Set  MyscriptingContext  =  PassedscriptingContext
Set  MyApplication  =  MyscriptingContext.Application
Set  MyRequest  =  MyscriptingContext.Request
Set  MyResponse  =  MyscriptingContext.Response
Set  MyServer  =  MyscriptingContext.Server
Set  MySession  =  MyscriptingContext.Session
End  Sub


以后我們就能用在VB中用MyApplication  來代替ASP中的Application,同理可以代替Request,Server.....,不過我們來是要在  OnStartPage之前來申明這些變量:


Private  MyscriptingContext  As  scriptingContext
Private  MyApplication  As  Application
Private  MyRequest  As  Request
Private  MyResponse  As  Response
Private  MyServer  As  Server
Private  MySession  As  Session


使用ASP的對象
我們的變量現在就能像標準的ASP對象來使用了!比如,我們經常在ASP中用Request.form()來收集提交表單的資料.現在我們在我們的VB中實現這個功能,代碼如下:

用ASP中實現:
〈%
MyTempVariable  =  Request.Form("userName")
Response.Write  ("you  entered  "&  MyTempVariable  &  "as  your

  user  name")
%>


在VB中實現:  


MyTempVariable  =  MyRequest.Form("userName")
MyResponse.Write  ("you  entered  "&  MyTempVariable  &  "as  your

  user  name")


通過使用MyResponse來代替Response,我們能夠使用所有Response的方法,當然,MyResponse這個名字可以隨便來取,你甚至可以就取Response.
另一件我們得注意的是,我們得在我們的建立的類中,寫上OnEndPage子函數,這個OnStartPage是相反的!OnStartPage是創建對象,OnEndPage是消毀對象.


Public  Sub  OnEndPage()
Set  MyscriptingContext  =  Nothing
Set  MyApplication  =  Nothing
Set  MyRequest  =  Nothing
Set  MyResponse  =  Nothing
Set  MyServer  =  Nothing
Set  MySession  =  Nothing
End  Sub


SayHello方法
我們來建立一個子函數,用於顯示"Holle  World".這個SayHello方法只是HelloWorld這個類中一個子函數,我們以后會在ASP中用以下的顯示這個方法


〈%
Set  ObjReference  =  Server.CreateObject("Example1.HelloWorld")
ObjReference.SayHello
%>


SayHello的程序,很簡單的!

Public  Sub  SayHello()
MyResponse.Write  ("Hello  World")
End  Sub


現在一個小型的組件編寫完成,剩下的工作就是編譯這個組件,在"工程"功能表中保存它,取什麼名字都可以,我們用Exmaple1.vbp吧!  然后就用在功能表中選擇"make  exmaple1.dll",將其編譯成DLL文件.一個組件就真正完成了!


注意,編譯了此組件那麼你就得先把你的PWS關掉,然后再編譯此組件.否則VB就會告訴你些組件在使用中.

在ASP中使用我們的自己的組件.

當你更正了在編譯中的錯誤,成功地編譯了example1這個工程,現在你就得拿出你最喜歡的HTML編輯器來寫下下面的語句,保存為ASP文件.


〈HTML>
〈HEAD>
〈TITLE>Example  1〈/TITLE>
〈/HEAD>

〈BODY>

〈%
Set  ObjReference  =  Server.CreateObject("Example1.HelloWorld")
ObjReference.SayHello
%>

〈/BODY>
〈/HTML>

運行后即可看到結果:

Hello  World

注冊組件

如果你想和你的朋友,鄰居分享你的組件,那麼你就得在你的系統上注冊你的組件.我們一般使用Regsvr32.exe來注冊組件.注冊后你的組件會出現在Win95/Win98的windows/system目錄中.下面是一個注冊的例子:

Regsvr32.exe  C:/wwwroot/Example1/Example1.dll


在你的系統中,VB會自動給你注冊,所以你很少用到Regsvr32.exe

我們這里只是寫了一個非常小的組件,你們可以寫好自己的更大的組件,而且還可以用VB中的很多控件.




頂端
本網頁最佳瀏覽模式為:瀏覽器 IE4.0 以上    解析度: 800 x 600
Copyright © 2000-2017 COOLASP All Rights Reserved