天天看點

.NET 6 探索 Minimal API 系列

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 其他類型(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探索(17) 性能(performance) - 線程相關​​

​​.Net 6探索(18) 性能(performance) - 系統類型​​

繼續閱讀