站在巨人肩上的.NET Core 2.1
.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。
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
(原文:.NET Core 2.1 highlights: standing on the shoulders of giants)
站在巨人肩上的.NET Core 2.1的更多相关文章
- 6. 站在巨人的肩膀学习Java Filter型内存马
本文站在巨人的肩膀学习Java Filter型内存马,文章里面的链接以及图片引用于下面文章,参考文章: <Tomcat 内存马学习(一):Filter型> <tomcat无文件内存w ...
- react-native之站在巨人的肩膀上
react-native之站在巨人的肩膀上 前方高能,大量图片,不过你一定会很爽.如果爽到了,请告诉我
- 站在巨人的肩膀上,C++开源库大全
程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库.Web应用框架.人工智能.数据库.图片处理.机器学习.日志.代码分析等. 标准库 C++ Standard Library:是一系列 ...
- 站在巨人肩膀上的牛顿:Kubernetes和SAP Kyma
这周Jerry在SAP上海研究院参加了一个为期4天的Kubernetes培训,度过了忙碌而又充实的4天.Jason,Benny和Peng三位大神的培训干货满满,借此机会,Jerry和过去的两位老领导P ...
- 对EasyDarwin开源项目2018的思考与2019发展的规划:继续站在巨人的肩膀引入更多巨人
EasyDarwin@2018思考 从2012年开始接触Darwin Streaming Server,到2018年从底层开始完全重新架构.研发.完成,EasyDarwin这个项目已经发展了6年了,时 ...
- 站在巨人的肩膀上看Servlet——原来如此(更适合初学者认识Servlet)
前言: 有段时间没更新博客了,这段时间因为要准备考试,考完试后又忙了一阵别的事,一直没能静下心来写博客.大学考试真是越来越恶心了,各种心酸,那酸爽,够味.不过还好,马上就要大三了,听大三学长学姐说大三 ...
- 数据仓库专题(5)-如何构建主题域模型原则之站在巨人的肩上(二)NCR FS-LDM主题域模型划分
一.前言 分布式数据仓库模型的架构设计,受分布式技术的影响,很多有自己特色的地方,但是在概念模型和逻辑模型设计方面,还是有很多可以从传统数据仓库模型进行借鉴的地方.NCR FS-LDM数据模型是金融行 ...
- 站在巨人的肩膀上学习Android开发
我们知道,一開始最好的学习方法是模仿,尤其是模仿巨人. 那说到Android开发的模仿自然就是分析并研究主流程序的布局.实现方法.进而提升自己的技术. 第一招----逆向project 要分析&quo ...
- .Net Core建站(1):EF Core+CodeFirst数据库生成
emmm,本来想着用Core做一个小项目玩玩的,然后肯定是要用到数据库的, 然后想,啊,要不用CodeFirst,感觉很腻害的样子,于是,一脸天真无邪的我就踏入了一个深不见底的天坑... 本来想着,应 ...
随机推荐
- verilog中的多维数组
reg arrayb [7:0] [0:255] ;//二维数组.
- BT656与BT1120的区别
从ITU-R BT1120文档上可知,BT1120支持的是1080p: 文档定义一帧为1 125 总行数和1 080 有效行:每行有效像素为1920图像频率60. 50. 30. 25 和 24H ...
- Camtasia studio8.0破解方法
Camtasia Studio 8.0 注册说明: 1.安装时使用以下信息注册: 用户名: Honorary User密钥: GCABC-CPCCE-BPMMB-XAJXP-S8F6R 或者是 Nam ...
- uva1653
本来想刷道签到题结果被卡住了.这题题意描述有点问题,数字又不一定都是个位数...难道是我英语太差了? digits就表示0~9这几个数?唉,还是太弱了.这题就是用了一个bfs,应该说还是有点意思的,直 ...
- linux 添加本地yum源
1.查看自己是否安装了 yum rpm -qa|grep yum 查看yum配置文件 2.创建一个文件夹 用于挂载光盘 这里创建到/media下 取名叫cdrom mkdir /media/cdrom ...
- POJ3189 Steady Cow Assignment
Steady Cow Assignment Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6817 Accepted: ...
- bootstrap3相关文档
,每列分配多列 <divclass="container"> <div class="row"> <div class=" ...
- kafka groupid
kafka 分组 简言之,就是相同分组的消费者,会分摊消费kafka中同一个topic中的数据.
- Java设计模式详尽资料
设计模式(Design Patterns) ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结.使用设计模式是为了 ...
- 探索基于.NET下实现一句话木马之ashx篇
0x01 前言 在渗透测试的时候各种PHP版的一句话木马已经琳琅满目,而.NET平台下的一句话木马则百年不变,最常见的当属下面这句 笔者感觉有必要挖坑一下.NET平台里的一句话木马,经过一番摸索填坑终 ...