Диссертации - Разработка web-ориентированного приложения на php-фрэймворке Laravel с использованием шаблона проектирования HMVC

Анализ технологий разработки Web-приложений - Выводы по главе 1

Обоснование выбора Xubuntu. По всем критериям сравнения Linux превосходит другие системы, что обосновывает наш выбор Linux-подобной операционной системы. Из множества таких систем была выбрана Xubuntu, т.к. она поставляется вместе с встроенным сервером Apache2 и необходимыми серверными технологиями.

Обоснование выбора HMVC.

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

Проблема первая. На практике обычно приходиться оперировать одновременно несколькими моделями, например: статьи, пользователи, комментарии. В принципе, это не критично, паттерн MVC это предусматривает, но это увеличивает количество зависимостей — вид и контроллер зависят более чем от одной модели, а от одной модели зависят более одного вида и контроллера.

Проблема вторая. Для отображения данных из разных моделей хотелось бы использовать виды созданные специально для них. Например, выглядит логичным отображение комментариев одинаково для статей и для товаров. Такое классический MVC не предусматривает, но это частично обходится использованием шаблонов. Т.е. используется один вид который получает данные из моделей, а для отображения их отображения используется комбинация нескольких шаблонов. И снова увеличивается количество зависимостей.

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

Поскольку проблемы возникают из-за того, что вместо MVC получается что-то наподобие MMMVVVCC, где каждая модель вид и контроллер могут принадлежать разным системам, ответ очевиден — вернуться к MVC в котором есть лишь по одной модели, виду и контроллеру.

Важной отличительной особенностью HMVC является использование в приложении только жестко фиксированных триад модель-вид-контроллер, которые взаимодействуют с остальными подсистемы через контроллер. На первый взгляд, может показаться, что для возможности реализации HMVC достаточно возможности вызова контроллера из другого контроллера. Но в web-приложении поведение зависит не просто от команды переданной контроллеру, а от http-запроса в целом. И модель и вид могут сами анализировать запрос и некоторым образом изменять свое поведение. Поэтому требуется возможность передать запрос другому контроллеру, причем не обязательно тот же, что был получен. Сделать это можно тремя различными методами.

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

В серверных фрэймворках контроллеры выполняют основную логику запроса. Это обосновывает выбор шаблона проектирования HMVC, а следовательно и фрэймворк – Laravel (The best php framework).

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

Ключевые особенности, лежащие в основе архитектуры Laravel:

– Логика приложения работает по шаблону проектирования HMVC.

– Пакеты (англ. Packages), которые позволяют создавать и подключать модули в формате Composer к приложению на Laravel. Многие дополнительные возможности уже доступны в виде таких модулей.

– Обратная маршрутизация связывает между собой генерируемые приложением ссылки и маршруты, и позволяет изменять последние с автоматическим обновлением связанных ссылок. При создании ссылок с помощью именованных маршрутов Laravel автоматически генерирует конечные URL.

– Автозагрузка классов — механизм автоматической загрузки классов PHP без необходимости подключать файлы их определений в include. Загрузка по требованию предотвращает загрузку ненужных компонентов; загружаются только те из них, которые действительно используются.

– Составители представлений (англ. view composers) — блоки кода, которые выполняются при генерации представления (шаблона).

– Инверсия управления (англ. Inversion of Control) — позволяет получать экземпляры объектов по принципу обратного управления. Также может использоваться для создания и получения объектов-одиночек (англ. singleton).

– Миграции — система управления версиями для баз данных. Позволяет связывать изменения в коде приложения с изменениями, которые требуется внести в структуру БД, что упрощает развёртывание и обновление приложения.

– Модульное тестирование (юнит-тесты) — играет очень большую роль в Laravel, который сам по себе содержит большое число тестов для предотвращения регрессий (ошибок вследствие обновления кода или исправления других ошибок).

– Потраничный вывод (англ. pagination) — упрощает генерацию страниц, заменяя различные способы решения этой задачи единым механизмом, встроенным в Laravel.

Для работы с базами данных использовался самый популярный в этой области язык – MySQL.

Архитектура MySQL сильно отличается от архитектур иных серверов баз данных и делает эту СУБД удобной для разработки web-приложений. Логический вид архитектуры MySQL представлен тремя уровнями.

На верхнем уровне располагаются службы, не являющиеся уникальными компонентами MySQL, которые необходимы для обслуживания соединений, аутентификации и обеспечения безопасности. Второй уровень — это уровень оптимизации и кэширования запросов, а также встроенных функций — даты, времени и шифрования. Третий уровень содержит системы хранения данных.

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

– построение индексов путем сортировки;

– возможность добавления и удаления индексов без перестройки всей таблицы;

– особый формат хранения данных, сжимающий данные;

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

Количество комментариев: 0

Для того, чтобы оставить коментарий необходимо зарегистрироваться


Изображения Видео

2. Интеграционные среды разработок Java режим доступа: http://habr.com/post/140745/. Дата доступа 19.05.2019.
3. PHP Режим доступа: https://ru.wikipedia.org/wiki/PHP. Дата доступа 19.01.2019.
4. ГОСТ 19.105-78 Общие требования к программным документам Режим доступа: http://rugost.com/index.php?option=com_content&view=article&id=52:19105. Дата доступа 19.01.2019.