はじめに
Spring Bootを学習する中で「3層アーキテクチャ」と「MVC」の違いについて躓いたので,整理がてら簡単にまとめました.
初学者で理解が浅いところが多いので,間違い等あればご指摘お願いします.
3層アーキテクチャとは
Webアプリケーション開発の設計思想(アーキテクチャ)の一つで,以下の3層に分類される.
- プレゼンテーション層
- ビジネスロジック層
- データアクセス層(インフラ層)
Spring Bootの場合は,ビジネスロジック層を「アプリケーション層」と「ドメイン層」の2つに分けて,4層から構成されている.
(ドメインモデル云々などドメイン駆動設計に関する知識が無いため省略します)
各層について
1. プレゼンテーション層
ユーザ側とのやり取りを行うインタフェースとして機能する層.ユーザからの入力を受け付けたり,アプリケーション層からの結果を表示するなど.
2. アプリケーション層
ドメイン層で実装されたロジックの呼び出しを実施する層.
3. ドメイン層
Webアプリケーションのコアな業務処理や仕様を実装する層.
4. データアクセス層(インフラ層)
外部のDBやファイルとの入出力などのやり取りを行うインタフェースとして機能する層.
Model View Controller(MVC)とは
3層アーキテクチャと同様,Webアプリケーション開発の設計思想の一つ.
主な違いは,MVCはプレゼンテーション層とアプリケーション層(ドメイン層)における設計思想になる.
(3層アーキテクチャはシステム全体の設計思想)
1. Model
外部のDBやファイルとのやり取りを行うインタフェースとして機能する層
2. View
ユーザとのやり取りを行うフロントエンド的なインタフェースとして機能する層
3. Controller
ModelとViewの制御を行う層