使用組件與對象(轉(zhuǎn)自IIS5.0文檔)
發(fā)表時(shí)間:2024-01-15 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]使用組件和對象COM 組件是建立強(qiáng)大而實(shí)際的 Web 應(yīng)用程序的關(guān)鍵。組件提供了在腳本中用來執(zhí)行專門任務(wù)的功能,如執(zhí)行金融交易或驗(yàn)證數(shù)據(jù)等。ASP 還提供有一套用以大大增強(qiáng)腳本性能的基本組件。 關(guān)于組件COM 組件是可重復(fù)使用的編程模塊,其中包含用于執(zhí)行一項(xiàng)或一組任務(wù)的代碼。組件可以(甚至通過網(wǎng)絡(luò)...
使用組件和對象
COM 組件是建立強(qiáng)大而實(shí)際的 Web 應(yīng)用程序的關(guān)鍵。組件提供了在腳本中用來執(zhí)行專門任務(wù)的功能,如執(zhí)行金融交易或驗(yàn)證數(shù)據(jù)等。ASP 還提供有一套用以大大增強(qiáng)腳本性能的基本組件。 關(guān)于組件
COM 組件是可重復(fù)使用的編程模塊,其中包含用于執(zhí)行一項(xiàng)或一組任務(wù)的代碼。組件可以(甚至通過網(wǎng)絡(luò))與其他組件合并,共同創(chuàng)建 Web 應(yīng)用程序。COM 對象執(zhí)行公共任務(wù)以便不必自己創(chuàng)建代碼來執(zhí)行這些任務(wù)。例如,可以在 Web 頁上使用股票接收機(jī)組件顯示最新的股價(jià)信息。不過,創(chuàng)建具有同樣功能的腳本并不輕松。同樣,腳本無法象組件一樣能夠重復(fù)利用。
如果您對腳本編輯還不太熟悉,可以編寫使用組件的腳本而無需了解組件的工作原理。ASP 中帶有可以立即使用的基本組件。例如,可以使用 ActiveX Data Objects (ADO) 組件向 Web 頁添加數(shù)據(jù)庫連接性。還可以從第三方開發(fā)商獲得其他組件。
如果您是 Web 應(yīng)用程序的開發(fā)人員,要將您的業(yè)務(wù)程序封裝為可重復(fù)使用的安全模塊,那么利用組件是最好的方法。例如,可以從處理銷售訂單的腳本中調(diào)用組件來驗(yàn)證信用卡號。由于驗(yàn)證獨(dú)立于該訂購過程,因此可以在信用卡驗(yàn)證過程發(fā)生變更時(shí)更新組件,而不必改動您的訂購過程。同樣,由于 COM 組件是可重復(fù)使用的,因此可以在其他腳本和應(yīng)用程序中重復(fù)利用。一旦在 Web 服務(wù)器中安裝了組件,便可以從 ASP 服務(wù)器端腳本 ISAPI 擴(kuò)展、服務(wù)器上的其他組件或用其他 COM 兼容語言編寫的程序中調(diào)用它。
可以用任何支持組件對象模型 (COM) 的編程語言(如 C、C++、Java、Visual Basic 或大量腳本編輯語言)創(chuàng)建組件。(如果熟悉 COM 編程的話,COM 組件也稱自動服務(wù)器)。要在 Web 服務(wù)器上運(yùn)行,COM 組件不能具有任何圖形用戶界面元素,如 Visual Basic 的 MsgBox 函數(shù);圖形用戶元素只可在服務(wù)器上查看,而不能在瀏覽器上查看。 創(chuàng)建組件對象的實(shí)例
組件是包含動態(tài)鏈接庫 (.dll) 或可執(zhí)行 (.exe) 文件的可執(zhí)行代碼。組件可提供一個或多個“對象”,這是一種自包含的代碼單元,可以在組件中執(zhí)行指定的功能。每個對象都具有方法(編程過程)和屬性(行為屬性)。要使用由組件提供的對象,可以創(chuàng)建對象實(shí)例并為新的實(shí)例分配變量名稱。使用 ASP 的 Server.CreateObject 方法或在 HTML 中使用 <OBJECT> 標(biāo)記可創(chuàng)建對象實(shí)例。使用腳本語言變量賦值語句可為對象實(shí)例指定名稱。創(chuàng)建對象實(shí)例時(shí),必須提供其注冊名 (PROGID)。對于 ASP 提供的基本組件,可以從參考頁(請參閱 ASP 中的可安裝組件)中獲得對象的 PROGID。
例如,Ad Rotator 組件可在以系列圖形廣告中進(jìn)行隨機(jī)旋轉(zhuǎn)。Ad Rotator 組件提供了一個對象,Ad Rotator 對象,其 PROGID 為“MSWC.AdRotator”。要創(chuàng)建一個 Ad Rotator 對象實(shí)例,可使用以下語句:
VBScript:<% Set MyAds = Server.CreateObject("MSWC.AdRotator") %>
JScript:<% var MyAds = Server.CreateObject("MSWC.AdRotator") %>
如果熟悉 VBScript 或 JScript,請注意不要使用腳本語言函數(shù)創(chuàng)建新的對象實(shí)例(VBScript 中為“CreateObject”;JScript 中為“New”)。必須使用 ASP 的 Server.CreateObject 方法,否則,ASP 將無法跟蹤腳本中對象的使用情況。
還可以使用 HTML 的 <OBJECT> 標(biāo)記創(chuàng)建對象實(shí)例。必須提供帶有 Server 值的 RUNAT 屬性,同時(shí)還應(yīng)提供 ID 屬性以設(shè)置將在腳本中使用的變量名稱。使用注冊名 (PROGID) 或注冊碼 (CLSID) 都可以標(biāo)識對象,以下示例使用注冊名創(chuàng)建 Ad Rotator 對象的實(shí)例:<OBJECT RUNAT=Server ID=MyAds PROGID="MSWC.AdRotator"></OBJECT>
以下示例使用注冊碼 (CLSID) 創(chuàng)建 Ad Rotator 對象的實(shí)例:<OBJECT RUNAT=SERVER ID=MyAdsCLASSID="Clsid:1621F7C0-60AC-11CF-9427-444553540000"></OBJECT> 使用腳本創(chuàng)建 COM 組件
ASP 支持 Windows Script Components,這是 Microsoft 提供的用來創(chuàng)建 COM 組件的功能強(qiáng)大的腳本技術(shù)。尤其是,您可以將用于數(shù)據(jù)庫訪問或內(nèi)容生成等的通用腳本封裝在可重復(fù)利用的組件中,以便在任何 .asp 文件或程序中使用。無需特殊的開發(fā)工具,使用 VBScript 或 JScript 編寫腳本即可創(chuàng)建 Windows 腳本組件。也可以將 Windows 腳本組件與使用 COM 兼容編程語言編寫的程序相結(jié)合,如 Visual Basic、C++ 或 Java 等。
下面是一個用 VBScript 編寫的腳本示例,它定義了將華氏溫度值轉(zhuǎn)換為攝氏溫度值的方法:<SCRIPTLET><Registration Description="ConvertTemp" ProgID="ConvertTemp.Scriptlet" Version="1.00"></Registration><implements id=Automation type=Automation> <method name=Celsius> <PARAMETER name=F/> </method> <method name=Fahrenheit> <PARAMETER name=C/> </method></implements><SCRIPT LANGUAGE=VBScript>Function Celsius(F) Celsius = 5/9 * (F - 32)End FunctionFunction Fahrenheit(C) Fahrenheit = (9/5 * C) + 32End Function</SCRIPT></SCRIPTLET>
在執(zhí)行該 Windows 腳本組件之前,必須以 .sct 為擴(kuò)展名保存該文件,然后在“Windows 資源管理器”中,右鍵單擊該文件并選擇“注冊”。要在 Web 頁中使用該 Windows 腳本組件,應(yīng)使用類似以下所示的服務(wù)器端腳本:<%Option ExplicitDim objConvertDim sngFvalue, sngCvaluesngFvalue = 50sngCvalue = 21Set objConvert = Server.CreateObject("ConvertTemp.Scriptlet")%><%= sngFvalue %> degrees Fahrenheit is equivalent to <%= objConvert.Celsius(sngFvalue) %> degrees Celsius<BR><%= sngCvalue %> degrees Celsius is equivalent to <%= objConvert.Fahrenheit(sngCValue) %> degrees Fahrenheit<BR>使用 ASP 內(nèi)建的對象
ASP 還提供有執(zhí)行簡化 Web 開發(fā)任務(wù)的內(nèi)建對象。例如,可以使用 Request 對象輕松訪問與 HTTP 請求相關(guān)聯(lián)的信息,如從 HTML 表單或 cookie 中得到的用戶輸入等。與使用 COM 組件所提供的對象不同,在腳本中使用實(shí)例時(shí)無需創(chuàng)建 ASP 內(nèi)建對象的實(shí)例。這些對象在開始處理 ASP 請求時(shí)將自動創(chuàng)建。使用內(nèi)建對象的方法和屬性與使用組件對象的方法和屬性的方式(已在上一主題中說明)相同。關(guān)于內(nèi)建對象的完整說明,請參閱 Active Server Pages 對象快速參考卡。 調(diào)用對象方法
“方法”是可在對象上或使用對象執(zhí)行的操作。調(diào)用方法的語法為:
Object.Method parameters
parameters 根據(jù)方法的不同而有所不同。
例如,可以使用 Response 內(nèi)建對象的 Write 方法將信息發(fā)送到瀏覽器,如以下語句所示:<% Response.Write "Hello World" %>
注意 某些腳本語言不支持 Object.Method 語法。如果使用的語言不支持,必須添加注冊表?xiàng)l目以便將該語言作為主腳本語言。詳細(xì)信息,請參閱使用腳本語言。 設(shè)置對象屬性
“屬性”用于說明對象的特征。屬性定義對象類型等對象特征,或說明啟用或禁用等對象狀態(tài)。語法為:
Object.Property
有時(shí)可以讀取和設(shè)置屬性的值。此外,某些對象可以添加新的屬性。
例如 Ad Rotator 組件具有屬性 Border,它用于指定廣告是否具有邊框并確定邊框的粗細(xì)。下面的表達(dá)式指定不使用邊框:<% MyAds.Border = 0 %>
對于某些屬性,可以使用 ASP 輸出命令來顯示當(dāng)前值。例如,以下語句在瀏覽器仍與服務(wù)器連接時(shí)返回 TRUE:<%= Response.IsClientConnected %>從 Java 類中創(chuàng)建對象
要使用 Server.CreateObject 創(chuàng)建 Java 類的實(shí)例,必須使用 JavaReg 程序?qū)㈩愖詾?COM 組件。然后便可使用 Server.CreateObject 方法或 HTML 的<OBJECT> 標(biāo)記和 PROGID 或 CLSID。
作為選擇,還可以使用 Java monikers 提供的機(jī)制直接實(shí)例化 Java 類,而不使用 JavaReg 程序。要通過 monikers 將類實(shí)例化,可使用 VBScript 或 JScript 的 GetObject 語句,并提供 Java 類的完整名稱,格式為:java:類名。下面的 VBScript 示例將創(chuàng)建 Java Date 類的實(shí)例。<%Dim dtmDateSet dtmDate = GetObject("java:java.util.Date")%>日期是 <%= dtmDate.toString() %>
由調(diào)用 GetObject 代替 Server.CreateObject 而創(chuàng)建的對象也可使用 ASP 內(nèi)建的對象并參與事務(wù)操作。要使用 Java monikers,必須使用 Microsoft 虛擬機(jī)的 2.0 版或更高版本。