.net中Web應用程序和web網站的區別


Scenario
Web Application Project
Web Site Project
Project definition
Visual Studio .NET 2003 類似,由於項目文件的存在,只有被項目文件所引用的文件才會在 Solution Explorer 中出現。而且只有這些文件才會被編譯。可以很容易的把一個 ASP.NET 應用拆分成多個 Visual Studio 項目。可以很容易的從項目中和源代碼管理中排除一個文件。
一個目錄結構就是一個 WEB 項目。沒有項目文件存在。這個目錄下的所有文件,都被作為項目的一部分而存在。 我們實際部署的一個網站,部署上當然不會有任何項目文件存在,如果你想對這個網站進行修改,用這種編程模型就非常適合。我們根本不用在乎這個 WEB 站點中,那些文件屬於哪個項目。
編譯和生成
Visual Studio .NET 2003 Web 應用項目編譯模式幾乎一樣。
項目中的所有的 code-behind 類文件和獨立類文件都被編譯成一個獨立應用程序集。這個應用程序集被放在 Bin 目錄下。因為是一個獨立的應用程序集,你能夠指定應用程序集的名字、版本、輸出位置等信息。
例如: Model-View-Controller (MVC) 模式就可以在這里很好的被使用。因為它允許在 WEB 頁面和 WEB 用戶控件中引用一個獨立的類51aspx.com。
編譯( Build )命令僅僅是測試這個 WEB 站點是否編譯正確,調試一個 WEB 站點項目的時候,是通過依賴你的源代碼文件, ASP.net 進行動態編譯頁面和類來實現的。
預編譯站點和動態編譯站點用的是同一個 compilation semantics ,你可以通過預編譯來提高站點的性能。
ASP.net 動態編譯系統提供了兩種模型:默認的 batch 編譯模型和 fixed-names 編譯模型。
batch 編譯模型中,被編譯成多個應用程序集(典型的是每一個目錄被編譯成一個)。這時候你看應用程序集,很難對應上是哪個目錄51aspx.com。
fixed-names 編譯模型中,網站的每個頁面或者每個用戶控件被編譯成一個應用程序集。
Iterative development
調試或者運行 Web 頁面的時候,你必須全部編譯整個 WEB 項目。
編譯整個 WEB 項目通常比較快,因為 Visual Studio 使用了增量編譯模式,僅僅只有文件被修改后,這部分才會被增量編譯進去。51aspx.com
你可以配置 Visual Studio 2005 的編譯屬性:編譯整個站點、編譯一個指定頁面、或者什么都不作。在最后一種情況下,當你運行一個 WEB 站點的時候, Visual Studio 僅打開一個瀏覽器51aspx.com,並訪問當前或者起始頁,當這個請求被發送后, 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 項目開發模型,升級是非常非常簡單的。51aspx.com
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 文件。
 

 

 

 

 

【原文地址:http://blog.sina.com.cn/s/blog_593ba98c010123wj.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM