Scenario
|
Web Application Project
|
Web Site Project
|
Project definition
|
跟
Visual Studio .NET 2003
類似,由於項目文件的存在,只有被項目文件所引用的文件才會在
Solution Explorer
中出現。而且只有這些文件才會被編譯。可以很容易的把一個
ASP.NET
應用拆分成多個
Visual Studio
項目。可以很容易的從項目中和源代碼管理中排除一個文件。
|
一個目錄結構就是一個
WEB
項目。沒有項目文件存在。這個目錄下的所有文件,都被作為項目的一部分而存在。 我們實際部署的一個網站,部署上當然不會有任何項目文件存在,如果你想對這個網站進行修改,用這種編程模型就非常適合。我們根本不用在乎這個
WEB
站點中,那些文件屬於哪個項目。
|
編譯和生成
|
跟
Visual Studio .NET 2003
的
Web
應用項目編譯模式幾乎一樣。
項目中的所有的
code-behind
類文件和獨立類文件都被編譯成一個獨立應用程序集。這個應用程序集被放在
Bin
目錄下。因為是一個獨立的應用程序集,你能夠指定應用程序集的名字、版本、輸出位置等信息。
例如:
Model-View-Controller (MVC)
模式就可以在這里很好的被使用。因為它允許在
WEB
頁面和
WEB
用戶控件中引用一個獨立的類51aspx.com。
|
編譯(
Build
)命令僅僅是測試這個
WEB
站點是否編譯正確,調試一個
WEB
站點項目的時候,是通過依賴你的源代碼文件,
ASP.net
進行動態編譯頁面和類來實現的。
預編譯站點和動態編譯站點用的是同一個
compilation semantics
,你可以通過預編譯來提高站點的性能。
ASP.net
動態編譯系統提供了兩種模型:默認的
batch
編譯模型和
fixed-names
編譯模型。
batch
編譯模型中,被編譯成多個應用程序集(典型的是每一個目錄被編譯成一個)。這時候你看應用程序集,很難對應上是哪個目錄51aspx.com。
fixed-names
編譯模型中,網站的每個頁面或者每個用戶控件被編譯成一個應用程序集。
|
Iterative development
|
調試或者運行
Web
頁面的時候,你必須全部編譯整個
WEB
項目。
編譯整個
WEB
項目通常比較快,因為
Visual Studio
使用了增量編譯模式,僅僅只有文件被修改后,這部分才會被增量編譯進去。51aspx.com
|
你可以配置
Visual Studio 2005
的編譯屬性:編譯整個站點、編譯一個指定頁面、或者什么都不作。在最后一種情況下,當你運行一個
WEB
站點的時候,
Visual Studio
僅打開一個瀏覽器51aspx.com,並訪問當前或者起始頁,當這個請求被發送后,
ASP.net
才開始動態編譯。
這種模式下,頁面被動態編譯或者被編譯成不同應用程序集,所以如果你調試或者運行一個頁面的時候,不需要整個項目被編譯通過。有錯誤的部分跟你使用的部分可以互不干擾。
默認情況下,當你運行或調試任何
WEB
頁的時候,
Visual Studio
完全編譯
Web Site
項目。
這么做可以看到編譯時的所有錯誤。但是,在開發進程中,完全編譯整個站點會是相當慢的。所以推薦你在開發調試中,只編譯當前頁。
|
部署
|
因為所有的類文件被編譯成一個應用程序集,當你部署的時候,只需要把這個應用程序集和
.aspx
文件、
.ascx
文件以及其它靜態內容文件一起部署。
這種模型下,
.aspx
文件將不被編譯,當瀏覽器訪問這個頁面的時候,才會被動態編譯。
不過,如果你使用
Web Deployment Projects (
一個
Visual Studio 2005
的插件,沒有被默認包含到
VS2005
中
),
你就可以把
.aspx
文件也編譯進入一個應用程序集中。
如果你只修改了小小的一行代碼,你也需要把整個項目的所有代碼都編譯,並且發布包含所有代碼的這個應用程序集。
|
使用
Visual Studio
的
Publish Website
命令,你可以把
.aspx
文件
和
code-behind
文件編譯成應用程序集,所以你看到的編譯后的
.aspx 文件頭發生了變化。(注意:
Build
命令並不會給你可部署的應用程序集)
最新版本的
Publish
將支持僅編譯
code-behind
文件,這樣部署的時候,將不改變
.aspx
文件。
默認是在
Bin
目錄下預編譯成幾個應用程序集,典型的是一個目錄對應一個應用程序集。
fixed-names
部署選項可以讓每一個
WEB
頁面或者每個
WEB
用戶控件創建一個應用程序集,這樣每個頁面都有一個可部署的應用程序集。但是,
fixed-names
部署選項會增多應用程序集的個數,而且實際內存使用也會增大。
|
從
Visual Studio .NET 2003
升級
|
因為跟
VS2003
采用了一樣的
WEB
項目開發模型,升級是非常非常簡單的。51aspx.com
|
Web site
項目的編譯選項不同導致了它跟
Visual Studio .NET 2003WEB
項目的極大不同。
雖然微軟提供了一個轉換向導,但是如果你的項目如果是一個復雜的
VS2003
項目,使用這個轉換向導后,你還需要對照轉換手冊,做很多工作。
如果你要從
VS2003
升級,建議不要用這種
WEB
站點開發模版。而是使用
Web application
項目。
|
選擇何種
WEB
編程模型
Option or Task
|
Web Application Projects
|
Web Site Projects
|
你有一個大型的
Visual Studio .NET 2003 Web
應用需要遷移到
VS2005
。
|
√
|
|
喜歡使用
single-page code
模型來開發網站頁面。而不是使用
code-behind
模型來編寫網站頁面
|
|
√
|
喜歡采用下面的方式編寫網站:
|
|
√
|
在編寫頁面時候,為了可以快速的看到編寫效果,動態編譯該頁面,馬上可以看到效果,不用編譯整個站點。
|
||
(就是說,只需要保存文件,然后在瀏覽器中刷新一下,就可以看到自己剛剛做的效果)
|
||
需要控制編譯后應用程序集的名字
|
√
|
|
需要每個頁面產生一個應用程序集
|
|
√
|
WEB
頁面或者
WEB
用戶控件中需要使用到單獨的類。
|
√
|
|
需要使用多個
Project
來構建一個
Web
應用。
|
√
|
|
需要處理
pre-build
和
post-build
事件(編譯前后需要有自己額外的處理)
|
√
|
|
希望把一個目錄當作一個
WEB
應用來處理,而不需要新建一個
Project
文件。
|
|
√
|