1.6 新建Web網(wǎng)站與新建Web應用程序的區(qū)別
在Visual Studio 2010中,除了可以使用創(chuàng)建Web應用程序的方式來構(gòu)建自己的Web項目之外,還可以通過創(chuàng)建Web網(wǎng)站的方式來構(gòu)建Web項目。
其中,Web網(wǎng)站的創(chuàng)建方法:打開Visual Studio 2010主窗體,在工具欄里選擇“New”|“Web Site”命令,在彈出的New Web Site窗體里可以通過“ASP.NET Web Site”和“Empty Web Site”這兩種模板來創(chuàng)建自己的Web網(wǎng)站。
其實,微軟早在Visual Studio 2005的時候就提供了新建Web網(wǎng)站的功能,它是完全面向Web開發(fā)的。與Web應用程序相比,它們存在如下不同之處:
1. 從整體結(jié)構(gòu)來看
Web應用程序和一般的Winform程序沒有什么區(qū)別,它們都是按項目進行管理的,只有被項目文件所引用的文件才會在Solution Explorer中出現(xiàn),而且只有這些文件才會被編譯??梢院苋菀椎匕岩粋€ASP.NET應用拆分成多個Visual Studio項目,也可以很容易地從項目和源代碼管理中排除一個文件。而項目的文件都是按照命名空間來管理的,Web應用程序可以非常方便地引用其他的類庫,并且自己本身也可以作為類庫被引用,非常適合于項目分模板進行開發(fā)。因此,有人認為Web應用程序可能是微軟為了讓程序員很好地從Winform過渡到Web開發(fā)而保留了。
與Web應用程序相比,Web網(wǎng)站采用了全新的開發(fā)結(jié)構(gòu),一個目錄結(jié)構(gòu)就是一個Web項目,這個目錄下的所有文件,都作為項目的一部分而存在。它拋棄了命名空間的概念,并且Web網(wǎng)站不可以作為類庫被引用。
2. 從編譯部署看
調(diào)試或者運行Web應用程序頁面的時候,必須全部編譯整個Web項目。編譯整個Web項目通常比較快,因為Visual Studio使用了增量編譯模式,僅僅只有文件被修改后,這部分才會被增量編譯進去。因為所有的類文件被編譯成一個應用程序集,當你部署的時候,只需要把這個應用程序集和 .aspx文件、.ascx文件、配置文件以及其他靜態(tài)內(nèi)容文件一起部署。這種模型下,.aspx 文件將不被編譯,當瀏覽器訪問這個頁面的時候,才會被動態(tài)編譯。
而在Web網(wǎng)站項目中的所有的Code-Behind 類文件和獨立類文件都被編譯成一個獨立的應用程序集,這個應用程序集被放在Bin目錄下。因為是一個獨立的應用程序集,你能夠指定應用程序集的名字、版本、輸出位置等信息。在默認情況下,當你運行或調(diào)試任何Web頁的時候,Visual Studio會完全編譯Web網(wǎng)站項目,這么做可以讓你看到編譯時的所有錯誤。但是,在開發(fā)進程中,完全編譯整個站點會是相當慢的。所以推薦你在開發(fā)調(diào)試中只編譯當前頁。
根據(jù)上面的闡述,可以自行決定選擇創(chuàng)建Web項目的方式。如果在開發(fā)上有如下需求,建議使用創(chuàng)建Web應用程序的方式來構(gòu)建自己的Web項目:
希望采用項目的管理方式,需要使用多個項目來構(gòu)建一個Web應用,即把一個大的ASP.NET項目拆分成多個小項目。
在開發(fā)上Web頁面或者Web用戶控件中需要使用到單獨的類,并且希望使用命名空間來進行管理,編譯后要控制應用程序集的名字。
如果在開發(fā)上有下列需求,建議使用創(chuàng)建Web網(wǎng)站的方式來構(gòu)建自己的Web項目:
喜歡使用 Single-Page Code 模型來開發(fā)網(wǎng)站頁面,而不是使用Code-Behind 模型來編寫網(wǎng)站頁面。
在編寫頁面時,為了可以快速地看到編寫效果,動態(tài)編譯該頁面,馬上可以看到效果,不用編譯整個站點。
需要每個頁面產(chǎn)生一個應用程序集。
希望把一個目錄當做一個Web應用來處理,而不需要新建一個項目文件。