2009-09-04 13 views
9

私は初心者です。懸念の分離のためのMVCモデルについて質問したいと思います。私はいくつかのMVCチュートリアルを読みましたが、モデル、ビュー、およびコントローラのそれぞれの役割を完全に理解していません。MVC - 懸念の分離

たとえば、ポートフォリオを監視するユーザー用のアプリケーションを作成しているとします。リンク先ページに異なる基準に基づいて投資リストを表示したいと考えています。たとえば、投資額に基づいて投資を列挙したり、投資パフォーマンスに基づいて別の列を注文するなどです。

私の質問は、デザインパターンに従って、どこでリストを生成するための論理を書くべきかということです。モデル、ビュー、またはコントローラーで?

また、懸念の分離を示すasp.net MVCの例は非常に高く評価されています。

ありがとうございました。

答えて

4

自分自身を繰り返す危険があるので、私はin this threadの回答にあなたを指摘します。 The entire threadはおそらくあなたの時間の価値があります。また、スタックオーバーフローに関する数十ものものがあります。

は、単純にそれを打破するには、次の

コントローラ - 制御アプリケーションフローとデータについての決定を行います。

モデル - ビジネスロジックを実行します。

Views - 出力を生成します。

具体的な状況については、リストをに表示する必要があります。テンプレートを使用してリスト構造を作成し、Modelレイヤーからフェッチされたデータを入力します。

私はasp.netプログラマーではありませんので、信頼できる例はありませんが、他のSOスレッドを探し回っています。

1

MVCパターンでは、すべての "ビジネスロジック"をモデルに挿入する必要があります。モデルは、データベースにアクセスしてデータをフェッチし、コントローラを使用してビューに割り当てるだけで済むように使用されます。

グラフィカル例:あなたはモデルの使用を回避し、コントローラーにすべてのロジックを記述し、それは、コードの非常に広範かつおそらく冗長な量につながることができ、おそらく言うことhttp://www.bhartisoftland.com/technologies-skill-sets/gifs/mvc-php.png

言うまでもないです。コントローラはモデルやビューを呼び出すことができ、数行のコードで情報を交換できます。

3

これは主観的なものであり、多くの解決策がありますが、それは私が思うようなコンテキストと個人の好みに帰着します。

MVCのASP.Net実装では、他のいくつかのフレームワーク(幾分DTO)のように、モデルがViewModel以上のモデルであると話す人がたくさんいます。これを念頭に置いて、コントローラをアプリケーションのフローのコーディネータとして見ると、何らかのタイプのサービスを介してアクセスされる追加の層にリストを生成することは間違いではない。そのサービスに対して、指定された基準のセットを満たす一連のViewModelを要求し、その追加のレイヤーがその一連の基準から生成されるリストを心配させるようにします。コントローラがすべての基準をサービスに渡し、表示する一連のモデル(ビューモデル)をビューに提供するということをすべてのコントローラが知る必要があるこのように、ビューは提供されたデータの処理方法について自由に決定できます、モデルは素敵で軽量です。

この説明は理にかなっていると思いますが、人々が同意しないと私は批判しています。

関連する問題