站在巨人肩上的.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、数组…

动态规划训练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的网站应用刘元纶…

6、java中的排序算法

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

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

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

这个拖后腿的“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…

Surging 微服务框架使用入门

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

RabbitMQ教程C#版 - 工作队列

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

IdentityServer4实战 - 基于角色的权限控制及Claim详解

一.前言大家好&#xff0c;许久没有更新博客了&#xff0c;最近从重庆来到了成都&#xff0c;换了个工作环境&#xff0c;前面都比较忙没有什么时间&#xff0c;这次趁着清明假期有时间&#xff0c;又可以分享一些知识给大家。在QQ群里有许多人都问过IdentityServer4怎么用Role…

11、java中的I/O流(1)

我对于流的理解是这样的&#xff0c;计算机的本质本来就是对输入的数据进行操作&#xff0c;然后将结果输出的一种工具&#xff0c;数据在各个数据源节点之间进行流动&#xff0c;感觉流就是对这种状态的一种抽象&#xff0c;一个数据流表示的就是一系列数据序列&#xff0c;ja…

ASP.NET Core 集成测试

集成测试集成测试&#xff0c;也叫组装测试或联合测试。在单元测试的基础上&#xff0c;将所有模块按照设计要求&#xff08;如根据结构图&#xff09;组装成为子系统或系统&#xff0c;进行集成测试。实践表明&#xff0c;一些模块虽然能够单独地工作&#xff0c;但并不能保证…

使用C#开发Android应用之WebApp

近段时间了解了一下VS2017开发安卓应用的一些技术&#xff0c;特地把C#开发WebApp的一些过程记录下来&#xff0c;欢迎大家一起指教、讨论&#xff0c;废话少说&#xff0c;是时候开始表演真正的技术了。。1、新建空白Android应用2、拖一个WebView控件进来3、打开模拟器Genymot…

ASP.NET Core依赖注入深入讨论

这篇文章我们来深入探讨ASP.NET Core、MVC Core中的依赖注入&#xff0c;我们将示范几乎所有可能的操作把依赖项注入到组件中。依赖注入是ASP.NET Core的核心&#xff0c;它能让您应用程序中的组件增强可测试性&#xff0c;还使您的组件只依赖于能够提供所需服务的某些组件。举…

使用静态基类方案让 ASP.NET Core 实现遵循 HATEOAS Restful Web API

Hypermedia As The Engine Of Application State (HATEOAS)HATEOAS&#xff08;Hypermedia as the engine of application state&#xff09;是 REST 架构风格中最复杂的约束&#xff0c;也是构建成熟 REST 服务的核心。它的重要性在于打破了客户端和服务器之间严格的契约&…

【招聘(北京)】.NETCORE开发工程师(微服务方向)

组织&#xff1a;华汽集团北京研发中心位置&#xff1a;北京市朝阳区焦奥中心官网&#xff1a;www.sinoauto.com邮箱&#xff1a;taoxu.weisinoauto.com 项目&#xff1a;打造面向国内汽车后市场用户的一站式云服务平台&#xff08;华汽云&#xff09;&#xff0c;形态包括B2B、…

确保线程安全下使用Queue的Enqueue和Dequeue

场景是这样&#xff0c;假设有一台设备会触发类型为Alarm的告警信号&#xff0c;并把信号添加到一个Queue结构中&#xff0c;每隔一段时间这个Queue会被遍历检查&#xff0c;其中的每个Alarm都会调用一个相应的处理方法。问题在于&#xff0c;检查机制是基于多线程的&#xff0…

编写一个Java程序,其中包含三个线程: 厨师(Chef)、服务员(Waiter)和顾客(Customer)

编写一个Java程序&#xff0c;其中包含三个线程: 厨师(Chef)、服务员(Waiter)和顾客(Customer)。他们的行动如下: 厨师准备菜肴&#xff0c;每次准备一个。服务员等待菜肴准备好&#xff0c;然后将其送到顾客那里。顾客等待服务员送来菜看后才开始吃。所有三个角色应该循环进行…

Hangfire使用ApplicationInsigts监控

起因我司目前使用清真的ApplicationInsights来做程序级监控。&#xff08;ApplicationInsights相关文档: https://azure.microsoft.com/zh-cn/services/application-insights/ &#xff09;其实一切都蛮好的&#xff0c;但是我们基于Hangfire的Job系统却无法被Ai所监控到&#…

NET主流ORM框架分析

接上文我们测试了各个ORM框架的性能&#xff0c;大家可以很直观的看到各个ORM框架与原生的ADO.NET在境删改查的性能差异。这里和大家分享下我对ORM框架的理解及一些使用经验。ORM框架工作原理所有的ORM框架的工作原理都离不开下面这张图&#xff0c;只是每个框架的实现程度不同…

20、java中的类加载机制

1、类加载机制是什么&#xff1f; 类加载机制指的就是jvm将类的信息动态添加到内存并使用的一种机制。 2、那么类加载的具体流程是什么呢&#xff1f; 一般说类加载只有三步&#xff1a;加载、连接和初始化&#xff0c;其中连接包括验证、准备和解析&#xff0c;用于将运行时加…