本文将向您介紹.NET Framework 4中的主要功能和改進特征。請注意,本文中并沒有提供有關這些新功能的綜合資訊,并随時可能更改。
一、應用程式相容性和部署
除了一些在安全、标準遵從、正确性、可靠性及性能等方面的改進之外,.NET Framework 4與基于早期.NET架構版本建構的應用程式高度相容。
.NET Framework 4并不會自動使用目前版本的公共語言運作庫來運作使用早期版本的.NET架構建構的應用程式。為了在.NET Framework 4下運作以前的應用程式,你必須使用在您的VisualStudio項目的屬性中指定的目标.NET架構版本重新編譯您的應用程式,或者在應用程式的配置檔案中使用元素來指定支援的運作時刻庫。
以下各小節将描述應用部署方面的改善。
(一)客戶配置
(二)程序内并行執行
二、核心新功能及改進
以下各小節将描述公共語言運作時和基礎類庫所提供的新功能和改進特征。
(一)診斷和性能
早期版本的.NET Framework并沒有提供一種方法來确定一個特定的應用程式域是否正在影響其他應用程式域,因為作業系統的API及相關工具(如Windows任務管理器)都被精确設計到程序級。從.NET Framework 4開始,你可以擷取每一個應用程式域的處理器及記憶體的使用資訊。
您可以監控每一個應用程式域的CPU和記憶體使用情況。可以通過托管和本機宿主API以及Windows事件跟蹤(ETW)來進行應用程式域資源的監控。當啟用此功能後,它能夠在程序的整個生命周期過程中收集所有應用程式域的統計資訊。有關此主題,你也可以參考新屬性AppDomain.MonitoringIsEnabled的介紹。
最後,System.Runtime.ExceptionServices.HandleProcessCorruptedStateExceptionsAttribute屬性能夠支援在托管代碼中處理顯示崩潰的程序狀态的異常。
(二)垃圾收集
(三)代碼契約
(四)僅使用設計時互操作程式集
(五)動态語言運作時
動态語言運作時(DLR)是一個新的運作時環境,它把一組針對動态語言的服務添加到CLR中。DLR使開發運作于.NET架構上的動态語言更加容易,而且有利于把動态特性添加到靜态類型的語言中。為了支援DLR,.NET架構中添加了一個新的命名空間System.Dynamic。
通過引入新的描述控制流的類型,例如System.Linq.Expressions.LoopExpression和System.Linq.Expressions.TryExpression,表達式樹功能被進一步擴充。注意,這些新的類型僅為動态語言運作時(DLR)所使用,而不能夠由LINQ使用。
(六)協變與反變
(七)BigInteger和複數
新的System.Numerics.BigInteger結構是一個任意精度的整數資料類型,它支援所有标準的整數運算,其中包括位操作。BigInteger可以用于任何.NET架構語言中。此外,一些新的.NET架構語言(如F#和IronPython)都已内置了對此結構的支援。
新的System.Numerics.Complex結構用于描述一個複數,而且支援複數的算術運算和三角運算。
(八)元組
.NET Framework 4引入了System.Tuple類,用于建立包含結構化資料的元組對象。另外,還提供了泛型元組類以便支援具有1至8個元件的元組。為了支援有9個或更多元件的元組對象,提供了一個泛型元組類,此類使用7個類型參數,而第8個參數可以是任何的元組類型。
(九)檔案系統枚舉功能方面的改進
(十)記憶體映射檔案
.NET架構現在支援記憶體映射檔案。你可以使用記憶體映射檔案來編輯非常大的檔案,還可以為程序間通信建立共享記憶體。
(十一)64位作業系統與程序
您可以使用Environment.Is64BitOperatingSystem和Environment.Is64BitProcess屬性來辨別64位的作業系統和程序。
當你打開基鍵時,您可以使用Microsoft.Win32.RegistryView枚舉來指定一個32位或64位的系統資料庫視圖。
(十二)其他新功能
以下清單描述了公共語言運作庫和基礎類庫其他方面的新功能、改進和便利之處。其中的一些功能是基于客戶建議提供的。
為了支援文化敏感型格式,System.TimeSpan結構包括了對于ToString、Parse和TryParse方法的新的重載,還有對ParseExact和TryParseExact方法的新的重載。
新的String.IsNullOrWhiteSpace方法能夠确定一個字元串是null,空串,還是隻包含空白字元。新增加了對String.Concat和String.Join方法的重載,這兩個重載方法能夠串聯System.Collections.Generic.IEnumerable集合中的成員。
String.Concat方法能夠使讓您串連一個可枚舉集合中的每一個元素,而不必預先把這些元素轉換為字元串。
又增加了兩個新的更友善的方法:StringBuilder.Clear和Stopwatch.Restart。
新的Enum.HasFlag方法可以确定是設定一個枚舉值中的一位還是多位域(标志)。Enum.TryParse方法傳回一個布爾值,用于訓示是否成功地解析了一個字元串或整數。
System.Environment.SpecialFolder枚舉中包含了幾個新的檔案夾。
現在,您可以使用從System.IO.Stream類繼承的類中的CopyTo方法輕松地把一個流複制到另一個流中。
新的重載的Path.Combine方法能夠使您合并多個檔案路徑。
新的System.IObservable<(Of <(T>)>)和System.IObserver<(Of <(T>)>)接口提供了一種更一般化的機制用于基于推技術的通知。
System.IntPtr和System.UIntPtr類現在包括了對加法和減法運算符的支援。
現在,您可以通過把類型包裝在一個System.Lazy<(Of <(T>類中來實作對任何自定義類型的延遲初始化。
新的System.Collections.Generic.SortedSet類提供了一棵自我平衡樹,它能夠在插入、删除和搜尋資料後維護資料的排列順序。這個類實作了新的System.Collections.Generic.ISet接口。
針對System.IO.Compression.DeflateStream和System.IO.Compression.GZipStream類的壓縮算法得到進一步的改進,以便使已壓縮的資料不再膨脹。此外,還取消了對壓縮流的4G大小的限制。
新的重載的Monitor.Enter(Object, Boolean)方法中可以使用一個布爾類型的引用,隻有當螢幕成功地進入時此變量才被自動設定為true。
您可以使用Thread.Yield方法讓調用線程把目前執行上下文讓給另一個已準備好在目前處理器上運作的線程。
System.Guid結構現在包含了TryParse和TryParseExact方法。
新的Microsoft.Win32.RegistryOptions枚舉可以讓你指定一個不穩定的系統資料庫項,此項在計算機重新啟動後便不再存在。
系統資料庫項不再限制為255個字元的最大長度。
三、托管擴充架構
四、并行計算
五、網絡程式設計
網絡程式設計方面的改進包括以下内容:
在System.Net.HttpWebRequest類中,通過重載AddRange方法支援使用64位頭部結構。在System.Net.HttpWebRequest類中定義的新的屬性允許一個應用程式設定很多HTTP頭部。您可以使用Host屬性設定一個HTTP請求中的獨立于請求URI的頭部值。
提供針對System.Net.Mail.SmtpClient和相關類的安全套接字層(SSL)支援。
提供在System.Net.Mail.MailMessage類中的針對郵件頭部的改進支援。
支援在一個加密中使用空密碼。您可以使用System.Net.ServicePointManager類和EncryptionPolicy屬性來指定加密政策。System.Net.Security.SslStream類的構造函數現在使用一個System.Net.Security.EncryptionPolicy類作為參數。
為基于密碼的身份驗證模式,如在System.Net.NetworkCredential類中定義的基本型(Basic),摘要式(Digest),NTLM和Kerberos身份驗證等模式,提供證書支援。為了提高安全性,現在可以把密碼視為System.Security.SecureString類的實作,而不是簡單的System.String類的執行個體。
現在,能夠指定如何在System.URI和System.Net.HttpListener類中使用百分比編碼值來轉換和規範化一個URI。有關的詳細資訊,請參閱System.Net.Configuration.HttpListenerElement,System.Configuratio.SchemeSettingElement,System.Configuration.SchemeSettingElementCollection和System.Configuration.UriSection等幾個類。
六、Web開發
ASP.NET版本4在以下幾個方面引入了一些新特點:
核心服務,包括一個新的允許您擴充緩存的API,支援壓縮會話狀态資料和一個新的應用程式預加載管理器(自動啟動功能)。
Web窗體方面,其中包括為ASP.NET路由提供的更加內建化的支援,對Web标準的增強支援,更新的浏覽器支援,為資料控件增加了一些新功能,以及為視圖狀态管理增加了一些新的功能。
Web窗體控件方面,提供了一個新的圖表控件。
MVC架構方面,包括針對視圖的新的輔助方法,對分區的MVC應用程式的支援,并提供了異步控制器。
動态資料方面,包括針對現有Web應用程式的支援,對“多對多”關系和繼承的支援,對字段模闆和屬性的支援,以及增強的資料過濾功能。
在Microsoft AJAX庫中增加了針對用戶端中心型Ajax應用程式的額外支援。
Visual Web Developer中,包括了改進的針對JScript的智能感覺支援,針對HTML和ASP.NET标記的新的自動完整代碼片段支援,以及增強的CSS相容性支援。
部署方面,為自動化的典型的部署任務增加了新的支援工具。
多目标方面,包括針對無法在.NET架構的目标版本中可用功能的更好的過濾支援。
七、用戶端開發
Windows Presentation Foundation
八、資料
(一)ADO.NET
(二)動态資料
對于ASP.NET 4來說,動态資料支援得到進一步增強,進而給你以更強大的功能快速建立資料驅動的網站。這包括以下内容:
基于在資料模型定義的限制的自動驗證功能。
通過使用已成為動态資料項目的一部分的字段模闆,能夠友善地改變在GridView和DetailsView控件中針對相應字段生成的标記。
九、通信和工作流
(翻譯 朱先忠)