# coding: utf-8

1.2.6 Модель-представление-контроллер (MVC)

Даже на этой ранней стадии, полезно получить общее представление о том, как работают приложения Rails (Рис. 1.5). Вы, возможно, заметили, что в стандартной структуре приложения Rails (Рис. 1.2) есть папка приложения, названная app/ с тремя подкаталогами: models, views, и controllers. Это намек на то что Rails следует модель-представление-контроллер (MVC) архитектурной схеме, которая осуществляет разделение между “логикой предметной области” (также называемой "бизнес-логикой") от логики ввода и логики представления, связанной с графическим интерфейсом пользователя (GUI). В случае веб-приложений, “логика предметной области” обычно состоит из модели данных для таких вещей как пользователи, статьи, продукты, а а GUI это просто веб-страница в браузере.

Взаимодействуя с приложением Rails, браузер отправляет запрос, который принимается веб-сервером и передается контроллеру Rails, отвечающему за то, что делать дальше. В некоторых случаях контроллер сразу визуализирует представление, которое является шаблоном, конвертирующим полученное в HTML и отсылающим назад к браузеру. Более обычно для динамичных сайтов, когда контроллер взаимодействует с моделью, которая является объектом Ruby, который представляет собой элемент сайта (такой как пользователь) и отвечает за коммуникацию с базой данных. После вызова модели, контроллер затем визуализирует представление и возвращает полную веб-страницу браузеру как HTML.

Рисунок 1.5: Схематичное изображение модель-представление-контроллер (MVC) архитектуры.

Рисунок 1.5: Схематичное изображение модель-представление-контроллер (MVC) архитектуры.

Если это обсуждение кажется сейчас немного абстрактным, не беспокойтесь; мы будем часто возвращаться к этому разделу. В дополнение, в Разделе 2.2.2 есть более детальное рассмотрение MVC в контексте демонстрационного приложения. Наконец, пример приложения будет использовать все аспекты MVC; мы осветим контроллеры и представления, начиная в Разделе 3.1.2, модели начнуться в Разделе 6.1, и мы увидим, совместную работу триады в Разделе 6.3.2.

# coding: utf-8