Web Site 與 Web Application 的區別

[不知道原出處哪裏,但是感謝原作者]

WebSite 與 Web Application 的區別

"網站"是以文件目錄爲基本單位管理的,文件夾中的所有文件都是項目的一部分,直接把iis設成開發目錄就可以運行,是非常適合web開發的一種模式。它沒有項目文件,不需要編譯,方便調試。是vs2005新推出的一種模式。

"應用程序"是以項目爲管理基本單位的。是爲了組件化開發等準備的,有項目文件,需要編譯發佈,適合團隊開發使用,但是對web的開發模式並不十分適應。主要是爲了兼容win的開發方式,是一種遺留模式

一些開發者認爲Web Site 項目使用起來更加自然,方便。而另一些開發者則比較喜歡清晰明瞭的定義項目中的使用到的資源和文件,而不是象Web Site中,只要是在網站根目錄下的文件都是網站的資源(儘管Web Site中也有排除文件的功能,但是是通過修改文件的後綴來實現的,和Web Application中記錄到項目文件中的做法是不一樣的)。

下面是Web Site 和 Web Application 在不同情況下的比較。

Option or Task

Web Application Projects

Web Site Projects

將大型 Visual Studio .NET 2003 應用程序遷移到 Visual Studio 2005。

X

希望不使用代碼分離技術。

X

希望在開發中可以動態編譯頁面,不需在每個文件修改,保存後,手動編譯,而只是通過刷新頁面就看到修改的效果。

X

需要控制項目生成的程序集的名字、版本、輸出位置等信息

X

需要針對每個頁面生成獨立的程序集。

X

使用獨立的類來引用頁控件類和用戶控件類。

X

使用多個 Web 項目生成 Web 應用程序。

X

在編譯過程中添加預先生成和後期生成步驟。

X

需要直接使用獨立的文件夾,作爲web 項目時,並且不創建項目文件。

X

下面的表格列出了Web Application 和 Web Site 的重要區別。

情況

Web Application Project

Web Site Project

工程定義

只有在 Web Application的解決方案中引用的文件纔是項目的一部分。這些文件也顯示在解決方案資源管理器中,並在生成期間進行編譯。由於存在項目文件,因此有些方案更加容易實現。例如,可以將一個 ASP.NET 應用程序細分爲多個 Visual Studio 項目。還可以輕鬆地從項目和源代碼中排除文件。

Web site 使用文檔結構管理項目文件。他不包括項目文件,文件夾中的所有文件都是項目的一部分

適用於現存不包含項文件的網站目錄。

編譯和生成輸出

項目中所有的程序代碼文件,和獨立的文件都被編譯成爲一個程序集,保存在bin文件夾中,可以指定程序集的名字、版本、輸出位置等信息

在Web Site 項目中使用生成命令時,並不會生成程序集 ,而只是對Web Site進行驗證 。在運行Web Site的時候,由asp.net的動態編譯部署的頁面,類源文件。

同時也可以對站點進行預編譯以提高性能,在預編譯中使用的是和動態編譯同樣的技術。

Asp.net預編譯有2中模式. batch mode (the default) and fixed-names mode. batch mode 中生成一個程序集。fixed mode 每個頁面,用戶控件都生成獨立的程序集。

開發

在需要運行和調試程序之前需要進行編譯整個項目,但是通常Web Application編譯速度很快,因爲使用了增量編譯模式,僅僅只有文件被修改後,這部分纔會被增量編譯進去。

由於使用了動態編譯機制,並且編譯到不同的程序集,所以訪問或者調試特定頁面時,不需要編譯整個項目編譯成功。

生成命令會對整個項目進行驗證,但是速度較慢,所以建議在開發和調試的過程中,僅使用編譯當前頁面。

部署

由於所以代碼文件都生成爲一個程序集,所以只需要把程序集和.aspx等頁面文件部署到服務器上。

.aspx文件只有在被瀏覽器訪問到的時候才進行編譯。

每次更新程序集的時候,相當於替換了所有的頁面代碼.

使用發佈命令可以把.aspx文件和後臺代碼文件都編譯到程序集中,如果選擇了updateable publish option 時,只是對後臺代碼進行編譯 。

默認模式會針對每個文件夾生成一個程序集.固定名稱模式,會針對每個頁面,控件生成一個程序集 ,不過可能造成存儲空間的額外負擔。

從Visual Studio .NET 2003 升級

由於和.net 2003工作原理相同,基本不需要太多的操作。

需要使用升級嚮導,並且需要其他的一些額外操作。

WebApplication編程模型的優點:ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  ●網站編譯速度快,使用了增量編譯模式,僅僅只有文件被修改後,這部分纔會被增量編譯進去。ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  ●生成的程序集ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  WebSite:生成隨機的程序集名,需要通過插件WebDeployment纔可以生成單一程序集WebApplication:可以指定網站項目生成單一程序集,因爲是獨立的程序集,所以和其他項目一樣可以指定應用程序集的名字、版本、輸出位置等信息ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  ●可以將網站拆分成多個項目以方便管理ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  ●可以從項目中和源代碼管理中排除一個文件ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  ●支持VSTS的Team Build方便每日構建ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  ●更強大的代碼檢查功能,並且檢查策略受源代碼控制ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  ●可以對編譯前後進行自己規定的處理ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  ●對App_GlobalResources 的Resource強類支持ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  ●直接升級使用VS2003構建的大型系統ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  WebSite編程模型的優點:ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  ●動態編譯該頁面,馬上可以看到效果,不用編譯整個站點(主要優勢)ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  ●同上,可以使錯誤的部分和使用的部分不相干擾ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  ●可以每個頁面生成一個程序集ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  ●可以把一個目錄當做一個Web應用來處理,直接複製文件就可以發佈,不需要項目文件ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  ●可以把頁面也編譯到程序集中ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  兩種編程模型的互相轉換:ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  VS2005 SP1內置了轉換程序,可以非常方便的從WebSite轉換到WebApplicationZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  只需要複製文件,右鍵執行“轉換爲Web應用程序”即可。ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  未查到有專門的反向轉換工具,但比較後發現如果轉換也非常簡單。ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  *.designer.csZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  *.aspxZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  *.ascxZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  *.masterZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  刪除所有*.designer.csZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  將*.aspx、*.ascx、*.master頁面文件中的 Codebehind="FileList.aspx.cs" 批量替換成 CodeFile="FileList.aspx.cs"ZC¸Bej?àbbs.51aspx.comæ'âˆoD"]éƒ
  總之,大網站比較適合用WebApplication項目,小網站比較適合用WebSite項目。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章