來 源: 網際網路
作 者: 不祥
發表日期: 2005-12-17 16:49:55
asp → asp 3.0高階程式設計(十七)
檢視方式: 檢視:[
大字 中字
小字 ] [雙擊滾屏]
正 文:
asp 3.0高階程式設計(十七)
應用程式開始時建立了物件例項,即一旦使用者從虛擬應用程式的目錄請求乙個頁面,就建立物件例項。對於預設web站點,這可以是站點上的任一目錄。直到應用程式結束(最後的使用者會話結束)前,物件例項一直存在,並且可以被虛擬應用程式或站點目錄內任一頁麵內的任意使用者引用和使用。
(2) 在會話層作用域建立物件
如果想建立由單個使用者使用的物件例項,其作用域為他訪問的所有頁面,可建立會話層作用域物件。這通過將scope屬性設定為「session」來實現:
物件一旦被引用就被建立,引用是由使用者從虛擬應用程式或站點載入的頁面內的程式**完成的(在global.asa檔案中有宣告)。當使用者會話生命週期結束並被取消時,它引用的物件例項也就取消了。
(3) 關於作用域和狀態
使物件例項的作用域為全域性的或者為使用者會話全域性環境看起來是乙個好主意,但在實際使用時有些問題需要考慮,其中之一是在使用者的許多請求之間能夠有效地保護物件的狀態。換句話說,可以設定物件的一些屬性,它們對使用的所有頁面是共用的。因為不必每次都建立新的例項並設定其屬性,所以這看起來是個較好的辦法。
事實上,微軟建議一般情況下不要這樣做,這一思想是傳統程式設計思想的殘餘。在web上,要面對的最大問題是伺服器以及web應用程式及所提供的動態網頁如何應付數以百萬計的**訪問者。將元件例項駐留在記憶體中等待乙個特定使用者的頁面請求,對可能有幾百個使用者同時瀏覽的**來說,這樣做不能有效地使用資源。
windows 2000提供新的com+執行期特性,它能夠處理元件的建立、快取和使用,採用一種吞吐量最大化但所佔伺服器資源最小化的方式。物件例項儲存在**和儲存多久的問題,最好由作業系統自己完成,而不是由程式設計師決定。
也就是說,在頁面內需要的地方建立物件例項,當頁面終止時讓其消失。com+整理這些碎片,自動處理後台的一些複雜工作。如果要了解有關這方面的內容,第14章比較詳細地研究了元件的建立。
當然,在某種情況下,我們可能要求乙個物件具有應用程式層和會話層的作用域,尤其是在頁面請求間儲存狀態時。在後面討論dictionary物件時,將有乙個這方面的例項。
5.2.3 server.createobject與的區別
server.createobject方法立即建立乙個物件例項。在大多數情況下這也是我們所希望的。而元素只有首次引用乙個物件時才建立指定的物件例項。因此如果在**中停止使用該物件,則不建立該物件例項。
如果**只在某種情況下使用這個物件(可能依賴於請求引數的值),這也許是有用的。因為如果不需要這個物件,則可以節省伺服器的資源。
然而,如果肯定需要建立某一物件,可使用server.createobject方法完成。用元素建立物件有助於防止在**中取消對物件的呼叫時,忘記取消程式中的server.createobject行,當然這是乙個粗心的程式設計。
最後需要記住的是,如果物件是使用server.createobject方法建立的,就可以從會話或應用程式中去掉物件,但使用元素建立的,則不行。
5.2.4 元件執行緒模型
在頁面內使用物件或元件時,應該考慮的另乙個問題是該物件涉及到的響應多個請求的行為方式。事實上在asp裡,這是所需要理解的最複雜的題目之一。乙個元件的執行緒模型,結合其作用域,影響該元件和應用程式的效能和效率,也影響將它例項化的asp頁面。
執行緒就是由處理器執行的系統物件,用於完成由元件**定義的任務。每乙個執行緒都可以被認為是單個二進位制指令集。在像windows這樣的多執行緒環境中,多個執行緒可同時執行。
實際上有五個執行緒模型(包括在windows 2000裡引入的neutral-threading模型):
· single-threaded(單執行緒):某一時刻只能有乙個程序使用某元件。
· apartment-threaded(單元執行緒):若干程序都可以使用某元件,但只有乙個在指定的執行緒上。
· neutral-threaded(中立執行緒):若干程序都能使用某元件,並且可以使用指定的一組執行緒中的任何乙個。
· multiple-threaded或free-threaded(多執行緒或自由執行緒):若干程序都能使用某元件,並且這些程序可以執行在不同的執行緒上。
· both-threaded(雙線程):物件既可以是單元執行緒的又可以作為自由執行緒的。
在這裡不解釋執行緒模型的技術細節,本書後面有相應的內容。
單元執行緒的元件(例如使用visual basic建立的或作為xml指令碼的元件)可在頁面層作用域內很好地執行,在會話層作用域內也是可以接受的。事實上,在頁面層,由於較低的資料處理開銷,也能很好地執行雙線程的元件。
winodws 2000中的中立執行緒的模型甚至提供了更好的效能,儘管到目前為止只有很少的這樣的元件和與之相適應的開發工具。
如果需要會話層元件,使用可用的雙線程的元件。並且如果需要應用程式層作用域,可一直使用雙線程的元件。
然而,微軟建議避免使用會話層作用域的元件,甚至不使用應用程式層作用域的元件,除非這些元件是絕對需要的。使元件的活動時間超過作用域為頁面級的元件所要求的時間,對於由com+提供**特性的物件是沒有益處的。
ASP程式設計入門高階 十七 FSO元件之資料夾操作
操作完驅動器,接著就是來操作資料夾了。其中包括 提取資料夾資訊 建立資料夾 刪除資料夾 複製資料夾 移動資料夾等。下面就具體來看。一 fso.getfolder 1,getfldr.asp set fso createobject scripting.filesystemobject set fld...
ASP程式設計入門高階 Application
1,num.asp 上面的程式,你會發現每重新整理一次,都會記數累加,如按ip值訪問來記數的話,則建立乙個session。2,vnum.asp if session visitnum then session visitnum visited end if 當然需要注意的是 記數要確保伺服器不被重啟...
《UNIX環境高階程式設計》十七高階程序間通訊讀書筆記
unix域套接字用於在同一臺計算機上執行的程序之間的通訊。unix域套接字提供流和資料報兩種介面。unix域資料報服務是可靠的,既不會丟失報文也不會傳遞出錯。使用socketpair函式來建立一對無命名的 相互連線的unix域套接字。include int socketpair int domain...