Какое лучшее определение MVC?

Я использую Zend Framework в конфигурации MVC, читаю о рубине на рельсах и планирую проверку других фреймворков MVC в Python (Django?)... Мне очень нравится, как он изолирует некоторые части логики, безопасности и Проверка. Но после всего лишь 1 года, используя его, я прочитал ответ здесь, в котором говорится, что почти у всех есть неправильное определение MVC, и это заставило меня задуматься... Какое правильное определение MVC и где я мог бы прочитать о шаблоне и стандартных реализациях?

Обновление:. Я полагаю, что все мы знаем определение BASIC (theres модель контроллера и представление, действия над контроллером идут в представление с некоторой информацией после создания чего-то с моделью), но я хотел бы знать, что такое определение, которое ВЫ ДУМАЕТЕ, ВСЕ ЗНАТЬ и почему это неправильно (и, возможно, это объяснит всем, где могут быть ошибки, мнения и, конечно, какова ваша реальная точка зрения на это)

Ответ 1

См. главу 14 книги "Шаблоны архитектуры корпоративных приложений" Мартина Фаулера.

Раздел MVC начинается с:

"Model View Controller (MVC) является одним из наиболее цитируемые (и наиболее неверные) вокруг. Это началось как рамок, разработанных Трюгве Reenskaug для платформы Smalltalk в конце 1970-х годов. С тех пор сыграли важную роль в большинстве пользовательских интерфейсов рамки и в размышлениях о Дизайн пользовательского интерфейса."

В нем также говорится:

"Как я думаю о MVC, я вижу два основные разделения: разделение презентация из модели и отделяя контроллер от вид.

...

Из них разделение презентация и модель являются одним из наиболее важные принципы проектирования в программного обеспечения, и единственный раз, когда вы не следует следовать, это очень просто системы, в которых у модели нет реальных поведение в нем все равно. Как только вы получить некоторую невисванную логику, которую вы должны примените разделение. К сожалению, много интерфейсов пользовательского интерфейса делают это трудно, а те, которые не являются часто учат без разделения.

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

Ответ 2

Самая большая ошибка, которую я нахожу с пониманием людьми MVC, заключается в том, что они считают, что шаблон охватывает больше, чем он. Более конкретно люди часто думают:

  • Модель = База данных
  • Просмотр = HTML
  • Контроллер = бизнес-логика и все остальное.

Это часто работает в меньшем приложении, но реальность. MVC - это способ отделить бизнес-код от кода презентации. Модель делает всю реальную деловую работу. Представления обеспечивают внешний вид, и контроллер сопоставляет друг с другом.

Ответ 3

Я доверяю определению MVC, которое дано здесь от Мартина Фаулера. Однако вы можете заметить тот факт, что более или менее эти рамки имеют свою собственную настройку. Например, структура, подобная Django, является более Model-Template-Controller из-за ее функции шаблонов.

Ответ 4

Я считаю то же самое. Что касается меня, то что касается того, что удается отделить проблемы дисплея, данные/бизнес-объекты и контроль над ними (инициализация, отвечая на ввод пользователя) получают выгоду, которую предлагает MVC.

Цель состоит в том, чтобы переместить эти элементы в повторно используемые компоненты и иметь возможность менять и изменять различные реализации, а также проверять отдельные части отдельно. IMO, что MVC все о.

Это - довольно хорошая запись некоторых из истории и популярных реализаций парадигмы MVC. Мы должны добавить шаблон Model - View - ViewModel, который также рекомендуется для WPF.

Ответ 5

MVC - одна из трех моделей программирования ASP.NET. MVC является основой для создания веб-приложений с использованием MVC (Model View Controller): Модель представляет собой ядро ​​приложения (например, список записей базы данных). В представлении отображаются данные (записи базы данных).

Ответ 6

Шаблон модели-представления-контроллера предлагает три основных компонента или объекты, которые будут использоваться в разработке программного обеспечения:

  • Модель, представляющая базовую логическую структуру данных в программном приложении и связанный с ней класс высокого уровня. Эта объектная модель не содержит никакой информации о пользовательском интерфейсе.
  • A View, представляющий собой набор классов, представляющих элементы в пользовательском интерфейсе (все, что пользователь может видеть и реагировать на экране, например, кнопки, окна отображения и т.д.)
  • Контроллер, который представляет классы, соединяющие модель и представление, и используется для связи между классами в модели и представлении.