ASP.NET Core 2.2 的新增功能

2019-04-17 08:56 更新

開放 API 分析器和約定

開放 API(以前稱為 Swagger)是一個與語言無關(guān)的規(guī)范,用于描述 REST API。 開放 API 生態(tài)系統(tǒng)具有一些工具,可用于發(fā)現(xiàn)、測試和生成使用該規(guī)范的客戶端代碼。 對在 ASP.NET Core MVC 中生成和可視化開放 API 文檔的支持通過社區(qū)驅(qū)動型項目(如 NSwag 和 Swashbuckle.AspNetCore)來提供。 對于創(chuàng)建開放 API 文檔,ASP.NET Core 2.2 提供了改進的工具和運行時體驗。

有關(guān)更多信息,請參見以下資源:

問題詳細信息支持

ASP.NET Core 2.1 引入了 ProblemDetails(基于用于通過 HTTP 響應(yīng)傳送錯誤詳細信息的 RFC 7807規(guī)范)。 在 2.2 中,ProblemDetails 是針對具有 ApiControllerAttribute 特性的控制器中客戶端錯誤代碼的標準響應(yīng)。 返回客戶端錯誤狀態(tài)代碼 (4xx) 的 IActionResult 現(xiàn)在返回 ProblemDetails 正文。 結(jié)果還包括可以用于將使用請求日志的錯誤相關(guān)聯(lián)的關(guān)聯(lián) ID。 對于客戶端錯誤,ProducesResponseType 默認為使用 ProblemDetails 作為響應(yīng)類型。 這會記錄在使用 NSwag 或 Swashbuckle.AspNetCore 生成的開放 API/Swagger 輸出中。

終結(jié)點路由

ASP.NET Core 2.2 使用新的終結(jié)點路由系統(tǒng)來改進請求的調(diào)度。 更改包括新鏈接生成 API 成員和路由參數(shù)轉(zhuǎn)換器。

有關(guān)更多信息,請參見以下資源:

運行狀況檢查

通過新的運行狀況檢查服務(wù)可以更輕松地在需要運行狀況檢查的環(huán)境(如 Kubernetes)中使用 ASP.NET Core。 運行狀況檢查包括中間件和一組定義 IHealthCheck 抽象和服務(wù)的庫。

運行狀況檢查由容器業(yè)務(wù)流程協(xié)調(diào)程序或負載均衡器用于快速確定系統(tǒng)是否正常響應(yīng)請求。 容器業(yè)務(wù)流程協(xié)調(diào)程序可以通過停止?jié)L動部署或重新啟動容器來響應(yīng)失敗的運行狀況檢查。 負載均衡器可以通過路由流量以避開失敗的服務(wù)實例,來響應(yīng)運行狀況檢查。

運行狀況檢查由應(yīng)用程序公開為監(jiān)視系統(tǒng)所使用的 HTTP 終結(jié)點。 可以為各種實時監(jiān)視方案和監(jiān)視系統(tǒng)配置運行狀況檢查。 運行狀況檢查服務(wù)與 BeatPulse 項目集成。 從而可以更輕松地添加為眾多常用系統(tǒng)和依賴項添加檢查。

有關(guān)詳細信息,請參閱 ASP.NET Core 中的運行狀況檢查

Kestrel 中的 HTTP/2

ASP.NET Core 2.2 添加了對 HTTP/2 的支持。

HTTP/2 是 HTTP 協(xié)議的主要修訂版本。 HTTP/2 的一些值得注意的功能包括支持標頭壓縮,以及單個連接上的完整多路復(fù)用流。 盡管 HTTP/2 保留了 HTTP 的語義(HTTP 標頭、方法等),不過與 HTTP/1.x 相比,在線路上對此數(shù)據(jù)進行組幀和發(fā)送的方式發(fā)生了重大更改。

由于組幀中的這一更改,服務(wù)器和客戶端需要協(xié)商所使用的協(xié)議版本。 應(yīng)用層協(xié)議協(xié)商 (ALPN) 是一種 TLS 擴展,允許服務(wù)器和客戶端協(xié)商用作其 TLS 握手一部分的協(xié)議版本。 雖然服務(wù)器與客戶端之間可以事先了解協(xié)議,不過所有主要瀏覽器都支持 ALPN 作為建立 HTTP/2 連接的唯一方法。

有關(guān)詳細信息,請參閱 HTTP/2 支持。

Kestrel 配置

在早期版本的 ASP.NET Core 中,Kestrel 選項通過調(diào)用 UseKestrel 來配置。 在 2.2 中,Kestrel 選項通過在主機生成器上調(diào)用 ConfigureKestrel 來配置。 此更改為進程內(nèi)承載解決了 IServer 注冊順序方面的問題。 有關(guān)更多信息,請參見以下資源:

IIS 進程內(nèi)承載

在早期版本的 ASP.NET Core 中,IIS 用作反向代理。 在 2.2 中,ASP.NET Core 模塊可以啟動 CoreCLR 并在 IIS 工作進程 (w3wp.exe) 內(nèi)承載應(yīng)用。 在使用 IIS 運行時,進程內(nèi)承載可提供性能和診斷提升。

有關(guān)詳細信息,請參閱 IIS 進程內(nèi)承載。

SignalR Java 客戶端

ASP.NET Core 2.2 引入了適用于 SignalR 的 Java 客戶端。 此客戶端支持通過 Java 代碼連接到 ASP.NET Core SignalR 服務(wù)器(包括 Android 應(yīng)用)。

有關(guān)詳細信息,請參閱 ASP.NET Core SignalR Java 客戶端。

CORS 改進

在早期版本的 ASP.NET Core 中,CORS 中間件允許發(fā)送 Accept、Accept-Language、Content-Language 和 Origin 標頭(不考慮在 CorsPolicy.Headers 中配置的值)。 在 2.2 中,僅當(dāng)在 Access-Control-Request-Headers 中發(fā)送的標頭與 WithHeaders 中聲明的標頭完全匹配時,才能進行 CORS 中間件策略匹配。

有關(guān)詳細信息,請參閱 CORS 中間件。

響應(yīng)壓縮

ASP.NET Core 2.2 可以使用 Brotli 壓縮格式來壓縮響應(yīng)。

有關(guān)詳細信息,請參閱響應(yīng)壓縮中間件支持 Brotli 壓縮。

項目模板

ASP.NET Core Web 項目模板已更新為 Bootstrap 4 和 Angular 6。 新的外觀在視覺上更簡單,可以更輕松地查看應(yīng)用的重要結(jié)構(gòu)。

主頁或索引頁

驗證性能

MVC 的驗證系統(tǒng)設(shè)計為具有可擴展性和靈活性,從而使你可以基于每個請求確定應(yīng)用于給定模型的驗證程序。 這非常適用于創(chuàng)作復(fù)雜的驗證提供程序。 但是在最常見的情況下,應(yīng)用程序僅使用內(nèi)置驗證程序,無需這一額外的靈活性。 內(nèi)置驗證程序包括 DataAnnotations(如 [Required] 和 [StringLength])和 IValidatableObject。

在 ASP.NET Core 2.2 中,如果 MVC 確定給定模型關(guān)系圖不需要驗證,則可以繞過驗證。 在驗證無法具有或不具有任何驗證程序的模型時,跳過驗證可獲得顯著改進。 這包括諸如基元集合(如 byte[]、string[]、Dictionary<string, string> )之類的對象,或沒有許多驗證程序的復(fù)雜對象關(guān)系圖。

HTTP 客戶端性能

在 ASP.NET Core 2.2 中,通過減少連接池鎖定爭用提高了 SocketsHttpHandler 的性能。 對于進行大量傳出 HTTP 請求的應(yīng)用(如某些微服務(wù)體系結(jié)構(gòu)),吞吐量得到了提高。 在負載下,HttpClient吞吐量在 Linux 上可以提高多達 60%,在 Windows 上提高多達 20%。

有關(guān)詳細信息,請參閱實現(xiàn)此改進的拉取請求。

其他信息

要獲取完整的更改列表,請參閱 ASP.NET Core 2.2 發(fā)行說明


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號