首頁 >後端開發 >C#.Net教程 >在VS中新建網站和新建WEB專案有什麼區別

在VS中新建網站和新建WEB專案有什麼區別

巴扎黑
巴扎黑原創
2017-04-30 10:43:564744瀏覽

WebApplication程式設計模型的優點

●網站編譯速度快,使用了增量編譯模式,只要只有檔案被修改後,這部分才會被增量編譯進去。

●產生的程序集
WebSite:產生隨機的程式集名,需要透過外掛WebDeployment才可以產生單一組件
WebApplication:可以指定網站專案產生單一組件,因為是獨立的組件,所以和其他專案一樣可以指定應用程式集的名字、版本、輸出位置等資訊

●可以將網站拆分成多個項目以方便管理

●可以從專案中和原始碼管理排除一個檔案

●方便的支援VSTS的Team Build方便每日建置

# ●更強大的程式碼檢查功能,並且檢查策略受原始碼控制

●可以對編譯前後進行自己規定的處理

●對App_GlobalResources 的Resource強類別支援(網路上說的,還沒了解)

●直接升級使用VS2003建構的大型系統

WebSite程式設計模型的優點

●動態編譯頁面,馬上可以看到效果,不用編譯整個網站(主要優勢)

●同上,可以使錯誤的部分和使用的部分不相干擾(可以要求只有編譯通過才能簽入)

# ●可以每個頁面產生一個程序集(一般不會採用這種方式)

●可以把目錄當做一個Web應用來處理,直接複製檔案就可以發布,不需要專案檔(適合小網站)

●可以把頁面也編譯到程式集中(應該用不到,WebApplication也可以透過WebDeployment外掛來實現)

兩種程式設計模型的互相轉換

VS2005 SP1內建了轉換程序,可以非常方便的從WebSite轉換到WebApplication
## 只需要複製文件,右鍵執行“轉換為Web應用程式”即可。

未查到有專門的反向轉換工具,但比較後發現如果轉換也非常簡單。
刪除所有*.designer.cs
將*.aspx、*.ascx、*.master頁面檔案中的 Codebehind="******.aspx.cs" 批次替換成 CodeFile="******.aspx.cs"

這樣就可以轉換回來了

Scenario

Web Application Project

Web Site Project

#

Project definition

#

Visual Studio .NET 2003 類似,由於專案文件的存在,只有被專案文件引用的文件才會在Solution Explorer中出現。而且只有這些文件才會被編譯。可以很容易的把一個ASP.NET套用拆分成多個Visual Studio專案。可以很容易的從專案中和原始碼管理中排除一個檔案。

 

一個目錄結構就是一個WEB專案。沒有項目文件存在。這個目錄下的所有文件,都被當作專案的一部分而存在。
我們實際部署的一個網站,部署上當然不會有任何專案文件存在,如果你想對這個網站進行修改,用這種程式設計模型就非常適合。我們根本不用在乎這個
WEB網站中,那些檔案屬於哪個專案。

#

編譯和產生

跟著Visual Studio .NET 2003Web應用程式專案編譯模式幾乎一樣。

專案中的所有的code-behind 類別檔案和獨立類別檔案都被編譯成一個獨立應用程式集。這個應用程式集被放在Bin目錄下。因為是一個獨立的應用程式集,你能夠指定應用程式集的名字、版本、輸出位置等資訊。

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

編譯(Build)指令只是測試這個WEB網站是否編譯正確,調試一個WEB網站專案的時候,是透過依賴你的原始碼文件,ASP.net進行動態編譯頁面和類別來實現的。

預先編譯網站和動態編譯網站用的是同一個 compilation semantics ,你可以透過預編譯來提升網站的效能。

ASP.net 動態編譯系統提供了兩個模型:預設的batch 編譯模型和fixed-names 編譯模型。

batch 編譯模型中,被編譯成多個應用程式集(典型的是每一個目錄被編譯成一個)。這時候你看應用程式集,很難對應上是哪個目錄。

fixed-names 編譯模型中,網站的每個頁面或每個使用者控制項被編譯成一個應用程式集。

 

#

Iterative
development

調試或執行Web頁面的時候,你必須全部編譯整個WEB專案。

編譯整個WEB專案通常比較快,因為Visual Studio使用了增量編譯模式,隻隻有檔案被修改後,這部分才會被增量編譯進去。

你可以設定Visual Studio 2005的編譯屬性:編譯整個網站、編譯一個指定頁面、或什麼都不做。在最後一種情況下,當你執行一個WEB網站的時候,Visual Studio 只打開一個瀏覽器,並訪問目前或起始頁,當這個請求被傳送後,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專案開發模型,升級是非常非常簡單的。

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 檔。

 

#
#

以上是在VS中新建網站和新建WEB專案有什麼區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn