1. 程式人生 > >.NET 4.0改進(一)

.NET 4.0改進(一)

核心服務

大部分的新特性都是圍繞自定義和擴充套件來的,原先不能自定義的東西現在可以自定義了,可以自己擴充套件了,然後把自己的元件在web.config中配置即可應用我們自己的元件。

Web.Config精簡

.NET框架4.0中會把大部分配置放到machine.config中,這樣在web.config中甚至可以一行程式碼都不寫。

自定義輸出快取策略

輸出快取對於改善效能有很大好處,在ASP.NET 4.0中可以自定義輸出快取的策略,比如把輸出儲存在磁碟中,外部的memcached服務中等等。甚至還可以定義一些高階規則,比如為A頁面使用A輸出快取策略來把資料保存於記憶體中,為B頁面使用B

輸出快取策略來把資料保存於磁碟中。

<caching>

<outputCachedefaultProvider="AspNetInternalProvider">

<providers>

<addname="DiskCache"

type="Test.OutputCacheEx.DiskOutputCacheProvider, DiskCacheProvider"/>

</providers>

</outputCache>

</caching>

自啟動的應用程式

ASP.NET 4.0IIS 7.5配合可以設定一個預處理的Provider

,這樣在應用程式池啟動或回收後IIS會自動呼叫這個Provider中的程式碼來處理,處理完畢之後才接受請求。

<preloadProviders>

<addname="PrewarmMyCache"

type="MyNamespace.CustomInitialization, MyLibrary" />

</preloadProviders>

永久重定向

如果使用Response.Redirect的話,返回302狀態,客戶端再發送一次請求到新的地址,在ASP.NET 4.0中提供了RedirectPermanent方法來永久重定向到某個地址。客戶端或搜尋引擎遇到301

狀態碼會儲存這個永久重定向地址,以後會直接訪問定向後的地址,節省了一次往返。

壓縮會話資料

如果使用程序外SessionSQL Server儲存Session的話,會話資料需要進行序列化和反序列化,ASP.NET 4.0提供了使用GZIP壓縮會話資料的特性來縮小會話資料流的大小。

<sessionState

mode="SqlServer"

sqlConnectionString="data source=dbserver;Initial Catalog=aspnetstate"

allowCustomSqlDatabase="true"

compressionEnabled="true"

/>

URL規則

ASP.NET 4.0中可以自定義訪問路徑以及QueryString的長度,並且還可以設定路徑中無效的字元,而在以前這些都不是可以定製的。

<httpRuntime requestPathInvalidChars="&lt;,&gt;,*,%,&amp;,:,\" maxRequestPathLength="260" maxQueryStringLength="2048"/>

自定義RequestVaidation

RequestValidateion雖然可以有效防止XSS注入等,但在以前驗證規則是不可以自定義的,很多時候我們覺得這個規則太嚴格了只能關閉這個功能。在ASP.NET 4.0中可以自定義類來實現自己的驗證規則。

<httpRuntime requestValidationType="Samples.MyValidator, Samples" />

物件快取

System.Web.Caching.Cache大家很熟悉,甚至有的時候編寫WindowsWindows服務程式的時候也會引用System.Web.dll來使用這個Cache功能。在4.0中這個功能在System.Runtime.Caching.dll中會有新的實現,並且也會更強大。

自定義Encoding

URL Encoding/HTML Encoding都是很常用的功能,在ASP.NET 4.0中我們可以繼承System.Web.Util.HttpEncoder來自定義編碼規則。

<httpRuntime encoderType="Samples.MyCustomEncoder, Samples"/>

AppDomain級別的效能檢測

如果在一個程序中執行多個網站的話我們可能希望能監視到每一個網站的效能,在ASP.NET 4.0中我們可以開啟AppDomain級別的效能檢測。

<?xml version="1.0" encoding="UTF-8" ?>

<configuration>

<runtime>

<appDomainResourceMonitoring enabled="true"/>

</runtime>

</configuration>