Freigeben über


ASP.NET Core Blazor Bewährte Methoden für Leistungsoptimierung

Hinweis

Dies ist nicht die neueste Version dieses Artikels. Informationen zum aktuellen Release finden Sie in der .NET 9-Version dieses Artikels.

Warnung

Diese Version von ASP.NET Core wird nicht mehr unterstützt. Weitere Informationen finden Sie in der .NET- und .NET Core-Supportrichtlinie. Informationen zum aktuellen Release finden Sie in der .NET 9-Version dieses Artikels.

Von Bedeutung

Diese Informationen beziehen sich auf ein Vorabversionsprodukt, das vor der kommerziellen Freigabe möglicherweise noch wesentlichen Änderungen unterliegt. Microsoft gibt keine Garantie, weder ausdrücklich noch impliziert, hinsichtlich der hier bereitgestellten Informationen.

Informationen zum aktuellen Release finden Sie in der .NET 9-Version dieses Artikels.

Blazor ist für eine hohe Leistung in den realistischsten Anwendungs-UI-Szenarien optimiert. Die beste Leistung hängt jedoch davon ab, dass Entwickler die richtigen Muster und Features übernehmen.

Hinweis

Die Codebeispiele im Artikelknoten übernehmen nullable Referenztypen (NRTs) und die statische Analyse des Nullzustands des .NET-Compilers, die in ASP.NET Core ab .NET 6 oder höher unterstützt werden.

AOT-Kompilierung (Ahead-of-Time)

Die AOT-Kompilierung (Ahead-of-Time) kompiliert den .NET-Code einer Blazor App direkt zur direkten Ausführung durch den Browser in native WebAssembly. AOT-kompilierte Apps führen zu größeren Apps, die länger zum Herunterladen benötigen, aber AOT-kompilierte Apps bieten in der Regel eine bessere Laufzeitleistung, insbesondere für Apps, die CPU-intensive Aufgaben ausführen. Weitere Informationen finden Sie unter ASP.NET Core Blazor WebAssembly-Buildtools und AOT-Kompilierung (Ahead-of-Time).

Metriken und Nachverfolgung

Mithilfe von Metriken und Ablaufverfolgungsfunktionen können Sie die App-Leistung überwachen und diagnostizieren, Benutzerinteraktionen nachverfolgen und komponentenverhalten in Produktionsumgebungen verstehen.

Konfiguration

Um Blazor Metriken und Tracing in Ihrer App zu aktivieren, konfigurieren Sie OpenTelemetry mit den folgenden Zählern und Aktivitätsquellen in der Datei Program der App, in der die Dienste registriert werden:

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");
});

Leistungsmesser

Weitere Informationen zu den folgenden Leistungszählern finden Sie unter ASP.NET integrierten Core-Metriken.

Microsoft.AspNetCore.Components Meter:

  • aspnetcore.components.navigation: Verfolgt die Gesamtanzahl der Routenänderungen in der App.
  • aspnetcore.components.event_handler: Misst die Dauer der Verarbeitung von Browser-Ereignissen, einschließlich der Geschäftslogik.

Microsoft.AspNetCore.Components.Lifecycle Meter:

  • aspnetcore.components.update_parameters: Misst die Dauer der Verarbeitung von Komponentenparametern, einschließlich der Geschäftslogik.
  • aspnetcore.components.render_diff: Verfolgt die Dauer des Renderns von Batches.

Microsoft.AspNetCore.Components.Server.Circuits Meter:

In serverseitigen Blazor Apps gehören zu den zusätzlichen Circuit-spezifischen Metriken:

  • aspnetcore.components.circuit.active: Zeigt die Anzahl der aktiven Schaltkreise an, die sich derzeit im Arbeitsspeicher befinden.
  • aspnetcore.components.circuit.connected: Verfolgt die Anzahl der mit Clients verbundenen Schaltkreise.
  • aspnetcore.components.circuit.duration: Misst die Dauer der Circuit-Lebensdauer und liefert die Gesamtzahl der Circuits.

Blazor Tracing

Weitere Informationen zu den folgenden Tracing-Aktivitäten finden Sie unter Integrierte Metriken für ASP.NET Core.

Die neuen Funktionen für die Aktivitätsablaufverfolgung verwenden die Microsoft.AspNetCore.Components Aktivitätsquelle und stellen drei Haupttypen von Ablaufverfolgungsaktivitäten bereit: Schaltkreislebenszyklus, Navigation und Ereignisbehandlung.

Ablaufverfolgung des Lebenszyklus von Schaltkreisen:

Microsoft.AspNetCore.Components.CircuitStart: Protokolliert die Initialisierung des Schaltkreises im Format Circuit {circuitId}.

  • Etikett: aspnetcore.components.circuit.id
  • Link: HTTP-Aktivität

Navigations-Tracing:

Microsoft.AspNetCore.Components.RouteChange: Verfolgt Routenänderungen mit dem Format Route {route} -> {componentType}.

  • Schilder
    • aspnetcore.components.circuit.id
    • aspnetcore.components.route
    • aspnetcore.components.type
  • Verknüpfungen
    • HTTP-Ablaufverfolgung
    • Circuit-Trace

Tracing der Ereignisbehandlung:

Microsoft.AspNetCore.Components.HandleEvent: Tracing der Ereignisbehandlung mit dem Format Event {attributeName} -> {componentType}.{methodName}.

  • Schilder
    • aspnetcore.components.attribute.name
    • aspnetcore.components.circuit.id
    • aspnetcore.components.method
    • aspnetcore.components.type
    • error.type
  • Verknüpfungen
    • HTTP-Ablaufverfolgung
    • Circuit-Trace
    • Router Tracing