次の方法で共有


ASP.NET Core Blazor パフォーマンスに関するベスト プラクティス

これは、この記事の最新バージョンではありません。 現在のリリースについては、この記事の .NET 9 バージョンを参照してください。

警告

このバージョンの ASP.NET Core はサポート対象から除外されました。 詳細については、 .NET および .NET Core サポート ポリシーを参照してください。 現在のリリースについては、この記事の .NET 9 バージョンを参照してください。

重要

この情報はリリース前の製品に関する事項であり、正式版がリリースされるまでに大幅に変更される可能性があります。 Microsoft は、ここで提供される情報に関して明示的または黙示的な保証を行いません。

現在のリリースについては、この記事の .NET 9 バージョンを参照してください。

Blazor は、最も現実的なアプリケーション UI シナリオでハイ パフォーマンスを実現するために最適化されています。 しかし、最適なパフォーマンスが得られるかどうかは、開発者が適切なパターンと機能を採用するかどうかによります。

記事のこのノードのコード例では 、null 許容参照型 (NRT) と .NET コンパイラの null 状態静的分析が採用されています。これは、.NET 6 以降の ASP.NET Core でサポートされています。

Ahead-Of-Time (AOT) コンパイル

Ahead-of-time (AOT) コンパイルでは、Blazor アプリの .NET コードをネイティブ WebAssembly に直接コンパイルし、ブラウザーによる直接実行ができるようにします。 AOT でコンパイルされたアプリは、サイズの大きいアプリになり、ダウンロードに時間がかかります。しかし、一般に、AOT でコンパイルされたアプリは実行時のパフォーマンスが向上します。CPU を集中的に使用するタスクを実行するアプリの場合は、特にそうです。 詳細については、「ASP.NET Core Blazor WebAssembly ビルド ツールと Ahead-Of-Time (AOT) コンパイル」を参照してください。

メトリックとトレース

メトリックとトレース機能は、アプリのパフォーマンスの監視と診断、ユーザーの操作の追跡、運用環境でのコンポーネントの動作の理解に役立ちます。

コンフィギュレーション

アプリでメトリックとトレースBlazor有効にするには、サービスが登録されているアプリの ファイルで、次のメーターとアクティビティ ソースを使用して Program を構成します。

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

パフォーマンス メーター

次のパフォーマンス メーターの詳細については、「 ASP.NET Core 組み込みメトリック」を参照してください。

Microsoft.AspNetCore.Components 測定:

  • aspnetcore.components.navigation: アプリ内のルート変更の合計数を追跡します。
  • aspnetcore.components.event_handler: ビジネス ロジックを含む、ブラウザー イベントの処理期間を測定します。

Microsoft.AspNetCore.Components.Lifecycle 測定:

  • aspnetcore.components.update_parameters: ビジネス ロジックを含むコンポーネント パラメーターの処理期間を測定します。
  • aspnetcore.components.render_diff: バッチのレンダリング期間を追跡します。

Microsoft.AspNetCore.Components.Server.Circuits 測定:

サーバー側の Blazor アプリでは、追加の回線固有のメトリックは次のとおりです。

  • aspnetcore.components.circuit.active: 現在メモリ内にあるアクティブな回線の数を示します。
  • aspnetcore.components.circuit.connected: クライアントに接続されている回線の数を追跡します。
  • aspnetcore.components.circuit.duration:回路の有効期間を測定し、合計回路数を提供します。

Blazor トレース

次のトレース アクティビティの詳細については、「 ASP.NET Core 組み込みメトリック」を参照してください。

新しいアクティビティ トレース機能では、 Microsoft.AspNetCore.Components アクティビティ ソースが使用され、主に 3 種類のトレース アクティビティ (回線のライフサイクル、ナビゲーション、イベント処理) が提供されます。

回線ライフサイクル トレース:

Microsoft.AspNetCore.Components.CircuitStart: Circuit {circuitId}形式で回路の初期化をトレースします。

  • タグ: aspnetcore.components.circuit.id
  • リンク: HTTP アクティビティ

ナビゲーション トレース:

Microsoft.AspNetCore.Components.RouteChange: ルートの変更を Route {route} -> {componentType}形式で追跡します。

  • タグ
    • aspnetcore.components.circuit.id
    • aspnetcore.components.route
    • aspnetcore.components.type
  • リンクス
    • HTTP 追跡
    • 回線トレース

イベント処理トレース:

Microsoft.AspNetCore.Components.HandleEvent: Event {attributeName} -> {componentType}.{methodName}形式でイベント処理をトレースします。

  • タグ
    • aspnetcore.components.attribute.name
    • aspnetcore.components.circuit.id
    • aspnetcore.components.method
    • aspnetcore.components.type
    • error.type
  • リンクス
    • HTTP 追跡
    • 回線トレース
    • ルータ トレース