ASP の問題を修正する
Web 開発で最も困難なタスクの 1 つは、アプリケーションのパフォーマンス問題の根本原因を理解することです。このタスクに対する効果的なアプローチは、主要なアプリケーションコンポーネントの実行時間を監視することです。
動的プログラム解析 (DPA) は、MVC アクション、Razor ページハンドラー、Razor のコンポーネントの表示のタイミング情報を提供するため、このプロセスで非常に役立ちます。
DPA は、.NET 5.0 以降の ASP.NET Core をサポートします。
MVC アクション
モデル - ビュー - コントローラー (MVC) パターンでは、コントローラーはユーザー入力の処理と、モデルとビューの相互作用の調整を担当します。コントローラーは本質的に、HTTP リクエストを処理するクラスです。リクエストの処理を担当するクラスメソッドは、アクションと呼ばれます。
DPA を使用すると、MVC アクションの実行時間、つまりアクションがリクエストを処理するために必要な時間を追跡できます。
デフォルトのしきい値は 500 ミリ秒です。
Razor ページハンドラー
Razor Pages は、Web UI を構築するための MVC パターンの代替として ASP.NET Core に導入された機能です。これは、Web UI の構築をより簡単にするページベースのプログラミングモデルです。Razor ページでは、ハンドラーは HTTP 要求を処理するページモデル内のメソッドです。
DPA を使用すると、ハンドラーメソッドの実行時間、つまり、特定のメソッドがリクエストを処理するのに必要な時間を追跡できます。
デフォルトのしきい値は 500 ミリ秒です。
Razor ビューコンポーネント
Razor ViewComponents は ASP.NET Core の強力な機能で、レンダリングロジックとデータフェッチをカプセル化する再利用可能なコンポーネントを作成するように設計されています。これらのコンポーネントは Razor ビューから呼び出すことができ、メニュー、ウィジェット、フォームなどの動的なコンテンツセクションの作成に最適です。
ビューコンポーネントへのエントリポイントは、Invoke
または InvokeAsync
メソッドです。このメソッドは、必要なロジックを実行し、レンダリングする必要があるビューを返すロールを果たします。ビューコンポーネントを Razor ビューに追加すると、ビューコンポーネントの Invoke
メソッドまたは InvokeAsync
メソッドが呼び出されます。
DPA を使用すると、ビューコンポーネントの実行時間、つまり、特定の Invoke
メソッドが基礎となるすべてのロジックを実行するのに必要な時間を追跡できます。
デフォルトのしきい値は 300 ミリ秒です。
直す方法
アクション / ページハンドラー /Invoke
メソッドの実行に時間がかかりすぎる理由はいくつか考えられます。最も一般的なものは、メソッドが実行する計算、データベースクエリ、または HTTP リクエストが多すぎることです。コミュニケーションの問題も原因である可能性があります。
一般的なアドバイスは、メソッドコードを分析し、上記の理由を 1 つずつ除外することです。
関連ページ:
DPA スコープを絞り込む
特定の問題を DPA 問題リストから除外したい場合が数多くあります。主なものは次のとおりです。これは問題ではありませんすべてが意図したとおりに動作するにもかかわらず、DPA が特定のメソッドを問題としてマークする場合があります。例: メソッドが大量のメモリを割り当てる場合があります。これはコード設計が間違っているためではなく、単に現在のユースケースで必要なためです。これらがほんの数個の方法である場合、最善の解決策は、これらの問題を抑制することです。誤検知が多数発生する場合は、おそらく問題のしきい...
データベースの問題を修正する
データベースは、Web アプリケーションのパフォーマンスの問題の主な原因の 1 つです。データベースは膨大な量のデータを処理する必要があるため、クエリを準備する際の小さなアルゴリズムエラーでさえ、重大な結果につながる可能性があります。これは、ORM システムを使用する場合に特に当てはまります (この章の例ではエンティティフレームワークを使用します)。DPA は、長いクエリ実行時間、多数のデータベース接続、多数の同じデータベースコマンド、応答内の多数のレコードに関連するデータベースの問題を検出しま...