ASP.NET 4.0 來了

作者: Pandora  來源: 博客園  發布時間: 2010-03-12 17:29  閱讀: 8811 次  推薦: 0   原文鏈接   [收藏]  

  伴隨著VS2010的公開測試,ASP.NET4.0也進入了我們的視線。ASP.NET4.0究竟給我們帶來了什么,將在哪些方面提高我們的生產力?

  在何時你需要使用ASP.NET4.0開發你的網站程序?

  • 需要更嚴格的遵守Web標準;
  • 需要更流暢的Web Form開發方式;
  • 需要更好的搜索引擎優化;
  • 需要后知后覺的糾正一些不夠優良的設計,這些設計甚至可能是在ASP.NET 1.0發布之前就存在的;
  • 需要將現有的功能重新改造為支持server farm或跨application domains;
  • 需要將.NET調節和重組為一個整體。

  你不需要學習復雜的設計模式或各種SEO技巧,甚至不需要有代碼重構的能力。忘記那些復雜的規定和教條吧,使用ASP.NET4.0提供的各種方便又實用的新功能,你將能輕松的開發/升級出與時俱進的高質量的程序。而這一切均需要從這里開始:

VS2010帶來了一個新的預定義設置:Web Development(Code Only),如字面所示,它是為了web開發而設計的,但與普通的Web Development模式不同的是,它針對的是喜歡手寫代碼的開發人員,它讓VS看起來更像一個單純的IDE:

至于您是否喜歡,就蘿卜青菜,各有所愛了。。。(我還是喜歡全屏模式。。)

  • 新的項目類型:

VS2010對ASP.NET的項目類型做了大量的更改,具體改動如下:

  1. ASP.NET Web Service Application被完全的移除了;
  2. .Net3.0 帶來的 WCF Service Application 移至 WCF projects 下;
  3. .Net3.5 SP1 帶來的兩個 Dynamic Data 相關的項目被改為更容易理解的名稱,例如 Dynamic Data Web Application 使用LINQ to SQL替換了之前的Entity Framework;
  4. MVC項目有了一個稱為 ASP.NET MVC2 Empty Web Application 的新選擇。新的 ASP.NET MVC2 Empty Web Application 項目會建立如下的內容:標準的目錄(空),空白的global.asax文件,web.config文件,標準的jQuery和MS AJAX庫。相比較而言,ASP.NET MVC2 Web Application項目會生成一個可工作的網站,實現一個簡單的membership模型,生成并使用master page,error page及所需的content page,并且可以生成一個示例test project。這對MVC新手非常有幫助,可以較為全面的使用MVC的功能。
  • 簡潔的Web.Config文件

在VS2008SP1中,默認的web.config文件代碼有139行,而在ASP.NET4.0中,web.config 文件只有6行:

原理很簡單,ASP.NET團隊對web.config文件進行了重構,將通用的設置寫進默認的機器級別的web.config中。只剩下兩個需要頻繁變化的設置項。

  1. debug的值在Web Application 項目中會被默認設置為true,在Web Site 項目中會被默認設置為false。
  2. targetFramework的值可以設置為:4.0,3.5,3.0和2.0。這個選項會被IIS識別并自動賦予ASP.NET程序池相應的Framework版本。
  3. Intellisense在舊版的web.config中會不起作用。可以通過刪除原web.config中configuration的namespace(xmlns)屬性就可以了。

*.config文件的層級結構:

在新的config文件定義中,一系列功能例如:Dynamic  Data,routing與charting全部默認開啟。

關于不同級別的config文件的關系,非常類似與CSS文件的復寫。簡單的來說就是離你越近的config權值越高,也就是最底層的machine.config權值最低,你新建的web項目中的web.config的權值最高。

  • root的config文件為machine.config,位于C:\Windows\Microsoft.NET\Framework\ v4.0.xyz\Config。
  • 機器級別的web.config文件同樣位于上面的那個目錄,它在machine.config文件的基礎上定義了web特定的一些節點的默認值,也就是在之前的ASP.NET版本中創建項目生成的web.config的文件中的那些值。
  • 同樣在上面那個目錄中,你會發現如下的文件:web_hightrust.config, web_mediumtrust.config, web_lowtrust.config 和 web_minimaltrust.config。如果你的站點的信任級別不是“FULL”,將會使用對應的config文件作為默認值。
  • 在你創建的項目中,會默認生成一個web.config文件,這也是我們通常所說的web.config文件。
  • 在你的項目的任何目錄中,你都可以添加一個web.config文件,這個文件中的值會覆蓋項目根目錄中的值。你可以利用這個特性做一些例如權限限制之類的功能。
  • Config Transformation Files

這個新功能是為了應對同一個網站在不同服務器需要不同的web.config文件的問題,例如需要不同的connectionstring等。在以前我們可能很難維護這些不同的web.config文件(在我經歷的項目中,為了解決這個問題,使用了com組建讀取注冊表,在不同機器的注冊表中寫入相應的信息),而現在有了這個新功能,我們可以以編程的方式統一的解決和處理這個問題(基于XPATH技術)。你只需要在web.config文件上右鍵單擊,并選擇“Add Config Transforms”即可。

  • Browscap.ini

對于使用過ASP的程序員來說,應該對這個文件并不陌生。這個文件是用來記錄所有要使用的瀏覽器,以及這些瀏覽器所支持的特性(例如是否支持activeX)。

在.NET2.0中,微軟將browsercap.ini的功能分割為一系列的*.browser文件。當收到一個請求的時候,我們就可以根據這個請求發起的browser找到對應的browser文件來獲取瀏覽器的能力。這些數據會被傳遞到HttpBrowserCapabilities對象中,我們就可以使用這些數據了。

所有的browser文件可以在C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers下被找到。里面其實還是挺齊全的。

將一個文件分割成一系列文件會造成更加難以維護的情況,但這么做的理由似乎也不難猜想,就是微軟希望一系列的瀏覽器使用同一個文件,例如ie.browser, mozilla.browser之類的。

在.NET4.0中,微軟繼續沿襲了這一思路,并且大范圍的更新了這些文件,以支持現在流行的瀏覽器,特別是移動瀏覽器:iPhones, Windows PhoneOS, Android等,并且不會把這些瀏覽器簡單的處理成wap瀏覽器。對于桌面瀏覽器來講,也添加了對Firefox,Chrome和Safari的支持。

這么做很好,但是問題來了,難道我們要等每個新的.Net Framework發布后才能獲得這些新的文件嗎?答案當然是否定的。

如今瀏覽器發展日新月異,馬上又即將有IE9, Opera 10.5, Gecko 1.9.3和新的IE for mobilephone等等。如果我們希望支持這些新的瀏覽器,我們有四種選擇:

  1. 手動更新這些browser文件或者創建新的browser文件。
  2. 創建一個新的browser文件并將它添加在你的站點的App_Browser文件夾下。但這樣只對你當前的站點有效。
  3. 擴展現有的browser capabilities provider。
  4. 創建一個自定義的browser capabilities provider替換現有的。

你可以針對你所擁有的資源或網站架構來選擇如何解決這個問題。我們推薦使用自定義的browser capabilities provider去解決,雖然需要更多代碼,但一旦完成,之后的更新將會更輕松。這就意味著你能更迅速的支持新的瀏覽器。

但無論如何,支持一個新的瀏覽器都是一個困難的工作,但.NET4.0給我們帶來的最新的browser支持文件和一個可擴展的方法。

  • 新的Page屬性

任何ASP.NET開發人員對于@Page標簽都不會陌生。好消息是ASP.NET4.0完全兼容之前版本所提供的42個屬性。更好的消息是,ASP.NET4.0還帶來了6個新的屬性,以應對日益復雜的開發需求:

  1. ClientIDMode 顧名思義,這個屬性用來定義ASP.NET將如何生成控件的客戶端ID,如果你是一個前端開發人員,你將會明白能夠確定的控制客戶端ID的生成將帶來多大的便利。可能的值為AutoID(default/current),Predictable,Static和Inherit。
  2. ClientTarget 用來定義頁面將針對哪個瀏覽器來執行。這將覆蓋ASP.NET提供的自動瀏覽器識別功能,可能的應用場景為比如我們只需要支持IE瀏覽器或只需要支持FIREFOX等。
  3. MetaDescription 顧名思義,用來生成頁面的meta 的description標簽。在我看來只是提供了一個更為官方的方法和方式,標準化了這一流程。
  4. MetaKeywords 顧名思義,用來生成meta的keywords標簽。
  5. TargetSchema 用來定義驗證頁面所需的schema。這個標簽只是用來標識的,并不會真正的執行。可以看作一種代碼注釋。
  6. ViewStateMode 用來定義頁面的VIEWSTATE是opt-in還是opt-out(默認)模式。

總體來說變化不大,提供了一些呼聲很高的功能。

  • 生成更純凈,更標準的HTML代碼

這一直是ASP.NET中比較大的問題。ASP.NET1.1生成的html代碼基本都不符合標準,這一點在ASP.NET 2.0中已經進行了改進,我們在web.config中引入了xhtmlConformance,用來定義控件將生成何種標準的HTML代碼,默認為XHTML1.0 Transitional standard(Transitional)。相應的,我們可以將它設定為XHTML1.0 Strict(Strict)或者選擇生成與ASP.NET1.1相同的HTML代碼(Legacy,主要用來兼容從ASP.NET1.1升級而來的網站)。

不幸的是,在Legacy模式運行的網站與ASP.NET AJAX不兼容,而且盡管Transitional與Strict模式與XHTML標準兼容,但生成的代碼對CSS也是非常不友好的。例如:

  1. menu用table輸出而不是UL/OL。
  2. 服務器端的控件屬性例如 border=0 或disabled=disabled 是強制的并且無法移除。
  3. 對于支持template的控件,你可以對template內的代碼進行任何的自定義,但無法移除最外層的table標簽。

ASP.NET3.5帶來的ListView,DataPager和CSS Control Adapters控件帶來了過渡性的解決方案,ASP.NET4.0完全將他們集成在新版本的System.Web中,使得微軟可以使ASP.NET 4.0可以盡可能的對CSS友好。毋庸置疑,生成干凈的HTML標簽是ASP.NET 4.0的重要目標之一。

  • ControlRenderingCompatibilityVersion

與xhltmlComformance類似,ASP.NET4.0為web.config帶來了這個新的屬性。當設置為3.5時,一切將和原來一致,但當你設置為4.0時,控件將按照全新的模式輸出HTML代碼:

  1. xhtmlConformance被設置為Strict。
  2. menu將會用UL/OL的形式輸出。
  3. 多余的HTML屬性將被移除,甚至連validation的字體顏色也不會被設置為紅色。
  4. 將可以對控件使用RenderOuterTable屬性來控制是否輸出外圍的table標簽。

在我看來這對于習慣使用控件的同學是個好消息。微軟又幫你做了許多工作。

  • 新增的一些小功能

列舉一些新增的細節功能

  1. 內置<asp:chart>。
  2. 三種新的Redirect方式:Response.RedirectToRoute(HTTP302), Response.RedirectToRoutePermanent(HTTP301)和Response.RedirectPermanent(HTTP301)。
  3. Inline的HTML encoded 字符串。
  4. Routing配置更便捷。
0
0
 
標簽:ASP.NET4.0
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()