站在巨人肩上的.NET Core 2.1
.NET Core 1.0自發(fā)布兩年以來,得到了開發(fā)者群體相當高地認可。 下圖來自Stack overflow survey 2018的統(tǒng)計:
.NET Core已經(jīng)成為前五的主流框架工具,現(xiàn)今借鑒了優(yōu)秀的設(shè)計原則和開發(fā)體驗可謂站在巨人肩上。這一切歸功于.NET團隊認識和總結(jié)了大量過往的經(jīng)驗教訓(xùn),看到了跨平臺的重要性。關(guān)于.NET Core的一些介紹:
Developing token authentication using ASP.NET Core
Implementing SOLID REST API using ASP.NET Core
Unit testing ASP.NET Core Identity
.NET Core還在快速迭代,每次更新都有一些特性的增強。下面介紹一些.NET Core 2.1和ASP.NET Core 2.1的新功能。
.NET Core 2.1
相較于重視基礎(chǔ)構(gòu)建的.NET Core 2.0,.NET Core 2.1更像是一個面向反饋的版本。
Span?,?Memory介紹
.NET Core推出了一些高性能的新數(shù)組和內(nèi)存類型,例如在?System.Memory.dll中的Span<T>和Memory<T>,.NET Standard 1.1可以在NuGet找到兼容的預(yù)覽版本。實際上Span<T>?和Memory<T>的想法來自于調(diào)用方的使用需要。這些新類型在框架體系中將非常實用。例如用在HttpClient中改進性能。更多的內(nèi)容參見:All About Span: Exploring a New .NET Mainstay。
Windows 兼容包
The Windows兼容包將造福于那些想把基于.NET Framework的代碼遷移至.NET Core的開發(fā)者,為此新的框架增加了成噸的API接口(你可以從這里下載:https://www.nuget.org/packages/Microsoft.Windows.Compatibility)。例如其中一個檢測宿主操作系統(tǒng)類型的方法:RuntimeInformation.IsOSPlatform(OSPlatform.Windows),當需要根據(jù)不同平臺來運行不同依賴的代碼時非常有用。更有意思的還有API Analyzer,從NuGet包可以獲取到這個來自Roslyn的分析器,項目中引用后會自動提供API使用和警告的實時反饋,對于那些存在潛在兼容問題或失效的API將有不錯的體驗。
構(gòu)建時的性能提升
下圖是.NET Core新老版構(gòu)建時長的對比。可以看到較大的項目,其構(gòu)建時長能節(jié)省一倍多,估計正式版本還會進一步優(yōu)化。
ASP.NET Core 2.1
再看看2018年年中前后要發(fā)布的ASP.NET Core 2.1,改動將不限于Razor pages、SignalR、Webhooks、Security、Perfomance、MVC、Kestrel等。
HttpClientFactory
HttpClientFactory將為HttpClient內(nèi)置一個依賴注入的實現(xiàn),并提供了HttpClient實例化和管理的控制單元。HttpClientFactory還集成了Polly.NET。Polly擁有瞬時錯誤處理和恢復(fù)的類庫,支持開發(fā)者以便捷、線程安全的方式實現(xiàn)一系列策略,類似重試、中斷、超時、隔離和反饋等。HttpClientFactory有兩種不同的處理模型:NamedClient,?TypedClient。
NamedClient
NamedClient是默認選項,它的AddHttpClient方法用來在客戶端處為服務(wù)或控制器定義了一個命名空間。
TypedClient
這是一種直接通過類型引用的方式,可以在調(diào)用類的內(nèi)部將HttpClient注入到構(gòu)造函數(shù)中,對于喜歡IoC的開發(fā)者來說值得推薦。
?
如你所見,它允許你使用注冊或注入客戶端兩種方式。
Kestrel: 基于libuv的Socket
當前Kestrel使用libuv作為底層實現(xiàn),在Transport abstraction中將Kestrel的傳輸方式以抽象的方式解耦,順便提一下,出于性能考慮,微軟打算實現(xiàn)一個自定義的socket來替代libuv的異步IO,在Program.cs中以配置的形式獲得socket傳輸能力。?
HTTPS
如今HTTPS成了標配,像Chrome一類的瀏覽器, 在HTTP的Web應(yīng)用背后都有安全策略,參見:Marking HTTP As Non-Secure。ASP.NET?Core 2.1將默認HTTPS,也就是說,即使在本地開發(fā)環(huán)境監(jiān)聽http://localhost:5000,,Kestrel也將要求一個證書而監(jiān)聽https://localhost:5001,.NET Core SDK會在安裝時默認會生成一個適當?shù)淖C書。
綜述
一句話總結(jié),新的.NET Core 2.1版本提供了大量的實用提升,正如開頭所說,這些和.NET開發(fā)者們積極地建議和反饋密不可分。更有一些新的東西加入,比如在不同適配器下的Web hookst和改頭換面的SignalR。
更多高階的研發(fā)計劃和相關(guān)功能、問題信息參見:Announcements/issues/288.
或者你還想看看這些:
.NET Core 2.1 roadmap?
ASP.NET Core 2.1 roadmap?
All About Span: Exploring a New .NET Mainstay?
.NET 2.1 Roadmap Pt.1 - Channel9
?
(原文:.NET Core 2.1 highlights: standing on the shoulders of giants)
原文地址?http://www.cnblogs.com/BeanHsiang/p/8687787.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的站在巨人肩上的.NET Core 2.1的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用DDD、事件风暴和Actor来设计反
- 下一篇: 【活动(北京)】Global Azure