Опыт Использования Model View Controller (Mvc), Выводы



Опыт использования Model View Controller (MVC), выводы

Недавно я завершил свой первый проект, реализованный по концепции Модель-Представление-Контроллер (MVC, хотя с технической точки зрения правильнее было бы CMV).

В статье я предлагаю читателю ознакомиться с моими личными впечатлениями от концепции.



Примечание

Все написанное в статье - мое личное мнение.

Вы, как читатель, не обязаны с ним соглашаться.

Цель статьи – познакомить читателя с другим мнением относительно общего понятия.



Мой путь к MVC

Некоторое время назад я решил создать свой собственный блог.

Повозившись некоторое время с WordPress, я пришел к выводу, что «там нет рыбы» (и сегодня, глядя на статистику обращений к сайту, я думаю, что отказ от WordPress был правильным решением).

В общем, проанализировав совокупность внешних факторов (мои знания, необходимое время разработки, дополнительные затраты на обслуживание и т. д.), я решил разработать все сам, с нуля.

И поскольку теперь мои руки были свободны (в выборе механизмов организации ПО), я решил опробовать на себе широко разрекламированную концепцию MVC (в предыдущих проектах я использовал модульный подход).



Мое понимание MVC

Поскольку в найденной мной технической документации используются весьма заумные формулировки (типа «использует модель и представление для реализации необходимой реакции»), я считаю необходимым написать своё понимание концепции MVC (чтобы не было недоразумений).

Итак, согласно концепции MVC, приложение должно состоять из 3 фундаментальных логических частей: контроллер, модель, представление.

Блок Контроллера – преобразует действия пользователя (в данном контексте пользователь не обязательно является человеком) во входные параметры для Модели и передает управление Модели.

Блок модели – реализует всю логику программы и подготавливает данные к отображению.

Блок просмотра – визуализирует результаты работы программы.

Каждое действие пользователя всегда запускает цепочку контроллер-> модель-> представление.

Опишем функции каждого блока контроллера подробнее:

  • загружает переменные среды (переменные POST/GET, параметры командной строки, параметры URL и т. д.);
  • выполняет первоначальную обработку переменных среды (проверка типов переменных, их наличия, установка значений по умолчанию и т. д.);
  • реализует механизмы контроля за чрезвычайными ситуациями;
  • реализует механизмы журналирования (не аутентификации, а протоколирования).

Модель:
  • осуществляет окончательную проверку входящих параметров (достоверность значений, диапазонов и т.п.

    );

  • реализует взаимодействие с системами хранения данных (базами данных, файлами, SOAP и т.п.

    );

  • реализует логику программы;
  • подготавливает данные для визуализации.

Вид:
  • организует механизмы визуализации результатов работы программы.

На данный момент проект перешел из стадии «разработки и внедрения» в стадию «сопровождения и расширения», и на данном этапе хотелось бы отметить следующие преимущества и недостатки концепции MVC (не претендую на объективные, чисто личные наблюдения).



Недостатки концепции MVC

1. Необходимость использовать больше ресурсов.

Сложность связана с тем, что все три фундаментальных блока полностью независимы и взаимодействуют друг с другом исключительно путем передачи данных.

Контроллер всегда должен загружать (и, при необходимости, создавать) все возможные комбинации переменных и передавать их в Модель.

Модель, в свою очередь, должна загрузить все данные для визуализации и передать их во Представление.

Например, при модульном подходе модуль может напрямую обрабатывать переменные среды и визуализировать данные, не загружая их в отдельные участки памяти.

2. Усложнился механизм разделения программы на модули.

В концепции MVC строго прописано наличие трёх блоков (Модель, Представление, Контроллер).

Соответственно, каждый функциональный модуль должен состоять из трёх блоков, что в свою очередь несколько усложняет архитектуру функциональных модулей программы.

3. Усложнился процесс расширения функционала.

Проблема очень похожа на описанную выше.

Недостаточно просто написать функциональный модуль и подключить его в одном месте программы.

Каждый функциональный модуль должен состоять из трех частей, и каждая из этих частей должна быть соединена в соответствующий блок.



Преимущества концепции MVC

1. Концепция единой системы.

Несомненным преимуществом MVC является единая глобальная архитектура приложений.

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

Например, если возникает ошибка в логике обработки данных, разработчик сразу отбрасывает 2 блока программы (контроллер и представление) и изучает 3-й (модель).

Я часто удивлялся тому, насколько проще стала локализация проблем.

2. Упрощен механизм отладки приложений.

Поскольку весь механизм визуализации теперь сосредоточен в одном программном блоке, механизмы опционального отображения графических элементов были упрощены.

Не могу оценить, насколько это утверждение применимо в классическом прикладном программировании, но в веб-программировании эта особенность архитектуры стала несомненным плюсом.



выводы

Общее впечатление от использования концепции MVC было положительным.

Трудности, которые привлекли мое внимание, скорее психологические (так было всегда, но сейчас по-другому).

При этом для меня остается открытым вопрос, в какой степени концепция MVC может быть применена при разработке обычных приложений (например, для Windows).

На первый взгляд кажется возможным, но не факт, что это будет оптимально.

Ну и самый главный вопрос: буду ли я использовать концепцию MVC в своих следующих проектах? Ответ: Я думаю, да.

Теги: #MVC #Разработка сайтов #программирование

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.