即將釋出的 ASP.NET Core 2.2 會有哪些新玩意兒?
今年 6 月份的時候時候 .NET 團隊就在 GitHub 公佈了 ASP.NET Core 2.2 版本的 Roadmap(文末有連結),而前兩天 ASP.NET Core 2.2 預覽版 2 已經可以下載使用了,正式版大約會在今年年底的時候釋出。
相對於 2.0 and 2.1 來說,這次更新算是一次小更新了,主要包含 Bug 修復、效能優化、增加一些小的特性、和 Merge 社群的 PR。
下面來總結一下 ASP.NET Core 2.2 有哪些新的東西。
ApiController 特性增強
ApiController 特性是 ASP.NET Core 2.1 引入的,應用在 Controller 類上,主要用來自動對 Model 進行驗證並自動響應 400 錯誤。引入 ApiController 特性後比如下面的程式碼是多餘的:
if (!ModelState.IsValid){ return BadRequest(ModelState);}
在版本 2.2,ApiController 特性提供了 API Explorer 元資料,可以更友好地生成 Swagger/OpenAPI 文件。然後還增加了一些預設約定,如果程式碼不符合約定,是會有建議的。比如下面的程式碼:
[ApiController]public class CatalogController : ControllerBase{ [HttpGet] [Route("items/{id:int}")] public async Task<ActionResult<CatalogItem>> GetItemById(int id) { } ...}
會出現建議提示,通過快捷鍵 Ctrl+.,編輯器會建議你這麼寫:
[ApiController]public class CatalogController : ControllerBase{ [HttpGet] [Route("items/{id:int}")] [ProducesResponseType((int)HttpStatusCode.NotFound)] [ProducesResponseType(typeof (CatalogItem),(int)HttpStatusCode.OK)] public async Task<ActionResult<CatalogItem>> GetItemById(int id) { } ...}
引入新的路由系統
會有一個叫 Dispatcher 的東西,它的設計是為了讓路由匹配更早地出現在管道中,這樣可對中介軟體可見,中介軟體通過它可以知道路由下一個指向目標的資訊。
提供呼叫 API 的 REPL 工具
在 dotnet
CLI 中整合可以呼叫 API 的 REPL 工具。這個主要是方便快速除錯 API 的,類似命令列的 curl 命令,但應該更強大。
生成呼叫 API 客戶端程式碼 (C# 和 TypeScript)
可以根據寫好的 API 元資料,生成呼叫 API 的客戶端程式碼(C# 和 TypeScript)。
授權服務
提供基於 OpenID 的授權服務,這個服務相當於專案的統一授權點,可用於 SPA、Native App 等。
其它
-
Kestrel 和 HttpClient 的 HTTP/2 支援。
-
應用的健康檢查,比如記憶體消耗。
-
SignalR 支援使用 Java 和 C++ 連結。