如何把asp編寫成dll
動手寫個小組件(元件入門)
主題下面,我們會來編寫乙個非常簡單的元件,重點是知道怎樣開發dll元件,而不是其複雜的**!這些都要靠你們自己以後的努力了.
伺服器端元件
首先,伺服器端的元件要有別於客戶端的元件.客戶端的元件是通過網路傳輸,依靠html來起作用.而且只能在ie上有用.但是伺服器端的元件是執行在伺服器端,它在伺服器上執行各種操作.因此,所有的瀏覽器都能享用,它依靠的是伺服器而不是瀏覽器.
當iis被請求執行乙個asp程式,它首先會在asp檔案中找到 <% %>標籤之間的**,並且執行它(也可以是之間的**).如果這個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 myrequest = myscriptingcontext.request
set myresponse = myscriptingcontext.response
set myserver = myscriptingcontext.server
set mysession = myscriptingcontext.session
end sub
private myscriptingcontext as scriptingcontext
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 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檔案.
<%
set objreference = server.createobject("example1.helloworld")
objreference.sayhello
%>
執行後即可看到結果:
hello world
註冊元件
如果你想和你的朋友,鄰居分享你的元件,那麼你就得在你的系統上註冊你的元件.我們一般使用regsvr32.exe來註冊元件.註冊後你的元件會出現在win95/win98的windows/system目錄中.下面是乙個註冊的例子:
regsvr32.exe c:/wwwroot/example1/example1.dll
在你的系統中,vb會自動給你註冊,所以你很少用到regsvr32.exe
我們這裡只是寫了乙個非常小的元件,你們可以寫好自己的更大的元件,而且還可以用vb中的很多控制項.
vb製作dll供asp呼叫
啟動vb6.0,新建 active dll工程。單擊 工程 引用,選擇 microsoft active server pages object library 和 microsoft activex data objects 2.1 library 兩項。將類模組的名稱改為dcss.將工程的名稱 ...
在vb,vc中呼叫vb編寫的DLL
假設用vb編寫了乙個activex 元件,名稱為bioxsend,裡面生成乙個類test,類裡面有乙個方法hello 並且已經在電腦上註冊,下面分別描述怎樣在vb和vc中呼叫。1.vb呼叫 1 方法1 直接在project reference裡引用該dll,然後在使用時宣告就可以了,如下 dim a...
使用VB編寫純ASP程式
前幾天大哥對我說,使用asp真麻煩,編譯環境實在是差勁,他總是在vb裡面寫好除錯好 然後在把 貼上到asp程式中,為此,我在這提出乙個解決之道。使用vb接替asp所有的物件,在vb中編寫純粹的asp程式。下面是詳細的步驟 1。在vb中新建乙個activex dll.其中那些命名專案 類的過程我就省略...