上個月的微軟Build大會上宣布了.NET 4.5.1的推出,Heydarian的這個演講題為“.NET開發中的新內容”,涵蓋了.NET Framework中一些重要的新特性。
Heydarian的演講主要圍繞著三個方面展開:開發者生產力、應用程序的性能及持續創新。首先是開發者生產力,他在提到了32位機器上的該功能在2005年就已發布,隨后高興地宣布64位機器上的相同功能將成為.NET 4.5.1的一部分。這一功能和32位版本是完全相同的。隨后,Heydarian宣布了檢測方法返回值的新功能,它可以在Visual Studio的Autos窗口或Immediate窗口中使用。可以在調試器中展開返回值以便查看當前的值。對于Windows Store、Web App和Windows 8.1桌面App而言,由于對Call Stack(調用棧)和Tasks窗口的使用性進行了改進,使得調試異步代碼更加容易了。
這還不是Windows Store App的唯一改進,另一項改進是開發者可以將System.IO.Stream轉換為IRandomAccessStream了。另外,通過引入可空值類型,WinRT的類型系統也得到了增強,并且對異常提供了更好的支持(例如:System.Exception.Message,System.Exception.StackTrace)。這些System.Exception的新屬性是在基于Windows 8的經驗上進行的改進,在這之前只有在附加的進程上的調試器中才能避免丟失這些信息。
EF和ADO.NET現在對連接失敗的情況容錯性更好了。在之前,斷開網絡連接會導致一個異常的產生,而在4.5.1中則能夠優雅地應對這種失敗情況,一旦網絡連接得以恢復,應用程序就會監測到它,并繼續之前的工作。另外微軟決定將Entity Framework整個遷移到開源模型,EF6是一個完全的開源版本,Mono 3上帶的是EF6。這需要進一步改造,而且其核心文件也不可能簡單地從.NET 4.0中移除。為了解決這一問題,微軟使用了命名空間切換。“命名空間切換的一般規則是,將System.Data.*下的類型遷移到System.Data.Entity.Core.*”。位于System.Data.dll程序集內System.Data命名空間中的EF相關類不會發生改變。在更新項目的using語句之前,需要移除對System.Data.Entity.dll的引用。否則將混合使用Entity Framework的新舊版本。還要注意的是,Entity Framework 5的第三方提供程序與EF 6不兼容。因此如果使用的不是SQL Server或SQL Server Compact Edition,則需要更新提供程序。這些改動很小,只是一些基本的東西,如覆蓋IsGeographyColumn和GetGeographyAsync。
ASP.NET應用現在可以自動掛起了。實際運行的ASP.NET工作進程(worker process)將被掛起為可隨時喚醒的狀態,這能夠節省90%的啟動時間。當應用程序處于空閑狀態一段時間后,它將會被分頁到磁盤,一旦某個請求到來或是完成,它將被喚醒。可以在IIS配置中將Time-out Action這一項設置為“掛起”以實現這一功能。
在.NET 4.5.1的底層,你現在可以壓縮大對象堆(LOH)以應對堆碎片問題。LOH模式是GCSettings的一部分,但Heydarian提醒大家:“能力越大,責任越大”,在一般的開發過程中絕不要使用這項功能。
多核的即時編譯(JIT)性能也有所改進,按Heydarian的說法,在冷啟動的狀態下能達到15%的性能提升。
另一項在.NET 4.5.1中得到改進的部分是有關framework升級后系統的表現。目前,運行更新后的.NET Framework會使應用程序性能在短時間有一定程度的下降。這是因為核心的.NET程序集在更新或補丁需要一段時間進行JIT編譯。在Windows 8.1中,即使運行(更新后的).NET Framework,應用的性能也能保持穩定。這使用戶體驗大為提高,也符合微軟的努力方向,即盡可能提升平板電腦的續航能力。
Heydarian宣稱他的團隊的一個目標是盡可能做完所有的臟活累活,而讓.NET開發者能直接從中受益。另外,他希望只要可能,.NET平臺的所有改進都能使開發者直接受益,而把重新編譯的時間(如果需要的話)減至最小,為了達到更好的性能。
最后要說的是,微軟創建了一個新的NuGet feed,為官方的微軟 .NET 包(package)提供穩定而實時的更新,可以應用于Visual Studio 2010、2012及2013。這個feed在VS2013中直接支持,而VS2010和2012的用戶可以手動添加這個URL以獲取feed:https://nuget.org/api/v2/curated-feeds/dotnetframework/ 。
關于.NET 4.5.1預覽版的更多細節 ,參看博客內容:http://blogs.msdn.com/b/dotnet/archive/2013/06/26/announcing-the-net-framework-4-5-1-preview.aspx
文章列表