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