【轉】asp.net中的WebApplication(web應用程式)和WebSite(網站)
web application是MS在發布VS2005之後追加的SP1擴充包裡的一種新的Web模式,WebApplication編譯時間忽略了頁面中代碼的檢查,不需要做分析,將這些任務交給了運行時。WebSite的優勢在於可以單個頁面獨自編譯,這對大項目而言是一個相當大的優勢,二者的直觀區別在於,對每一個aspx分頁檔,WebApplication在有對應cs檔案的同時還擁有designer.cs檔案,baidu了一下。
WebApplication編程模型的優點:
●網站編譯速度快,使用了增量編譯模式,僅僅只有檔案被修改後,這部分才會被增量編譯進去。
●產生的程式集
WebSite:產生隨機的程式集名,需要通過外掛程式WebDeployment才可以產生單一程式集
WebApplication:可以指定網站項目產生單一程式集,因為是獨立的程式集,所以和其他項目一樣可以指定應用程式集的名字、版本、輸出位置等資訊
●可以將網站拆分成多重專案以方便管理
●可以從項目中和原始程式碼控制中排除一個檔案
●支援VSTS的Team Build方便每日構建
●更強大的代碼檢查功能,並且檢查策略受原始碼控制
●可以對編譯前後進行自己規定的處理
●對App_GlobalResources 的Resource強類支援
●直接升級使用VS2003構建的大型系統
WebSite編程模型的優點:
●動態編譯該頁面,馬上可以看到效果,不用編譯整個網站(主要優勢)
●同上,可以使錯誤的部分和使用的部分不相干擾
●可以每個頁面產生一個程式集
●可以把一個目錄當做一個Web應用來處理,直接複製檔案就發行就緒,不需要專案檔
●可以把頁面也編譯到程式集中
兩種編程模型的互相轉換:
VS2005 SP1內建了轉換程式,可以非常方便的從WebSite轉換到WebApplication只需要複製檔案,右鍵執行“轉換為Web應用程式”即可。
總之,大網站比較適合用WebApplication項目,小網站比較適合用WebSite項目
下面的表格列出了Web Application 和 Web Site 的重要區別。
情況 |
Web Application Project |
Web Site Project |
工程定義 |
只有在 Web Application的解決方案中引用的檔案才是項目的一部分。這些檔案也顯示在方案總管中,並在產生期間進行編譯。由於存在專案檔,因此有些方案更加容易實現。例如,可以將一個 ASP.NET 應用程式細分為多個 Visual Studio 項目。還可以輕鬆地從項目和原始碼中排除檔案。 |
Web site 使用文檔結構管理專案檔。他不包括專案檔,檔案夾中的所有檔案都是項目的一部分 適用於現存不包含項檔案的網站目錄。 |
編譯和產生輸出 |
項目中所有的程式碼檔案,和獨立的檔案都被編譯成為一個程式集,儲存在bin檔案夾中,可以指定程式集的名字、版本、輸出位置等資訊 |
在Web Site 項目中使用產生命令時,並不會產生程式集 ,而只是對Web Site進行驗證 。在運行Web Site的時候,由asp.net的動態編譯部署的頁面,類源檔案。 同時也可以對網站進行先行編譯以提高效能,在先行編譯中使用的是和動態編譯同樣的技術。 Asp.net先行編譯有2中模式. batch mode (the default) and fixed-names mode. batch mode 中產生一個程式集。fixed mode 每個頁面,使用者控制項都產生獨立的程式集。 |
開發 |
在需要運行和偵錯工具之前需要進行編譯整個項目,但是通常Web Application編譯速度很快,因為使用了增量編譯模式,僅僅只有檔案被修改後,這部分才會被增量編譯進去。 |
由於使用了動態編譯機制,並且編譯到不同的程式集,所以訪問或者調試特定頁面時,不需要編譯整個項目編譯成功。 產生命令會對整個項目進行驗證,但是速度較慢,所以建議在開發和調試的過程中,僅使用編譯當前頁面。 |
部署 |
由於所以代碼檔案都產生為一個程式集,所以只需要把程式集和.aspx等分頁檔部署到伺服器上。 .aspx檔案只有在被瀏覽器訪問到的時候才進行編譯。 每次更新程式集的時候,相當於替換了所有的頁面代碼. |
使用發布命令可以把.aspx檔案和後台代碼檔案都編譯到程式集中,如果選擇了updateable publish option 時,只是對後台代碼進行編譯 。 預設模式會針對每個檔案夾產生一個程式集.固定名稱模式,會針對每個頁面,控制項產生一個程式集 ,不過可能造成儲存空間的額外負擔。 |
從Visual Studio .NET 2003 升級 |
由於和.net 2003工作原理相同,基本不需要太多的操作。 |
需要使用升級嚮導,並且需要其他的一些額外操作。 |