0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>В предыдущем уроке мы дошли до следующей структуры:</p>
1
<p>В предыдущем уроке мы дошли до следующей структуры:</p>
2
<p>В этом случае:</p>
2
<p>В этом случае:</p>
3
<ul><li>Модель предметной области описана с помощью ORM (в других случаях это не обязательно, ведь хранилище отделено от модели)</li>
3
<ul><li>Модель предметной области описана с помощью ORM (в других случаях это не обязательно, ведь хранилище отделено от модели)</li>
4
<li>Функция-обработчик обращается к модели для выполнения запрошенных операций и выводит необходимые данные в шаблон</li>
4
<li>Функция-обработчик обращается к модели для выполнения запрошенных операций и выводит необходимые данные в шаблон</li>
5
<li>Шаблон описывает представление конкретной страницы и строится на данных, переданных из функции-обработчика</li>
5
<li>Шаблон описывает представление конкретной страницы и строится на данных, переданных из функции-обработчика</li>
6
</ul><p>Описанная структура называется<strong>Model-View-Controller</strong>(MVC version 2). Эта структура устроена так:</p>
6
</ul><p>Описанная структура называется<strong>Model-View-Controller</strong>(MVC version 2). Эта структура устроена так:</p>
7
<ul><li><strong>M</strong>- модель предметной области</li>
7
<ul><li><strong>M</strong>- модель предметной области</li>
8
<li><strong>V</strong>- шаблон</li>
8
<li><strong>V</strong>- шаблон</li>
9
<li><strong>C</strong>- наша функция-обработчик (в других фреймворках могут быть другие сущности)</li>
9
<li><strong>C</strong>- наша функция-обработчик (в других фреймворках могут быть другие сущности)</li>
10
</ul><p>MVC разделяет приложение минимум на три слоя и определяет, как слои могут взаимодействовать друг с другом. Это важно для создания модульных приложений - таких, которые легко развивать и модифицировать. При этом никто не запрещает добавлять новые и дробить текущие слои, все это уже зависит от сложности самого приложения.</p>
10
</ul><p>MVC разделяет приложение минимум на три слоя и определяет, как слои могут взаимодействовать друг с другом. Это важно для создания модульных приложений - таких, которые легко развивать и модифицировать. При этом никто не запрещает добавлять новые и дробить текущие слои, все это уже зависит от сложности самого приложения.</p>
11
<p>MVC может быть устроена так:</p>
11
<p>MVC может быть устроена так:</p>
12
<p>Рассмотрим схему подробнее:</p>
12
<p>Рассмотрим схему подробнее:</p>
13
<ul><li><strong>M</strong>- ядро приложения, его бизнес-логика.<strong>M</strong>не знает ничего о других частях приложения и не может на них влиять</li>
13
<ul><li><strong>M</strong>- ядро приложения, его бизнес-логика.<strong>M</strong>не знает ничего о других частях приложения и не может на них влиять</li>
14
<li><strong>V</strong>- получает данные от<strong>C</strong>и иногда от<strong>M</strong>, но такое не приветствуется. И уж точно<strong>V</strong>не должен знать ничего о базе данных. Кстати, этим грешат начинающие разработчики, которые выполняют SQL-запросы прямо из шаблонов</li>
14
<li><strong>V</strong>- получает данные от<strong>C</strong>и иногда от<strong>M</strong>, но такое не приветствуется. И уж точно<strong>V</strong>не должен знать ничего о базе данных. Кстати, этим грешат начинающие разработчики, которые выполняют SQL-запросы прямо из шаблонов</li>
15
<li><strong>C</strong>- использует<strong>M</strong>для выполнения запрашиваемых операций и отвечает за генерацию<strong>V</strong></li>
15
<li><strong>C</strong>- использует<strong>M</strong>для выполнения запрашиваемых операций и отвечает за генерацию<strong>V</strong></li>
16
</ul><p>MVC является<strong>архитектурным шаблоном</strong>или<strong>паттерном проектирования</strong>- это такая повторяемая архитектурная конструкция, которая решает проблему проектирования в рамках некоторого распространенного контекста. В нашем случае контекст - обработка HTTP-запросов.</p>
16
</ul><p>MVC является<strong>архитектурным шаблоном</strong>или<strong>паттерном проектирования</strong>- это такая повторяемая архитектурная конструкция, которая решает проблему проектирования в рамках некоторого распространенного контекста. В нашем случае контекст - обработка HTTP-запросов.</p>
17
<p>Паттернов проектирования очень много на все случаи жизни. Некоторые из них очень простые и ближе к<strong>идиомам</strong>- каким-то локальным участкам кода, которые принято писать тем или иным способом в конкретном языке.</p>
17
<p>Паттернов проектирования очень много на все случаи жизни. Некоторые из них очень простые и ближе к<strong>идиомам</strong>- каким-то локальным участкам кода, которые принято писать тем или иным способом в конкретном языке.</p>
18
<p>Некоторые паттерны - всеобъемлющие, подобные MVC. Они определяют глобальные ограничения, но ничего не говорят о способе реализации. В любом случае паттерны - не догма и не формальная спецификация. Всегда есть место для самостоятельного выбора.</p>
18
<p>Некоторые паттерны - всеобъемлющие, подобные MVC. Они определяют глобальные ограничения, но ничего не говорят о способе реализации. В любом случае паттерны - не догма и не формальная спецификация. Всегда есть место для самостоятельного выбора.</p>
19
<p>В MVC заложена довольно простая, но важная идея - разделение приложения на слои с четкими границами. Такой подход позволяет развивать каждый слой независимо от других, если у вас правильно выстроены зависимости между ними.</p>
19
<p>В MVC заложена довольно простая, но важная идея - разделение приложения на слои с четкими границами. Такой подход позволяет развивать каждый слой независимо от других, если у вас правильно выстроены зависимости между ними.</p>
20
<p>Обратите внимание, что в MVC все связи однонаправленные. Другими словами, в MVC нет двух слоев, которые знают друг о друге одновременно. Если один слой знает о другом, то второй ничего не знает о первом, и наоборот. Модульность - это один из ключевых факторов, делающих приложения по-настоящему качественными с точки зрения разработки. Как вы увидите позже, многие веб-фреймворки построены именно по модели MVC с небольшими модификациями, не влияющими на ключевую идею.</p>
20
<p>Обратите внимание, что в MVC все связи однонаправленные. Другими словами, в MVC нет двух слоев, которые знают друг о друге одновременно. Если один слой знает о другом, то второй ничего не знает о первом, и наоборот. Модульность - это один из ключевых факторов, делающих приложения по-настоящему качественными с точки зрения разработки. Как вы увидите позже, многие веб-фреймворки построены именно по модели MVC с небольшими модификациями, не влияющими на ключевую идею.</p>