ASP.NET 4.0 來了

來源:互聯網
上載者:User

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

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

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

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

  • 下載,安裝VS2010
    • http://www.microsoft.com/visualstudio/zh-cn/products/2010/default.mspx#compare
    • 安裝之前務必卸載之前的測試版本,包括.NET Framework 4。新版本的VS2010包含了大量更新,與之前的測試版本並不相容 。
  • 新的預定義介面:

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.NET2.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.NET4.0可以儘可能的對CSS友好。毋庸置疑,產生乾淨的HTML標籤是ASP.NET4.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配置更便捷

大概就這麼多了,歡迎大家補充探討。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.