例程1:ASPX頁面示例
<!--File:test.aspx-->
<%@ Page language=’C#’ %>
<script runat=server>
int Add(int x, int y)
{
return x+y;
}
</script>
<html>
<body>
<table border=1>
<tr>
<td>兩數(shù)之和為:</td><td><%=Add(2,3)%></td>
</tr>
</table>
</body>
</html>
例程2:ASP頁面示例
<!--File:test.asp-->
<%@ language=Jscript%>
<script language=’JScript’ runat=server>
function Add(x,y)
{
return x+y;
}
</script>
<html>
<body>
<table border=1>
<tr>
<td>兩數(shù)之和為:</td><td><%=Add(2,3)%></td>
</tr>
</table>
</body>
</html>
以上兩個例程的<html></html>里的代碼是相同的,不同的是 <%%>聲明使用的語言。兩段代碼都是在服務(wù)器端運行,但是,當訪問這兩個文件時,其背后所發(fā)生的事情卻截然不同。我們先來分析test.asp文件的運行機制,當執(zhí)行test.asp文件時,服務(wù)器對網(wǎng)頁中的文本要進行線性解析,提取所有不是服務(wù)器端腳本的內(nèi)容并作為響應(yīng)返回,而網(wǎng)頁中的服務(wù)器端腳本(我們在test.asp文件的腳本中加入了runat=server屬性)首先要通過Jscript解釋器來解析執(zhí)行,執(zhí)行結(jié)果作為響應(yīng)返回。所以,.ASP文件的運行機制在幾個方面影響了網(wǎng)頁生成(也就是我們平時所說的程序運行)速度變慢。影響.ASP網(wǎng)頁效率的幾個方面是:首先,隨機解釋服務(wù)器端腳本比在服務(wù)器上執(zhí)行預編譯的代碼效率更低,因此,要對ASP應(yīng)用程序進行優(yōu)化,比較通用的方法就是將大量的服務(wù)器端腳本移入預編譯的COM組件中,這樣就可以有效的提高網(wǎng)頁的響應(yīng)速度;第一的方面是,由于要不斷地調(diào)用解釋器,混合使用靜態(tài)的HTML和服務(wù)器端求值語句腳本塊比只用一個服務(wù)器端腳本塊的效率更低,因此,為了提高應(yīng)用程序的執(zhí)行效率,有些ASP開發(fā)人員通常使用Response.Write()調(diào)用取代靜態(tài)的HTML元素。最終導致了一個ASP頁面上使用多種腳本語言來編寫從而大大降低了應(yīng)用程序的執(zhí)行效率?,F(xiàn)在,我們再來分析一下test.aspx文件的運行機制,在該例中使用c#語言來編寫的腳本,所以在服務(wù)器端CLR使用相應(yīng)的C#編譯器把這些代碼編譯成一種叫做IL匯編語言并保存到程序集中。使用CLR,無論你使用何種語言(C#、VB.NET、Jscript 等)編寫的腳本,最終都被編譯成IL匯編語言。
程序集中既包括服務(wù)器端代碼又包括靜態(tài)HTML語句,因此,只要第一次訪問了某個.ASPX頁面,以后生成該頁面時只需執(zhí)行已編譯好的代碼即可。就是ASP.NET網(wǎng)頁最終都被編譯成.NET類(.NET框架中組件也叫做類),所以,在一個.aspx文件中不可能使用多種服務(wù)器端語言,這樣就解決了傳統(tǒng)的ASP腳本模型的所有有關(guān)效率低的問題。所以說,ASP.NET是ASP的升級版本?!∨c解釋模型相比,使用編譯模型還有其他方面的好處:1、在性能方面編譯模型優(yōu)于解釋模型。因為,編譯器將網(wǎng)頁編譯成類(組件),這樣就可以用桌面應(yīng)用程序或組件開發(fā)者使用的同樣的調(diào)試工具進行調(diào)試。2、便于應(yīng)用程序在編譯時可以發(fā)現(xiàn)錯誤,這樣就可以使應(yīng)用程序的健壯性大大增強。3、.NET應(yīng)用程序開發(fā)者可以使用的所有工具,.aspx開發(fā)者同樣可以使用。總而言之,從傳統(tǒng)的ASP過度到ASP.NET,是在程序的性能、速度等方面的革命性的改進。
聯(lián)系客服