指令碼對象與伺服器組件的比較

來源:互聯網
上載者:User
比較|對象|伺服器|指令碼


    在前幾章中,我們已經研究了兩類不同的對象:一類是ASP物件模型的內建部分,另一類是指令碼運行期庫提供的對象。本章將介紹第三類能用於ASP的對象,取名為活動伺服器組件(或者就稱為伺服器組件)。
這些組件在很多場合下就如同在瀏覽器或在像Visual Basic編程環境中用於用戶端指令碼中的傳統ActiveX控制項一樣,但是這些組件可在伺服器上運行,而不是一個只能運行在客戶機上的對象。
現在的問題是:這些組件來自哪裡?其中一部分是由常規的ASP/IIS安裝程式提供的,而另一部分可以從Web上免費或有償獲得。本章討論ASP的各種組件的主要用途,然後介紹可得到的其他組件的幾個範例。一旦感覺到使用這些活動伺服器組件得心應手,你就會毫不費力將其他供應商產品嵌入到自己的ASP頁面中。本章後面有一個第三方組件的列表,本書後面還將介紹如何建立自己的組件。
還有一些用於ASP的組件,但本章不準備討論。動態Web網站技術的基本用途之一是發布直接從資料庫管理系統和其他類型的資料存放區獲得的資訊,這一用途和從資料庫或其他資料存放區中收集資料和存入資料的需求,促使程式員程式開發伺服器端編程。為了使用ASP完成這些任務,我們可以充分利用稱為ActiveX資料對象(ActiveX Data Objects,ADO)庫的組件集。由於它涉及的內容很多,很難在本章中闡述清楚,還要考慮的其他的組件,本書從第8章開始講述相關的內容。
本章要討論的內容有:
· 伺服器組件與在ASP中使用的其他對象的區別。
· 簡要說明如何執行個體化對象,並得到伺服器組件的引用。
· ASP 3.0和IIS提供的可安裝組件,例如AD Rotator、Content Linking、Page Counter和Tools等組件。
· 一些第三方提供的組件。

6.1 指令碼對象與伺服器組件的比較
       前一章已說明了各種指令碼對象,這些對象對於ASP/IIS來說都是從指令碼運行庫(scrrun.dll)中得到的,重要的是不要把這些對象與伺服器組件(即本章的主題)混淆一起。
       伺服器組件通常在其自己的DLL或可執行檔中實現,例如本章將要討論的“Content Linking”組件,就是由nextlink.dll實現的。一旦在伺服器安裝和註冊這個DLL檔案,那麼其提供的對象就可以在ASP所支援的任何指令碼語言中使用。組件與系統內容的關係如圖6-1所示:


使用元件伺服器組件
       前一章已經介紹了對象和組件在頁面中通用的執行個體化方法,使用伺服器組件和使用指令碼運行期庫對象的方法完全一致,唯一的區別是,不像指令碼對象,伺服器組件通常作為單獨的DLL檔案實現,而且可能要求在使用前先運行一個安裝程式,或者手工註冊該組件(如果這些組件在ASP預設安裝時未註冊)。
1.  CreateObject方法
一般說來,可以在一個ASP頁面中使用ASP內建的Server對象的CreateObject方法建立一個對象,例如:
Set objThis = Server.CreateObject("this.object")                ' in VBScript
或:
var objThis = Server.CreateObject('this.object');                // in JScript
這樣就在變數objThis中建立了該對象的引用,然後可以在指令碼中使用該對象;換句話說,可以在代碼中根據需要控制其屬性及調用其方法。
2.  使用<OBJECT>元素
同樣可以使用常規的<OBJECT>元素建立一個對象該方法同樣適用於在Web瀏覽器頁面中建立對象。ASP支援HTML<OBJECT>元素的特殊實現,而且我們可以使用這一方法在頁面中放置一個對象。要在普通的.asp檔案中定義一個組件或指令碼對象的執行個體,使用下面語句:
<OBJECT RUNAT="SERVER" SCOPE="PAGE" ID="objThis"
              CLASSID="CLSID:OACE4881-8305-11CF-9427-444553540000">
</OBJECT>
我們使用SCOPE屬性來設定對象的範圍,選項是“SESSION”、“APPLICATION”和“PAGE”。如果在普通的.asp檔案中使用<OBJECT>元素,那麼必須同時使用“PAGE”屬性,並忽略SCOPE屬性,因為建立的對象只能在它被執行個體化的頁面中使用。如果在global.asa檔案中使用<OBJECT>元素,則所建立的對象可在當前會話或整個應用程式中使用,因此SCOPE屬性可設定為“SESSION”和“APPLICATION”。
3.  檢測對象執行個體的存在
經常出現的錯誤是企圖建立一個未安裝(或未註冊)的對象的執行個體,或者在CreateObject方法或<OBJECT>元素中使用錯誤的對象ProgID。預設狀態下,ASP會出現錯誤並停止頁面的執行。
給頁面添加一些程式碼,在訪問對象之前進行檢測是必要的。在VBScript中,可以做到這一點,方法是:關閉預設的錯誤處理,然後使用IsObject函數查看對象是否真的引用了一個對象:
' in VBScript:

On Error Resume Next                                     'turn off default error handling
Set objThis = Server.CreateObject("this.object")

If IsObject(objThis) Then
       'the CreateObject method succeeded
       On Error Goto 0                                        'turn the default error handling back on
       …
       'rest of the script goes here
       …
Else
       Response.Write "Sorry, this page cannot be accessed at present"
       Response.Flush
       Response.End
End If

在JScript語言中,可以使用JScript 5.0指令碼引擎中新的錯誤處理特性,這在第1章中介紹過。
// in JScript:

try {
       var objThis = Server.CreateObject('this.object');
       …
       // rest of the script goes here
}

catch (exception) {
       Response.Write ('Sorry, this page cannot be accessed at present');
       Response.Flush();
       Response.End();
}




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。