2000年6月microsoft公司發布.net計劃以來,使編程工作在業界中引起了一次劃時代的革命。asp.net是.net計劃中的一個重要組成部分,其為web應用程序開發人員提供了許多新特性,這些特性包括已編譯的服務器端代碼、一種將服務器端邏輯與客戶端布局相分離的代碼隱藏(code-behind)技術、可擴展的服務器端控件模型、設計數據綁定模型、xcopy部署以及客戶和服務器上的窗體身份證驗證支持等。
asp.net作為一種先進的web應用程序開發技術,相對于asp具有革命性的進步。其使用編譯后的語言(包括元數據、il等資源),這是.aspx文件運行性能大大提升的一個主要原因,也是asp.net不同于以往的asp的顯著地方。asp.net第一次裝載頁面的速度較慢,但以后加載該頁面的速度是asp不能比擬的,其速度飛快。這是因為asp.net在第一次訪問網頁時所需要開銷有:加載asp.net工作者進程,對.aspx 文件進行語法分析并將其編譯成一個可執行的程序集。這一點與asp引擎執行服務器代碼是不同的,因為asp總是每次執行時都是將服務器代碼交給jscript或vbscript解釋器來進行解析。
asp.net在技術上沒有叫做asp 4.0,但從許多方面來講,它就是asp 4.0版本。我們可以從下面的兩個例子看出.aspx文件與.asp文件的相似之處:
例程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>兩數之和為:</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>兩數之和為:</td><td><%=add(2,3)%></td>
</tr>
</table>
</body>
</html>
以上兩個例程的<html></html>里的代碼是相同的,不同的是 <%%>聲明使用的語言。兩段代碼都是在服務器端運行,但是,當訪問這兩個文件時,其背后所發生的事情卻截然不同。我們先來分析test.asp文件的運行機制,當執行test.asp文件時,服務器對網頁中的文本要進行線性解析,提取所有不是服務器端腳本的內容并作為響應返回,而網頁中的服務器端腳本(我們在test.asp文件的腳本中加入了runat=server屬性)首先要通過jscript解釋器來解析執行,執行結果作為響應返回。所以,.asp文件的運行機制在幾個方面影響了網頁生成(也就是我們平時所說的程序運行)速度變慢。影響.asp網頁效率的幾個方面是:首先,隨機解釋服務器端腳本比在服務器上執行預編譯的代碼效率更低,因此,要對asp應用程序進行優化,比較通用的方法就是將大量的服務器端腳本移入預編譯的com組件中,這樣就可以有效的提高網頁的響應速度;第一的方面是,由于要不斷地調用解釋器,混合使用靜態的html和服務器端求值語句腳本塊比只用一個服務器端腳本塊的效率更低,因此,為了提高應用程序的執行效率,有些asp開發人員通常使用response.write()調用取代靜態的html元素。最終導致了一個asp頁面上使用多種腳本語言來編寫從而大大降低了應用程序的執行效率。現在,我們再來分析一下test.aspx文件的運行機制,在該例中使用c#語言來編寫的腳本,所以在服務器端clr使用相應的c#編譯器把這些代碼編譯成一種叫做il匯編語言并保存到程序集中。使用clr,無論你使用何種語言(c#、vb.net、jscript 等)編寫的腳本,最終都被編譯成il匯編語言。
程序集中既包括服務器端代碼又包括靜態html語句,因此,只要第一次訪問了某個.aspx頁面,以后生成該頁面時只需執行已編譯好的代碼即可。就是asp.net網頁最終都被編譯成.net類(.net框架中組件也叫做類),所以,在一個.aspx文件中不可能使用多種服務器端語言,這樣就解決了傳統的asp腳本模型的所有有關效率低的問題。所以說,asp.net是asp的升級版本。
與解釋模型相比,使用編譯模型還有其他方面的好處:1、在性能方面編譯模型優于解釋模型。因為,編譯器將網頁編譯成類(組件),這樣就可以用桌面應用程序或組件開發者使用的同樣的調試工具進行調試。2、便于應用程序在編譯時可以發現錯誤,這樣就可以使應用程序的健壯性大大增強。3、.net應用程序開發者可以使用的所有工具,.aspx開發者同樣可以使用。總而言之,從傳統的asp過度到asp.net,是在程序的性能、速度等方面的革命性的改進。
新聞熱點
疑難解答
圖片精選