設為首頁收藏本站

 取回密碼
 註冊
搜尋
熱搜: Redump discuz
檢視: 335|回覆: 0

【轉貼】 使用元件與物件

[複製連結]
發表於 2002年1月1日 12:26:05 | 顯示全部內容 |閱讀模式
使用元件與物件
COM 元件是建立強大而實用的 Web 應用程式的關鍵。 元件可以提供能讓您用在指令中執行專門化的工作,例如,執行金融交易或者驗證資料。 ASP 還提供一套基本元件,可以讓您用來大幅強化指令的能。

關於元件
COM 元件 是可以再使用、可程式化的建構區塊,裡面有執行一項工作或者一組工作所需的程式碼。 元件可以跟其他元件組合 (甚至跨越網路) 以建立一個 Web 應用程式。 COM 元件可以執行一般性的工作,所以您不必自行建立程式碼來執行這些工作。 例如,您可以利用股市跑馬燈元件將最新的股票行情顯示在 Web 網頁上。 不過,如果要建立能提供這種能的指令卻很困難。 而且,指令不能像元件那樣重複使用。

如果您是編寫指令的新手,便可以編寫採用元件的指令,而不必對元件的運作方式有任何認識。 ASP 附有您可以立即使用的基本元件。 例如,您可以用「ActiveX 資料物件」(ADO) 元件來新增資料庫到您 Web 網頁的連接。 其他元件還可以從協力廠商開發者處取得。

如果您是個 Web 應用程式開發者,元件是將您的企業邏輯納入可以重複使用、而且安全的模組中的最佳選擇。 例如,您可以從一個處理銷售訂單的指令呼叫這個元件,用一個元件來驗證信用卡號碼。 驗證獨立於訂單的處理作業之外,因此您可以在信用卡驗證處理變更時更新元件,而不必變更您的訂單處理作業。 此外,由於 COM 元件可以重複使用,所以您可以將元件再用於其他指令和應用程式中。 一旦將元件安裝在您的 Web 伺服器之後,便可以從一個 ASP 伺服器端指令、ISAPI 擴充能、伺服器上的另一個元件、或者以其他與 COM 相容的語言編寫的程式呼叫這個元件。

您可以用支援「元件物件模型」(COM) 的任何程式語言,例如 C、C++、Java、Visual Basic 或者各種指令語言來建立元件。 (如果您熟悉 COM 程式設計,就知道 COM 元件也稱為「自動化」伺服器)。 如果要在 Web 伺服器上執行,您的 COM 元件就不能有任何圖形化使用者介面元素,例如 Visual Basic 的 MsgBox 函數,圖形化介面元素只能在伺服器上檢視,而不能在瀏覽器上檢視。

建立一個元件物件的例項
元件是動態連結程式庫 (.dll) 或者可執行 (.exe) 檔中的可執行程式碼。 元件提供一個或多個物件,自成一體的程式碼可以在元件中執行特定的能。 每一個物件都有方法 (程式化的程序) 和屬性 (行為特性)。 如果要使用元件所提供的物件,就要建立一個物件的例項,並將新的例項指定給一個變數名稱。 使用 ASP 的 Server.CreateObject 方法或者 HTML <OBJECT> 標籤來建立物件例項。 而用您的指令編寫語言的變數指定陳述式給物件例項一個名稱。 建立物件例項時,必須提供其登錄名稱 (PROGID)。 至於 ASP 所提供的基本元件,您可以從參考頁面取得物件的 PROGID (請參?ASP 的可安裝元件)。

例如,Ad Rotator 元件會隨機輪換一系列圖形廣告。 Ad Rotator 元件提供的一個物件叫做 Ad Rotator 物件,其 PROGID 為 SWC.AdRotatorC 如果要建立 Ad Rotator 物件的一個例項,可以採用下列陳述式中的一種:

VBScript:

<% Set MyAds = Server.CreateObject("MSWC.AdRotator&quothttps://www.fishman.idv.tw/phpforum/thread-863-1-1.html %>
JScript:

<% var MyAds = Server.CreateObject("MSWC.AdRotator&quothttps://www.fishman.idv.tw/phpforum/thread-863-1-1.html %>
如果您已經熟悉 VBScript 或 JScript,請記得不要用指令語言函數建立新的物件例項 (VBScript 中的 CreateObject 或者 Jscript 中的 New)。 您必須用 ASP 的 Server.CreateObject 方法,否則 ASP 將無法追蹤您在指令中使用的物件。

您也可以用 HTML <OBJECT> 標籤建立一個物件例項。 您必須提供有 Server 值的 RUNAT 屬性,而且必須提供被設定給要用在指令中的變數名稱的 ID 屬性。 您可以利用登錄名稱 (PROGID) 或者登錄編號 (CLSID) 來指出物件。以下的範例利用登錄名稱 (PROGID) 建立 Ad Rotator 物件的一個例項:

<OBJECT RUNAT=Server ID=MyAds PROGID="MSWC.AdRotator"></OBJECT>
底下的範例利用登錄編號 (CLSID) 建立 Ad Rotator 物件的一個例項:

<OBJECT RUNAT=SERVER ID=MyAds
CLASSID="Clsid:1621F7C0-60AC-11CF-9427-444553540000"></OBJECT>
以編寫指令的方式建立 COM 元件
ASP 支援「Windows Script 元件」,這個強大的 Microsoft 指令編寫技術,可以讓您用來建立 COM 元件。 說得更明白一點就是,您可以將常用的指令,例如,那些用來進行資料庫存取或者產生內容的指令,納入可以從 .asp 檔案或程式存取的可重複使用的元件中。 您可以用 VBScript 或者 Jscript 之類的語言編寫指令,以建立「Windows Script 元件」,而不需要特殊的開發工具。 也可以將「Windows 指令元件」納入以 COM 程式語言如 Visual Basic、C++、或者 Java 編寫的程式中。

以下便是一個用 VBScript 編寫的「Windows 指令元件」的範例,定義用來轉換攝氏和華氏度數的方法:

<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 Function

Function Fahrenheit(C)
Fahrenheit = (9/5 * C) + 32
End Function

</SCRIPT>
</SCRIPTLET>
使用這個「Windows 指令 元件」之前,必須將這個檔案以 .sct 為副檔名儲存起來,然後在 [Windows 檔案總管] 中,在這個檔案上按一下滑鼠右鍵,並選取 [登錄]。 如果要在 Web 網頁中使用這個「Windows 指令元件」,則要使用像底下這樣的一個伺服器端指令:

<%
Option Explicit

Dim objConvert
Dim sngFvalue, sngCvalue

sngFvalue = 50
sngCvalue = 21

Set objConvert = Server.CreateObject("ConvertTemp.Scriptlet&quothttps://www.fishman.idv.tw/phpforum/thread-863-1-1.html
%>

<%= 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 內建物件
ASP 也提供可以執行有助於工作的內建物件,以簡化 Web 的開發。 例如,您可以用 Request 物件輕鬆地存取與 HTTP 要求有關的資訊,例如來自 HTML 表單或 cookie 的使用者輸入。 跟使用由 COM 元件提供的物件不同的是,您不必建立 ASP 內建物件的例項,就可以將它用在指令中。 ASP 要求開始進行處理時,就會自動為您建立這些物件。 存取內建物件的方法和屬性的方式,跟本文所描述的存取元件物件的方法和屬性的方式一樣。 若需有關內建物件的完整說明,請參?Active Server Pages 物件速查卡。

呼叫物件方法
所謂方法是指您可以在物件上、或者用物件執行的一個動作。 呼叫方法的語法如下:

Object.Method parameters

parameters 會因方法而有所不同。

例如,您可以如下列陳述式所示,利用 Response 內建物件的Write 方法傳送資訊給瀏覽器:

<% Response.Write "Hello World" %>
注意事項 某些指令語言不支援 Object.Method 語法。 如果您的語言不支援,就必須新增一個項目到登錄中,以便用該語言作為您的主要指令語言。 若需其他資訊,請參儘洏峆O語言。

設定物件屬性
所謂屬性是指用來描述物件的屬性。 屬性定義了物件的特性,例如物件的類型、或者描述物件的狀態,例如啟用或者停用。 其語法如下:

Object.Property

有時候您可以讀取和設定屬性的值。 除此之外,有些物件也可以新增屬性。

例如,Ad Rotator 元件有一個叫做 Border 的屬性,可以用來指定廣告是否要有邊界,以及決定邊界的寬度。 底下這個運算式表示不要邊界:

<% MyAds.Border = 0 %>
對於某些屬性,您可以用 ASP 輸出指引來顯示目前的值。 例如,如果瀏覽器還連接在伺服器上,下列陳述式會傳回 TRUE:

<%= Response.IsClientConnected %>
從 Java 類別建立物件
如果要用 Server.CreateObject 建立一個 Java 類別的例項,就必須用 JavaReg 程式將類別登錄成一個 COM 元件。 然後您便可以將 Server.CreateObject 方法或者一個 HTML <OBJECT> 標籤跟 PROGID 或 CLSID 配合使用。

另一種方法是,用 Java 別名 (moniker) 提供的機制直接為 Java 類別建立例項,而不使用 JavaReg 程式。 如果要以別名為類別建立例項,就要使用 VBScript 或 JScript 的 GetObject 陳述式,並以 java:classname 的格式提供 Java 類別的完整名稱。 下列這個 VBScript 範例會建立一個 Java Date 類別的例項。

<%
Dim dtmDate
Set dtmDate = GetObject("java:java.util.Date&quothttps://www.fishman.idv.tw/phpforum/thread-863-1-1.html
%>

The date is <%= dtmDate.toString() %>
以呼叫 GetObject 而不是呼叫 Server.CreateObject 的方式建立的物件也可以存取 ASP 內建物件,並參與異動。 不過,如果要使用 Java 別名,您必須使用 2.0 版或者更新版的 Microsoft 虛擬機器。

https://www.fishman.idv.tw/phpforum/thread-863-1-1.html
作者文章推薦
懶得打字嗎?讓本助手協助你 【使用進階編輯器請點選右方進階模式】
您需要登入後才可以回覆 登入 | 註冊

本版積分規則

手機版|Archiver|漁家小舖

GMT+8, 2024年12月22日 15:07 , Processed in 0.212266 second(s), 15 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回覆 返回頂端 返回清單