.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方便的元素选择器 ...
随机推荐
- request和response请求包中的各项解释
Request Response
- Perfetto分析进阶
一.Perfetto介绍 Perfetto是Android Q中引入的全新下一代平台级跟踪工具,为Android.Linux和Chrome平台提供了一种通用的性能检测和跟踪分析工具集.其核心是引入了一 ...
- sigmod、tanh、ReLU激活函数的实现
import torch import torch.nn.functional as F import matplotlib.pyplot as plt import numpy as np x = ...
- Kulla-Conty BRDF补充_重要性采样GGX
重要性采样的方法有多种,这里我们介绍其中一种,你的实现也可以使用其他方法.我们将通过 GGX 采样来完成 E(µ)的预计算工作.先从理论上讨论 GGX 采样算法,对于给定出射方向 o 的 GGX采样, ...
- count(*)、count(1)哪个更快?面试必问:通宵整理的十道经典MySQL必问面试题
一.你是如何理解Count(*)和Count(1)的? 这两个并没有区别,不要觉得 count() 会查出全部字段,而 count(1) 不会.所以 count() 会更慢,你觉得 MySQL 作者会 ...
- Nuxt.js 应用中的 build:manifest 事件钩子详解
title: Nuxt.js 应用中的 build:manifest 事件钩子详解 date: 2024/10/22 updated: 2024/10/22 author: cmdragon exce ...
- 买了个mini主机当服务器
虽然有苹果的电脑,但是在装一些软件的时候,从想着能不能有一个小型的服务器,免得各种设置什么帮我强各种别的导致Mac出现各种的异常,整体上的话去看了一些小的主机,看过苹果的MV迷你Mac,但是发现是太贵 ...
- Power BI 通过输入数据新建表后重新进入编辑状态
在使用Power BI时,有时候我们会直接通过输入数据构建一些简单的表,但是构建好后我们可能还需要对表格进行增删改的操作,这时候我们需要怎么才会恢复到表格的编辑状态呢?其实很简单,我们回到PQ里面,双 ...
- Dbeaver24.2.2安装和使用教程(免费的数据库管理工具)
前言 DBeaver是免费和开源(GPL)为开发人员和数据库管理员通用数据库工具. DBeaver 通过 JDBC 连接到数据库,可以支持几乎所有的数据库产品,包括:MySQL.PostgreSQL. ...
- 强化学习:如何计算被环境系统截断的terminated state的value值 —— (Bootstrap returns from value estimates if episode is terminated by timeout)
本文主题:如何计算强化学习中被环境系统截断的terminated state的value值 首先解释一下什么是强化学习中的terminated state的value值,强化学习就是一个智能体(age ...