WebProject與WebSite比較

WebProject與WebSite比較

一直以下搞不太清楚Web Application Project與Web Site的差異,所以到網站找找看有沒有人分享。果然也是蠻多人有這種疑惑,在大陸的網站找到了一份兩者之間的差異。不過簡体字還蠻難懂的所以使用了,博士眼…翻譯並修正了一下分享給大家看看

 

場景

Web Application Project

Web Site

2008/08/08補充:

參考專案比較

若參考了一個A專案,而此A專案又參考了其它專案或DLL ,則WebProect 若要參考A專案,則必須連A專案的參考都要手動加入

以左述相反,只要參考A專案,則相關的參考會自動帶過來

Project定義

VS2003 類似,有項目檔案(如.csproj)。只有被項目檔案所引用的檔案才會在SolutionExplorer中出現。而且只有這些檔案才會被編譯。

優點︰

1.   可以很容易的把一個ASP.NET應用拆分成多個項目。

2.    可以很容易的從項目中和源代碼管理中排除一個文件。

一個目錄架構就是一個WEB項目,沒有項目檔案存在。這個目錄下的所有檔案,都被作為項目的一部分而存在。

優點︰想對這個網站進行修改,用這種編程模型就非常適合。我們根本不用在乎這個WEB站點中,那些檔案屬於哪個項目。

編譯和生成

VS2003Web Application Project編譯模式幾乎一樣。項目中的所有的code-behind 類檔案和獨立類檔案都被編譯成一個獨立應用程式集。

這個應用程式集被放在Bin目錄下。因為是一個獨立的應用程式集,你能夠指定應用程式集的名字、版本、輸出位置等訊息。

例如︰Model-View-Controller (MVC) 模式就可以在這裡很好的被使用。因為它允許在WEB頁面和WEB用戶控件中引用一個獨立的類。

l          編譯(Build)命令僅僅是測試這個WEB站點是否編譯正確,調試一個WEB站點項目的時候,是通過依賴你的code文件,ASP.net進行動態編譯頁。

l          預編譯網站和動態編譯站點用的是同一個編譯方式,可以通過預編譯來提高站點的性能。

l          ASP.net 動態編譯系統提供了兩種模型︰默認的batch  編譯模型和fixed-names 編譯模型。batch編譯模型中,被編譯成多個應用程式集(典型的是每一個目錄被編譯成一個)。這時候你看應用程式集,很難對應上是哪個目錄。fixed-names 編譯模型中,網站的每個頁面或者每個用戶控件被編譯成一個應用程式集。

交互開發環境

測試Web頁面的時候,你必須全部編譯整個WEB項目。

這種方法比較快,因為Studio使用了增量編譯模式,僅僅只有檔案被修改後,這部分才會被增量編譯進去。

可以設定Visual Studio 2005的編譯屬性︰編譯整個網站、編譯一個指定頁面、或者什麼都不作。

在最後一種情況下,當你Run一個WEB網站的時候,打開一個瀏覽器,並瀏覽當前或者起始頁,當這個請求被發送後,ASP.net 才開始動態編譯。

這種模式下,頁面被動態編譯或者被編譯成不同應用程式集,所以如果你測試一個頁面的時候,不需要整個項目被編譯。有錯誤的部分跟你使用的部分可以互不干擾。

預設情況下,當你營運或調試任何WEB頁的時候,Visual Studio完全編譯Web Site項目。這麼做可以看到編譯時的所有錯誤。但是,在開發進程中,完全編譯整個站點會是相當慢的。所以推薦你在開發測試中,只編譯當前頁。

部署

因為所有的類檔案被編譯成一個應用程式集,當你部署的時候,只需要把這個應用程式集和 .aspx檔案、.ascx檔案以及其它靜態內容檔案一起部署。(不需要.cs檔案)

這種模型下,.aspx 檔案將不被編譯,當瀏覽器訪問這個頁面的時候,才會被動態編譯

不過,如果你使用Web Deployment Projects,你就可以把 .aspx 文件也編譯進入一個應用程式集中。 

如果你只修改了小小的一行Code,你也需要把整個項目的所有Code都編譯,並且發布包含所有Code的這個應用程式集。

使用Publish Website命令,你可以把.aspx 檔案和 code-behind 檔案編譯成應用程式集,所以你看到的編譯後的 .aspx 檔案Page指示詞產生了變化。(注意︰Build 命令並不會給你可部署的應用程式集)

最新版本的 Publish 將支援僅編譯 code-behind 檔案,這樣部署的時候,將不改變 .aspx 檔案。

預設是在Bin目錄下預編譯成幾個應用程式集,典型的是一個目錄對應一個應用程式集。

fixed-names 部署選項可以讓每一個WEB頁面或者每個WEB用戶控件建立一個應用程式集,這樣每個頁面都有一個可部署的應用程式集。但是,fixed-names 部署選項會增多應用程式集的個數,而且實際內存使用也會增大。

VS2003升級

因為跟VS2003採用了一樣的WEB項目開發模型,升級是非常非常簡單的。

Web site 項目的編譯選項不同導致了它跟VS 2003 WEB項目的極大不同。

雖然微軟提供了一個轉換向導,但是如果你的項目如果是一個複雜的VS2003項目,使用這個轉換向導後,你還需要對照轉換手冊,做很多工作。如果你要從VS2003升級,建議不要用這種WEB站點開發模版。而是使用Web application 項目。