Model-View-Controller (MVC) — это шаблон архитектурного проектирования, который существует, прежде всего, для отделения бизнес-логики от представления. По сути, вы не хотите, чтобы задняя часть касалась передней части. Обычно это выглядит так:
Причина этого заключается в том, что, разделяя серверную часть и переднюю часть, вы не привязываете свой пользовательский интерфейс напрямую к своим данным/работе. Это позволяет вам добавлять новые интерфейсы в вашу бизнес-логику, не затрагивая указанную логику. Кроме того, это также упрощает тестирование.
Простой пример того, где пригодится MVC — допустим, у вас есть приложение, которое управляет финансами вашей компании. Теперь, если вы правильно используете MVC, у вас может быть внешний интерфейс, который сидит за столом какого-нибудь финансиста и позволяет ему обрабатывать транзакции, управлять финансами и т. д. НО, поскольку бизнес-логика является отдельной, вы также можете предоставить внешний интерфейс. на Blackberry вашего генерального директора, который позволяет ему видеть текущее состояние бизнеса. Поскольку два внешних интерфейса разные, они могут выполнять разные действия, при этом предоставляя (разные типы) доступ к данным.
ИЗМЕНИТЬ:
Поскольку вы немного обновили свой вопрос, я обновлю свой ответ. Нет идеальной науки для разделения MVC. Однако есть несколько хороших эмпирических правил. Например, если вы говорите о компонентах графического интерфейса, это, вероятно, представление. (Вы говорите о внешнем виде, удобстве использования и т. д.) Если вы говорите о данных и «деловой» стороне дома (базы данных, логика и т. д.), вы, вероятно, имеете в виду модель. И все, что контролирует взаимодействие между ними, скорее всего, является контроллером.
Кроме того, следует отметить, что хотя представления и модели обычно «физически» разделены, контроллер может существовать с представлением, когда это имеет смысл.
Вы правы, когда говорите, что фреймворк (или даже язык) для MVC не имеет значения. Сам шаблон не зависит от языка и действительно описывает способ построения вашей системы.
Надеюсь, это поможет!
person
JasCav
schedule
11.12.2009