Главная / Блог / Недостатки MVC

Недостатки MVC

11

24.07.2022

Обновлено: 24.07.2022

Время прочтения: 127.0.0.1

Василий Кулик программист

Кулик Василий

Недостатки MVC

Вступление:

MVC - он же M(модель) - V(вид) - C(контроллер), сильно возлюбленный и широко используемый в популярнейших PHP Framework и проектов созданных с нуля.

Вы увидите наоспоримые доказательсова недостатков, основанные на проведении численных и правильных тестирований.

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

Почему так происходит? Причина проста. Больше скопировал - больше заработал.

Готовы узнать о недостатках, о которых не подозреваете?

План разбора недостатков:

Много кода:

Все недостатки ООП, относятся к этой теме, поскольку MVC использует парадигму объектов. За эти годы людям настолько вдолбали в голову, что без ООП ничего нереально и большинство в это поверило. Неважно, какая задача и кто бы ее не решал - все на ООП.

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

Кто знаком с термином "процедурный стиль" знает, что используя function(){} кода получается меньше, при этом многочисленный набор функций остается. Но никто из Вас не догадывается, что можно обойтись вообще без function(){} и кода будет до 70% меньше.

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

Часто одна, или несколько функций. Получается невызванные функции забирают лишние ресурсы памяти и мощности процессора. К этому ещё вернемся!

Очень много действий движка PHP

Получив запрос, приложение PHP тратит много действий на обработку ООП: чтение большого файла и загрузка в ОЗУ -> синтасчический анализ кода -> создание экземпляра класса, запись переменной объекта в ОЗУ -> вызов конструктора (если он есть) -> обращение к переменной объекта -> вызов нужных функций. На много больше действий, по сравнению с структурным стилем программирования.

В попытках написания самого генеального и максимально чистого кода на ООП - лишних действий интерпрератору не избежать! Вызов простой function(){} требует гораздо меньше этапов!

Пожерание ОЗУ

Самый чистый MVC способен на беспощадное пожерание памяти, несмотря на отсутствие соединений с БД, вызов функций бизнес логики. Речь идет о проверке части кода определения нужного контроллера, экшена и вызова. Результаты потребления ОЗУ следующие:

Большое потребление ОЗУ в сравнении с нашими проектами на чистом коде (html, css, javascript, php):

Это еще не все! Необходимо посчитать, у сколько раз больше потребляет ОЗУ проект MVC за проекты на чистом коде:

В примере сравнивается простой проект MVC с более сложными! Почему так, спросите Вы ? Мы не используем MVC в наших проектах!

Долгое время выполнения php кода

Чем больше файл - тем больше в нем кода, а соответственно и количество программных действий! MVC построен на ООП, которое само по себе притормаживает.

Если сравнить язык Си с PHP - по скорости он в разы быстрее, даже с ООП. Здесь никаких секретов нет, поскольку язык компиляционный быстрее за интерпретационный.

Компилятор Си один раз прочитает ООП и создаст исполняемій файл, с машинным кодом, который после запуска работает быстро.

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

Почти никто не принимает во внимание скорость работы оборудования по разным причинам: недостаточная квалификация, быстрые и легкие деньги!

Не мало ученых предупреждали о серьезных проблемах с производительностью подхода ООП. Еще на первых этапах воплощения.

В основной массы создателей сайтов позиция такова:

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

Углубимся в недостатки MVC. Скорость выполнения PHP скриптов невероятно важна в веб-программировании. Оказывает прямое влияние на время ответа сервера, отказоустойчивость при атаках и больших посещениях.

Сравним время работы простого проекта MVC с нашими более сложными по функционалу проектами на чистом коде:

Время интерпретации реальных проектов на чистом коде:

Если Вы уверены, что миллисекунды роли не играют - Вы сильно ошибаетесь! Предлагаю посчитать, у сколько раз наши проекты работают быстрее:

Но и это ещё не все! Возможно, Вам такая разница покажется ерундой - Вы опять ошибаетесь! Ступенька за ступенькой приближаемся к розвязке недостатков mvc и следующий этап - нагрузоные тестирования.

Нагрузочное тестирование

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

Перед запуском тестов, кратко и просто, предлагаю вспомнить принцып работы HTTP-сервера Apache и PHP.

Apache самый популярный и отказоустойчив HTTP-сервер принимает запросы пользователей к серверу на выдачу страниц сайтов. После чего вызывается приложение php, для обработки php кода.

Конечным этапом после успешного выполнения кода приложением php, Apache занимается передачей страницы клиенту.

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

Безусловно, простой проект на mvc проигрывает по всех смыслах. Начинаем запуск нагрузочных тестов. Для этого понадобится Apacje Jmetr с созданным тест планом, доступным для скачивания.

создание тестировочного плана

Начнем с 700 пользователей за 1 сек, с повторением 1 раз. Запустив тест простого проекта на mvc смотрим результат:

создание тестировочного плана

Результат плохой в сравнении с результатами интернет-магазина на чистом коде:

создание тестировочного плана

Этап тестирований в разгаре, увеличиваем нагрузку в трое:

Проверка проекта mvc:

создание тестировочного плана

Проверка проекта на чистом коде:

создание тестировочного плана

Кто из Вас не принимал во внимание миллисекунды - получите и распишитесь! Время работы php скриптов крайне важно в веб-программировании и нагрузочные тестирования это неоднократно подтверждают.

Безусловно, CMS-системы проигрывают намного больше, поскольку время работы скриптов php в 180-500 раз медленнее за проекты на чистом коде. Они будут протестированы в одном из следующих выпусков.

Незадействанный код

Незадействованный код - один из весомых недостатков mvc. В тестируемом проекте, присутствует функционал регистрации и личных кабинетов. Для показа страницы регистрации и отправки формы используется UserController, состоящий из трех функций:

После отправки формы регистрации, роутер вызывает функцию "actionRegister", при этом две остальные функции воспринимаются незадействованными, забирая ресурсы ЦП, ОЗУ сервера.

Функция "actionRegister" во время работы обращается к классу User, модели для работы с пользователями, состоящей из 11-ти функций:

Из класса User, вызваны 5 функций, а остальные 6 остались ненужными. Получая запрос от пользователя на выдачу каких-либо других страниц, интерпретатор php аналогично вынужден загружать эти гиганские файлы объектов, вызывая всего лишь одну, или несколько функций.

Это мертвый, незадействованный код в паттернах mvc в стиле ООП! Учёные об этом предупреждали.

Заключение

К сожалению, беспредел на рынке IT-индустрии продолжается и самой главной причиной служит желание заполучить легкие деньги!

Ведь чтобы сделать программный продукт, лучший по техническим характеристикам за 99% готовых решений необходимо упорно набираться коллосального опыта более 5 лет, забыв о легких путях, длительностью 1-3 месяцев, для изучение документации чужих решений mvc.

С причинами, порождающие недостатки mvc и мифами о миллисекундах Вы знакомы. Старайтесь не использовать ООП и MVC в проектах. Пишите каждую программу отдельно и тогда Ваш проект будет работать так быстро, как наши проекты, написанные на чистом коде (html, css, JavaScript, php).

Что-то не понятно?
Спросите у нас и мы обязательно Вам поможем!

Отправляя форму, Вы подтверждаете указание своего e-mail адреса.

Рекомендуемые статьи этой категории

Идеи для дизайна сайта

Примеры самых красивых дизайнов от лучших дизайнеров на топовых платформах мира. Берите идеи и создавайте лучшие дизайны своих сайтов, для привлечения клиентов и улучшения продаж и успехов в SEO.

Подробнее
Как выбрать хостинг

Выбор хостинга, виртуального сервера(VPS), физичесского сервера, для Вашего проекта с ориентировкой на цену, посещаемость и безопасность. Современный и проверенный алгоритм выбора хостинга и сервера, чтобы Ваш сайт попал гарантированно в ТОП!

Подробнее
Ошибки в верстке новичков и опытных

ТОП распространенных ошибок верстальщиков и методы исправления. Скриншоты результатов ошибок и примеры кода, для их устранения.

Подробнее
Оптимизация верстки + 10 трендовых фишек

Узнайте о фишках оптимизации вашей верстки HTML+CSS и ваши сайты станут еще быстрее, лучше и с высокой оценкой качества. Вы узнаете о легком способе оптимизации изображений, шрифтов, текста и кода.

Подробнее

Оставить заявку