суббота, 30 мая 2009 г.

MVC в Rails

Разработкой на рельсах занимаюсь уже три года, решал различные сложные и комплексные задачи... А вот поди ж ты, – теорию тоже поднатаскать надо. Хотя бы в качестве программы подготовки к экзаменам, собеседованиям. В общем, «Здравствуй, школа!» :).

Из википедии:
Model-view-controller (MVC, «Модель-представление-поведение», «Модель-представление-контроллер») – архитектура программного обеспечения, в которой модель данных приложения, пользовательский интерфейс и управляющая логика разделены на три отдельных компонента, так, что модификация одного из компонентов оказывает минимальное воздействие на другие компоненты.

Шаблон MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента.

  • Модель (Model). Модель предоставляет данные (обычно для View), а также реагирует на запросы (обычно от контроллера), изменяя свое состояние;
  • Представление (View). Отвечает за отображение информации (пользовательский интерфейс);
  • Поведение (Controller). Интерпретирует данные, введенные пользователем, и информирует модель и представление о необходимости соответствующей реакции.

Model


Модель – это представление определенного участка данных, в общем случае – таблицы базы данных. В модели определяются требования и расчеты необходимые для взаимодействия с этими данными. Обычно требования для формата данных, связи и отношения между данными, методы создания (create), обновления (update), удаления (destroy), поиска (find) и пр.


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


У нас в проекте изначально было заведено правило размещать громоздкие запросы к объекту данных, например find_by_sql, в модели, представляющей данный объект данных.


Правило controller-model: “fat model, skinny controller”, «жирная модель, тощий контроллер».


Controller


Контроллер – логика между моделью и представлением. Контроллеры содержат методы, которые напрямую относятся к действиям (actions) выполняемым пользователем. Назначение контроллера – отвечать на действия, запрошенные пользователем. Как то: принять параметры, заданные пользователем, обработать эти параметры, задействовать модель, и затем передать запрошенные данные в обработанной форме представлению (view).


Методы контроллера обычно краткие; это небольшие куски кода, выполняющие специфические задачи. Если они содержат более 9-10 строк, это должно тебя насторожить: возможно, ты делаешь слишком много в контроллере и недостаточно в модели (см. правило controller-model).


View


View (Вид/Представление) – это где данные, обработанные контроллером, получают вывод в формате, запрошенным пользователем. В rails это обычно html, но может быть xml, js, json или другой. Разделение между контроллером и представлением еще более понятное, чем между контроллером и моделью.


Правило controller-view: никакого вывода данных в контроллере, никакой обработки данных в представлении.


По материалам статьи Rails and MVC.

2 Комментариев :

Егор Доровских комментирует...

привет, у тебя будет время начинающему помочь разобраться с чего начать в освоении этого языка?)

Croaker комментирует...

На данном этапе блог «сместился» в Blogger-тематику. Обычно я пишу о том, с чем работаю, поэтому не исключено, что будут статьи по Ruby и фреймворку Rails. А вот как скоро – сказать затрудняюсь.

Отправить комментарий

Жги!