優(yōu)化和緩沖存儲(chǔ). 這是怎樣辦到的呢?
根據(jù)腳本的首次請(qǐng)求, runtime將代碼進(jìn)行編譯,并將編譯結(jié)果進(jìn)行高速緩沖存儲(chǔ)復(fù)制(備份). 不論何時(shí),只要腳本有請(qǐng)求,被存儲(chǔ)的副本都可以調(diào)出使用. 此結(jié)果大大的增強(qiáng)了系統(tǒng)性能, 因?yàn)樵谑状握?qǐng)求之后,代碼能更快的從編譯版本中運(yùn)行.
有人也許就會(huì)問了”它怎么知道我什么時(shí)候作了改動(dòng)?” 微軟已對(duì)此作出解答.Runtime通過文件系統(tǒng)來監(jiān)視源文件. 當(dāng)初始源文件發(fā)生改變時(shí),它自動(dòng)將編譯版本從高速緩沖存儲(chǔ)備份中拖出,因此當(dāng)下一個(gè)要求來臨時(shí),它(編譯文件)會(huì)被重新編譯.這就意味著系統(tǒng)會(huì)自動(dòng)編譯代碼, 程序員就再也用不著為人工編譯而頭疼了.
caching
對(duì)于多數(shù)的系統(tǒng)開發(fā)者而言,他們必須研制出一些“caching”來使系統(tǒng)速度加快。無論是ASP頁面輸出到HTML文件格式,網(wǎng)絡(luò)聯(lián)結(jié)速度都非常慢。或是從緩慢的internet鏈接引用,到recordset的 狀態(tài)和漫游表單上的email表示符,甚至一個(gè)數(shù)據(jù)庫動(dòng)態(tài)驅(qū)動(dòng)菜單,實(shí)際上不是完全的動(dòng)態(tài)驅(qū)動(dòng),你不能為你每個(gè)客戶請(qǐng)求而浪費(fèi)大量時(shí)間。在創(chuàng)建網(wǎng)站時(shí),一般來說,少量數(shù)據(jù)不會(huì)持續(xù)改變,但是正因?yàn)樗鼈儾皇钦嬲饬x上的動(dòng)態(tài),不意味著使代碼復(fù)雜化,那么它們?cè)谀膬耗兀克裕愕瞄_發(fā)一些caching
基本的 caching 活動(dòng)是首先甄選適當(dāng)?shù)臄?shù)據(jù)進(jìn)行存儲(chǔ)。然后你需要將它們放置在程序中的application級(jí)變量中。然后,識(shí)別代碼。然后,你就得決定得將數(shù)據(jù)存儲(chǔ)多久,并寫出程序,以便及時(shí)清空caching.但是,如果你清空了caching的話,那么所使用的程序得具有使數(shù)據(jù)重新恢復(fù)的功能。
在ASP.NET中建立了CACHING系統(tǒng)。使得使得整個(gè)系統(tǒng)比以前更為面向?qū)ο螅沟?caching系統(tǒng)也可以存儲(chǔ) 對(duì)象 。因此,無論何時(shí)caching,也可以隨時(shí)調(diào)用。你可以根據(jù)需要設(shè)置數(shù)據(jù)存儲(chǔ)的時(shí)間來決定創(chuàng)建各種類型的環(huán)境。 通過文件系統(tǒng),你甚至可以在文件上鏈接一個(gè)詳細(xì)的項(xiàng)目,這樣當(dāng)文件發(fā)生改變時(shí),鏈接的項(xiàng)目就會(huì)同時(shí)被存儲(chǔ)。
還不僅限于此,ASP.NET也存儲(chǔ)輸出數(shù)據(jù)。 為ASP。NET腳本結(jié)果做一個(gè)備份,因此當(dāng)別人調(diào)用它時(shí),他甚至不用運(yùn)行,正確的輸出結(jié)果就已在發(fā)送中。它主要基于查詢字符串來工作,如果參數(shù)不能與存儲(chǔ)中的參數(shù)相匹配,則記載參數(shù)的頁面會(huì)回轉(zhuǎn)到存儲(chǔ)版本中
一些時(shí)候,依據(jù)站點(diǎn)來判斷出什么需被存儲(chǔ)是有一點(diǎn)技巧,但是至少現(xiàn)在不需要。
更快更簡便的開發(fā)
任何開發(fā)平臺(tái)都會(huì)向你提供一個(gè)固態(tài)的環(huán)境. 在ASP里,雖然這個(gè)環(huán)境的性能是優(yōu)良的,但實(shí)際上它亳無用處.但是通過ASP.NET,在你書寫你的第一行代碼前,這個(gè)環(huán)已為您做足了準(zhǔn)備工作。以前程序員為了設(shè)計(jì)完善的程序,而不得不做的重復(fù)的煩人的工作,現(xiàn)在這個(gè)環(huán)境已為你做完了.
面向?qū)ο竽P?br> 當(dāng)你的代碼比以前任何時(shí)候都要運(yùn)行得更快的時(shí)候,你已經(jīng)得到一個(gè)真正的事件模型并可以對(duì)它進(jìn)行控制。在過去,如果你希望某程序運(yùn)行的早一些,你就不得不將程序放在頁面的前面,相反,則放在頁面的后部。這種方法往往不會(huì)起到很大的作用,所以你還得通過各種方法來構(gòu)建你的代碼以獲得想要的效果. 這個(gè)“spaghett-code”問題能夠通過使用大量的事件來修正,例如 page_load
每個(gè)頁面級(jí)的對(duì)象都會(huì)有它們自己的事件模型,并且有能夠激活設(shè)計(jì)好的Server事件。類似于 Button_Click 或 Listbox_Change 的例行程序,能夠做出標(biāo)準(zhǔn)的表單處理,以及代你處理大量的相對(duì)簡單的日常工作。讀代碼也成為可能,如此就意味著即使某段程序在六個(gè)月后出現(xiàn)了問題,也可以發(fā)現(xiàn)你以前的設(shè)定,并及時(shí)進(jìn)行調(diào)試。
|