標題標題  顯示論壇會員列表名單  搜索論壇搜索  HelpHelp
  注冊注冊  登入登入
電腦綜合討論區
 DoReMe : 電腦綜合討論區
主題 話題: 動手寫個小元件(元件入門) 回復發表新主題
作者
貼子內容 << Prev Topic下一個主題 >>
bababa
Groupie
Groupie


加入: 2004/5月/29
Online Status: Offline
回復: 46
Posted: 2004/5月/29 3:54下午 | IP記錄 引用 bababa

這篇文章主要是為想將自己的ASP水平提高的人寫的! 把ASP程式碼變成元件,開發者不僅是加快了ASP的速度,而且也能保護自己的程式碼.這篇文章寫出來,也是為了給想開發元件網 友上一堂入門課!

  下面,我們會來編寫一個非常簡單的元件,重點是知道怎樣開發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,它在我們的程式非常有用.從選單中選擇"工程",然後在其中選擇"引用",就會出現"引用"視窗,從中選擇Mi crosoft 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的子 程式, 我們執行它的程式碼如下:

  為了在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中實現:

在VB中實現:

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


  通過使用MyResponse來代替Response,我們能夠使用所有Response的方法,當然,MyRespons e這個名字可以隨便來取,你甚至可以就取Response.
另一件我們得注意的是,我們得在我們的建立的類中,寫上OnEndPage子函數,這個OnStartPage是相反的!OnS tartPage是創建對像,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中用以下的顯示這個方 法

SayHello的程式,很簡單的!


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


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

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

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

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

執行後即可看到結果:

Hello World

註冊元件

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

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

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

  我們這裡只是寫了一個非常小的元件,你們可以寫好自己的更大的元件,而且還可以用VB中的很多控件.
Back to Top 查看 bababa's 資料 搜索其他貼子 bababa 訪問 bababa's
 

如果你想回復的話你必須首先 login
如果你還沒有注冊的話你必須首先 注冊

  回復發表新主題
顯示可打印的頁面 顯示可打印的頁面

論壇跳轉
不能 張貼新論題在這個討論版
不能 回應論題在這個討論版
不能 刪除你的發言在這個討論版
不能 編輯你的發言在這個討論版
不能 新增投票標題在這個討論版
不能 在這個討論版投票

Edit by doreme Forums version 2004
Welcome ©2001-2004 doreme Guide

This page was generated in 0.6875 seconds.

 
保養品
保養品, Skin Care
www.elady.tw
Makeups Wholesale
Wholesale Cosmetics SkinCares
lungjyi.com
保養品批發
名牌保養品、保養品批發
www.perfume.com.tw/skincare
Wholesale Perfumes
Fragrances Perfumes Wholesale
lungjyi.net