泉州seo網(wǎng)站建設(shè)費(fèi)用品牌建設(shè)
作者:James Newton-King
排版:Alan Wang
開(kāi)發(fā)人員喜歡 .NET 強(qiáng)大且用戶友好的調(diào)試體驗(yàn)。您可以在您選擇的 IDE 中設(shè)置斷點(diǎn),啟動(dòng)已經(jīng)附加上調(diào)試器的程序,逐步執(zhí)行代碼并查看 .NET 應(yīng)用程序的狀態(tài)。
在 .NET 8 中,我們致力于改善 .NET 應(yīng)用中常用類型的調(diào)試體驗(yàn)。這些包括:
HttpContext
和其朋友WebApplication
- MVC and Razor Pages
- gRPC
- 端點(diǎn)元數(shù)據(jù)
- 日志
- 配置
您不需要深入了解這些類型的內(nèi)部結(jié)構(gòu)就可以找到有關(guān)應(yīng)用程序的信息。我們?yōu)槌S玫?.NET 類型添加了自定義調(diào)試屬性的功能來(lái)顯示調(diào)試摘要以及提供簡(jiǎn)化的調(diào)試代理。
HttpContext 和其朋友
HttpContext
、HttpRequest
和 HttpResponse
對(duì)于使用 ASP.NET Core 構(gòu)建 Web 應(yīng)用程序的開(kāi)發(fā)人員來(lái)說(shuō)是非常熟悉的。如果您想查看 HTTP 請(qǐng)求的狀態(tài),那么您需要調(diào)試這些類型。
我們審查了 ASP.NET Core 的 HTTP 類型的屬性,以便它們更容易與調(diào)試器一起使用。查看請(qǐng)求和響應(yīng)值(例如標(biāo)頭、cookie、查詢字符串和表單值)變得更加容易,現(xiàn)在 HttpRequest
和 HttpResponse
還顯示了用戶友好的類型摘要,像 HTTP 請(qǐng)求 URL 或 HTTP 響應(yīng)狀態(tài)碼之類的關(guān)鍵信息可以立即看見(jiàn)。
下面的屏幕截圖顯示了對(duì) HttpContext
相關(guān)類型的改進(jìn):
.NET 7
.NET 8
相比之前好了很多!盡管隱藏了一些數(shù)據(jù),但沒(méi)有丟失任何內(nèi)容。您可以選擇 Raw View
以查看所有字段和屬性。
WebApplication
WebApplication
是在 Program.cs
中配置和啟動(dòng) ASP.NET Core 應(yīng)用程序的默認(rèn)方式。 更新后的 WebApplication
會(huì)顯示重要信息,例如 IDE 調(diào)試器中配置的端點(diǎn)、中間件和 IConfiguration
值。
.NET 7
.NET 8
我們對(duì) .NET Generic Host 進(jìn)行了類似的改進(jìn)。Generic Host 用于托管沒(méi)有 HTTP 端點(diǎn)的應(yīng)用程序,例如 Unix daemons 和 Windows Services。
MVC and Razor Pages
ASP.NET Core MVC 和 Razor Pages 是構(gòu)建 Web 應(yīng)用程序的流行框架??刂破?、視圖和 Razor Pages 在 .NET 8 中的調(diào)試獲得了改進(jìn)。
在調(diào)試這些框架時(shí),我們發(fā)現(xiàn)了很多額外的信息。眾多的類型讓人感覺(jué)很混亂。在 .NET 8 中,我們審查了每一種類型并捫心自問(wèn):“這會(huì)給調(diào)試帶來(lái)快樂(lè)嗎?”?,F(xiàn)在,大多數(shù) MVC 和 Razor 類型都可以更好地進(jìn)行調(diào)試,并且隱藏了非必要類型。下面的屏幕截圖展示了 MVC 控制器的改進(jìn):
.NET 7
.NET 8
我們認(rèn)為您會(huì)同意這種整理后的輸出更容易處理。
gRPC
gRPC 是一個(gè)用于構(gòu)建 RPC 服務(wù)的高性能庫(kù)。最新版本的 gRPC 讓您可以更容易地調(diào)試來(lái)自客戶端的 gRPC 調(diào)用?,F(xiàn)在的 gRPC 調(diào)用包含有關(guān)其方法、狀態(tài)、響應(yīng)標(biāo)頭和尾部的信息。有關(guān)請(qǐng)求/響應(yīng)和流式傳輸?shù)钠渌畔⑷Q于 gRPC 調(diào)用類型。下面的示例是一元調(diào)用。
grpc-dotnet 2.55.0
grpc-dotnet 2.56.0
您可以通過(guò)將 Grpc.Net.Client 更新到 2.56.0 或更高版本來(lái)體驗(yàn)這些改動(dòng)。
端點(diǎn)元數(shù)據(jù)
端點(diǎn)是 ASP.NET Core 的核心概念。 端點(diǎn)代表可執(zhí)行的請(qǐng)求處理代碼。當(dāng)應(yīng)用程序啟動(dòng)時(shí),在應(yīng)用程序中定義的端點(diǎn)被注冊(cè)為路由。然后,當(dāng) HTTP 請(qǐng)求進(jìn)入應(yīng)用程序時(shí),路由將請(qǐng)求匹配到端點(diǎn)。 端點(diǎn)的示例包括:
- MVC actions
- Razor Pages
- Minimal APIs
- gRPC methods
端點(diǎn)可以有元數(shù)據(jù),元數(shù)據(jù)控制請(qǐng)求的執(zhí)行方式。例如,API 上的 [Authorize]
屬性保存為端點(diǎn)元數(shù)據(jù),然后 AuthorizationMiddleware
在處理請(qǐng)求時(shí)使用它。
在 .NET 8 中,調(diào)試文本已經(jīng)添加到公共元數(shù)據(jù)中。下面的屏幕截圖比較了 .NET 7 和 .NET 8 中的 Endpoint.Metadata 調(diào)試。更容易理解配置了哪些元數(shù)據(jù)以及如何處理與端點(diǎn)匹配的請(qǐng)求。
.NET 7
.NET 8
日志
Microsoft.Extensions.Logging 是 .NET 應(yīng)用程序開(kāi)發(fā)中流行的日志記錄庫(kù),在整個(gè) ASP.NET Core 中使用。應(yīng)用程序使用 ILogger
輸出結(jié)構(gòu)化日志。
ILogger
從來(lái)就不是為調(diào)試而設(shè)計(jì)的。這是一個(gè)用于寫(xiě)入日志的簡(jiǎn)單接口。在調(diào)試 ILogger
實(shí)例時(shí),這種設(shè)計(jì)選擇是顯而易見(jiàn)的。它顯示了為性能而設(shè)計(jì)的難以理解的數(shù)據(jù)結(jié)構(gòu)。
在 .NET 8 中,可以更容易地了解是否啟用了日志記錄以及配置了哪些日志記錄提供程序。 ILogger
顯示了一個(gè)用戶友好的有用信息列表,例如其名稱、配置的日志級(jí)別、是否啟用以及配置的日志記錄提供程序。
.NET 7
.NET 8
配置
Microsoft.Extensions.Configuration 是 .NET 應(yīng)用程序和庫(kù)使用的配置抽象層。 IConfiguration
可以從配置提供程序加載值,例如 JSON 文件、環(huán)境變量、Azure Key Value 或第三方提供程序。
使用配置的示例位于 ASP.NET Core 模板中。由模板添加的 appsettings.json 文件配置應(yīng)用程序的日志級(jí)別:
{"Logging": {"LogLevel": {"Default": "Information"}}
}
在 .NET 8 之前,弄清楚應(yīng)用程序的配置值可能非常困難。配置支持多個(gè)提供程序,提供程序可以優(yōu)先于其他提供的程序。例如,雖然默認(rèn)始終使用 appsettings.json
中的值,但它們會(huì)被 appsettings.Development.json
或 appsettings.Production.json
有條件地覆蓋,具體取決于應(yīng)用程序的發(fā)布方式。
在 .NET 8 中,現(xiàn)在調(diào)試 IConfiguration
會(huì)顯示一個(gè)包含所有配置鍵和值的簡(jiǎn)單列表。優(yōu)先級(jí)已計(jì)算過(guò)了,因此您看到的配置值就是應(yīng)用程序?qū)⒁褂玫闹怠?br /> .NET 7
.NET 8
更多信息
有太多的改進(jìn),無(wú)法一一詳述以及列出它們。但預(yù)計(jì) .NET 8 中的調(diào)試器可視化會(huì)有更多改進(jìn):
- 依賴注入
ClaimsPrincipal
和ClaimsIdentity
StringValues
和StringSegment
HostString
,PathString
,QueryString
和FragmentString
- HTTP 標(biāo)頭集合
RouteValueDictionary
- ASP.NET Core MVC 的
ModelState
現(xiàn)在就試試
.NET 8 調(diào)試增強(qiáng)功能現(xiàn)在已經(jīng)在 .NET 8 RC1 中提供。您可以按照下面的步驟嘗試一下,然后讓我們知道您的想法:
- 下載最新的 .NET 8 版本。
- 啟動(dòng) Visual Studio 2022(或您首選的 IDE)并創(chuàng)建 ASP.NET Core 或 Worker Service 應(yīng)用程序。
- 設(shè)置斷點(diǎn)并按 F5 運(yùn)行應(yīng)用程序并進(jìn)行調(diào)試。
感謝您嘗試 .NET 8 和 .NET 8 調(diào)試增強(qiáng)功能!