vs2003與vs2005編譯區別

2021-04-12 12:48:01 字數 2846 閱讀 1373

由於 asp.net

1.x 中引入了頁模型,asp.net web 頁的編譯過程總是分成兩個階段。首先,**隱藏檔案和其他支援類編譯到乙個程式集中,然後在執行時編譯單獨的 aspx 檔案。雖然這種模型具有許多優點,但它也有一些缺點。asp.net 2.0 提供基本模型的幾種替代模型,並根據您的特定需要提供更為廣泛的編譯選項。

asp.net1.x中的編譯

asp.net

1.x 中的主要編譯模型會導致乙個應用程式程式集(包含所有的已編譯**隱藏檔案和其他的源**)和乙個為每個被請求的 aspx 頁而建立的臨時程式集。在有些情況下,編譯器優化(例如批處理)會引起將臨時 aspx 頁編譯到同乙個程式集中。在任一種情況下,每個 aspx 頁都編譯到乙個臨時程式集中,這樣它可以載入到 asp.net 執行庫。

雖然這種模型有優點,但它也有兩個主要缺點。首先,aspx 頁必須要以人們可以閱讀的形式部署到 web 站點。如果開發人員使用**內聯 模型,這意味著,一些(或所有)的業務邏輯也可以部署在生產伺服器上。雖然沒有將 iis 和 asp.net 配置為公開原始的 aspx 頁,但聰明的攻擊者仍可以通過任何攻擊(該攻擊開啟到 web 伺服器的通道)來訪問這些檔案。其次,第一次有人請求某 web 頁時,響應速度將比正常速度慢一些,原因在於 asp.net 執行庫必須編譯 aspx 頁。

這整個過程中,開發人員擁有的唯一控制權是決定是否批編譯 aspx 頁。在 asp.net

1.x 中,可以通過修改 <compilation> 標記在 web.config 檔案中配置批編譯。

清單4.配置批編譯

批編譯用啟動時間換取減少第一次請求 web 頁的載入時間。批編譯的另乙個好處是所有的 aspx 檔案都編譯到乙個臨時程式集中,而不是一頁乙個臨時程式集。

asp.net 2.0中的編譯

asp.net 2.0 為 web 應用程式提供三種不同的編譯模型:

普通 (asp.net

1.x) — 在乙個普通的 asp.net web 應用程式中,**隱藏檔案被編譯到乙個程式集並儲存在/bin目錄中。根據要求編譯 web 頁 (aspx)。該模型對大多數 web 站點都執行得不錯。但是,編譯過程使得第一次請求 asp.net 頁時的速度比隨後的請求速度緩慢。asp.net 2.0 繼續支援這種編譯模型。

部署預編譯 — asp.net 2.0 的一種新功能,允許在部署前對專案進行完整編譯。在完整編譯中,所有的**隱藏檔案、aspx 頁面、html、圖形資源以及其他的後端**都被編譯到乙個或多個可執行程式集中,這取決於應用程式的大小和編譯設定。這些程式集包含所有的已編譯 web 站點**,而資源檔案和配置檔案被複製,沒有做修改。這種編譯方法以犧牲修改部署後 web 站點的能力為代價,提供了最好的效能和安全性。如果您使用高可見或高安全的 web 站點,這種選項是最終部署的最好選擇。但是,如果您正在構建乙個執行區域性 intranet 的小站點,並且更改站點非常頻繁,那麼完整預編譯可能有點過分。

asp.net 2.0 編譯模型也允許預編譯應用程式的所有**隱藏檔案並且仍可以更新**。可以將**隱藏檔案和原始的 .aspx 檔案(都是區域性類)編譯到乙個預編譯類中(頁面的基類)。如果選擇在執行時編輯 .aspx 檔案,只需重新編譯頁面即可。

批編譯

在 asp.net 2.0 中,可以利用單個 url 請求來批編譯任何應用程式。如同 asp.net 1.x 一樣,批編譯消除了第一次頁面請求的延時,但造成了更長的啟動週期。另外,批編譯還要求在部署前編譯**隱藏檔案。

web.config 批編譯設定在 asp.net 2.0 中仍起作用。批編譯的優點是,第乙個使用者可以立即使用頁面,而且在批編譯期間可以檢測到 aspx 頁中的任何錯誤。但是,批編譯的確增加了應用程式啟動的延時,並且必須要內建在 web.config 檔案中。應當注意,如果某個檔案出現了問題,則該批將不會接收它。

部署預編譯

部署預編譯允許建立乙個或多個程式集,這些程式集是 web 站點的可執行版本。所獲得的程式集包含 web 站點的已編譯**。html 頁面、資源、配置檔案和 aspx 頁面被單獨複製。

部署預編譯要求使用乙個稱為 aspnet_compiler.exe 的命令列實用程式。該實用程式建立乙個目標部署目錄,該目錄包含乙個含有程式集的/bin目錄和各種 aspx 頁的 stub 檔案。該實用程式還用來在原地進行預編譯,類似於呼叫"魔術頁"的行為。stub 檔案共享 aspx 頁的名稱,但是包含呼叫已編譯程式集的簡單**。換句話說,aspx 頁只是空殼而不是填滿的功能頁。

通過為部署預編譯 web 站點,您可以獲得增強的安全性,因為只有進行反編譯程式集才能訪問您的**。為了增強保護,可以弄亂所得到的程式集,使您的 web 應用程式更加安全。部署預編譯的主要缺點是,在部署前必須執行這些步驟,並且在部署後不能更改 web 站點。如果想進行更改,就必須重新編譯該 web 站點並重新部署它。

對於大多數主要的 web 應用程式,部署預編譯選項將是部署的首選機制,因為它減少了在 web 伺服器上部署的原始**數量,並提供了最佳的安全性。這個增加的程序可以內置於通常的開發/測試/部署週期中,而工作效率並不會有多大損失。

在目前描述的所有三種編譯方法中,在部署前必須要編譯所有的**檔案(**隱藏類和支援類)。在 asp.net 2.0 中,您有**目錄。

該選項最適合於不需要大量支援**(以**隱藏檔案的形式或外部物件的形式)的 asp.net 應用程式。對於乙個簡單的應用程式,與更為健壯的編譯方法相比,快速部署和測試系統的功能提供了幾個優點。

vs2003與vs2005編譯區別

雖然這種模型有優點,但它也有兩個主要缺點。首先,aspx 頁必須要以人們可以閱讀的形式部署到 web 站點。如果開發人員使用 內聯 模型,這意味著,一些 或所有 的業務邏輯也可以部署在生產伺服器上。雖然沒有將 iis 和 asp.net 配置為公開原始的 aspx 頁,但聰明的攻擊者仍可以通過任何攻...

vs2003與vs2005編譯區別

由於 asp.net 1.x 中引入了頁模型,asp.net web 頁的編譯過程總是分成兩個階段。首先,隱藏檔案和其他支援類編譯到乙個程式集中,然後在執行時編譯單獨的 aspx 檔案。雖然這種模型具有許多優點,但它也有一些缺點。asp.net 2.0 提供基本模型的幾種替代模型,並根據您的特定需要...

VS2003與VS2005關邊後台程式碼的區別

1 vs2003關連後台程式碼 page language c codebehind wot130.aspx.cs validaterequest false autoeventwireup false inherits frmwot130.wot130 其中 codebehind wot130.a...