четверг, 17 июля 2008 г.

Кратко о MVC

Подробно MVC можно посмотреть в интернете, информации полно. Моя задача не описать все еше раз своими словами, а показать как это все работает в Релсах.

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

MVC (Модель-Представление-Контроллер) шаблон проектирования cостоит из 3 основных компонентов:
  • Модель - объектная прослойка между хранилищем информации(в частном случае база данных), которая предоставляет интерфейс для работы с сохраненной информацией (поиск, выборки, апдейты, удаления), а также методы котрые занимаются всевозможной обработкой для конкретной модели. Для Ruby on Rails в основе любой модели лежит супер мощный фреймворк - ActiveRecord. Который предоставляет все возможныйе базовые методы для работы с данными.
    Каждая таблица в БД имеет свою модель, где описаны связи между разными моделями (связи осуществляются на уровне моделей, а не таблиц!), а также методы работы с данными для конкретной модели(например User)
  • Контроллер - это ваш посредник между броузером(представлением данных) и моделью(БД), который занимается перехватом всех событий которые возникают в процессе работы и дальнейшей их обработкой. Используя роутер(файл содержащий информацию о том как обрабатывать события и куда направлять данные) контроллер "знает" какому экшну какого контроллера передать реакцию на событие (например сабмит формы) . Контроллер можно представить себе в виде продавца-консультанта, который выслушав ваши пожелания проведет вас в нужный отдел магазина.
  • Представления данных (View) - это последний компонент МVС корый занимается отображением данных. В рельсах используется для этого RHTML - помесь HTML и Ruby - RubyHTML. Где возможно использования руби вместе с обычным штмл. Основная задача представления - отобразить данные которые сформировал контроллер в результате на запрос юзера. Здесь позволено только фильтровать данные пришедшее с контроллера, обработка запрещается(вынесена в контроллер)
Таким образом работу типового рельсового приложения можна описать используя такую схему:
Запрос пользователя(в броузере) -> Обработка события и вызов нужного экшна в контроллере(с передачей пользовательских параметров запроса) -> Обработка в контроллере используя для работы с БД нужные Модели -> формирование ответа и передача в Представление -> отбражение запроса в нужном формате и выдача юзеру через броузер


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

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