質問: MVCモデルの解釈について ------------- MVCモデルについて色々と解説を見ましたが、いまいちピンと来ない為、確認をさせて頂きたいです。 実際の開発に携われば、簡単に理解できる内容なのかもしれませんが、現状それが出来ない為ご了承ください。 疑問点は以下の通りです。 1.そもそもMVCモデルとは? ⇒”MVCモデル”という言葉は、開発における”考え方”であると解釈しております。 また、利点についても分業による作業効率化(オブジェクト指向そのもの?)、 依存性低減による保守性向上・バグ抑制等がある事も理解したつもりです。 ただ、上記にもある通りこれらはオブジェクト指向の考えそのものではないのでしょうか? わざわざMVCモデルなどと名称付け(仕様策定)する必要があったのでしょうか? 2.各機能(MVC)の役割について ⇒モデル上の各要素の役割を以下(1)~(4)の様に解釈していますが、問題ないでしょうか? (1)Controller ⇒ブラウザとの窓口であり、HTTPリクエストに応じた各要素への指令を出す。 また、各要素からの応答をブラウザに渡す。 あくまで仲介役であり、具体的な処理は行わない。 (2)Model ⇒主にセッション管理・DBアクセス管理・データ変更の通知(結果?)等を行う。 解説によっては、”Modelは入出力・表示は行えない"と記載している所がございました。 ここで言う”入出力・表示”というのは、何を指すのでしょうか? DBからのデータ抽出・表示は入出力では無い?通知は”出力”に含まれない? (3)View ⇒HTML文書の整形を行う。 Controller要求に対しDB等から該当データ抽出を行い、整形して(HTML化)レスポンスとして返す。 この時のDBアクセス等は一度Model側へ任せる。 (4)MVC全体 ⇒今まで、MVCモデルのプロセスは、”ブラウザ⇒Controller⇒Model⇒View⇒Controller⇒ブラウザ” といった固定フローなのかと思っておりましたが、MVC相互のやり取りは下部図の様に複数のフローパターン が考えられるのでしょうか? ![イメージ説明](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/9731675ebd4da7b5c9b0167548acc08b.png)
回答: そもそもMVCはPCのGUIアプリ開発で生まれたものなのでそっちで考えないと理解できない。 WebのMVCは別物。 Web以前から普及していたMVCという概念を輸入しただけ。