Web Site Project vs Web Application Project

網友saintchou問了一個問題,他的VS2005 SP1網站發行功能選項跟KB-ASP.NET 2.0 網站部署的變革一文所說的不同(該文留言中有選項畫面圖檔連結),有了圖,答案揭曉: saintchou使用的Web Application Project,與文中討論部署有點棘手的Web Site Project是兩種不同專案類型,發佈網站的選項因此不同。

為什麼Visual Studio中會冒出兩種網站專案類型? 這問題還挺有趣的,且扯到一點歷史,索性再做點補充。

詳細的故事源由在KB-ASP.NET 2.0 網站部署的變革文章-ASP.NET 2.0專案部署問題研究兩篇文章裡提到蠻多的,這裡再強調一下如何在Visual Studio 2005 SP1/Visual Studio 2008裡建立及區別Web Site Project與Web Applicatoin Project。

VS2005在一開始時只有Web Site Project模式(Code-Beside),雖然它有架構簡化、修改更新簡便等特性,但不少開發者適應不良,還是懷念ASP.NET 1.1那種需要先Build DLL才能執行的模式,於是微軟先推出了需要額外安裝的Web Application Project套件,讓開發者可以在VS2005中繼續用ASP.NET 1.1的方式寫網站。等到VS2005 SP1推出時,便將Web Application Project功能改為內建,但對於來不及參與這段過去的人來說,Visual Studio 2005裡"斯斯網站有兩種"變成一件奧妙的事。(Visual Studio 2008裡也同時支援這兩種網站專案)

Web Site Project的建立與開啟方式與Web Application Project不同,Web Site Project要由File/New/Web Site來新增,Web Application Project則是要由File/New/Project,再選擇ASP.NET Web Application專案類型(畫面範例看這裡)。

兩種Web Model要挑哪一種各憑所好(MSDN裡有份二者的比較,還包含了特性對照表,可以做為參考),開發時明確知道你採用的是哪一種專案類型即可。

PS: 我個人偏好Web Site模式,在測試開發階段只要改.cs就可以直接看結果,只要Copy檔案就能執行的特性也很方便;至於要部署到正式環境時,則可借助Web Deployment Project將程式碼預先編譯成DLL,避免原始程式碼外洩的疑慮。

歡迎推文分享:
Published 25 January 2009 01:01 AM 由 Jeffrey
Filed under: ,
Views: 31,292



意見

# surrounding said on 14 January, 2011 03:43 AM

請問一下若建立了一個Web Application Project

本人知道把整個Project放上伺服器可行

但若要避免原始程式碼外洩,當要把它放上伺服器,究竟要放什麼檔才對呢

# Jeffrey said on 14 January, 2011 05:06 PM

to surrounding, 不管是Web Site Project或Web Application Project,都能做到只將bin/*.dll及各網頁的.aspx(不含.cs)複製到伺服器就可以執行。可以善用Visual Studio內建的部署功能: msdn.microsoft.com/.../dd394698.aspx

# James said on 20 May, 2012 09:53 PM

請問Web Application的主要特性是否只是強迫一定要編譯成DLL才能執行程式?

而Web Site模式只要借助Web Deployment Project將程式碼預先編譯成DLL,也可以滿足這個特性?

# Jeffrey said on 21 May, 2012 05:37 AM

to James, 應該這麼說,由於.NET是編譯式的語言(非直譯式),所以程式都需要編譯過才能執行,包含ASP.NET Web Application也是。

事實上,Web Site Project即使沒有使用Web Delpoyment Project,**也一樣會先編譯成DLL才執行**,只是編譯時機是發生在使用者存取網站時,而DLL的存放位置是在暫存目錄區,這些機制都在背後被做掉。加入Web Deployment Project後,只是把編譯時機提早到部署之前,並不是原本不編譯,加入後才編譯。

希望這樣的說明夠清楚。

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<January 2009>
SunMonTueWedThuFriSat
28293031123
45678910
11121314151617
18192021222324
25262728293031
1234567
 
RSS
創用 CC 授權條款
【廣告】
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication