asp.net新手必知必會——我們為什麼要用asp.net
我是一個新手,對於頁面的生命週期一直不理解今天好好的學習了一次。
在學習的過程中充分認識到了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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我們為什麼要用RedisRedis
- leetcode我們必知必會的SQL面試題LeetCodeSQL面試題
- git必會必知Git
- Activity 必知必會
- Redis 必知必會Redis
- MySQL 必知必會MySql
- 什麼是 BPMN ?為什麼我們要用 BPMN 和工作流 ?
- ThreadLocal必知必會thread
- Linux必會必知Linux
- JSON 必知必會JSON
- Megaraid 必知必會AI
- notion database 必知必會Database
- Linux shell必知必會Linux
- Redis 必知必會之 APIRedisAPI
- mysql必知必會筆記MySql筆記
- Linux 程式必知必會Linux
- HTTP 必知必會的那些HTTP
- 01-mysql必知必會MySql
- Mysql必知必會練習MySql
- webpack入門必知必會Web
- Java必知必會之socketJava
- IT運維技能必知必會!運維
- 【必知必會的MySQL知識】①初探MySQLMySql
- 【必知必會的MySQL知識】②使用MySQLMySql
- 為什麼我要用GoEasy替代WebSocketGoWeb
- 為什麼我要用C寫遊戲遊戲
- GitHub:我們為什麼會棄用jQuery?GithubjQuery
- Redis 必知必會之持久化Redis持久化
- SQL必知必會筆記(上)SQL筆記
- SQL必知必會筆記(下)SQL筆記
- Java必知必會之註解Java
- Flutter 外掛使用必知必會Flutter
- MYSQL中的鎖必知必會MySql
- 面試:Redis必知必會20問面試Redis
- 必知必會Java命令-jpsJava
- ElasticSearch必知必會-進階篇Elasticsearch
- JavaScript必知必會+理解總結JavaScript
- 【必知必會的MySQL知識】③DML語言MySql