3 回答

TA貢獻2039條經(jīng)驗 獲得超8個贊
Scenario
Web Application Project
Web Site Project
Project definition
跟 Visual Studio .NET 2003 類似,由于項目文件的存在,只有被項目文件所引用的文件才會在Solution Explorer中出現(xiàn)。而且只有這些文件才會被編譯??梢院苋菀椎陌岩粋€ASP.NET應(yīng)用拆分成多個Visual Studio項目??梢院苋菀椎膹捻椖恐泻驮创a管理中排除一個文件。
一個目錄結(jié)構(gòu)就是一個WEB項目。沒有項目文件存在。這個目錄下的所有文件,都被作為項目的一部分而存在。 我們實際部署的一個網(wǎng)站,部署上當然不會有任何項目文件存在,如果你想對這個網(wǎng)站進行修改,用這種編程模型就非常適合。我們根本不用在乎這個WEB站點中,那些文件屬于哪個項目。
編譯和生成
跟Visual Studio .NET 2003的Web應(yīng)用項目編譯模式幾乎一樣。
項目中的所有的code-behind 類文件和獨立類文件都被編譯成一個獨立應(yīng)用程序集。這個應(yīng)用程序集被放在Bin目錄下。因為是一個獨立的應(yīng)用程序集,你能夠指定應(yīng)用程序集的名字、版本、輸出位置等信息。
例如:Model-View-Controller (MVC)模式就可以在這里很好的被使用。因為它允許在WEB頁面和WEB用戶控件中引用一個獨立的類51aspx.com。
編譯(Build)命令僅僅是測試這個WEB站點是否編譯正確,調(diào)試一個WEB站點項目的時候,是通過依賴你的源代碼文件,ASP.net進行動態(tài)編譯頁面和類來實現(xiàn)的。
預(yù)編譯站點和動態(tài)編譯站點用的是同一個 compilation semantics ,你可以通過預(yù)編譯來提高站點的性能。
ASP.net 動態(tài)編譯系統(tǒng)提供了兩種模型:默認的batch編譯模型和fixed-names 編譯模型。
batch 編譯模型中,被編譯成多個應(yīng)用程序集(典型的是每一個目錄被編譯成一個)。這時候你看應(yīng)用程序集,很難對應(yīng)上是哪個目錄51aspx.com。
fixed-names 編譯模型中,網(wǎng)站的每個頁面或者每個用戶控件被編譯成一個應(yīng)用程序集。
Iterative development
調(diào)試或者運行Web頁面的時候,你必須全部編譯整個WEB項目。
編譯整個WEB項目通常比較快,因為Visual Studio使用了增量編譯模式,僅僅只有文件被修改后,這部分才會被增量編譯進去。51aspx.com
你可以配置Visual Studio 2005的編譯屬性:編譯整個站點、編譯一個指定頁面、或者什么都不作。在最后一種情況下,當你運行一個WEB站點的時候,Visual Studio 僅打開一個瀏覽器51aspx.com,并訪問當前或者起始頁,當這個請求被發(fā)送后,ASP.net 才開始動態(tài)編譯。
這種模式下,頁面被動態(tài)編譯或者被編譯成不同應(yīng)用程序集,所以如果你調(diào)試或者運行一個頁面的時候,不需要整個項目被編譯通過。有錯誤的部分跟你使用的部分可以互不干擾。
默認情況下,當你運行或調(diào)試任何WEB頁的時候,Visual Studio完全編譯Web Site項目。
這么做可以看到編譯時的所有錯誤。但是,在開發(fā)進程中,完全編譯整個站點會是相當慢的。所以推薦你在開發(fā)調(diào)試中,只編譯當前頁。
部署
因為所有的類文件被編譯成一個應(yīng)用程序集,當你部署的時候,只需要把這個應(yīng)用程序集和 .aspx文件、.ascx文件以及其它靜態(tài)內(nèi)容文件一起部署。
這種模型下,.aspx 文件將不被編譯,當瀏覽器訪問這個頁面的時候,才會被動態(tài)編譯。
不過,如果你使用Web Deployment Projects (一個Visual Studio 2005的插件,沒有被默認包含到VS2005中),你就可以把 .aspx 文件也編譯進入一個應(yīng)用程序集中。
如果你只修改了小小的一行代碼,你也需要把整個項目的所有代碼都編譯,并且發(fā)布包含所有代碼的這個應(yīng)用程序集。
使用Visual Studio 的 Publish Website 命令,你可以把.aspx 文件和 code-behind 文件編譯成應(yīng)用程序集,所以你看到的編譯后的 .aspx 文件頭發(fā)生了變化。(注意:Build 命令并不會給你可部署的應(yīng)用程序集)
最新版本的 Publish 將支持僅編譯 code-behind 文件,這樣部署的時候,將不改變 .aspx 文件。
默認是在Bin目錄下預(yù)編譯成幾個應(yīng)用程序集,典型的是一個目錄對應(yīng)一個應(yīng)用程序集。
fixed-names 部署選項可以讓每一個WEB頁面或者每個WEB用戶控件創(chuàng)建一個應(yīng)用程序集,這樣每個頁面都有一個可部署的應(yīng)用程序集。但是,fixed-names 部署選項會增多應(yīng)用程序集的個數(shù),而且實際內(nèi)存使用也會增大。
從Visual Studio .NET 2003升級
因為跟VS2003采用了一樣的WEB項目開發(fā)模型,升級是非常非常簡單的。51aspx.com
Web site 項目的編譯選項不同導(dǎo)致了它跟Visual Studio .NET 2003WEB項目的極大不同。
雖然微軟提供了一個轉(zhuǎn)換向?qū)?,但是如果你的項目如果是一個復(fù)雜的VS2003項目,使用這個轉(zhuǎn)換向?qū)Ш螅氵€需要對照轉(zhuǎn)換手冊,做很多工作。
如果你要從VS2003升級,建議不要用這種WEB站點開發(fā)模版。而是使用Web application 項目。

TA貢獻1827條經(jīng)驗 獲得超4個贊
(razor視圖引擎機制,也可以使用aspx視圖引擎,不過不推薦使用aspx視圖引擎)。
webforms中可以拖控件,就和winform一樣,控件屬性也很相似,最后會在服務(wù)器中生成一個控件樹以<html>為根,依次向下解析生成一個完整的<html>文檔,發(fā)送給瀏覽器形成頁面。
mvc中則將網(wǎng)站分為model,view,controller,view用來呈現(xiàn)最后的html文件;controller中有很多的Action,用來處理請求;model是一些實體類模型,可以用來存放數(shù)據(jù)庫中的數(shù)據(jù),傳到頁面顯示。同時,mvc中也沒有了拖控件的lower操作,默認引入了bootstrap使用來設(shè)計頁面。而且微軟還提供了一些幫助器,HtmlHelper,UrlHelper,AjaxHelper可以很方便的幫助開發(fā)人員進行頁面的設(shè)計。
- 3 回答
- 0 關(guān)注
- 364 瀏覽
添加回答
舉報