Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hinweis
Dies ist nicht die neueste Version dieses Artikels. Die aktuelle Version finden Sie in der .NET 10-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.
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.
Ahead-of-Time-Kompilierung (AOT)
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");
tracerProvider.AddSource("Microsoft.AspNetCore.Components.Server.Circuits");
});
Leistungsmesser
Weitere Informationen zu den folgenden Leistungszählern finden Sie unter ASP.NET integrierten Core-Metriken.
Microsoft.AspNetCore.Components Meter:
-
aspnetcore.components.navigate: Verfolgt die Gesamtanzahl der Routenänderungen in der App. -
aspnetcore.components.handle_event.duration: Misst die Dauer der Verarbeitung von Browser-Ereignissen, einschließlich der Geschäftslogik.
Microsoft.AspNetCore.Components.Lifecycle Meter:
-
aspnetcore.components.update_parameters.duration: Misst die Dauer der Verarbeitung von Komponentenparametern, einschließlich der Geschäftslogik. -
aspnetcore.components.render_diff.duration: Verfolgt die Dauer des Renderns von Batches. -
aspnetcore.components.render_diff.size: Verfolgt die Größe von Renderbatches nach.
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.StartCircuit: Protokolliert die Initialisierung des Schaltkreises im Format Circuit {circuitId}.
Schilder:
-
aspnetcore.components.circuit.id: Eindeutiger Schaltkreisbezeichner. -
error.type: Vollständiger Name des Ausnahmetyps (optional)
Verknüpfungen:
- HTTP-Ablaufverfolgung
- SignalR Ablaufverfolgung
Verwendung: Verknüpft andere Blazor Ablaufverfolgungen derselben Sitzung/Schaltkreise mit HTTP und SignalR-Kontexten.
Navigations-Tracing:
Microsoft.AspNetCore.Components.Navigate: Verfolgt Routenänderungen mit dem Format Route {route} -> {componentType}.
Schilder:
-
aspnetcore.components.route: URL-Pfadmuster der Seite. -
aspnetcore.components.type: Klassenname der Razor Komponente. -
error.type: Ausnahmetyp vollständiger Name (optional).
Verknüpfungen:
- HTTP-Ablaufverfolgung
- SignalR Ablaufverfolgung
- Circuit-Trace
Verwendung: Welche Blazor Seiten hat diese Sitzung besucht?
Tracing der Ereignisbehandlung:
Microsoft.AspNetCore.Components.HandleEvent: Tracing der Ereignisbehandlung mit dem Format Event {attributeName} -> {componentType}.{methodName}.
Schilder:
-
aspnetcore.components.attribute.name: Name des HTML-Attributs, das das Ereignis auslöst (Beispiel:onClick). -
code.function.name: C#-Methodenname des Handlers. -
aspnetcore.components.type: Vollständiger Name der C#-Zielkomponente, die das Ereignis empfängt. -
error.type: Ausnahmetyp vollständiger Name (optional).
Verknüpfungen:
- Circuit-Trace
- Routenverfolgung
Bräuche:
- Klicken Sie auf welche Komponente eine Ausnahme und auf welcher Seite?
- In welchem verknüpften Schaltkreis und mit welchem HTTP-Kontext ist es passiert?