Модель в MVC - PullRequest
       11

Модель в MVC

5 голосов
/ 03 апреля 2009

Я только начинаю на ASP.NET MVC, пытаясь сначала понять философию. Я думаю, что я достаточно ясно понимаю роли, которые играют контроллер и представление, но я немного запутался в части модели. Некоторые источники говорят, что это модель предметной области, некоторые говорят, что это модель данных, другие говорят, что это объекты, связанные с представлением.

ИМХО это очень разные вещи. Так, пожалуйста, может кто-нибудь прояснить это раз и навсегда?

Ответы [ 5 ]

11 голосов
/ 03 апреля 2009

Модель - это «доменное представление информации, над которой работает приложение». Это не просто модель данных, так как это более низкий уровень, чем думает паттерн MVC, но (например) это классы, которые инкапсулируют данные и позволяют вам обрабатывать их.

Скотт Гатри из MS использует это определение в своем объявлении :

«Модели» в приложении на основе MVC являются компонентами приложения которые несут ответственность за поддержание государство. Часто это состояние сохраняется внутри базы данных (например: мы может иметь класс Product, который используется для представления данных заказа из Таблица продуктов внутри SQL).

Дальнейшее чтение:

9 голосов
/ 03 апреля 2009

Мне действительно нравится добавлять дополнительный слой, чтобы сделать вещи более понятными. По сути, «модель» - это предмет, который зависит от домена и знает, как сохранить себя (при условии, что постоянство является частью домена).

IMO, другой слой, на который я ссылался, я называю ViewModel ... иногда, "модель", которая передается в представление, на самом деле не имеет ничего общего с доменом ... она будет иметь такие вещи, как информация о проверке, пользователь отображаемая информация, значения списка поиска для отображения в представлении.

Я думаю, что у вас есть разъединение: -)

4 голосов
/ 03 апреля 2009

Ваши источники рекомендаций верны, когда говорят, что это модель предметной области. Во многих случаях это будет достаточно тесно выровнять вашу модель данных.

Если модель домена и данных различаются, это то, что модель данных является относительно статичной по форме (а не по содержанию), тогда как модель вашего домена добавляет конкретные ограничения и правила вашего домена. Например, в моей модели данных (база данных) я представляю артериальное давление в виде маленьких букв (систолическое и диастолическое). В моей доменной модели у меня есть объект «показания артериального давления», который содержит значения для каждого из двух показаний, а также накладывает дополнительные ограничения на диапазон допустимых значений (например, диапазон для систолического гораздо меньше чем это для smallints). Это также добавляет качественные суждения об этих значениях (АД 150/90 является «высоким»).

Добавление этих аспектов проблемной области - это то, что делает модель домена не просто моделью данных. В некоторых областях (например, в тех, которые лучше отображать с помощью полностью объектно-ориентированной модели данных и которые плохо сопоставляются с реляционной моделью), вы обнаружите, что они значительно отличаются. Тем не менее, все системы, которые я создал, имеют очень высокую степень перекрытия. Действительно, я часто вставляю достаточное количество ограничений домена в саму модель данных с помощью хранимых процедур, пользовательских типов и т. Д.

2 голосов
/ 03 апреля 2009

Вы должны взглянуть на это пошаговое руководство.

Из одной из глав: стр. 26

В структуре модель-представление-контроллер термин «модель» относится к объектам, которые представляют данные приложение, а также соответствующая логика домена, которая объединяет валидацию и бизнес-правила с этим. Модель во многих отношениях является «сердцем» приложения на основе MVC, и, как мы увидим позже фундаментально управляет поведением этого.

Надеюсь, что это полезно.

0 голосов
/ 03 апреля 2009

Например, если вы создаете веб-сайт, скажем, для управления операциями на атомной электростанции, то эта модель представляет собой модель станции, дополненную свойствами для текущих рабочих параметров (температуры и т. Д.), Методами для запуск / остановка выработки электроэнергии и т. д. Мммм ... в этом случае модель на самом деле является проекцией реальной установки по сравнению с изолированным режимом, но у вас есть идея.

...