Vs2005,VS2008,VS2010中都有建立web應用程式和Web網站,總搞的大家不知所戳。
web應用程式可能是微軟為了讓程式員很好的從winform過渡到web開發而保留了。Web網站就完全要應用到web開發的。其實兩者之間沒有什麼大的區別,自己從表象總結了一下他們的異同點。
相同:
1、都是設計Asp網頁的。
2、都可以添加ASP.Net檔案夾(都包括App_Browsers、App_Data、App_GlobalResources、App_LocalResources、App_Themes)。
不同:
1、web應用程式Default.aspx顯示有兩個原有檔案及Default.aspx.cs和Default.aspx.designer.cs;Web網站Default.aspx顯示有一個原有檔案Default.aspx.cs。
2、web應用程式有重建和發布兩項;Web網站只有一個發布網站。
3、web應用程式和一般的winform沒有什麼區別都有引用的是命名空間等;Web網站在引用後出現一個bin檔案夾那裡存放dll和pdb檔案。
4、web應用程式可以作為類庫被引用;Web網站則不可以作為類庫被引用。
5、web應用程式可以添加ASP.Net檔案夾中不包括bin、App_Code;Web網站可以添加ASP.Net檔案夾包括bin、App_Code。
6、web應用程式還可添加組件和類;Web網站則沒有。
7、源檔案雖然都是Default.aspx.cs但是web應用程式有命名空間,多了一項System.Collections空間引用。
原vs.net2005 中沒有web應用程式項目。只有建立網站的功能。SP1中增加了web應用程式的功能。此功能推出,滿足了眾多VS.NET2003開發網站的朋友們。
vs2005的“網站”項目中。其實也有一些優點。原來的vs2003和VS2005SP1中的WEB應用程式.是將整個網站應用程式程式編譯成一個 DLL。而網站項目中是對每個aspx產生的程式碼檔案,單獨編譯。特殊目錄App_Code中代碼檔案才編譯成單獨一個程式集。這種設計。可以單獨產生一 個頁和該頁程式集。上傳的時候,可以只更新此頁。
但這個“網站”項目,編譯速度慢,類型檢查不徹底。兩個不同的ASPX可以產生相同的兩個名稱的類。發布的時候,也很慢,會刪除所有原始發布目錄中的所有檔案,且複製所有新的檔案。並且中間還有停頓,需要使用者主動按覆蓋檔案的按鈕才能發布。
而在SP1中的WEB應用程式中,編譯和發布速度中,明顯變快,發布的時候一開始就可以設定是否覆蓋。原來的網站要升級過來,需要產生一個設計類代 碼頁。有了此檔案,編譯的時候,編譯器就不用再分析ASPX頁面了。明顯加快了編譯速度。且只產生一個程式集。執行的速度頁快了。
網站編譯速度快,使用了增量編譯模式,僅僅只有檔案被修改後,這部分才會被增量編譯進去。
產生的程式集 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="FileList.aspx.cs" 批量替換成 CodeFile="FileList.aspx.cs"
很多新手在VS中建立項目的時候不明白網站和Web應用程式的區別,下面簡單總結一下
1、Web應用程式在開啟的時候會將所有項目都編譯,所以說一開始開啟一個Web應用程式會比較慢,但是之後的運行就比較快了
網站是在訪問每一個頁面的時候對這個頁面進行編譯,所以說訪問每個頁面的速度都差不多
2、基於上面的原因
Web應用程式在修改了頁面底層的代碼之後需要重新進行編譯
網站不需要重新編譯
3、網站可以添加APS檔案夾,Web應用程式不可以
4、Web應用程式的項目會產生Dll檔案
網站在發布的時候,會自動產生Dll檔案,但是每次的Dll檔案名稱都不一樣
5、Web應用程式會有解決方案和專案檔