ここ数年で、Web サイトは、CSS を少し加えた単純な HTML ページから、数千人の開発者が同時に作業する非常に複雑なアプリケーションに移行してきました。これらの複雑な Web アプリケーションを操作するために、開発者はさまざまなデザイン パターンを使用してプロジェクトをレイアウトし、コードの複雑さを軽減して扱いやすくします。これらのパターンの中で最も人気のあるのは MVC です としても知られている モデルビューコントローラー。
MVCとは何ですか?
の モデル ビュー コントローラー (MVC) フレームワークは、アプリケーションを 3 つの主要な論理コンポーネントに分割するアーキテクチャ/設計パターンです。 モデル 、 ビュー 、 そして コントローラ 。各アーキテクチャ コンポーネントは、アプリケーションの特定の開発側面を処理するように構築されています。ビジネス ロジックとプレゼンテーション層を相互に分離します。従来はデスクトップに使用されていました グラフィカル ユーザー インターフェイス (GUI) 。現在、MVC は、スケーラブルで拡張可能なプロジェクトを作成するために最も頻繁に使用される業界標準の Web 開発フレームワークの 1 つです。モバイルアプリの設計にも使用されます。
MVC を作成したのは、 トリグヴェ・リースカウグ 。この設計パターンの主な目的は、大規模なアプリケーションをそれぞれ独自の目的を持つ特定のセクションに分割することで、ユーザーが大規模で複雑なデータ セットを制御するという問題を解決することでした。
MVCの特徴:
- それは明確な分離を提供します ビジネス ロジック、UI ロジック、入力ロジック。
- HTML と URL を完全に制御できるため、Web アプリケーション アーキテクチャの設計が容易になります。
- これは強力な URL マッピング コンポーネントであり、これを使用すると、理解しやすく検索可能な URL を持つアプリケーションを構築できます。
- サポートします テスト駆動開発 (TDD)。
MVC フレームワークを使用する利点について詳しくは、次の記事を参照してください。 MVC フレームワークを使用する利点
MVC のコンポーネント:
MVC フレームワークには、次の 3 つのコンポーネントが含まれています。
- コントローラ
- モデル
- ビュー

MVC アーキテクチャ設計
コントローラ:
コントローラーは、ビューとモデル間の相互接続を可能にし、仲介者として機能するコンポーネントです。コントローラーはデータ ロジックの処理について心配する必要はなく、モデルに何をすべきかを指示するだけです。すべてのビジネス ロジックと受信リクエストを処理し、 モデル コンポーネントと対話し、 ビュー 最終出力をレンダリングします。
メモリの交換
ビュー:
の ビュー コンポーネントは、アプリケーションのすべての UI ロジックに使用されます。ユーザー用のユーザー インターフェイスを生成します。ビューはモデル コンポーネントによって収集されたデータによって作成されますが、これらのデータは直接取得されるのではなく、コントローラーを通じて取得されます。コントローラーとのみ対話します。
モデル:
の モデル コンポーネントは、ユーザーが操作するすべてのデータ関連ロジックに対応します。これは、ビュー コンポーネントとコントローラー コンポーネントの間で転送されるデータ、またはその他のビジネス ロジック関連データのいずれかを表すことができます。データベースにデータを追加したり、データベースからデータを取得したりできます。コントローラーは単独ではデータベースと対話できないため、コントローラーのリクエストに応答します。モデルはデータベースと対話し、必要なデータをコントローラーに返します。
MVC フレームワークの動作と例:
エンドユーザーがサーバーにリクエストを送信して、クラスで勉強している学生のリストを取得すると想像してみましょう。次に、サーバーはそのリクエストを生徒を処理する特定のコントローラーに送信します。次に、そのコントローラーは、学生を処理するモデルに対して、クラスで勉強しているすべての学生のリストを返すように要求します。

MVC コンポーネントのデータの流れ
モデルはデータベースにすべての生徒のリストをクエリし、そのリストをコントローラーに返します。モデルから返された応答が成功した場合、コントローラーは生徒に関連付けられたビューに生徒のリストのプレゼンテーションを返すように要求します。このビューは、コントローラから生徒のリストを取得し、そのリストをブラウザで使用できる HTML にレンダリングします。
次に、コントローラーはそのプレゼンテーションを取得してユーザーに返します。したがって、リクエストは終了します。以前にモデルがエラーを返した場合、コントローラーはエラーを処理するビューにその特定のエラーのプレゼンテーションをレンダリングするように依頼することで、そのエラーを処理します。その後、生徒リストのプレゼンテーションの代わりに、そのエラーのプレゼンテーションがユーザーに返されます。
上の例からわかるように、モデルはすべてのデータを処理します。ビューはすべてのプレゼンテーションを処理し、コントローラーはモデルとビューに何をすべきかを指示するだけです。これは、MVC フレームワークの基本的なアーキテクチャと動作です。
配列の長さJava
MVC アーキテクチャ パターンにより、次の設計原則に従うことができます。
1. 分割統治。 3 つのコンポーネントはある程度独立して設計できます。
2. 結束力を高めます。 コンポーネントは、ビューとコントローラーが単一の UI レイヤーに一緒に含まれている場合よりも強力なレイヤーの結合力を持ちます。
3. カップリングを減らします。 3 つのコンポーネント間の通信チャネルは最小限であり、見つけるのは簡単です。
4. 再利用を増やします。 ビューとコントローラーは通常、さまざまな種類の UI コントロールに再利用可能なコンポーネントを広範囲に使用します。ただし、UI はアプリケーション固有になるため、簡単に再利用できなくなります。
5. 柔軟性を考慮した設計。 通常、ビュー、コントローラー、またはその両方を変更することで UI を変更するのは非常に簡単です。
MVC の利点:
- コードは保守しやすく、簡単に拡張できます。
- MVC モデル コンポーネントは個別にテストできます。
- MVC のコンポーネントは同時に開発できます。
- アプリケーションを 3 つのユニットに分割することで複雑さを軽減します。 モデル、ビュー、コントローラー。
- サポートします テスト駆動開発 (TDD)。
- これは、Web デザイナーや開発者の大規模なチームによってサポートされている Web アプリに適しています。
- このアーキテクチャは、すべてのクラスとオブジェクトが互いに独立しているため、コンポーネントを独立してテストするのに役立ちます。
- 検索エンジン最適化 (SEO) フレンドリー。
MVC の欠点:
- このモデルの読み取り、変更、テスト、再利用は困難です
- 小規模なアプリケーションの構築には適していません。
- データアクセスの非効率性を考慮します。
- フレームワークのナビゲーションは、ユーザーが MVC の分解基準に適応する必要がある新しい抽象化レイヤーを導入するため、複雑になる可能性があります。
- データの複雑さの増大と非効率性
人気のある MVC フレームワーク:
最も人気があり、広く使用されている MVC フレームワークのいくつかを以下に示します。
- ルビー・オン・レール
- ジャンゴ
- チェリーパイ
- 春のMVC
- 触媒
- レール
- Zend フレームワーク
- 燃料 PHP
- ララベル
- 交響曲
MVC 通常、単一のグラフィカル ワークステーション上で実行されるアプリケーションで使用されます。論理コンポーネントの分割により、読みやすさとモジュール性が可能になるだけでなく、テスト部分がより快適になります。