開(kāi)放 API(以前稱為 Swagger)是一個(gè)與語(yǔ)言無(wú)關(guān)的規(guī)范,用于描述 REST API。 開(kāi)放 API 生態(tài)系統(tǒng)具有一些工具,可用于發(fā)現(xiàn)、測(cè)試和生成使用該規(guī)范的客戶端代碼。 對(duì)在 ASP.NET Core MVC 中生成和可視化開(kāi)放 API 文檔的支持通過(guò)社區(qū)驅(qū)動(dòng)型項(xiàng)目(如 NSwag 和 Swashbuckle.AspNetCore)來(lái)提供。 對(duì)于創(chuàng)建開(kāi)放 API 文檔,ASP.NET Core 2.2 提供了改進(jìn)的工具和運(yùn)行時(shí)體驗(yàn)。
有關(guān)更多信息,請(qǐng)參見(jiàn)以下資源:
ASP.NET Core 2.1 引入了 ProblemDetails(基于用于通過(guò) HTTP 響應(yīng)傳送錯(cuò)誤詳細(xì)信息的 RFC 7807規(guī)范)。 在 2.2 中,ProblemDetails 是針對(duì)具有 ApiControllerAttribute 特性的控制器中客戶端錯(cuò)誤代碼的標(biāo)準(zhǔn)響應(yīng)。 返回客戶端錯(cuò)誤狀態(tài)代碼 (4xx) 的 IActionResult 現(xiàn)在返回 ProblemDetails 正文。 結(jié)果還包括可以用于將使用請(qǐng)求日志的錯(cuò)誤相關(guān)聯(lián)的關(guān)聯(lián) ID。 對(duì)于客戶端錯(cuò)誤,ProducesResponseType 默認(rèn)為使用 ProblemDetails 作為響應(yīng)類型。 這會(huì)記錄在使用 NSwag 或 Swashbuckle.AspNetCore 生成的開(kāi)放 API/Swagger 輸出中。
ASP.NET Core 2.2 使用新的終結(jié)點(diǎn)路由系統(tǒng)來(lái)改進(jìn)請(qǐng)求的調(diào)度。 更改包括新鏈接生成 API 成員和路由參數(shù)轉(zhuǎn)換器。
有關(guān)更多信息,請(qǐng)參見(jiàn)以下資源:
通過(guò)新的運(yùn)行狀況檢查服務(wù)可以更輕松地在需要運(yùn)行狀況檢查的環(huán)境(如 Kubernetes)中使用 ASP.NET Core。 運(yùn)行狀況檢查包括中間件和一組定義 IHealthCheck 抽象和服務(wù)的庫(kù)。
運(yùn)行狀況檢查由容器業(yè)務(wù)流程協(xié)調(diào)程序或負(fù)載均衡器用于快速確定系統(tǒng)是否正常響應(yīng)請(qǐng)求。 容器業(yè)務(wù)流程協(xié)調(diào)程序可以通過(guò)停止?jié)L動(dòng)部署或重新啟動(dòng)容器來(lái)響應(yīng)失敗的運(yùn)行狀況檢查。 負(fù)載均衡器可以通過(guò)路由流量以避開(kāi)失敗的服務(wù)實(shí)例,來(lái)響應(yīng)運(yùn)行狀況檢查。
運(yùn)行狀況檢查由應(yīng)用程序公開(kāi)為監(jiān)視系統(tǒng)所使用的 HTTP 終結(jié)點(diǎn)。 可以為各種實(shí)時(shí)監(jiān)視方案和監(jiān)視系統(tǒng)配置運(yùn)行狀況檢查。 運(yùn)行狀況檢查服務(wù)與 BeatPulse 項(xiàng)目集成。 從而可以更輕松地添加為眾多常用系統(tǒng)和依賴項(xiàng)添加檢查。
有關(guān)詳細(xì)信息,請(qǐng)參閱 ASP.NET Core 中的運(yùn)行狀況檢查。
ASP.NET Core 2.2 添加了對(duì) HTTP/2 的支持。
HTTP/2 是 HTTP 協(xié)議的主要修訂版本。 HTTP/2 的一些值得注意的功能包括支持標(biāo)頭壓縮,以及單個(gè)連接上的完整多路復(fù)用流。 盡管 HTTP/2 保留了 HTTP 的語(yǔ)義(HTTP 標(biāo)頭、方法等),不過(guò)與 HTTP/1.x 相比,在線路上對(duì)此數(shù)據(jù)進(jìn)行組幀和發(fā)送的方式發(fā)生了重大更改。
由于組幀中的這一更改,服務(wù)器和客戶端需要協(xié)商所使用的協(xié)議版本。 應(yīng)用層協(xié)議協(xié)商 (ALPN) 是一種 TLS 擴(kuò)展,允許服務(wù)器和客戶端協(xié)商用作其 TLS 握手一部分的協(xié)議版本。 雖然服務(wù)器與客戶端之間可以事先了解協(xié)議,不過(guò)所有主要瀏覽器都支持 ALPN 作為建立 HTTP/2 連接的唯一方法。
有關(guān)詳細(xì)信息,請(qǐng)參閱 HTTP/2 支持。
在早期版本的 ASP.NET Core 中,Kestrel 選項(xiàng)通過(guò)調(diào)用 UseKestrel 來(lái)配置。 在 2.2 中,Kestrel 選項(xiàng)通過(guò)在主機(jī)生成器上調(diào)用 ConfigureKestrel 來(lái)配置。 此更改為進(jìn)程內(nèi)承載解決了 IServer 注冊(cè)順序方面的問(wèn)題。 有關(guān)更多信息,請(qǐng)參見(jiàn)以下資源:
在早期版本的 ASP.NET Core 中,IIS 用作反向代理。 在 2.2 中,ASP.NET Core 模塊可以啟動(dòng) CoreCLR 并在 IIS 工作進(jìn)程 (w3wp.exe) 內(nèi)承載應(yīng)用。 在使用 IIS 運(yùn)行時(shí),進(jìn)程內(nèi)承載可提供性能和診斷提升。
有關(guān)詳細(xì)信息,請(qǐng)參閱 IIS 進(jìn)程內(nèi)承載。
ASP.NET Core 2.2 引入了適用于 SignalR 的 Java 客戶端。 此客戶端支持通過(guò) Java 代碼連接到 ASP.NET Core SignalR 服務(wù)器(包括 Android 應(yīng)用)。
有關(guān)詳細(xì)信息,請(qǐng)參閱 ASP.NET Core SignalR Java 客戶端。
在早期版本的 ASP.NET Core 中,CORS 中間件允許發(fā)送 Accept、Accept-Language、Content-Language 和 Origin 標(biāo)頭(不考慮在 CorsPolicy.Headers 中配置的值)。 在 2.2 中,僅當(dāng)在 Access-Control-Request-Headers 中發(fā)送的標(biāo)頭與 WithHeaders 中聲明的標(biāo)頭完全匹配時(shí),才能進(jìn)行 CORS 中間件策略匹配。
有關(guān)詳細(xì)信息,請(qǐng)參閱 CORS 中間件。
ASP.NET Core 2.2 可以使用 Brotli 壓縮格式來(lái)壓縮響應(yīng)。
有關(guān)詳細(xì)信息,請(qǐng)參閱響應(yīng)壓縮中間件支持 Brotli 壓縮。
ASP.NET Core Web 項(xiàng)目模板已更新為 Bootstrap 4 和 Angular 6。 新的外觀在視覺(jué)上更簡(jiǎn)單,可以更輕松地查看應(yīng)用的重要結(jié)構(gòu)。
MVC 的驗(yàn)證系統(tǒng)設(shè)計(jì)為具有可擴(kuò)展性和靈活性,從而使你可以基于每個(gè)請(qǐng)求確定應(yīng)用于給定模型的驗(yàn)證程序。 這非常適用于創(chuàng)作復(fù)雜的驗(yàn)證提供程序。 但是在最常見(jiàn)的情況下,應(yīng)用程序僅使用內(nèi)置驗(yàn)證程序,無(wú)需這一額外的靈活性。 內(nèi)置驗(yàn)證程序包括 DataAnnotations(如 [Required] 和 [StringLength])和 IValidatableObject。
在 ASP.NET Core 2.2 中,如果 MVC 確定給定模型關(guān)系圖不需要驗(yàn)證,則可以繞過(guò)驗(yàn)證。 在驗(yàn)證無(wú)法具有或不具有任何驗(yàn)證程序的模型時(shí),跳過(guò)驗(yàn)證可獲得顯著改進(jìn)。 這包括諸如基元集合(如 byte[]、string[]、Dictionary<string, string> )之類的對(duì)象,或沒(méi)有許多驗(yàn)證程序的復(fù)雜對(duì)象關(guān)系圖。
在 ASP.NET Core 2.2 中,通過(guò)減少連接池鎖定爭(zhēng)用提高了 SocketsHttpHandler 的性能。 對(duì)于進(jìn)行大量傳出 HTTP 請(qǐng)求的應(yīng)用(如某些微服務(wù)體系結(jié)構(gòu)),吞吐量得到了提高。 在負(fù)載下,HttpClient吞吐量在 Linux 上可以提高多達(dá) 60%,在 Windows 上提高多達(dá) 20%。
有關(guān)詳細(xì)信息,請(qǐng)參閱實(shí)現(xiàn)此改進(jìn)的拉取請(qǐng)求。
要獲取完整的更改列表,請(qǐng)參閱 ASP.NET Core 2.2 發(fā)行說(shuō)明。
更多建議: