.NET 6 探索 Minimal API 系列
今天看到来自 https://www.dotnetdeveloper.cn/ 的一个 .NET 6 Minimal API 系列,感觉质量不错,特别收录在这里。
.Net 6探索 (1) Minimal API介绍
随着.Net 6发布,我们也来探索一下.Net 6。 随着.Net 6发布的同时,C# 10.0也会随之发布,在C# 10.0中为了.Net 6的发布,语言级别集成了很多新特性, 这些特性主要有: Top-level statements async main Global using directives ( 基于SDK的隐式global using) File-scoped名称空间 new表达式类型推断 空引用类型 关于这些新特性,我们之前的一个整个系列都简单的介绍过这些新特性
.Net 6探索(2)WebApplication简介
我们前面学习了minimal api的快速入门,我们了解到,针对于.Net 6主要推出了两个非常重要的类WebApplication和WebApplicationBuilder我们从本章开始学习一下相关的新类的用法。 本章学习WebApplication。 WebApplication 快速运行一个hello world 我们先来看如何从一个minimal api来创建一个应用。
.Net 6探索(3)WebApplicationBuilder简介
前面我们快速的学习了WebApplication, 我们这一章来快速的学习一下WebApplicationBuilder, 在学习之前我们先理解一下WebApplication和WebApplicationBuilder, 从这两个类的名字上大致也能猜测到WebApplicaiton代表的是运行的应用,而后一个则是为了运行该应用的配置类,因此您也会看到下述的各种用法: 改变应用content root, app name以及环境变量
.Net 6探索(4)路由
.Net6和之前的版本相比,最大的不同是改进了路由的配置方法,你可以在WebApplication上使用各种Map方法来处理处理
.Net 6探索(5)参数绑定
参数绑定时指如何将请求的数据转换到强类型的路由处理方法的参数的过程,请求数据的来源决定了路由处理方法参数的来源,绑定来源可以明确指定,也可以根据HTTP方法进行推断。 目前支持如下的绑定源 路由值 查询字符串 头 请求体(Body as Json) 通过DI容器提供的服务 自定义的来源 注意 从表单绑定不是native支持的。
.Net 6探索(6)返回结果(Response)
路由处理方法支持如下几种类型的返回值: 基于IResult的返回值: 包括Task,ValueTask 字符串string: 包括 Task 以及 ValueTask 其他类型(T) Return value Behavior Content-Type IResult The framework calls IResult.ExecuteAsync Decided by the IResult implementation string
.Net 6探索(7)授权(Authorization)和CORS
路由可以通过使用Authorization policy进行保护,可以通过Authorize属性或者方法RequriredAuthorization来定义。
.Net 6探索(8) OpenAPI
可以使用Swashbuckle来描述OpenAPI详细说明. 下面的例子是一个典型的ASP.net Core应用,并启用了OpenAPI支持
.Net 6探索(9) ConfigurationManager类
.Net6中为了简化基于Asp.Net Core的应用,新增加了新的类型WebApplication和WebApplicationBuilder, 其实个人感觉应该将WebApplication和Application分开,类似于我们曾经将WebHost和GenericHost分开一样,为了更好的配合新增加的两个类,整个框架中有一些类也做出了改变,ConfigurationManager就是其中之一。 但是为什么我们需要添加一个新的类来重新表述框架中的配置部分呢? .Net6之前的配置类有什么问题嘛?
.Net 6 探索(10) 从WebHost、GenericHost到WebApplicationBuilder
我们从Andrew的Blog中已经学习了.Net 6中新的配置类ConfigurationManager, 以为为什么需要它,解决了什么问题,那么这一章我们来聊聊Asp.net Core关于配置应用的历史过往。 从Asp.net Core 2.x到3.x, 到5.x以及到现在的6, 历史上采用了如下几种配置应用的方式
探索.Net 6(11) 探索WebApplicationBuilder
我们之前的文章已经介绍过了很多关于.Net的新特性,例如top level statement以及global using等等,除了这些新特性之外,还提供了两个新的类型WebApplicationBuilder和WebApplication, 结合新类型以及新特性,使得配置一个Asp.net Core的应用非常简单:
探索.Net 6(12)使用WebApplication
和我们之前的文章学习的一样,我们基本可以认为WebApplicationBuilder配置所有的应用,但是WebApplication是为了创建一个应用,针对于我们的Web应用,主要就是我们的中间件。 WebApplication相当于是三个类型的封装,
.Net 6探索(13)使用Source Generators优化ILogger的性能
Source Generators实际上是在.Net 5中就已经提出来了概念,但是这个技术在.Net 5中并没有多少人使用,即便是.Net团队自己也没有过多的应用,随着.Net 6的发布,越来越多的库作者,以及.Net的团队开始使用该特性。该特性也非常好理解,主要是向用户提供一个可以供用户使用的C#编译器的特性,可以让用户侵入到用户代码中,并生成新的C#代码,并加入到编译中去。
.Net 6探索(14) 性能(Performance) - Benchmark工具的设定
.Net 6是第一个大一统的发型版本,微软从.Net 5开始计划将.Net Core和之前的.Net统一成一个平台,.Net 6是这个计划的第一个发布版本,根据.Net团队的blog, .Net 6在性能方面都有极大的提升。我们这篇文章好好的学习一下.Net 6中提出的一些关于性能的提升的概念以及工具。 Benchmark的设定 为了测试性能,我们需要一些工具可以用于对于或者测试性能,
.Net 6探索(15) 性能(Performance) - JIT
Code Generation指的是编译器将用户的代码翻译为IL(Intermediate language)到assembly code的过程,Code Generation几乎是所有一切的基础,因此对于Code Generation的优化直接影响了最终代码的性能,根据测试以及官方的blog, .Net 6在这个方面有着巨大的提升。
.Net 6探索(16) 性能(Performance) - GC DPAD for regions
我们在本章不会深入的探讨如何在.Net 6中进行内存分析以及性能调优,我们之后会使用其他的文档来详细的讨论这个问题,这篇文档仅仅是介绍一下在.Net 6中的对GC的重大改变。 .Net 6在GC上最重大的改变是使用新的region概念替换之前一直在使用的Segments。 为什么需要使用新的内存管理形式,主要是在过完中.Net团队观察到使用Segments带来的一些局限性,在.Net 6发布之前,终于决定启用新的设计region, 这二者最明显的区别就是Segment比Region大。
.Net 6探索(17) 性能(performance) - 线程相关
我们来看一下.Net 6在线程相关领域的提升 异步方法里调用同步方法 我们在.Net的异步编程中一直提到不要在异步方法里调用同步方法,因为这样及其容易引起性能问题和死锁问题,在异步的时候,如果在一个异步方法里调用同步方法,这个时候CLR会使用一个线程池来分配线程给异步方法运行,但是如果这个时候异步方法里的同步方法被阻塞了(例如这个需要的时间比较久), 然后有另外一个异步方法也需要一个线程,那么线程池会立即分配一个新线程给另外一个异步方法,如果在负载不大的情况下,这个是没有什么问题的, 如果这个时候负载
.Net 6探索(18) 性能(performance) - 系统类型
本章简要的介绍一下.Net 6对系统的类型的性能提升,只是简单的罗列一下供大家参考
.NET 6 探索 Minimal API 系列的更多相关文章
- 深入理解javascript选择器API系列第三篇——h5新增的3种selector方法
× 目录 [1]方法 [2]非实时 [3]缺陷 前面的话 尽管DOM作为API已经非常完善了,但是为了实现更多的功能,DOM仍然进行了扩展,其中一个重要的扩展就是对选择器API的扩展.人们对jQuer ...
- Web API系列(三)统一异常处理
前面讲了webapi的安全验证和参数安全,不清楚的朋友,可以看看前面的文章,<Web API系列(二)接口安全和参数校验>,本文主要介绍Web API异常结果的处理.作为内部或者是对外提供 ...
- Web API系列(二)接口安全和参数校验
以前简单介绍过web api 的设计,但是还是有很多朋友问我,如何合理的设计和实现web api.比如,接口安全,异常处理,统一数据返回等问题.所以有必要系统的总结总结 web api 的设计和实现. ...
- phoenix 开发API系列 目录
phoenix 开发API系列(一)创建简单的http api phoenix 开发API系列(二)phoenix 各类 api 实现方式 phoenix 开发API系列(三)phoenix api ...
- phoenix 开发API系列(三)phoenix api 结合数据库
概述 介绍了 api 的各种写法之后,下面介绍构建 api 时与数据库连接的方式. 注 下面使用的工程的完整代码已经公开在: http://git.oschina.net/wangyubin/phoe ...
- ASP.NET Web API系列教程目录
ASP.NET Web API系列教程目录 Introduction:What's This New Web API?引子:新的Web API是什么? Chapter 1: Getting Start ...
- flask开发restful api系列(8)-再谈项目结构
上一章,我们讲到,怎么用蓝图建造一个好的项目,今天我们继续深入.上一章中,我们所有的接口都写在view.py中,如果几十个,还稍微好管理一点,假如上百个,上千个,怎么找?所有接口堆在一起就显得杂乱无章 ...
- Web API系列之三 基本功能实现
Web API系列之二讲解了如何搭建一个WebApi的基架,本文主要在其基础之上实现基本的功能.下面开始逐步操作: 一.配置WebApi的路由-用于配置外部如何访问内部资源的url的规则 1.添加Gl ...
- ASP.NET Web API系列教程(目录)(转)
注:微软随ASP.NET MVC 4一起还发布了一个框架,叫做ASP.NET Web API.这是一个用来在.NET平台上建立HTTP服务的Web API框架,是微软的又一项令人振奋的技术.目前,国内 ...
- 深入理解javascript选择器API系列第三篇——HTML5新增的3种selector方法
前面的话 尽管DOM作为API已经非常完善了,但是为了实现更多的功能,DOM仍然进行了扩展,其中一个重要的扩展就是对选择器API的扩展.人们对jQuery的称赞,很多是由于jQuery方便的元素选择器 ...
随机推荐
- ES 去重/聚合查询
es 安装版本为 7.14.0 springboot 有默认的版本,防止冲突设置如下 <properties> <java.version>1.8</java.versi ...
- foobar2000 v1.6.12 汉化版(更新于2022.10.16)
foobar2000 v1.6.12 汉化版 -----------------------[软件截图]---------------------- -----------------------[软 ...
- python批量读取并显示图片,处理异常。
今天写了一个批量读取并显示图片的代码,当做练习,方便以后拿来使用. import imageio import os import matplotlib.pyplot as plt filepath ...
- threejs渲染基础的3D场景
// 创建一个场景对象 let scene = new THREE.Scene(); // 创建一个相机对象 let camera = new THREE.PerspectiveCamera(75, ...
- Promise 有几种状态,什么时候会进入catch?
Promise 有几种状态 三个状态:pending.fulfilled.reject 两个过程:padding -> fulfilled.padding -> rejected Prom ...
- C#轻松实现Modbus通信
1.前言 大家好!我是付工.前面给大家介绍了一系列关于RS485与Modbus的知识. 终于有人把RS485说清楚了终于有人把Modbus说明白了通透!终于把ModbusRTU弄明白了这样看来,Mod ...
- KubeSphere 社区双周报|2024.03.29-04.11
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...
- 蜘点云原生之 KubeSphere 落地实践过程
作者:池晓东,蜘点商业网络服务有限公司技术总监,从事软件开发设计 10 多年,喜欢研究各类新技术,分享技术. 来源:本文由 11 月 25 日广州站 meetup 中讲师池晓东整理,整理于该活动中池老 ...
- 搞清楚这个老六的真面目!逐层‘剥开’人工智能中的卷积神经网络(CNN)
第三章:超越基础--图像中的特征检测 上一篇<揭开计算机视觉的神秘面纱,原来机器是这样"看图"的!> 本篇序言:上一篇我们实现并训练了一个神经网络,成功让计算机&quo ...
- mysql 备份还原命令备忘
1.备份 mysqldump -u username -p databasename tableName > backupfile.sql 2.还原 mysql -u username -p p ...