站在巨人肩上的.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)

原文地址 http://www.cnblogs.com/BeanHsiang/p/8687787.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321776.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5、java中的数组

1、简介 数组是一种具有随机存取特性的数据结构&#xff0c;是内存上一段连续区域的表示&#xff0c;是实现顺序存储的基础&#xff0c;数组只能用于存储同一类型的数据。数组的长度在初始化时定义之后就不可更改&#xff0c;并且在初始化数组时必须指定数组的长度。 2、数组…

jzoj1403-渡河【SPFA】

正题 题目链接:https://jzoj.net/senior/#contest/show/2940/1 题目大意 一个n∗nn*nn∗n的图&#xff0c;从000走到111价格为1。kkk个询问&#xff0c;询问一个点离边界的最小价格。 解题思路 反向从边界开始跑SPFASPFASPFA即可。 codecodecode #pragma GCC optimize(&quo…

动态规划训练19、最短路 [Help Jimmy POJ - 1661 ]

Help Jimmy POJ - 1661 题意&#xff1a;大致是一个人从某个点开始下落&#xff0c;下落的速度是1m/s&#xff0c;然后在平台上的时候可以左右移动&#xff0c;移动的速度也是1m/s&#xff0c;但是这里有一个限制&#xff0c;就是说每次下落的距离不能超过一个给定的数值。问你…

【活动(北京)】Global Azure Bootcamp

活动议程活动内容08:30-08:50报到08:50-09:10活動开场Study4 - 陈科融(MVP)STB Chain Foundation - 劉海峰(MVP)MVP Program - Christina Liang(MVP CPM)09:10-10:00区块链让软件资产化成为现实刘海峰(MVP) - STBChain Foundation主席10:10-11:00基于Azure PaaS的网站应用刘元纶…

jzoj1404-菱形内的计数【模拟】

正题 题目链接:https://jzoj.net/senior/#main/show/1404 题目大意 给出一个菱形中有一些边&#xff0c;求有多少个中间没有边的平行四边形。 解题思路 我们将一个平行四边形拆成两个等腰三角形和一个平行于菱形中间对角线的平行四边形&#xff0c;我们可以判断上面那个等腰…

6、java中的排序算法

1、简介 排序是将元素按着指定关键字的大小递增或递减进行数据的排列&#xff0c;排序可以提高查找的效率 2、排序算法的分类 排序算法可大致分为四类七种&#xff0c;具体分类如下&#xff1a; 插入排序&#xff1a;直接插入排序、希尔排序 交换排序&#xff1a;冒泡排序、…

用.NET Core实现装饰模式和.NET Core的Stream简介

该文章综合了几本书的内容.某咖啡店项目的解决方案某咖啡店供应咖啡, 客户买咖啡的时候可以添加若干调味料, 最后要求算出总价钱.Beverage是所有咖啡饮料的抽象类, 里面的cost方法是抽象的. description变量在每个子类里面都需要设置(表示对咖啡的描述).每个子类实现cost方法, …

动态规划训练20 [Treats for the Cows POJ - 3186 ]

Treats for the Cows POJ - 3186 简单的区间DP&#xff0c;就不解释了。 #include<iostream> #include<cstdio> using namespace std; const int INF1e9; const int maxn2005; int n, a[maxn]; int dp[maxn][maxn]; int main() {scanf("%d",&n);for(…

7、java中的面向对象思想和体现

java是一种面向对象的程序设计语言&#xff0c;在程序中使用对象来描述具体的事物&#xff0c;当多个事物具有共同的特点时&#xff0c;可以将事物的共同特点进行抽象&#xff0c;然后封装成一个包含事物共同特点的集合&#xff0c;在java中叫做封装成一个类&#xff0c;可以将…

jzoj1405-电缆建设【贪心,最小生成树】

正题 题目链接:https://jzoj.net/senior/#main/show/1405 题目大意 两个平行于xxx轴的线上有若干个点&#xff0c;求连接所有点需要多少距离的线。 解题思路 在同一平行线上的相邻的连边&#xff0c;然后在不同的上面的话就离最近的两个&#xff0c;跑最小生成树即可。 code…

动态规划训练21 [FatMouse and Cheese HDU - 1078 ]

FatMouse and Cheese HDU - 1078 这道题需要说一说&#xff0c;定义dp[x][y]表示从点(x,y)出发&#xff0c;每次走不超过k步&#xff0c;所能吃到的最大量。 有点难搞的是&#xff0c;这里递归的顺序不好确定&#xff0c;所以采用自顶向下的记忆化搜索的方式&#xff08;不用担…

这个拖后腿的“in”

问题之源C# 7.2推出了全新的参数修饰符in&#xff0c;据说是能提升一定的性能&#xff0c;官方MSDN文档描述是&#xff1a;Add the in modifier to pass an argument by reference and declare your design intent to pass arguments by reference to avoid unnecessary copyin…

P4310-绝世好题【位运算,dp】

正题 题目链接:https://www.luogu.org/problem/P4310 题目大意 一个长度为nnn的序列&#xff0c;求一个最长的子序列使得每个数&\&&前一个数不为0。 解题思路 因为是&\&&不为0&#xff0c;所以只要有一位都为1即可。 用fif_ifi​表示以第iii个结尾…

8、java中的内部类

根据类定义时所在的位置不同可以将内部类分为四大类&#xff1a;成员内部类、方法内部类、静态内部类、匿名内部类。 成员内部类 顾名思义成员内部类定义在外部类的成员变量位置&#xff0c;相当于外部类的一个成员。将成员内部类当成当前封装类中的一个成员即可&#xff0c;…

Surging 微服务框架使用入门

前言本文非 Surging 官方教程&#xff0c;只是自己学习的总结。如有哪里不对&#xff0c;还望指正。 我对 surging 的看法我目前所在的公司采用架构就是类似与Surging的RPC框架&#xff0c;在.NET 4.0框架上搭建Socket RPC&#xff0c;通过分组轮询的方式调度RPC&#xff0c;经…

动态规划训练22 [Milking Time POJ - 3616 ]

Milking Time POJ - 3616 说实话这道题目非常简单&#xff0c;本质上就是 多段有向图的求最大值问题。稍微变化的地方在于这个的的有向边没有那么明显 &#xff0c;而是需要自己去寻找 如果任务i到任务j之间存在有向边的话&#xff0c;那么一定有这个关系成立&#xff0c;即&a…

jzoj3888-正确答案【字符串hash,dfs】

正题 题目大意:https://jzoj.net/senior/#main/show/3888 题目大意 nnn个人mmm道题&#xff0c;已知道每个人的选项和有ppp个人满分和qqq个人零分&#xff0c;求字典序最小的可能的正确答案。 解题思路 用字符串hashhashhash判断即可。要注意的是如果没有一个人满分也没有一个…

9、java中的异常处理机制

Java中的异常&#xff08;Throwable&#xff09;分为两类&#xff1a;异常Execption和错误Error。 Error&#xff0c;也就是错误&#xff0c;这个是不可避免的&#xff0c;出现的问题使得应用停止&#xff0c;例如&#xff1a;服务器损坏、内存溢出等。在java中所有的错误都继承…

RabbitMQ教程C#版 - 工作队列

先决条件本教程假定RabbitMQ已经安装&#xff0c;并运行在localhost标准端口&#xff08;5672&#xff09;。如果你使用不同的主机、端口或证书&#xff0c;则需要调整连接设置。从哪里获得帮助如果您在阅读本教程时遇到困难&#xff0c;可以通过邮件列表联系我们。1.工作队列&…

动态规划训练23 [Making the Grade POJ - 3666 ]

Making the Grade POJ - 3666 这道题目有点意思。 我们定义dp[i][j]表示的含义是把包含前i个元素的子序列变成非递减的子序列&#xff0c;并且最后一个元素变成j所需要耗费的最小代价 那么状态转移方程可以写出来就是&#xff1a; dp[i][j] min(dp[i-1][k] abs(num[i] - j…