Udostępnij za pomocą


najlepsze rozwiązania dotyczące wydajności ASP.NET Core Blazor

Uwaga / Notatka

Nie jest to najnowsza wersja tego artykułu. Aby zapoznać się z aktualną wersją, zobacz artykuł w wersji .NET 10.

Ostrzeżenie

Ta wersja ASP.NET Core nie jest już obsługiwana. Aby uzyskać więcej informacji, zobacz zasady pomocy technicznej platformy .NET i platformy .NET Core. Aby zapoznać się z bieżącą wersją, przeczytaj artykuł w wersji .NET 9.

Blazor jest zoptymalizowany pod kątem wysokiej wydajności w najbardziej realistycznych scenariuszach interfejsu użytkownika aplikacji. Jednak najlepsza wydajność zależy od deweloperów przyjmujących prawidłowe wzorce i funkcje.

Uwaga / Notatka

Przykłady kodu w tym węźle artykułów przyjmują typy odwołań dopuszczających wartość null (NRT) i statyczną analizę stanu null kompilatora platformy .NET, które są obsługiwane w programie ASP.NET Core na platformie .NET 6 lub nowszym.

Kompilacja z wyprzedzeniem (AOT)

Kompilacja Z wyprzedzeniem (AOT) kompiluje Blazor kod platformy .NET aplikacji bezpośrednio do natywnego zestawu WebAssembly na potrzeby bezpośredniego wykonywania przez przeglądarkę. Aplikacje skompilowane za pomocą funkcji AOT powodują, że pobieranie większych aplikacji trwa dłużej, ale aplikacje skompilowane za pomocą funkcji AOT zwykle zapewniają lepszą wydajność środowiska uruchomieniowego, zwłaszcza w przypadku aplikacji wykonujących zadania intensywnie korzystające z procesora CPU. Aby uzyskać więcej informacji, zobacz narzędzia do kompilacji ASP.NET Core oraz kompilację z wyprzedzeniem (AOT) Blazor WebAssembly.

Metryki i śledzenie

Metryki i funkcje śledzenia ułatwiają monitorowanie i diagnozowanie wydajności aplikacji, śledzenie interakcji użytkowników i zrozumienie zachowania składników w środowiskach produkcyjnych.

Konfiguracja

Aby włączyć Blazor metryki i śledzenie w aplikacji, skonfiguruj OpenTelemetry z następującymi miernikami i źródłami aktywności w pliku Program aplikacji, gdzie rejestrowane są usługi:

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

Mierniki wydajności

Aby uzyskać więcej informacji na temat następujących mierników wydajności, zobacz wbudowane metryki ASP.NET Core.

Microsoft.AspNetCore.Components metr:

  • aspnetcore.components.navigate: śledzi łączną liczbę zmian tras w aplikacji.
  • aspnetcore.components.handle_event.duration: mierzy czas trwania przetwarzania zdarzeń przeglądarki, w tym logikę biznesową.

Microsoft.AspNetCore.Components.Lifecycle metr:

  • aspnetcore.components.update_parameters.duration: mierzy czas trwania parametrów składnika przetwarzania, w tym logikę biznesową.
  • aspnetcore.components.render_diff.duration: śledzi czas trwania partii renderowania.
  • aspnetcore.components.render_diff.size: śledzi rozmiar partii renderowania.

Microsoft.AspNetCore.Components.Server.Circuits metr:

W aplikacjach po stronie Blazor serwera dodatkowe metryki specyficzne dla konkretnego obwodu obejmują:

  • aspnetcore.components.circuit.active: pokazuje liczbę aktywnych obwodów aktualnie w pamięci.
  • aspnetcore.components.circuit.connected: śledzi liczbę obwodów połączonych z klientami.
  • aspnetcore.components.circuit.duration: mierzy czas trwania obwodu i zapewnia łączną liczbę obwodów.

Blazor Śledzenie

Aby uzyskać więcej informacji na temat następujących działań śledzenia, zobacz ASP.NET Core wbudowane metryki.

Nowe funkcje śledzenia aktywności korzystają ze Microsoft.AspNetCore.Components źródła działań i zapewniają trzy główne typy działań śledzenia: cykl życia obwodu, nawigację i obsługę zdarzeń.

Monitorowanie cyklu życia obwodu elektrycznego:

Microsoft.AspNetCore.Components.StartCircuit: Śledzi inicjalizację obwodu w formacie Circuit {circuitId}.

Tagi:

  • aspnetcore.components.circuit.id: unikatowy identyfikator obwodu.
  • error.type: Pełna nazwa typu wyjątku (opcjonalnie)

Linki:

  • Śledzenie HTTP
  • SignalR ślad

Użycie: łączy inne Blazor ślady tej samej sesji/obwodu z protokołem HTTP i SignalR kontekstami.

Śledzenie nawigacji:

Microsoft.AspNetCore.Components.Navigate: śledzi zmiany tras w formacie Route {route} -> {componentType}.

Tagi:

  • aspnetcore.components.route: wzorzec ścieżki adresu URL strony.
  • aspnetcore.components.type: nazwa Razor klasy składnika.
  • error.type: Pełna nazwa typu wyjątku (opcjonalnie).

Linki:

  • Śledzenie HTTP
  • SignalR ślad
  • Ślad obwodu

Użycie: Które Blazor strony odwiedzone przez tę sesję?

Śledzenie ścieżki obsługi zdarzeń:

Microsoft.AspNetCore.Components.HandleEvent: Śledzi obsługę zdarzeń w formacie Event {attributeName} -> {componentType}.{methodName}.

Tagi:

  • aspnetcore.components.attribute.name: nazwa atrybutu HTML, który wyzwala zdarzenie (na przykład: onClick).
  • code.function.name: nazwa metody C# obsługi.
  • aspnetcore.components.type: Pełna nazwa docelowego składnika języka C#, który odbiera zdarzenie.
  • error.type: Pełna nazwa typu wyjątku (opcjonalnie).

Linki:

  • Ślad obwodu
  • Śledzenie trasy

Zastosowania

  • Kliknij, aby zobaczyć, który składnik spowodował wyjątek i na której stronie.
  • W którym połączonym układzie i w jakim kontekście HTTP doszło do zdarzenia?