asp.net新手必知必會——我們為什麼要用asp.net

iDotNetSpace發表於2010-03-28

我是一個新手,對於頁面的生命週期一直不理解今天好好的學習了一次。

在學習的過程中充分認識到了MSDN的作用,做為新手MSDN是一定要看的,不用花錢買書了,也不用在網站上搜尋相關資訊了。他們都是照搬MSDN的。

做為新手,對於asp.net的編譯過程也不清楚,每次上傳dll檔案或者App_Code下的檔案時後臺使用者的會話都被清空了,一直不清楚asp.net內部是怎麼對這個進行處理的,覺得肯定和編譯有關係,今天終於在MSDN上找到了答案,在這裡和大家分享。

為了使用應用程式程式碼為使用者提出的請求提供服務,ASP.NET 必須首先將程式碼編譯成一個或多個程式集。程式集即副檔名為 .dll 的檔案。您可以採用多種不同的語言來編寫 ASP.NET 程式碼,如 Visual Basic、C#、J# 和其他語言。當在編譯程式碼時,會將程式碼翻譯成一種名為 Microsoft 中間語言 (MSIL) 的與語言和 CPU 無關的表示形式。執行時,MSIL 將執行在 .NET Framework 的上下文中,.NET Framework 會將 MSIL 翻譯成 CPU 特定的指令,以便計算機上的處理器執行應用程式。

編譯應用程式程式碼具有許多好處,其中包括:

  • 效能   編譯後的程式碼的執行速度要比諸如 ECMAScript. 或 VBScript. 的指令碼語言快得多,因為它是一種更接近於機器程式碼的表示形式,並且不需要進行其他分析。

  • 安全性   編譯後的程式碼要比非編譯的原始碼更難進行反向工程處理,因為編譯後的程式碼缺乏高階別語言所具有的可讀性和抽象。此外,模糊處理工具增強了編譯後的程式碼對抗反向工程處理的能力。

  • 穩定性   在編譯時檢查程式碼是否有語法錯誤、型別安全問題以及其他問題。通過在生成時捕獲這些錯誤,可以消除程式碼中的許多錯誤。

  • 互操作性   由於 MSIL 程式碼支援任何 .NET 語言,因此您可以在程式碼中使用最初用其他語言編寫的程式集。例如,如果您正在用 C# 編寫 ASP.NET 網頁,您可以新增對使用 Visual Basic 編寫的 .dll 檔案的引用

ASP.NET 編譯結構包括許多功能,其中包括:

  • 多語言支援。

  • 自動編譯。

  • 靈活部署。

  • 可擴充套件生成系統。

以下各節逐個說明這些功能。

多語言支援

在 ASP.NET 2.0 中,您可以在同一個應用程式中使用不同的語言(如 Visual Basic 和 C#),這是因為 ASP.NET 將為每一種語言分別建立一個程式集。對於儲存在 App_Code 資料夾中的程式碼,您可以為每種語言指定一個子資料夾。有關 App_Code 資料夾的更多資訊,請參見 ASP.NET 網站中的共享程式碼資料夾

自動編譯

當使用者首次請求網站的資源時,ASP.NET 將自動編譯應用程式程式碼和任何依賴資源。通常,ASP.NET 為每個應用程式目錄(如 App_Code)建立一個程式集,併為主目錄建立一個程式集。(如果一個目錄中的檔案是用不同程式語言編寫的,將為每種語言分別建立程式集。)可以在 Web.config 檔案的 Compilation 節指定將哪些目錄編譯成單個程式集。

靈活部署

因為 ASP.NET 在首次使用者請求時編譯網站,所以您只需將應用程式原始碼複製到成品 Web 伺服器上即可。不過,ASP.NET 還提供了預編譯選項,通過這些選項,您可以在部署網站之前先進行編譯,或者在部署網站之後、但在使用者請求該網站之前進行編譯。預編譯有若干優點。由於 ASP.NET 編譯網站時不存在延遲時間,因而預編譯可以改進首次請求時網站的效能。預編譯還能幫您找到不然只有當使用者請求頁時才能找到的錯誤。最後,如果在部署網站之前預編譯網站,則可以部署程式集,而不必部署原始碼。

可以使用 ASP.NET 編譯器工具 (ASPNET_Compiler.exe) 預編譯網站。該工具提供下列預編譯選項:

  • 就地編譯   此選項執行與動態編譯期間發生的相同編譯過程。可以使用此選項編譯已經部署到成品伺服器的網站。

  • 不可更新完全預編譯   可以使用此選項來編譯應用程式,然後將編譯後的輸出複製到成品伺服器。所有應用程式程式碼、標記和使用者介面程式碼都將編譯為程式集。佔位符檔案(如 .aspx 頁)仍存在,因此您可以執行某些檔案特定的任務(如設定許可權),但檔案中不包含可更新的程式碼。為了更新任何頁或任何程式碼,您必須再次預編譯並再次部署網站。

  • 可更新的預編譯   該選項類似於“不可更新完全預編譯”,不同之處在於使用者介面元素(如 .aspx 頁和 .ascx 控制元件)保留其所有標記、使用者介面程式碼和內聯程式碼(如果有的話)。您可以在部署之後更新檔案中的程式碼;ASP.NET 將檢測對檔案所做的這些更改並重新進行編譯。請注意,預編譯期間程式碼隱藏檔案(.vb 或 .cs 檔案)中的程式碼都將內建到程式集中,因此如果不重新執行預編譯和部署步驟,您將無法更改這些程式碼。

有關更多資訊,請參見 ASP.NET 網站預編譯概述

可擴充套件生成系統

ASP.NET 使用 BuildProvider 類來生成項,如 .aspx 頁、.ascx 檔案和全域性資源。您可以通過建立從 BuildProvider 類繼承的類,來擴充套件和自定義 ASP.NET 生成系統,以編譯自定義資源。例如,您可以新增新的檔案型別,然後編寫生成該特定型別的 BuildProvider

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-630584/,如需轉載,請註明出處,否則將追究法律責任。

相關文章