簡単な言語で説明されたMVCページのライフサイクル
公開: 2021-11-26この記事では、MVCアプリケーションのライフサイクルと、アプリケーションがアプリケーションのコンポーネントを通過することでリクエストを処理する方法に焦点を当てます。 MVCライフサイクルには2つのライフサイクルがあります。 これらの2つのライフサイクルは次のとおりです。
- アプリケーションのライフサイクル
- リクエストのライフサイクル。
目次
アプリケーションのライフサイクル
アプリケーションのライフサイクルとは、通常、アプリケーションのプロセスが実行を開始する時間を意味します。 MVCアプリケーションのライフサイクルを示すために、アプリケーションの開始と終了がマークされています。
リクエストのライフサイクル
リクエストのライフサイクルとは、アプリケーションがHTTPリクエストを処理するたびに発生する一連のイベントを意味します。 ルーティングは、MVCのアプリケーションを開始するためのエントリポイントです。 ASP.NETプラットフォームに対して要求が行われると、ルーティングモジュールを介して要求を処理する方法が決定されます。 モジュールという用語は、コードに機能を追加するために使用される.NETのコンポーネントを意味します。 アプリケーションで定義されたそれぞれのルートに着信するURLを照合するのは、ルーティングモジュールの責任です。 ルートハンドラーはすべてのルートに関連付けられており、MVCのフレームワークへのエントリポイントをマークします。
MVCのフレームワークは、要求をさらに処理するコントローラーへのルートデータの変換を処理する役割を果たします。 コントローラの作成が完了したら、次のステップはアクションを実行することです。 これは、コントローラーを呼び出すアクションメソッドを選択するアクション呼び出し側のコンポーネントを介して行われます。
アクション結果の準備が完了したら、次のステップは結果の実行です。 結果の実行からの結果に対して分離のステップが作成されます。 ビュータイプの結果の場合、アプリケーションはビューエンジンを呼び出し、ビューのレンダリングを見つけて支援します。 結果がビューでない場合、アクションの実行はそれ自体で行われます。 元のHTTPリクエストに対する実際の応答を生成するのは結果の実行です。
ほとんどのコンポーネントは、リクエストの処理に使用されることを開発者に認識しています。 ほとんどの場合、アクションに関連するメソッドとコントローラーが開発されています。 また、さまざまなアクションの結果とビューが検討されています。 しかし、MVCのフレームワーク内には他のコンポーネントもあります。 リクエストの処理中に、さまざまなコンポーネントまたはHTTPモジュールのロールとハンドラーを介してリクエストのフローがどのように実行されるかについて、多くの疑問が浮かぶかもしれません。 MVCフレームワークはWeb開発のフレームワークであるため、フレームワークのMVCパイプラインにHHTPのモジュールとHTTPハンドラーが必要です。
コントローラとアクションメソッドを除いて、 MVCページのライフサイクルには多くのコンポーネントが存在します。
UrlRoutingModule
これはHTTPモジュールの一種です。 リクエストが最初に行われるときはいつでも、UrlRoutingModuleを介してインターセプトされます。 このモジュールでは、MVCアプリケーションがリクエストを処理するかどうかが決定されています。 UrlRoutingModuleは、一致する最初のルートを選択します。
リクエストは、UrlRoutingModuleを介してMVCアプリケーションに存在するルートとどのように一致しますか?
global.asaxから呼び出されるRegisterRoutesのメソッドを見ると、ルートのRouteCollectionに追加されたルートを確認できます。 メソッドの呼び出しは、global.asaxのapplication_startのイベントハンドラーから行われます。
ソース
RouteHandlerのルートはどのように定義されていますか?
maprouteのメソッドに見られるように、ルートは拡張メソッドとして定義されます。 ルートハンドラーはすべてのルートに関連付けられています。
UrlRoutingModuleのメソッドは、次のように定義されます。
ソース
上記の説明により、UrlRoutingModuleはアプリケーションで定義されているすべてのルートを認識していることがわかります。 したがって、正しいルートをアプリケーションの要求と一致させることができます。
注意すべき重要な点は、モジュールUrlRoutingModuleが最初に一致するルートの選択に関与していることです。 したがって、一致が検出されると、スキャンのプロセスは停止します。 この段階で発生することを要約すると、ルートハンドラーはURLRoutingModuleを介してルートに接続されます。
RouteHandler
maprouteのメソッドを介して、ルートはMvcRouteHandlerのインスタンスに接続されます。 インターフェイスIRouteHandlerは、MvcRouteHandlerを介して実装されます。
したがって、MvcRouteHandlerのオブジェクトは、アプリケーションのHTTPHandlerであるMvcRouteHandlerのものの参照を取得するために使用されます。
MvcRouteHandlerを作成するには、PostResolveRequestCache()メソッドの呼び出しが必要です。 このメソッドPostResolveRequestCache()は、次の方法で定義できます。
ソース
したがって、PostResolveRequestCache()メソッドで次のイベントが発生します。
- GetRouteData()メソッドはRouteCollectionプロパティにあります。 メソッドが呼び出され、HttpContextを介して渡されます。
- RouteDataオブジェクトは、GetRouteData()のメソッドを介して返されます。
- RouteHandlerプロパティは、リクエストのハンドラーIRouteHandlerを返すrouteDataに含まれています。これは、現在のMvcRouteHandlerです。
- メソッドGetHttpHandler ()は、 MvcHandlerの参照を返すMvcRouteHandler。
- 次に、コントロールはMvcHandlerのインスタンスに委任されます。
MvcHandler
MvcHandlerは、HTTPの通常のハンドラーです。 HTTPのハンドラーであるため、ProcessRequest()メソッドの実装が実行されます。 このメソッドProcessRequest()は、次のように定義できます。
ソース
次の画像で定義されているように、メソッドProcessRequest()は、メソッドProcessRequestInit()を呼び出すために使用されます。
ソース
次のイベントは、メソッドProcessRequest()で発生します。
- ControllerFactoryは、メソッドProcessRequestInit()の呼び出しによって作成されます。
- ControllerFactoryはコントローラーを作成します。
- コントローラのExecute()メソッドが呼び出されます。
ControllerFactory
ControllerFactoryがProcessRequest()メソッドを介して取得されていることがわかります。 次に、ControllerFactoryを使用して、Controllerオブジェクトのオブジェクトを作成します。 インターフェイスIControllerFactoryは、コントローラーファクトリによって実装されます。
DEFAULTにより、ControllerBuilderがControllerFactoryの作成に使用される場合、MVCフレームワークはタイプDefaultControllerFactoryタイプを作成します。
次のコード行は、メソッドProcessRequestInit()にControllerFactoryを作成します。
ソース
コントローラ
Controllerオブジェクトは、MvcHandlerのメソッドProcessRequest()のControllerFactoryで作成されることが確認されています。 作成されたコントローラーには、フレームワークによって実行されるアクションのメソッドが含まれています。 ブラウザでURLのリクエストが行われるたびに、アクションのメソッドが呼び出されます。 コントローラは、IControlleのインターフェイスが明示的に実装されないように作成されています。 クラスControllerは、いくつかの機能を提供するコントローラーを作成するために使用されます。 Controllerのクラスは、以下に示すコードで定義されているように、「ControllerBase」と呼ばれる別のクラスのControllerを継承できます。
ソース
ActionInvokerは、コントローラーのアクションのメソッドを呼び出すために使用されます。
コントローラファクトリを介してコントローラを作成した後、次のイベントが発生します。
- controllerbaseのメソッドExecute()を呼び出します。
- メソッドExecuteCore()は、抽象として宣言されたメソッドExecute()によって呼び出され、クラスControllerを介して定義されます。
- アクション名は、クラスControllerによってメソッドExecuteCore()を介してRouteDataから取得されます。
- ActionInvokerのInvokeAction()メソッドは、ExecuteCore()メソッドによって呼び出されます。
ActionInvoker
アクションの選択に使用されます。
クラスActionInvokerには、アクションメソッドを見つけて、コントローラーでアクションメソッドを呼び出すなどの重要な責任があります。
ActionInvokerのInvokeAction()メソッドが呼び出されたときに発生するイベントは次のとおりです。
- コントローラに関する情報は、ActionInvokerと実行に必要なアクションによって取得される必要があります。
- 記述子オブジェクトはこの情報を提供します。
- コントローラ名とアクション名は、アクションとコントローラの記述子クラスによって提供されます。
- ActionMethodの呼び出しがあります。
ActionResult
ActionResultは、抽象クラスの一種です。 抽象メソッドであるため、さまざまなサブクラスによって提供されるメソッドExecuteResult()のさまざまな実装があります。
ActionResultで次のイベントが発生します
- ActionFiltersのOnActionExecutingのメソッドの呼び出しがあります。
- メソッドアクションの呼び出し。
- ActionFiltersのメソッドOnActionExecutedメソッドの呼び出し。
- ActionMethodからActionResultが返されます
- ActionResultのメソッドExecuteResult()を呼び出します。
ViewEngine
ほとんどのアプリケーションは、戻り型としてViewResultを使用します。 ビューは、ViewEngineを介してクライアントにレンダリングされます。 このビューから、HTMLを生成できます。 HTMLは、ViewEngineを介してビューから生成されます。
結論
アプリケーション内のすべてのコンポーネントの役割を理解することは重要なステップです。 このようにして、コンポーネント間の接続とそれらの動作方法を理解できます。 経験豊富な開発者になりたい場合は、スキルを習得することが1つの方法です。 upGradのオンラインソフトウェアエンジニアリングコースをチェックして、アプリケーションとソフトウェアの開発の分野で認定と専門家のトレーニングを行うことができます。 このコースは、男性と女性の両方の働く専門家向けに設計されており、IIIT-Bの認定を受けており、卒業生のステータスを取得できます。
MVCが適用されると、アプリケーションはデータレイヤーまたはモデル、UIまたはビューとコントローラーの3つのレイヤーに分割されます。 MVCの各レイヤーには異なる機能があります。 まず、UIまたはビューレイヤーはユーザーインターフェイスです。 これは、ユーザーとアプリケーションの間の主要なインターフェースです。 ユーザー入力を受け取り、結果を提示する責任があります。 次に、コントローラーはビューレイヤーのすべてのコンポーネントに接続され、ユーザー入力を処理し、モデルレイヤーにデータを送信し、結果をユーザーに送り返します。 モデルレイヤーは、データが保存される場所です。 データの管理を担当します。 さらに、モデルレイヤーは、ストレージへのデータの読み取りと書き込みも担当します。 ASP.NET MVCフレームワークは、ASP.NETセッション状態の機能を利用します。 セッション状態は、ASP.NETプラットフォームに組み込まれているWebサービスです。 特定のセッションに関連付けられているすべてのオブジェクト、データ、およびその他の情報を維持する責任があります。 SessionStateオブジェクトは、セッション状態の値を維持します。 また、Sessionオブジェクトの値を設定および維持する役割も果たします。 Sessionオブジェクトは、セッション状態へのゲートウェイとして機能します。 これはSessionStateオブジェクトのプロパティであり、セッション状態の値を格納および取得するために使用されます。 MVCのフィルターは、コントローラーとモデルの間にあるフィルターであり、ユーザー入力を検証したり、モデルの出力を変更したりするために使用できます。 以下は、MVCのフィルターの一部です。 1.検証フィルター-検証フィルターは、ユーザー入力の検証に役立ちます。 2.アクションフィルター-アクションフィルターは、モデルの出力を変更するのに役立ちます。 3.モデルフィルター-モデルフィルターは、モデルの出力を変更するのに役立ちます。 4.出力フィルター-出力フィルターは、モデルの出力を変更するために使用されます。MVCのページライフサイクルについて説明してください。
MVCでセッションを維持するにはどうすればよいですか?
MVCには何種類のフィルターがありますか?