JavaとサーブレットとJSPとMVC

あらすじ 

MVCと三層クライアントサーバがごっちゃになって理解できないでいる。

owaraiurutorakuizu.hatenablog.com

 

まず、言葉で少しだけ知ってたつもりのMVCを再点検してみる。

 

 

MVCという設計パターン

Webアプリケーションの設計の仕方がいくつかあるようで、その中で比較的メジャー(ちょっと古いかも)なのが、MVC。まずはMVCを知れ、と数年前に習った。

f:id:owaraiurutorakuizu:20180902212417p:plain

小規模・単純なシステムなどの場合、プレゼン層(CとV)だけで足りる場合があるが、そうでないときはこう分けましょう、というものらしい。

・・・振り返ってみると、自分が関わったものって、CとMの線引きが不明瞭だったような気がする。Cの中にMが多数入り込んじゃってたイメージ。

 

 

三層クライアントサーバは一直線であり、概念

やっぱりMVCとは別物らしい。三角形じゃない、てのがキモだそうで。 

f:id:owaraiurutorakuizu:20180902212442p:plain

アプリ層は、ロジック層などとも言う(他にもあるみたい)。

より古い二層(クライアントとサーバ)の時代ではクライアント側がロジックを持ってたりして大変だったので、そこからロジックを引き抜いてサーバ側に持たせる、としたのが三層~だそうだ。自分は、いきなり三層~のことだけを理解しようとしてMVCとごっちゃになってしまっていたが、こういった歴史的な背景をたどって整理したら、腑に落ちた感じだった。

システムの作り方というより、概念図みたいなモノ、と自分は捉えている。

 

 

つまり?

二者は別物。

MVCは設計のモデルとかパターンとか、どっちかというと作る人のためのハナシで、その中でも、見た目とか画面遷移とかロジックとかの作り分けの仕方を説いている。データ層とかDBアクセスは、ロジックのある部分のクラスやらBeansやらが手続きする対象というだけで、MVCの文脈の主たる部分ではない。たぶん。

三層~は、もっと抽象的な、概念とかそっちの世界に寄っている。昔は二層だったけどそっから進化したもの。データ層(DB)はメインキャストのひとり。

 

両者は対応するもの、対応させるべきもの、と考えていたのが、ハマりポイントだったのだなあ、というのが自分の結論。