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 つずつ除外することです。