站在巨人肩上的.NET Core 2.1

2018 年 4 月 5 日 DotNet

(点击上方蓝字,可快速关注我们)


英文:samueleresca.net

来源:Bean.Hsiang

译文:cnblogs.com/BeanHsiang/p/8687787.html


.NET Core 1.0自发布两年以来,得到了开发者群体相当高地认可。 下图来自Stack overflow survey 2018的统计:



.NET Core已经成为前五的主流框架工具,现今借鉴了优秀的设计原则和开发体验可谓站在巨人肩上。


这一切归功于.NET团队认识和总结了大量过往的经验教训,看到了跨平台的重要性。关于.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


相较于重视基础构建的.NET Core 2.0,.NET Core 2.1更像是一个面向反馈的版本。


Span , Memory介绍


.NET Core推出了一些高性能的新数组和内存类型,例如在 System.Memory.dll中的Span<T>和Memory<T>,.NET Standard 1.1可以在NuGet找到兼容的预览版本。


实际上Span<T> 和Memory<T>的想法来自于调用方的使用需要。这些新类型在框架体系中将非常实用。例如用在HttpClient中改进性能。


更多的内容参见:All About Span: Exploring a New .NET Mainstay(https://msdn.microsoft.com/en-us/magazine/mt814808.aspx)。


Windows 兼容包


The Windows兼容包将造福于那些想把基于.NET Framework的代码迁移至.NET Core的开发者,为此新的框架增加了成吨的API接口(你可以从这里下载:https://www.nuget.org/packages/Microsoft.Windows.Compatibility)。


例如其中一个检测宿主操作系统类型的方法:RuntimeInformation.IsOSPlatform(OSPlatform.Windows),当需要根据不同平台来运行不同依赖的代码时非常有用。


更有意思的还有API Analyzer,从NuGet包可以获取到这个来自Roslyn的分析器,项目中引用后会自动提供API使用和警告的实时反馈,对于那些存在潜在兼容问题或失效的API将有不错的体验。



构建时的性能提升


下图是.NET Core新老版构建时长的对比。可以看到较大的项目,其构建时长能节省一倍多,估计正式版本还会进一步优化。



ASP.NET Core 2.1


再看看2018年年中前后要发布的ASP.NET Core 2.1,改动将不限于Razor pages、SignalR、Webhooks、Security、Perfomance、MVC、Kestrel等。


HttpClientFactory


HttpClientFactory将为HttpClient内置一个依赖注入的实现,并提供了HttpClient实例化和管理的控制单元。HttpClientFactory还集成了Polly.NET。


Polly拥有瞬时错误处理和恢复的类库,支持开发者以便捷、线程安全的方式实现一系列策略,类似重试、中断、超时、隔离和反馈等。HttpClientFactory有两种不同的处理模型:NamedClient, TypedClient。


NamedClient


NamedClient是默认选项,它的AddHttpClient方法用来在客户端处为服务或控制器定义了一个命名空间。


TypedClient


这是一种直接通过类型引用的方式,可以在调用类的内部将HttpClient注入到构造函数中,对于喜欢IoC的开发者来说值得推荐。


如你所见,它允许你使用注册或注入客户端两种方式。


Kestrel: 基于libuv的Socket


当前Kestrel使用libuv作为底层实现,在Transport abstraction中将Kestrel的传输方式以抽象的方式解耦,顺便提一下,出于性能考虑,微软打算实现一个自定义的socket来替代libuv的异步IO,在Program.cs中以配置的形式获得socket传输能力。 


HTTPS


如今HTTPS成了标配,像Chrome一类的浏览器, 在HTTP的Web应用背后都有安全策略,参见:Marking HTTP As Non-Secure。ASP.NET Core 2.1将默认HTTPS,也就是说,即使在本地开发环境监听http://localhost:5000,,Kestrel也将要求一个证书而监听https://localhost:5001,.NET Core SDK会在安装时默认会生成一个适当的证书。


综述


一句话总结,新的.NET Core 2.1版本提供了大量的实用提升,正如开头所说,这些和.NET开发者们积极地建议和反馈密不可分。


更有一些新的东西加入,比如在不同适配器下的Web hookst和改头换面的SignalR。


更多高阶的研发计划和相关功能、问题信息参见: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


原文:https://samueleresca.net/2018/03/net-core-2-1-highlights-standing-on-the-shoulders-of-giants/


看完本文有收获?请转发分享给更多人

关注「DotNet」,提升.Net技能 

淘口令复制以下红色内容,再打开手淘即可购买

范品社,使用¥极客T恤¥抢先预览(长按复制整段文案,打开手机淘宝即可进入活动内容)

登录查看更多
0

相关内容

.NET 框架(.NET Framework) 是由微软开发,一个致力于敏捷软件开发、快速应用开发、平台无关性和网络透明化的软件开发平台。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
229+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
最新《经济学中的强化学习》2020大综述,42页pdf128篇文献
【经典书】数据结构与算法C++,第二版,738页pdf
专知会员服务
165+阅读 · 2020年3月27日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
MIT新书《强化学习与最优控制》
专知会员服务
270+阅读 · 2019年10月9日
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
.NET Core 环境下构建强大且易用的规则引擎
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Arxiv
3+阅读 · 2019年3月1日
Deep Reinforcement Learning: An Overview
Arxiv
17+阅读 · 2018年11月26日
Large-Scale Study of Curiosity-Driven Learning
Arxiv
8+阅读 · 2018年8月13日
Arxiv
8+阅读 · 2018年5月17日
VIP会员
相关VIP内容
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
56+阅读 · 2020年6月26日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
229+阅读 · 2020年5月21日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
最新《经济学中的强化学习》2020大综述,42页pdf128篇文献
【经典书】数据结构与算法C++,第二版,738页pdf
专知会员服务
165+阅读 · 2020年3月27日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
94+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
MIT新书《强化学习与最优控制》
专知会员服务
270+阅读 · 2019年10月9日
相关资讯
使用 C# 和 Blazor 进行全栈开发
DotNet
6+阅读 · 2019年4月15日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
.NET Core 环境下构建强大且易用的规则引擎
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
Top
微信扫码咨询专知VIP会员