|
伴隨著VS2010的公開測試,ASP.NET4.0也進(jìn)入了我們的視線。ASP.NET4.0究竟給我們帶來了什么,將在哪些方面提高我們的生產(chǎn)力?
在何時你需要使用ASP.NET4.0開發(fā)你的網(wǎng)站程序?
- 需要更嚴(yán)格的遵守Web標(biāo)準(zhǔn);
- 需要更流暢的Web Form開發(fā)方式;
- 需要更好的搜索引擎優(yōu)化;
- 需要后知后覺的糾正一些不夠優(yōu)良的設(shè)計(jì),這些設(shè)計(jì)甚至可能是在ASP.NET 1.0發(fā)布之前就存在的;
- 需要將現(xiàn)有的功能重新改造為支持server farm或跨application domains;
- 需要將.NET調(diào)節(jié)和重組為一個整體。
你不需要學(xué)習(xí)復(fù)雜的設(shè)計(jì)模式或各種SEO技巧,甚至不需要有代碼重構(gòu)的能力。忘記那些復(fù)雜的規(guī)定和教條吧,使用ASP.NET4.0提供的各種方便又實(shí)用的新功能,你將能輕松的開發(fā)/升級出與時俱進(jìn)的高質(zhì)量的程序。而這一切均需要從這里開始:
下載,安裝VS2010
- http://www.microsoft.com/visualstudio/zh-cn/products/2010/default.mspx#compare
- 安裝之前務(wù)必卸載之前的測試版本,包括.NET Framework 4。新版本的VS2010包含了大量更新,與之前的測試版本并不兼容 。
新的預(yù)定義界面:
VS2010帶來了一個新的預(yù)定義設(shè)置:Web Development(Code Only),如字面所示,它是為了web開發(fā)而設(shè)計(jì)的,但與普通的Web Development模式不同的是,它針對的是喜歡手寫代碼的開發(fā)人員,它讓VS看起來更像一個單純的IDE:
至于您是否喜歡,就蘿卜青菜,各有所愛了。。。(我還是喜歡全屏模式。。)
新的項(xiàng)目類型:
VS2010對ASP.NET的項(xiàng)目類型做了大量的更改,具體改動如下:
- ASP.NET Web Service Application被完全的移除了;
- .NET3.0 帶來的 WCF Service Application 移至 WCF projects 下;
- .NET3.5 SP1 帶來的兩個 Dynamic Data 相關(guān)的項(xiàng)目被改為更容易理解的名稱,例如 Dynamic Data Web Application 使用LINQ to SQL替換了之前的Entity Framework;
- MVC項(xiàng)目有了一個稱為 ASP.NET MVC2 Empty Web Application 的新選擇。新的 ASP.NET MVC2 Empty Web Application 項(xiàng)目會建立如下的內(nèi)容:標(biāo)準(zhǔn)的目錄(空),空白的global.asax文件,web.config文件,標(biāo)準(zhǔn)的jQuery和MS AJAX庫。相比較而言,ASP.NET MVC2 Web Application項(xiàng)目會生成一個可工作的網(wǎng)站,實(shí)現(xiàn)一個簡單的membership模型,生成并使用master page,error page及所需的content page,并且可以生成一個示例test project。這對MVC新手非常有幫助,可以較為全面的使用MVC的功能。
簡潔的Web.Config文件
在VS2008SP1中,默認(rèn)的web.config文件代碼有139行,而在ASP.NET4.0中,web.config 文件只有6行:
原理很簡單,ASP.NET團(tuán)隊(duì)對web.config文件進(jìn)行了重構(gòu),將通用的設(shè)置寫進(jìn)默認(rèn)的機(jī)器級別的web.config中。只剩下兩個需要頻繁變化的設(shè)置項(xiàng)。
- debug的值在Web Application 項(xiàng)目中會被默認(rèn)設(shè)置為true,在Web Site 項(xiàng)目中會被默認(rèn)設(shè)置為false。
- targetFramework的值可以設(shè)置為:4.0,3.5,3.0和2.0。這個選項(xiàng)會被IIS識別并自動賦予ASP.NET程序池相應(yīng)的Framework版本。
- Intellisense在舊版的web.config中會不起作用。可以通過刪除原web.config中configuration的namespace(xmlns)屬性就可以了。
*.config文件的層級結(jié)構(gòu):
在新的config文件定義中,一系列功能例如:Dynamic Data,routing與charting全部默認(rèn)開啟。
關(guān)于不同級別的config文件的關(guān)系,非常類似與CSS文件的復(fù)寫。簡單的來說就是離你越近的config權(quán)值越高,也就是最底層的machine.config權(quán)值最低,你新建的web項(xiàng)目中的web.config的權(quán)值最高。
- root的config文件為machine.config,位于C:/Windows/Microsoft.NET/Framework/ v4.0.xyz/Config。
- 機(jī)器級別的web.config文件同樣位于上面的那個目錄,它在machine.config文件的基礎(chǔ)上定義了web特定的一些節(jié)點(diǎn)的默認(rèn)值,也就是在之前的ASP.NET版本中創(chuàng)建項(xiàng)目生成的web.config的文件中的那些值。
- 同樣在上面那個目錄中,你會發(fā)現(xiàn)如下的文件:web_hightrust.config, web_mediumtrust.config, web_lowtrust.config 和 web_minimaltrust.config。如果你的站點(diǎn)的信任級別不是“FULL”,將會使用對應(yīng)的config文件作為默認(rèn)值。
- 在你創(chuàng)建的項(xiàng)目中,會默認(rèn)生成一個web.config文件,這也是我們通常所說的web.config文件。
- 在你的項(xiàng)目的任何目錄中,你都可以添加一個web.config文件,這個文件中的值會覆蓋項(xiàng)目根目錄中的值。你可以利用這個特性做一些例如權(quán)限限制之類的功能。
Config Transformation Files
這個新功能是為了應(yīng)對同一個網(wǎng)站在不同服務(wù)器需要不同的web.config文件的問題,例如需要不同的connectionstring等。在以前我們可能很難維護(hù)這些不同的web.config文件(在我經(jīng)歷的項(xiàng)目中,為了解決這個問題,使用了com組建讀取注冊表,在不同機(jī)器的注冊表中寫入相應(yīng)的信息),而現(xiàn)在有了這個新功能,我們可以以編程的方式統(tǒng)一的解決和處理這個問題(基于XPATH技術(shù))。你只需要在web.config文件上右鍵單擊,并選擇“Add Config Transforms”即可。
Browscap.ini
對于使用過ASP的程序員來說,應(yīng)該對這個文件并不陌生。這個文件是用來記錄所有要使用的瀏覽器,以及這些瀏覽器所支持的特性(例如是否支持activeX)。
在.NET2.0中,微軟將browsercap.ini的功能分割為一系列的*.browser文件。當(dāng)收到一個請求的時候,我們就可以根據(jù)這個請求發(fā)起的browser找到對應(yīng)的browser文件來獲取瀏覽器的能力。這些數(shù)據(jù)會被傳遞到HttpBrowserCapabilities對象中,我們就可以使用這些數(shù)據(jù)了。
所有的browser文件可以在C:/Windows/Microsoft.NET/Framework/v2.0.50727/CONFIG/Browsers下被找到。里面其實(shí)還是挺齊全的。
將一個文件分割成一系列文件會造成更加難以維護(hù)的情況,但這么做的理由似乎也不難猜想,就是微軟希望一系列的瀏覽器使用同一個文件,例如ie.browser, mozilla.browser之類的。
在.NET4.0中,微軟繼續(xù)沿襲了這一思路,并且大范圍的更新了這些文件,以支持現(xiàn)在流行的瀏覽器,特別是移動瀏覽器:iPhones, Windows PhoneOS, Android等,并且不會把這些瀏覽器簡單的處理成wap瀏覽器。對于桌面瀏覽器來講,也添加了對Firefox,Chrome和Safari的支持。
這么做很好,但是問題來了,難道我們要等每個新的.NET Framework發(fā)布后才能獲得這些新的文件嗎?答案當(dāng)然是否定的。
如今瀏覽器發(fā)展日新月異,馬上又即將有IE9, Opera 10.5, Gecko 1.9.3和新的IE for mobilephone等等。如果我們希望支持這些新的瀏覽器,我們有四種選擇:
- 手動更新這些browser文件或者創(chuàng)建新的browser文件。
- 創(chuàng)建一個新的browser文件并將它添加在你的站點(diǎn)的App_Browser文件夾下。但這樣只對你當(dāng)前的站點(diǎn)有效。
- 擴(kuò)展現(xiàn)有的browser capabilities provider。
- 創(chuàng)建一個自定義的browser capabilities provider替換現(xiàn)有的。
你可以針對你所擁有的資源或網(wǎng)站架構(gòu)來選擇如何解決這個問題。我們推薦使用自定義的browser capabilities provider去解決,雖然需要更多代碼,但一旦完成,之后的更新將會更輕松。這就意味著你能更迅速的支持新的瀏覽器。
但無論如何,支持一個新的瀏覽器都是一個困難的工作,但.NET4.0給我們帶來的最新的browser支持文件和一個可擴(kuò)展的方法。
新的Page屬性
任何ASP.NET開發(fā)人員對于@Page標(biāo)簽都不會陌生。好消息是ASP.NET4.0完全兼容之前版本所提供的42個屬性。更好的消息是,ASP.NET4.0還帶來了6個新的屬性,以應(yīng)對日益復(fù)雜的開發(fā)需求:
- ClientIDMode 顧名思義,這個屬性用來定義ASP.NET將如何生成控件的客戶端ID,如果你是一個前端開發(fā)人員,你將會明白能夠確定的控制客戶端ID的生成將帶來多大的便利。可能的值為AutoID(default/current),Predictable,Static和Inherit。
- ClientTarget 用來定義頁面將針對哪個瀏覽器來執(zhí)行。這將覆蓋ASP.NET提供的自動瀏覽器識別功能,可能的應(yīng)用場景為比如我們只需要支持IE瀏覽器或只需要支持FIREFOX等。
- MetaDescription 顧名思義,用來生成頁面的meta 的description標(biāo)簽。在我看來只是提供了一個更為官方的方法和方式,標(biāo)準(zhǔn)化了這一流程。
- MetaKeywords 顧名思義,用來生成meta的keywords標(biāo)簽。
- TargetSchema 用來定義驗(yàn)證頁面所需的schema。這個標(biāo)簽只是用來標(biāo)識的,并不會真正的執(zhí)行。可以看作一種代碼注釋。
- ViewStateMode 用來定義頁面的VIEWSTATE是opt-in還是opt-out(默認(rèn))模式。
總體來說變化不大,提供了一些呼聲很高的功能。
生成更純凈,更標(biāo)準(zhǔn)的HTML代碼
這一直是ASP.NET中比較大的問題。ASP.NET1.1生成的html代碼基本都不符合標(biāo)準(zhǔn),這一點(diǎn)在ASP.NET 2.0中已經(jīng)進(jìn)行了改進(jìn),我們在web.config中引入了xhtmlConformance,用來定義控件將生成何種標(biāo)準(zhǔn)的HTML代碼,默認(rèn)為XHTML1.0 Transitional standard(Transitional)。相應(yīng)的,我們可以將它設(shè)定為XHTML1.0 Strict(Strict)或者選擇生成與ASP.NET1.1相同的HTML代碼(Legacy,主要用來兼容從ASP.NET1.1升級而來的網(wǎng)站)。
不幸的是,在Legacy模式運(yùn)行的網(wǎng)站與ASP.NET AJAX不兼容,而且盡管Transitional與Strict模式與XHTML標(biāo)準(zhǔn)兼容,但生成的代碼對CSS也是非常不友好的。例如:
- menu用table輸出而不是UL/OL。
- 服務(wù)器端的控件屬性例如 border=0 或disabled=disabled 是強(qiáng)制的并且無法移除。
- 對于支持template的控件,你可以對template內(nèi)的代碼進(jìn)行任何的自定義,但無法移除最外層的table標(biāo)簽。
ASP.NET3.5帶來的ListView,DataPager和CSS Control Adapters控件帶來了過渡性的解決方案,ASP.NET4.0完全將他們集成在新版本的System.Web中,使得微軟可以使ASP.NET 4.0可以盡可能的對CSS友好。毋庸置疑,生成干凈的HTML標(biāo)簽是ASP.NET 4.0的重要目標(biāo)之一。
- ControlRenderingCompatibilityVersion
與xhltmlComformance類似,ASP.NET4.0為web.config帶來了這個新的屬性。當(dāng)設(shè)置為3.5時,一切將和原來一致,但當(dāng)你設(shè)置為4.0時,控件將按照全新的模式輸出HTML代碼:
- xhtmlConformance被設(shè)置為Strict。
- menu將會用UL/OL的形式輸出。
- 多余的HTML屬性將被移除,甚至連validation的字體顏色也不會被設(shè)置為紅色。
- 將可以對控件使用RenderOuterTable屬性來控制是否輸出外圍的table標(biāo)簽。
在我看來這對于習(xí)慣使用控件的同學(xué)是個好消息。微軟又幫你做了許多工作。
新增的一些小功能
列舉一些新增的細(xì)節(jié)功能
- 內(nèi)置<ASP:chart>。
- 三種新的Redirect方式:Response.RedirectToRoute(HTTP302), Response.RedirectToRoutePermanent(HTTP301)和Response.RedirectPermanent(HTTP301)。
- Inline的HTML encoded 字符串。
- Routing配置更便捷。
NET技術(shù):ASP.NET 4.0 來了,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。