##MVCについて
webでは、ブラウザ(Safari,Chomeなど)とサーバーの間で
ブラウザ→サーバへのリクエストと、それに対しての
サーバー→ブラウザへのレスポンスのやりとりが行われています。
その内部ではMVCが大きな役割を果たしています。
###MVCとは
ソフトウェアの設計モデルの一つで、機能をモデル・ビュー・コントローラーの3つの役割に分けて実装するという方法のことです。
実際に図で理解するのが一番わかりやすいと感じたのでぜひこちらを参考にしてみてください。
###モデル・ビュー・コントローラーとは?
ではモデル・ビュー・コントローラーとはどのような役割を果たすものなのでしょうか?
それぞれの役割について説明します。
####モデル
コントローラーとデータベースとのやりとりを介している。ビジネスロジックの実装に関わっています。
####ビュー
DBから取得したデータなどを元にHTMLを作成する。ブラウザへの反映に大きく関与する。
####コントローラー
モデルの内容についての指揮をおこうなう。この中に実行したいアクションの内容が含まれている。
また、コントローラーの部分が肥大化してしまう傾向がある
##ブラウザからのリクエストからサーバーへのレスポンスまでの流れ
では実際にブラウザからリクエスト→サーバーへのレスポンス、その情報がブラウザに表示されるまでの流れについて説明して行きたいと思います。
①URIとしてリクエストを送る
例えばAmazonのログインを行いたいとします
その場合、
②初期処理
ここではLaravelやRailsなどのフレームワークで必要な機能の読み込みが行われます。
③URLからのルーティング
リクエストされたURIの情報をもとにルーティングを行います。
ルーティングとはどのコントローラからどのアクションを実行すればいいの?を判断すること。
このURIの中にはポート番号や、プロトコル(ネットワークの規約のようなもの)、ドメイン名の情報が含まれています。
④コントローラとモデル、データベースのやりとり
コントローラーには様々なアクションがあり、ルーティングにより特定のアクションが呼び出されます。コントローラーは呼び出されたアクションを元にモデルを介してデータベースとのやりとりを行います。具体的にはデータの保存や取得を行なったりします。
⑤ビューに取得したデータを渡す
コントローラーは取得したデータをビューに渡し、そのデータを元にビューはHTMLの生成を行います
⑥コントローラーに作成したHTMLの情報を渡す
ビューはコントローラーに作成したHTMLの情報を渡します。
⑦HTMLの情報をブラウザに返す
コントローラーはそのHTMLの情報をブラウザに返します。
⑧ブラウザに表示
このようにしてリクエストされたURIのデータはブラウザに表示されます。
##MVC以外のアーキテクチャについて