MVC - это просто :)

1.44K
.
╭∩╮ (`-`) ╭∩╮
Привет уважаемые, давно мы не занимались теоретическими исследованиями и давно я вам не писал никаких статей.
С начала этого года, а последние месяц-полтора я проводил интенсивные исследования технологий, всех нынче модных веяний, таких, как фреймворки, патерны (шаблоны) проектирования и все такое. Дело в том, что готовится новый продукет, пока еще есть возможность повернуть руль в ту, или другую сторону и нужно четко определить свой путь, более того, абсолютно точно аргументировать почему сделал так, а не иначе.
Но мы сейчас будем говорить не о новом двиге (хотя в этой теме еще не раз будем его касаться), а об абстрактных делах.

А именно, поговорим о таком нынче модном явлении, как MVC (Model-View-Controller).
Я в последнее время вдарился в историю этого явления, раскопал даже архивные материалы от 1978 года от самого создателя, изучал фреймворки, читал холивары на различных профессиональных и не очень форумах. В итоге пришел к весьма неожиданным (даже для меня самого) выводам.
.
╭∩╮ (`-`) ╭∩╮
Итак, задам вопрос:

ЧТО ТАКОЕ MVC?
Нужно ли оно нам?
Насколько это будет полезнее, чем имеющаяся архитектура?
.
╭∩╮ (`-`) ╭∩╮
Fublin (18.05.2013 / 22:25)
а чтоетотакое ?
Ну как же, самая остромодная штуковина.
Сегодня уже если движок не написан по канонам MVC, считается отстойным.
А если MVC, то это сразу неизмеримо поднимает ЧСВ кодеров и автоматом добавляет им приставку PRO гг

Если говорить серьезно, то MVC сейчас у всех на уме, можешь загуглить, много чего найдешь.
Это касается кодеров. Дизайнерам, или СЕО-шникам читать будет неинтересно.
.
ЧТО ТАКОЕ MVC?

Это способ организации gприложения (архетиктурный паттерн).
Нужно ли оно нам?

Х.з, сложно ответить.
Насколько это будет полезнее, чем имеющаяся архитектура?

На много.
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
L!MP (18.05.2013 / 22:30)
Это способ организации приложения (архетиктурный паттерн).
Правильно, даже точнее назвать "Архитектурой", или "Парадигмой"
MVC очень часто называют "Шаблоном (или паттерном) проектирования", хотя это абсолютно не так.
MVC - это концепция архитектуры приложения.
А один из множества возможных патернов программирования - это способ реализации.
---
Между прочим, даже в Русской Википедии на странице с описанием MVC есть ошибка, они тоже назвали это патерном, чем на самом деле MVC не является.
.
╭∩╮ (`-`) ╭∩╮
Вернемся к теории
Возможно ли написать скрипт по архитектуре MVC но без применения ООП и всяких мудренных патернов, которые зачастую сносят крышу при попытке их асилить?
Еще как возможно, причем довольно просто.
Пример?
Пожалуйста, попробуем его написать вместе, но в начале освежим память и вспомним концепцию архитектуры MVC
.
╭∩╮ (`-`) ╭∩╮
Кстати, щас заглянул в Википедию, слово "Шаблон проектирования" от описания MVC уже убрали
Позавчера еще было. Но сейчас более правильно.
На досуге рекомендую кодерам ознакомиться с сабжем: http://ru.wikipedia.org/wiki/M ... oller
Статья написана довольно неплохо, хотя крайне односторонне и неполно.
.
© ECHOWM
AlkatraZ (18.05.2013 / 22:33)
Между прочим, даже в Русской Википедии на странице с описанием MVC есть ошибка, они тоже назвали это патерном, чем на самом деле MVC не является.
Так, а теперь возникает вопрос: - кому верить?
Можно узнать, откуда получена информация о том что это не патерн?
.
AlkatraZ (18.05.2013 / 22:28)
Ну как же, самая остромодная штуковина.
Сегодня уже если движок не написан по канонам MVC, считается отстойным.
А если MVC, то это сразу неизмеримо поднимает ЧСВ кодеров и автоматом добавляет им при
Незнаю про мвс всякие..но я тут полез в один веб движок, мне надо было кое что просто вставить туда..вобще мелочь..дык вот я не смог этого сделать..
.
AlkatraZ
╭∩╮ (`-`) ╭∩╮
Итак, как взаимодействуют компоненты архитектуры MVC?
на рисунке с википедии все изображено довольно наглядно и канонически.
Мы же разжуем на пальцах для самых начинающих.
---
Представим себе гипотетический сайт, состоящий всего из одной страницы, которая нам будет показывать какую-то новость

Вы открыли браузер и набрали адрес Вашей странички.

КОНТРОЛЛЕР (Controller)
Ваш запрос с самого начала попадает в контроллер который уже решает, что с Вашим запросом делать. Причем сам контролер не выдаст Вам никакого ответа, он просто перенаправит Вас куда надо (к нужной модели). Контроллер по идее сам почти ничего не умеет, но знает кто может предоставить ему нужные данные (model) и кто сможет написать правильный ответ на запрос (view).

МОДЕЛЬ (Model)
Чтоб Вы получили ответ на свой запрос, контроллер подключает для вас нужную модель.
Что такое модель? Это скрипт, который знает ответ на Ваш вопрос. Это к примеру запрос в базу данных, или что еще... Модель умеет делать только узкое дело, что она умеет. при этом она напрямую не общается с Вами и вы с ней тоже не общаетесь.
Может показаться несколько мудренно, но потом я приведу Вам присмер, который каждый из вас видел и Вам станет все понятно гг

ПРЕДСТАВЛЕНИЕ (View)
Итак, модель нашла то, что поручил ей контроллер, но она не знает, как Вам это передать.
На выходе модели массив с данными, который в браузер не отдашь.
Для этого и используется модель.
В самом простейшем рассмотрении - это Ваш шаблон, в котором все уже оформлено так, чтоб можно было отдать браузеру
Прикрепленные файлы:
Всего: 45