2009-04-03 8 views
5

私はASP.NET MVCの哲学を最初に理解しようとしています。私はコントローラーとビューが果たす役割についてはっきりとしていると思いますが、私はモデルの部分で少し混乱しています。いくつかのソースは、そのドメインモデル、いくつかは、データモデルと言ういくつかは、ビューにバインドされているオブジェクトを言う。MVCのモデル

IMHOこれは非常に異なるものです。だから、誰かが一度だけこれをクリアすることができますか?

答えて

9

実際にレイヤーを追加して明確にするのが好きです。基本的には、「モデル」はドメイン固有のものであり、永続性を維持する方法(永続性はドメインの一部であると仮定します)です。

IMO、私はViewModelと呼んでいます...時々、ビューに渡される "モデル"は実際にはドメインとは関係ありません。それは検証情報、ユーザ表示情報、ビューに表示するためのルックアップリスト値。

私はモデルがモデルであるよりも、原子力発電所の運営を管理する、あなたが言うにウェブサイトを構築している場合には、あなたが例えば

11

モデルは、「アプリケーションが動作する情報のドメイン固有の表現」です。これはデータモデルだけではなく、MVCパターンよりも低いレベルです(たとえば、データをカプセル化してクラスを処理するなど)。

MSからスコット・ガスリーは、his announcementにこの定義を使用する:MVCベースのアプリケーション で

「モデル」 状態を維持する責任があるアプリケーション の成分です。多くの場合、この状態はデータベース内に永続されます(たとえば、 には、 のProductテーブルの Productテーブルからの注文データを表すために というProductクラスが使用されます)。

さらに読書:

+0

私はWikipediaでそれを打ちました。 –

+0

モデルは状態を維持するためにのみ存在する場合、その状態を操作して操作します。私はあなたがコントローラーを言っていないことを願っています。そうでなければ、私もそれらについて混乱します。 –

+0

"コントローラ:イベント(通常はユーザーアクション)を処理して応答し、間接的にモデルの変更を呼び出す可能性があります。ユーザーがアクションを呼び出すと、モデルが変更され、ビューが更新されます。 – crb

2

。章のいずれかから

:26ページ

モデル・ビュー・コントローラ・フレームワークにおいて、用語「モデル」は アプリケーションのデータを表すオブジェクトを指し、ならびに対応するドメインロジック検証とビジネスルール を統合しています。このモデルは、多くの点でMVCベースのアプリケーションの「心臓部」であり、後で説明するように、 は基本的にその動作を駆動します。

希望すると便利です。

0

:-)抱えている切断だと思いますプラント、現在の運転パラメータ(温度など)のプロパティ、発電の開始/停止などのメソッドを備えています。この場合、モデルは実際には実際のプラントと孤立モードの投影ですが、アイデアを得ました。

4

あなたのアドバイスはドメインモデルと言っても間違いありません。多くの場合、データ・モデルも非常に緊密に整列されます。

ドメインモデルとデータモデルが異なるのは、データモデルが比較的静的な形式(コンテンツではない)で、ドメインモデルがドメインの特定の制約とルールを追加する点です。たとえば、私のデータモデル(データベース)では、血圧をsmallints(収縮期血圧および拡張期血圧)として表しています。私のドメインモデルでは、私は2つの測定値のそれぞれの値を保持し、許容値の範囲に追加の制限を課す「血圧測定値」オブジェクトを持っています(例えば、収縮期の範囲はsmallints )。また、これらの値についての定性的判断も追加されています(150/90のBPは「高」です)。

問題ドメインのこれらの側面を追加することは、ドメインモデルを単なるデータモデル以上にするものです。いくつかのドメイン(例えば、完全オブジェクト指向データモデルでよりよくレンダリングされ、リレーショナルモデルではあまりマッピングされないドメイン)では、2つがかなり大きく分岐していることがわかります。しかし、私が作成したすべてのシステムは、非常に高度なオーバーラップを特徴としています。実際には、ストアドプロシージャやユーザー定義型などを使用して、データモデル自体にかなりの数のドメイン制約を適用することがよくあります。