bästa praxis för ASP.NET Core-prestanda Blazor

Anmärkning

Det här är inte den senaste versionen av den här artikeln. Den aktuella versionen finns i .NET 10-versionen av den här artikeln.

Varning

Den här versionen av ASP.NET Core stöds inte längre. Mer information finns i supportpolicyn för .NET och .NET Core. För den nuvarande utgåvan, se .NET 9-versionen av den här artikeln .

Blazor är optimerad för höga prestanda i de flesta realistiska programgränssnittsscenarier. Den bästa prestandan beror dock på att utvecklare använder rätt mönster och funktioner.

Anmärkning

Kodexemplen i den här noden med artiklar använder nullbara referenstyper (NRT) och .NET-kompilator för statisk analys av null-tillstånd, som stöds i ASP.NET Core i .NET 6 eller senare.

AOT-kompilering (förhandskompilering)

AOT-kompilering i förväg kompilerar en Blazor-appens .NET-kod direkt till den interna WebAssembly för direktkörning av webbläsaren. AOT-kompilerade appar resulterar i större appar som tar längre tid att ladda ned, men AOT-kompilerade appar ger vanligtvis bättre körningsprestanda, särskilt för appar som kör processorintensiva uppgifter. Mer information finns i ASP.NET Core Blazor WebAssembly byggverktyg och ahead-of-time (AOT) kompilering.

Mått och spårning

Med mått och spårningsfunktioner kan du övervaka och diagnostisera appens prestanda, spåra användarinteraktioner och förstå komponentbeteendet i produktionsmiljöer.

Konfiguration

Om du vill aktivera Blazor mått och spårning i din app konfigurerar du OpenTelemetry med följande mätare och aktivitetskällor i appens Program fil där tjänster registreras:

builder.Services.ConfigureOpenTelemetryMeterProvider(meterProvider =>
{
    meterProvider.AddMeter("Microsoft.AspNetCore.Components");
    meterProvider.AddMeter("Microsoft.AspNetCore.Components.Lifecycle");
    meterProvider.AddMeter("Microsoft.AspNetCore.Components.Server.Circuits");
});

builder.Services.ConfigureOpenTelemetryTracerProvider(tracerProvider =>
{
    tracerProvider.AddSource("Microsoft.AspNetCore.Components");
    tracerProvider.AddSource("Microsoft.AspNetCore.Components.Server.Circuits");
});

Prestandamätare

Mer information om följande prestandamätare finns i ASP.NET inbyggda kärnmått.

Microsoft.AspNetCore.Components meter:

  • aspnetcore.components.navigate: Spårar det totala antalet vägändringar i appen.
  • aspnetcore.components.handle_event.duration: Mäter varaktigheten för bearbetning av webbläsarhändelser, inklusive affärslogik.

Microsoft.AspNetCore.Components.Lifecycle meter:

  • aspnetcore.components.update_parameters.duration: Mäter varaktigheten för bearbetning av komponentparametrar, inklusive affärslogik.
  • aspnetcore.components.render_diff.duration: Spårar varaktigheten för återgivningsbatcherna.
  • aspnetcore.components.render_diff.size: Spårar storleken på renderingsbatcherna.

Microsoft.AspNetCore.Components.Server.Circuits meter:

I serverapplikationer Blazor ingår ytterligare kretsspecifika mått:

  • aspnetcore.components.circuit.active: Visar antalet aktiva kretsar som för närvarande finns i minnet.
  • aspnetcore.components.circuit.connected: Spårar antalet kretsar som är anslutna till klienter.
  • aspnetcore.components.circuit.duration: Mäter livslängden för kretsen och ger totalt antal kretsar.

Blazor Spårning

Mer information om följande spårningsaktiviteter finns i ASP.NET inbyggda kärnmått.

De nya funktionerna för aktivitetsspårning använder aktivitetskällan Microsoft.AspNetCore.Components och tillhandahåller tre huvudsakliga typer av spårningsaktiviteter: kretslivscykel, navigering och händelsehantering.

Spårning av kretsens livscykel:

Microsoft.AspNetCore.Components.StartCircuit: Övervakar initiering av krets med formatet Circuit {circuitId}.

Taggar:

  • aspnetcore.components.circuit.id: Unik kretsidentifierare.
  • error.type: Fullständigt namn på undantagstyp (valfritt)

Länkar:

  • HTTP-spårning
  • SignalR spåra

Användning: Länkar andra Blazor spårningar av samma session/krets till HTTP och SignalR kontexter.

Navigeringsspårning:

Microsoft.AspNetCore.Components.Navigate: Spårar ruttförändringar med formatet Route {route} -> {componentType}.

Taggar:

  • aspnetcore.components.route: Url-sökvägsmönster för sidan.
  • aspnetcore.components.type: Komponentens Razor klassnamn.
  • error.type: Fullständigt namn på undantagstyp (valfritt).

Länkar:

  • HTTP-spårning
  • SignalR spåra
  • Kretsspårning

Användning: Vilka Blazor sidor den här sessionen besökte?

Spårning av händelsehantering:

Microsoft.AspNetCore.Components.HandleEvent: Spårar händelsehantering med formatet Event {attributeName} -> {componentType}.{methodName}.

Taggar:

  • aspnetcore.components.attribute.name: Namnet på HTML-attributet som utlöser händelsen (exempel: onClick).
  • code.function.name: C#-metodnamnet för hanteraren.
  • aspnetcore.components.type: Fullständigt namn på C#-målkomponenten som tar emot händelsen.
  • error.type: Fullständigt namn på undantagstyp (valfritt).

Länkar:

  • Kretsspårning
  • Vägspårning

Användningsområden:

  • Klicka på vilken komponent som orsakade undantaget och på vilken sida?
  • I vilken länkad krets och med vilken HTTP-kontext hände det?