MVC Archi構造とフレームワーク(例付き)

⚡ スマートサマリー

モデル・ビュー・コントローラー(MVC)は、アプリケーションをモデル、ビュー、コントローラーの3つのコンポーネントに分割し、ビジネスロジックをプレゼンテーション層から分離することで、Spring、Django、Laravelなどのフレームワークを使用して保守性とテスト性に優れたWebアプリケーションやデスクトップアプリケーションを構築するアーキテクチャパターンです。

  • 🧱 3つの構成要素: MVCは、アプリケーションをモデル(データ)、ビュー(プレゼンテーション)、コントローラー(ユーザーとのやり取り)に分割します。
  • 🗄️ 型: データとビジネスロジックを格納し、ビューからのリクエストとコントローラーからの指示に応答します。
  • 飲料衣<XNUMXxXNUMX><XNUMXxBC><XNUMXxBC> 表示: テキストボックス、ドロップダウンリスト、グラフ、表などのUI要素を通して、ユーザーにデータを提供します。
  • 🎮 コントローラ: ユーザー入力を解釈し、それに応じてモデルとビューを更新します。
  • ⚙️ 人気のフレームワーク: Spring MVC、Django、Ruby on Rails、CakePHP、Laravel、 CodeIgniterはMVCパターンを実装しています。
  • <XNUMXxEXNUMX><XNUMXxEXNUMX><XNUMXxXNUMXA><XNUMXxXNUMX><XNUMXxXNUMXA>️️ メリットとデメリット: MVCはテスト容易性と並列開発を向上させるが、絶対的なtrac階層構造とナビゲーションの複雑さ。

MVC Archi構造とフレームワーク

MVCフレームワークとは何ですか?

その モデル ビュー コントローラー (MVC) フレームワークは、アプリケーションを 3 つの主要な論理コンポーネント (モデル、ビュー、コントローラー) に分割するアーキテクチャ パターンです。そのため、略語は MVC です。各アーキテクチャ コンポーネントは、アプリケーションの特定の開発側面を処理するために構築されます。MVC は、ビジネス ロジックとプレゼンテーション層を互いに分離します。これは、従来、デスクトップのグラフィカル ユーザー インターフェイス (GUI) に使用されていました。現在、Web テクノロジの MVC アーキテクチャは、Web アプリケーションだけでなくモバイル アプリの設計にも広く使用されるようになりました。

MVCの歴史

  • MVCアーキテクチャは1979年にTrygve Reenskaugによって初めて議論されました。
  • MVC モデルは、1987 年に Smalltalk プログラミング言語で初めて導入されました。
  • MVC は、1988 年の記事で初めて一般概念として受け入れられました。
  • 近年、MVCパターンは現代のWebアプリケーションで広く使用されている。

MVCの特徴

  • 簡単で摩擦のない試験性。 高度にテスト可能、拡張可能、プラグイン可能なフレームワーク
  • MVCパターンを使用してWebアプリケーションアーキテクチャを設計すると、HTMLだけでなく、 URLs
  • ASP.NET、JSP、Django などによって提供される既存の機能を活用します。
  • ロジックの明確な分離: モデル、ビュー、コントローラー。アプリケーション タスクの分離、つまりビジネス ロジック、UI ロジック、入力ロジック
  • URL SEOに配慮したルーティング URLs. 強力 URL-地図ping 理解しやすく検索しやすい URLs
  • テスト駆動開発 (TDD) のサポート

MVC Archi構造

メリットが明確になったところで、MVCフレームワークの詳細なアーキテクチャを以下に示します。

MVC Archi構造
MVC Archi構造図

XNUMX つの重要な MVC コンポーネントは次のとおりです。

  • モデル: すべてのデータとそれに関連するロジックが含まれます。
  • ビュー: ユーザーにデータを提示するか、ユーザーとの対話を処理します。
  • コントローラー: モデル コンポーネントとビュー コンポーネント間のインターフェイス

それでは、これらの各構成要素を詳しく見ていきましょう。

表示

ビューは、データのプレゼンテーションを表すアプリケーションの一部です。

ビューは、モデルデータから収集されたデータに基づいて作成されます。ビューは、モデルに対して情報提供を要求し、モデルはそれに基づいてユーザーに出力プレゼンテーションを表示します。

ビューには、グラフ、図、表のデータも表示されます。たとえば、顧客ビューには、テキスト ボックス、ドロップダウンなどのすべての UI コンポーネントが含まれます。

コントローラー

コントローラーは、アプリケーションの中でユーザー操作を処理する部分です。コントローラーは、ユーザーからのマウスとキーボードの入力を解釈し、それに応じてモデルとビューを変更するよう指示します。

コントローラは、モデルにコマンドを送信して状態を更新します(例:特定のドキュメントを保存する)。また、コントローラは関連付けられたビューにコマンドを送信して、ビューの表示形式を変更します(例:特定のドキュメントをスクロールする)。

モデル

モデル コンポーネントには、データとその関連ロジックが格納されます。 これは、コントローラー コンポーネント間またはその他の関連ビジネス ロジック間で転送されるデータを表します。 たとえば、Controller オブジェクトはデータベースから顧客情報を取得します。 データを操作してデータベースに送り返すか、同じデータをレンダリングするために使用します。

ビューからのリクエストに応答するだけでなく、コントローラーからの指示に従って自身を更新する役割も担います。また、データ管理を担当する、このパターンの中で最も低レベルな部分でもあります。

MVC の例

日常生活からの Model View Controller の例を見てみましょう。

MVC の例

  • あなたがレストランに行くと仮定しましょう。 キッチンに行って食事を準備する必要はありませんが、家で確実に行うことができます。 代わりに、そこに行ってウェイターが来るのを待ちます。
  • 今度はウェイターがあなたのところに来て、あなたは食べ物を注文します。 ウェイターはあなたが誰なのか、そしてあなたが何を望んでいるのか知りません、ただあなたの食べ物の注文の詳細を書き留めただけです。
  • その後、ウェイターはキッチンに移動します。 キッチンではウェイターが食事を準備するわけではありません。
  • コックが料理を準備します。ウェイターにお客様のテーブル番号とともに注文が伝えられます。
  • 調理してからあなたのために食べ物を用意します。 彼は食材を使って料理を作ります。 野菜サンドイッチを注文したとします。 次に、冷蔵庫から調達するパン、トマト、ジャガイモ、ピーマン、タマネギ、ビット、チーズなどが必要になります。
  • クックは最後にウェイターに食べ物を渡します。 今度は、この食べ物をキッチンの外に移動するのがウェイターの仕事です。
  • これで、ウェイターはあなたが注文した食べ物とその提供方法を​​知ることができます。

このMVCアーキテクチャの例では、

View= You
Waiter= Controller
Cook= Model
Refrigerator= Data

もう XNUMX つの MVC モデルの例を見てみましょう。

MVC の例

車の駆動機構も MVC モデルの例です。

  • すべての車は XNUMX つの主要な部分で構成されています。
  • 表示:ユーザーインターフェース:(ギアレバー、パネル、ステアリングホイール、ブレーキなど)
  • コントローラー - メカニズム (エンジン)
  • モデル - ストレージ (ガソリンまたはディーゼル タンク)

車はエンジンで走行し、貯蔵庫から燃料を取り出しますが、前述のユーザー インターフェイス デバイスを使用してのみ走行します。

人気のあるMVCWebフレームワーク

以下に、いくつかの人気のある MVC フレームワークのリストを示します。

MVC の利点: 主な利点

MVC アーキテクチャを使用する主な利点は次のとおりです。

  • コードのメンテナンスが簡単で、拡張や成長も簡単
  • MVC モデル コンポーネントはユーザーとは別にテスト可能
  • 新しいタイプのクライアントのサポートが容易になりました
  • さまざまなコンポーネントの開発は並行して実行できます。
  • アプリケーションをモデル、ビュー、コントローラーの3つのユニットに分割することで、複雑さを回避できます。
  • 単一のコントローラーを通じて Web アプリケーション要求を処理するフロント コントローラー パターンのみを使用します。
  • 最適なサポートを提供します テスト駆動開発
  • これは、Web デザイナーや開発者の大規模なチームによってサポートされている Web アプリに適しています。
  • 関心の分離(SoC)を明確に実現します。
  • 検索エンジン最適化 (SEO) に優しい。
  • すべてのクラスとオブジェクトは互いに独立しているため、個別にテストできます。
  • MVCデザインパターンは論理的なグループを可能にしますping コントローラー上の関連するアクションをまとめて処理します。

MVC を使用するデメリット

  • このモデルの読み取り、変更、単体テスト、再利用が難しい
  • フレームワークのナビゲーションは、新しい階層を導入するため、時に複雑になることがあります。tracこれは、ユーザーがMVCの分解基準に適応する必要があることを意味します。
  • 正式な検証サポートはありません
  • データの複雑さと非効率性の増大
  • 最新のユーザー インターフェイスで MVC を使用することの難しさ
  • 並列プログラミングを行うには複数のプログラマが必要です。
  • 複数のテクノロジーに関する知識が必要です。
  • コントローラー内の大量のコードのメンテナンス

3層 Archiテクチャと MVC の比較 Archi構造

3層 Archi構造 MVC Archi構造
コミュニケーション このタイプのアーキテクチャ パターンは、データ層と直接通信することはありません。 すべての層は、トライアングル トポロジを使用して直接通信します。
使用法 3 層: クライアント、データ層、ミドルウェアが物理的に別個のプラットフォームで実行される Web アプリケーションで広く使用されています。 通常、単一のグラフィカル ワークステーション上で実行されるアプリケーションで使用されます。

よくあるご質問

MVCは、単純なデザインパターンではなく、アーキテクチャパターンです。アプリケーション全体をモデル、ビュー、コントローラーの3つのレイヤーに整理し、データ、プレゼンテーション、ユーザーインタラクションロジックを分離します。

MVCはコントローラーを使用して入力を処理し、モデルとビューを更新しますが、MVVMはデータバインディングを備えたViewModelを使用します。MVVMは定型コードを削減し、現代のUIフレームワークで広く採用されています。

データ、UI、ロジックを明確に分離する必要があるアプリケーション、特に大規模チームが保守するWebアプリケーションを構築する際には、MVCを使用してください。テストの容易性、並行開発、SEOに最適化されたルーティングが向上します。

AI機能は通常、MVCアプリケーションのモデル層またはサービス層に追加されます。コントローラーはユーザー入力をAIモデルに渡し、ビューは予測、推奨事項、または生成されたコンテンツをユーザーに表示します。

はい。AIコーディングアシスタントは、MVCコンポーネントのひな形作成、コントローラー、モデル、ビューの生成、ルーティングの提案を行うことができます。ただし、開発者は出力結果を確認し、ビジネスロジックとセキュリティが正しいことを確認します。