В настоящее время любое web-приложение состоит из множества технологий, каждая из которых реализует одну из основных структурных частей проекта: frontend-внешняя оболочка приложения, backend- серверная часть и специальное api для взаимодействия между ними.
Так как серверная часть является основным элементом разработки, реализующим внутри себя все логические и бизнес процессы, выбор средства разработки является существенной частью web-разработки.
В настоящее время для разработки back-end части приложения используются специальные фреймворки - библиотеки, написанные на языках программирования, предназначенные для реализации определенного ряда задач.
Основными фреймворками, использующимся в современной backend разработке на python являются Django, Flask и FastApi. Рассмотрим подробнее каждую из перечисленных технологий.
Django - это бесплатная платформа веб-разработки на Python с открытым исходным кодом, используемая при создании веб-сайтов. Он был создан в 2003 году c использованием шаблона Model-Template-View. Он популярен благодаря своей надежной и простой природе. Это один из самых популярных фреймворков во всем мире. Основными плюсами Django являются:
- Эффективная структура кода, позволяющая разработчикам добавлять большое количество функций на свои веб-сайты.
- DjangoRestFramework, являющийся гибким набором инструментов для разработки WebAPI для Django проектов.
- Разработка WebAPI достаточно проста, в связи с модульностью и настраиваемой архитектурой библиотеки.
- Высокая степень безопасности, включающая защиту от SQL-инъекций и DDos-атак
Однако Django имеет ряд минусов:
- В связи с громоздкой архитектурой Django проекта, скорость разработки может быть ограничена из-за множественного повторного использования одних и тех же модулей.
- Отсутствие миксинов в моделях.
- DjangoORM хуже чем SQLAlchemy
Основные способы использования Django – разработка веб-проектов любого размера, таких как:
- Механизмы бронирования с высокой нагрузкой
- Торговые платформы
- Приложения для мобильных устройств, поддерживающие веб-приложения
- Помимо этого django позволяет реализовывать различные функции, такие как панели администрирования или отправка электронных писем.
Следующим фреймворком является Flask - это микро-веб-фреймворк, написанный на Python. Flask поставляется с такими опциями, как механизмы шаблонов, ORM, кэширование и аутентификация. Основной целью разработки данного фреймворка было создание простого и быстрого средства масштабирования сложных приложений и микросервисов. Основными плюсами данного фреймворка являются:
- Высокая степень гибкости. Большинство структурных частей Flask могут быть изменены.
- Возможность проведения модульного тестирования.
- Данный фреймворк очень удобен для начинающих, ввиду своей простоты.
Однако можно выделить следующие минусы:
- В связи с тем, что Flask включает в себя набор внешних модулей,могут возникнуть сложности с обеспечением безопасности.
- Отсутствие асинхронной обработки запросов.
Основной способ использования Flask - разработка простых комерческих проектов, таких как:
- Системы электронной коммерции
- Боты
- Статические сайты
Следующий фреймворк FastAPI - это современный, быстрый и высокопроизводительный веб-фреймворк Python с открытым исходным кодом, используемый для создания веб - API.
Можно выделить следующие плюсы в данном фреймворке:
- FastAPI проверяет тип данных разработчика даже в глубоко вложенных запросах JSON.
- FastAPI построен на таких стандартах, как JSON Schema (инструмент, используемый для проверки структуры данных JSON), OAuth 2.0 (это стандартный отраслевой протокол для авторизации) и OpenAPI (общедоступный интерфейс прикладного программирования)
- FastAPI упрощает создание API GraphQL с помощью библиотеки Python, называемой graphene-python.
Минусы:
- Поскольку FastAPI является относительно новым, сообщество разработчиков невелико по сравнению с другими фреймворками, и, независимо от его подробной документации, внешних образовательных материалов очень мало.
С помощью FastAPI Netflix управленяет внутренними кризисами. Он также отлично масштабируется при развертывании готовых к производству моделей машинного обучения, потому что модели ML лучше всего работают в производстве, когда они обернуты вокруг REST API и развернуты в микросервисе.
Таким образом данные фреймворки можно сравнить с помощью следующих критериев:
Количество модулей: среди Django, Flask и FastAPI у Django больше всего модулей, которые позволяют повторно использовать код. Это платформа веб-разработки с полным стеком, в отличие от Flask и FastAPI, которые являются минималистичными фреймворками, используемыми для создания быстрых веб-сайтов.
Размер сообщества: у Django самое крупное сообщество из-за его широкого использования и популярности после Flask, у которого также есть большое сообщество.
Производительность: по производительности FastAPI является лидером, потому что он ориентирован на скорость, затем следует Flask и, наконец, Django, который не очень быстрый.
Гибкость: Flask более гибкий, чем Django. С другой стороны, Fast API является гибким с точки зрения кода и не ограничивает компоновку кода. Таким образом, мы можем сказать, что Flask является наиболее гибким среди всех трех.
Вакансии: несомненно, в веб-экосистеме Python есть больше вакансий с требованиями Django, далее идет Flask и, наконец, Fast API, у которого гораздо меньше возможностей, поэтому, если вы стремитесь быстро получить работу, тогда Django должен быть вашим кандидатом.
Образование: Django более сложен в освоении, но имеет много онлайн-материалов и ресурсов. Flask прост и понятен, а также содержит множество онлайн-материалов и ресурсов, в то время как Fast API является самым простым, если вы начинаете с веб-разработки, но у вас наименьшее количество онлайн-ресурсов.
Таким образом Django идеально подходит, для создания надежных веб-сайты, потому что он имеет множество функциональных возможностей и очень хорошо работает в производстве. Flask идеально подходит для инженеров по машинному обучению или разработчиков, которые хотят быстро создать прототип веб-приложения и легко и быстро создавать API. В то же время FastAPI идеально подходит, если основными критериями являются скорость или масштабируемость.
Список литературы
- Владимир Дронов Django: практика создания Web-сайтов на Python / Владимир Дронов. - М.: БХВ-Петербург, 2016. - 328 c. - 214 c.
- Владимир Дронов HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов / Владимир Дронов. - М.: БХВ-Петербург, 2020. - 1156 c.
- С.В. Черников Dreamweaver CS3. Строим Web-сайты (+ CD-ROM) / С.В. Черников, Ф.А. Резников. - М.: 100 книг, Триумф, 2019. - 256 c.