В статье я предлагаю читателю ознакомиться с моими личными впечатлениями от концепции.
Примечание
Все написанное в статье - мое личное мнение.Вы, как читатель, не обязаны с ним соглашаться.
Цель статьи – познакомить читателя с другим мнением относительно общего понятия.
Мой путь к MVC
Некоторое время назад я решил создать свой собственный блог.Повозившись некоторое время с WordPress, я пришел к выводу, что
«там нет рыбы» (и сегодня, глядя на статистику обращений к сайту, я думаю, что отказ от WordPress был правильным решением).В общем, проанализировав совокупность внешних факторов (мои знания, необходимое время разработки, дополнительные затраты на обслуживание и т. д.), я решил разработать все сам, с нуля.
И поскольку теперь мои руки были свободны (в выборе механизмов организации ПО), я решил опробовать на себе широко разрекламированную концепцию MVC (в предыдущих проектах я использовал модульный подход).
Мое понимание MVC
Поскольку в найденной мной технической документации используются весьма заумные формулировки (типа «использует модель и представление для реализации необходимой реакции»), я считаю необходимым написать своё понимание концепции MVC (чтобы не было недоразумений).Итак, согласно концепции MVC, приложение должно состоять из 3 фундаментальных логических частей: контроллер, модель, представление.
Блок Контроллера – преобразует действия пользователя (в данном контексте пользователь не обязательно является человеком) во входные параметры для Модели и передает управление Модели.
Блок модели – реализует всю логику программы и подготавливает данные к отображению.
Блок просмотра – визуализирует результаты работы программы.
Каждое действие пользователя всегда запускает цепочку контроллер-> модель-> представление.
Опишем функции каждого блока контроллера подробнее:
- загружает переменные среды (переменные POST/GET, параметры командной строки, параметры URL и т. д.);
- выполняет первоначальную обработку переменных среды (проверка типов переменных, их наличия, установка значений по умолчанию и т. д.);
- реализует механизмы контроля за чрезвычайными ситуациями;
- реализует механизмы журналирования (не аутентификации, а протоколирования).
- осуществляет окончательную проверку входящих параметров (достоверность значений, диапазонов и т.п.
);
- реализует взаимодействие с системами хранения данных (базами данных, файлами, SOAP и т.п.
);
- реализует логику программы;
- подготавливает данные для визуализации.
- организует механизмы визуализации результатов работы программы.
Недостатки концепции MVC
1. Необходимость использовать больше ресурсов.Сложность связана с тем, что все три фундаментальных блока полностью независимы и взаимодействуют друг с другом исключительно путем передачи данных.
Контроллер всегда должен загружать (и, при необходимости, создавать) все возможные комбинации переменных и передавать их в Модель.
Модель, в свою очередь, должна загрузить все данные для визуализации и передать их во Представление.
Например, при модульном подходе модуль может напрямую обрабатывать переменные среды и визуализировать данные, не загружая их в отдельные участки памяти.
2. Усложнился механизм разделения программы на модули.
В концепции MVC строго прописано наличие трёх блоков (Модель, Представление, Контроллер).
Соответственно, каждый функциональный модуль должен состоять из трёх блоков, что в свою очередь несколько усложняет архитектуру функциональных модулей программы.
3. Усложнился процесс расширения функционала.
Проблема очень похожа на описанную выше.
Недостаточно просто написать функциональный модуль и подключить его в одном месте программы.
Каждый функциональный модуль должен состоять из трех частей, и каждая из этих частей должна быть соединена в соответствующий блок.
Преимущества концепции MVC
1. Концепция единой системы.Несомненным преимуществом MVC является единая глобальная архитектура приложений.
Даже в сложных системах разработчики (как те, кто разработал систему, так и новые) могут легко ориентироваться в блоках программы.
Например, если возникает ошибка в логике обработки данных, разработчик сразу отбрасывает 2 блока программы (контроллер и представление) и изучает 3-й (модель).
Я часто удивлялся тому, насколько проще стала локализация проблем.
2. Упрощен механизм отладки приложений.
Поскольку весь механизм визуализации теперь сосредоточен в одном программном блоке, механизмы опционального отображения графических элементов были упрощены.
Не могу оценить, насколько это утверждение применимо в классическом прикладном программировании, но в веб-программировании эта особенность архитектуры стала несомненным плюсом.
выводы
Общее впечатление от использования концепции MVC было положительным.Трудности, которые привлекли мое внимание, скорее психологические (так было всегда, но сейчас по-другому).
При этом для меня остается открытым вопрос, в какой степени концепция MVC может быть применена при разработке обычных приложений (например, для Windows).
На первый взгляд кажется возможным, но не факт, что это будет оптимально.
Ну и самый главный вопрос: буду ли я использовать концепцию MVC в своих следующих проектах? Ответ: Я думаю, да.
Теги: #MVC #Разработка сайтов #программирование
-
Мечтательный Программист
19 Oct, 24 -
Как Iaas Помогает Франчайзи 1С: Опыт 1Cloud
19 Oct, 24 -
Почему Компания Меня Потеряла?
19 Oct, 24 -
Сервис Горвоздух В Темных Тонах
19 Oct, 24