WebアプリでMVCを使う理由ってなに?
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/06/25(月) 22:58:18.06ID:???0076nobodyさん
2013/01/08(火) 00:01:08.04ID:???1つのフレームワークがあって、それがアプリ全体に
結合しているものみたいな感じになってるからなぁ。
フルスタックなフレームワークを細かく分解すると、
まずコントローラフレームワークがある。
このコントローラのフレームワークの役割は、CLIプログラムの
引数解析ライブラリと同じで、ブラウザを使って操作して発生した引数を解釈するもの
次にビューのフレームワーク、いわゆるテンプレートエンジン。
出力したいオブジェクトを特定のテキスト形式に変換して出力するもの。
コントローラのフレームワーク(引数解析)とビューのフレームワーク(出力形式整形)は
明らかにプログラムの中核の処理とは分離されてる。便利なライブラリとして使うが
処理自体は依存しておらず、中核の処理に対して前処理と後処理を行うものでしかない。
あとはモデルというかロジック部分。ロジックでは一般的にファイルやデータベースへアクセスすることになる。
そこでO/Rマッパーなどが利用されるが、ロジックで直接ファイルやデータベースへアクセスするのではなく
間に一層入れてロジックは特定クラスの読み書きメソッドを呼ぶだけにしておくと、物理的なストレージを変更しやすくなる。
図にするとこんな感じ
入力→ ┐
├ ビジネスロジック ⇔ 読み書き
出力← ┘
入力、出力、読み書き、はフレームワークを使って便利にする。しかしビジネスロジックはフレームワークに依存させない
0077nobodyさん
2013/01/08(火) 00:20:34.96ID:???GUIアプリのMVCのモデルではなく
ウェブアプリのモデル。
そのモデルという名前のせいかオブジェクト指向バンザイな発想のせいか、
ナンセンスなことに、データベース全体を一つにモデリングしようとしている。
1テーブルが1クラスになって、そのクラス同士を1対1や、1対多などのリレーションでつなげて
巨大なデータの塊を作ろうとしている。
そのせいでクラスとしてはわかれているけれどクラス間の依存関係がきつすぎて関係を把握できなくなってしまっている。
もうね、お疲れさん(笑)というしか無いよ。
そんなのやっても疲れるだけでしょ。
昔から言われてるように、データの寿命は長いけど、ロジックの寿命は短い。
寿命が違うものを一つに合わせるなと。
オブジェクト指向はシステムの構造を作ったり、高機能な値(オブジェクト)を作るために使うけれども
データ自体はオブジェクト指向の発想で作らないほうがいい。適材適所ってやつだ。
寿命の長いデータはロジックを含まない単なるデータとして保存しておき、
ロジック部分でそのデータを読み書きする。
■ このスレッドは過去ログ倉庫に格納されています