ASP 3.0物件模型概要

來源:互聯網
上載者:User
對象

    在從編程的角度研究ASP的細節之前,必須看一下ASP物件模型。這是非常重要的。因為如果你沒有在ASP 2.0上做過同樣的工作,必須考慮ASP產生頁面的方式。
    對象環境概念
    在版本1 . 0中,把能夠為Web頁面增加一些動態內容當作是一個令人激動的新方法。可以使用它從資料庫讀取資料,或操作從瀏覽器發來的數值。在ASP 2.0中,發生了很多非常引入注目的變化,增加了Microsoft Transaction Server(MTS),它能夠處理多個並發組件執行個體並提供進一步的擴充能力。這意味著動態Web頁工作的整個概念發生了變化。
    在此基礎上, MTS允許使用分布在多個組件、應用程式和服務中的事務。例如,當通過Message Queue Service(以前是MSMQ )向遠端電腦發送訊息時,一個ASP頁能夠更新本機資料庫。假如整個事務中的一部分失敗,整個處理過程將被恢複到系統原來的狀態。
    MTS,以及組件的使用日益廣泛,導致了使用ASP的Web應用程式的發展,而不再是單獨的簡單動態網頁。在由ASP指令碼執行個體化的組件內,這個ASP頁的環境是可用的。環境包含了所有內部的ASP對象(我們很快要遇到的)。因此,可以使用它獲得使用者請求的資訊並建立相應的響應。
    由於這個環境包含了整個ASP的物件模型,因此,它允許程式員對ASP以及所使用的各組件所執行的複雜處理進行更多的控制。通常認為物件模型的“根”是請求、響應和其他內部對象;而真實情況是(自從ASP 2.0以來就已經是),這個根是一個稱為Object Context的對象。
    1.引用ASP頁面的環境
    在ASP 1.0 中,引用環境的唯一方式是通過每次開始執行ASP頁時由ASP引發的事件:OnStartPage。這個事件以一個參數為ASP頁提供Object Context對象。在一個組件內,能夠在一個全域變數中捕獲對Object Context的一個引用,以供代碼使用。例如,下面這段VB代碼把環境儲存在一個稱為obj Context的局部變數中。

    從上面的代碼中看出,在ASP 1.0中,對象的環境是Scripting Context類型,這是一種在ASP.DLL中定義的物件類型並為建立引用檔案ASP.dll的代碼所用。然而很明顯,控制事務並提供高效的進程外的組件執行(ASP 2.0中MTS管理的一個任務),必須採取不同的做法。頁環境必須是顯式可用的,無須在每個頁面的開始處保留對它的引用。
    因此,在ASP 2.0中,微軟引入了Object Context對象。然而,由於Scripting Context仍然通過OnStartPage事件起作用,許多組件的創作者考慮到程式的向後相容性,避免使用ObjectContext 對象,甚至寧願以降低效能為代價。現在,由於有了ASP 3.0,情況發生了變化。在Windows 2000中,MTS做為COM +技術的一部分被融入作業系統中,除非明確決定避免它,否則將在預設狀態時被用於在ASP中執行個體化的任何一個組件。
    2. 引用ObjectContext 對象
    從ASP 2.0開始,已經能夠通過ASP提供的GetObjectContext 方法獲得一個對當前頁面環境的引用。這就意味著不必再通過一個頁面儲存對環境的引用,可以在任何需要的時候得到它。

    這允許我們的對象變成無狀態的( Stateless ),換句話說,當完成執行一個特定的方法後,不需要保留對任何數值或對象的引用。假如以前你沒有使用過ASP 2.0和MTS,這看起來也許是一個有些深奧的概念。然而它是極其重要的,我們將在後續章節討論關於這個問題的大量細節。
    ASP內建的對象
    看到了ASP如何以Object Context對象的形式提供一個“根”對象,就可以來瞭解其他的內建對象如何構建在它上面,以提供對用戶端請求、我們所建立的響應和其他使編寫指令碼更容易的對象的訪問。
    原來的Scripting Context對象仍然在使用,並且OnStartPage 事件也是可用的,但現在已經陳舊了,應該只用於在有ASP 1.0的IIS 3.0上執行的頁面,或在需要絕對的向後相容性時使用。
    由ASP提供的兩個主要內建對象,直接映射訪問Web伺服器時用戶端的兩個行為。另外4個提供了附加功能,對編寫指令碼是非常有用的。每個對象都提供了一系列的集合、屬性和方法,這在後續章節將加以介紹。
    Request對象為指令碼提供用戶端在請求一個頁面或傳送一個表單時提供的所有資訊,這包括能夠標識瀏覽器和使用者的HTTP變數,儲存他們的瀏覽器對應於這個域的cookie,以及附在URL後面的值(查詢字串或頁面中< Form >段中的HTML控制項內的值)。它也給我們提供了通過Secure Socket Layer(SSL),或其他的加密通訊協定,訪問認證的能力並提供有助於管理串連的屬性。
    Response對象用來訪問所建立的並返回用戶端的響應。它為指令碼提供了識別服務器和效能的HTTP變數,發送給瀏覽器的資訊內容和任何將在cookie中儲存的資訊。它也提供了一系列用於建立輸出頁的方法,如無所不在的Response.Write方法。
    Application對象是在為響應一個ASP頁的首次請求而載入ASP DLL時建立的,它提供了儲存空間用來存放變數和對象的引用,可用於所有的頁面,任何訪問者都可以開啟它們。
    獨特的Session對象是在每一位訪問者從Web網站或Web應用程式中首次請求一個ASP頁時建立的,它將保留到預設的期限結束(或者由指令碼決定中止的期限)。它與Application對象一樣提供一個空間用來存放變數和對象的引用,但只能供目前的訪問者在會話的生命期中開啟的頁面使用。
    Server對象提供了一系列的方法和屬性,在使用ASP編寫指令碼時是非常有用的。最常用的是Server.CreateObject 方法,它允許我們在當前頁的環境或會話中在伺服器上執行個體化其他COM對象。還有一些方法能夠把字串翻譯成在URL和HTML中使用的正確格式,這通過把非法字元轉換成正確、合法的等價字元來實現。
    ASP Error對象是ASP 3.0中的一個新的對象,通過Server對象的Get Last Error方法使用。它提供了發生在ASP中的上一次錯誤的詳細資料。
    可以把這些對象看作是基於Object Context對象的一個層次關係的成員,這有助於理解它們與接受和響應客戶請求的過程之間的關係,如圖1 - 2 0所示。圖中表現了ASP和建立及服務於ASP頁的過程之間的關係。
    我們將在後續章節詳細研究每一個對象,以及使用它們的方式。




相關文章

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 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。