Почему модель представления контроллера не является представлением логической базы данных? - PullRequest
2 голосов
/ 14 января 2011

Я использую модель MVC в течение 5 месяцев. Я согласен с MVC, хорошая техника для организации ума. Но каждый раз, когда я пытаюсь написать модель, я пишу модуль, и в этой путанице возникает вопрос, почему это модель, а не данные, база данных, хранилище и т. Д. Самое нерелевантное и общее название - модель.

Я согласен с представлением, но контроллер должен быть логикой или маршрутизатором, я думаю.

Из википедии:

Шаблон изолирует "домен логика " (логика приложения для пользователя) из пользовательского интерфейса (ввод и представление )

Модель управляет поведением и данными домена приложения

Контроллер получает входные данные и инициирует ответ, вызывая объекты модели

Почему мы используем модель, вид и контроллер в качестве имени этого шаблона?

Ответы [ 3 ]

2 голосов
/ 14 января 2011

В цитируемом вами тексте (с небольшим смещением акцента) говорится, что «модель управляет поведением и данными домена приложения».Поведение может быть определено в базе данных как хранимые процедуры, но гораздо чаще его кодируют полностью или, по крайней мере, частично, на главном языке приложения (C / C ++ / C # / ASP / Perl / PHP / что угодно).

«Модель» и «база данных» не являются взаимозаменяемыми терминами - модель намного больше, чем просто база данных, и она делает гораздо больше, чем просто хранит данные.

1 голос
/ 31 января 2013

Я согласен с точкой зрения Дейва: но, возможно, я могу добавить к этому немного ...

Вы должны помнить, что слои не должны знать ничего больше, чем один уровень ниже него ...

В моем случае контроллер выполняет запрос к модели: для этого требуется, чтобы представление базы данных объединяло две отдельные базы данных ... НО это хорошая практика (единственная реальная практика в MVC?), Что контроллер никогда не должен знать об этом -все, что нужно знать, это то, что когда она запрашивает модель, модель знает, как ее получить.

В этом все дело.Модель моделирует «вещь», и контроллер должен не знать, КАК она получает «вещь».

По иронии судьбы, мне становится легче понять, когда вы добавляете дополнительный, но рекомендуемый дополнительный слойв том числе: Абстракция базы данных.

Это добавляет еще один слой к разделению.Вы видите это при установке программ (таких как Moodle), которые спрашивают вас, какой тип подключения к базе данных вы используете.Он знает, как общаться с базами данных, но именно тот язык, который он использует, скрыт от модели.

При обычном использовании: контроллер запрашивает модель, модель запрашивает уровень абстракции базы данных для результатов.При переходе с MySQL на MSSQL / XML / почтовый голубь модель не требует изменений.

ЭТО объясняет, почему модель не является «моделью базы данных».Это на самом деле не связано с базой данных.

0 голосов
/ 22 сентября 2012

В хорошо спроектированном приложении данные называются «моделью данных». Причина в том, что мы структурируем данные в так называемую модель, потому что она «моделирует» бизнес-концепции (например, заказ может иметь детализацию заказа). Линии или Человек может быть клиентом или сотрудником)

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

Это общая концепция, потому что Модель не должна быть конкретной в отношении деталей реализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...