台灣最大程式設計社群網站
線上人數
1274
 
會員總數:246227
討論主題:189787
歡迎您免費加入會員
討論區列表 >> 專欄文章 >> 使用元件與物件
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
使用元件與物件
價值 : 0 QP  點閱數:2444 回應數:0
樓主

站務人員 站長
門外漢
0 1580
542 9
發送站內信

捐贈 VP 給 站務人員
使用元件與物件

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 為 MSWC.AdRotator。 如果要建立 Ad Rotator 物件的一個例項,可以採用下列陳述式中的一種:

VBScript:

<% Set MyAds = Server.CreateObject("MSWC.AdRotator") %>

JScript:

<% var MyAds = Server.CreateObject("MSWC.AdRotator") %>

如果您已經熟悉 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")

%>

<%=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 語法。
如果您的語言不支援,就必須新增一個項目到登錄中,以便用該語言作為您的主要指令語言。
若需其他資訊,請參閱使用指令語言。

設定物件屬性

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

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")

%>

The date is <%= dtmDate.toString() %>

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

本篇文章發表於2001-01-15 00:00
目前尚無任何回覆
   

回覆
如要回應,請先登入.