Даньшин К.А. студент магистратуры 2 курса отдел аспирантуры и магистратуры (Программная инженерия)
Поволжский Государственный Университет Телекоммуникаций и Информатики
Россия, г. Самара СРАВНИТЕЛЬНЫЙ АНАЛИЗ СОВРЕМЕННЫХ ВЕБ-ФРЕЙМВОРКОВ ДЛЯ РАЗРАБОТКИ ПРИЛОЖЕНИЙ
Аннотация: статья посвящена обзору популярных веб-фреймворкам, сравнению их производительности и рекомендациями по выбору того или иного фреймворка в проекте.
Ключевые слова: веб-приложение, ASP .NET Core, Laravel, Spring, Ruby in Rails, Django.
Danshin K.A. candidate for a master's degree
2nd year, Department of Graduate and Magistracy (Software engineering) Volga State University of Telecommunications and Informatics
Russia, Samara
COMPARATIVE ANALYSIS OF MODERN WEB FRAMEWORKS FOR DEVELOPING APPLICATIONS
Abstract: the article is devoted to reviewing popular web frameworks, comparing their performance and recommendations for choosing one or another framework in the project.
Keywords: web application, ASP .NET Core, Laravel, Spring, Ruby in Rails, Django.
Laravel
Laravel — это бесплатный опенсорсный PHP фреймворк для разработки веб-приложений по паттерну MVC.
Он был создан как альтернатива фреймворку Codeigniter, в котором было мало полезных функций для разработки веб-приложений. Laravel базируется на другом фреймворке - Symfony.
Плюсы:
• Достаточно неплохая и понятная документация.
• Большое комьюнити и экосистема.
• Гибкий роутинг.
• Удобный механизм обработки ошибок и исключений.
• Механизмы аутентификации и авторизации пользователей идут «из коробки».
• Хеширование с помощью Memcached и Redis и файловое кэширование.
Минусы:
• Документация на английском языке.
• Отсутствует обратная совместимость между версиями фреймворка.
• Не логичное расположение каталогов и файлов. Ruby on Rails
Ruby — динамический язык программирования с упором на простоту и скорость разработки. Он имеет удобный синтаксис, который легко читать и писать.
Ruby on Rails — фреймворк, написанный на языке программирования
Ruby.
Плюсы:
• Объектно-ориентированное программирование.
• Активное комьюнити.
• Удобный синтаксис.
• Поддержка гемов.
• Поддержка QC++ кода. Минусы:
• Сложность в изучении.
• Мало документации на русском языке.
• Обладает меньшей производительностью по сравнению с другими языками, применяемыми в веб-разработке.
• Относительно медленно развивается и разрабатывается. Django
Django — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC. Плюсы:
• Простота в изучении.
• Чистота и читаемость.
• Разносторонность.
• Быстрота написания.
• Цельный дизайн.
• Безопасность.
• Полная комплектация.
• Масштабируемость. Минусы:
• Использование шаблона маршрутизации с указанием URL.
• Монолитность.
• Все базируется на ORM Django.
• Компоненты развертываются совместно.
• Для разработки необходимо знать об всех зависимостях проекта и что делает тот или иной участок кода.
Java Spring
Spring Framework, или просто Spring — один из самых популярных фреймворков для создания веб-приложений на Java. Использует паттерн MVC.
Плюсы:
• Имеет модульную структуру.
• Возможность использовать не только в вебе.
• Поддержка ЯП Kotlin.
• Поддержка С/С++ кода.
• Слабая связанность.
• Упрощение инициализации и настройки компонентов.
• Упрощение модульного тестирования.
• Упрощение разработки и поддержки приложения в целом. Минусы:
• Конфигурация в XML.
• Импортирование других Spring-файлов.
• Сложность обучения. ASP .NET Core 2
ASP.NET Core является кроссплатформенной,
высокопроизводительной средой с открытым исходным кодом для создания современных облачных приложений, подключенных к Интернету. ASP.NET Core позволяет выполнять следующие задачи:
• Создавать веб-приложения и службы, приложения IoT и серверные части для мобильных приложений.
• Использовать избранные средства разработки в Windows, macOS и
Linux.
• Выполнять развертывания в облаке или локальной среде.
• Работать в .NET Core или .NET Framework. Плюсы:
• Удобство использования.
• Кроссплатформенность.
• Масштабируемость.
• Поддержка С/С++ кода.
• Слабая связанность.
• Надежность.
• Безопасность.
• Портативность.
• Упрощение модульного тестирования.
• Упрощение разработки и поддержки приложения в целом. Минусы:
• Обновление бэкенда перезапуском.
• Посредственный дебаг на *Unix системах. Сравнение производительности фреймворков
Фреймворк Простой текст Fortunes Запрос Мультизапрос
ASP NET Core 2 500 70 60 460
Java Spring 2,600 130 100 1,410
Django 1,500 200 130 1,580
Ruby on Rails 3,100 470 300 740
Laravel 3,200 1,170 1,150 1,460
Таблица 1. Сравнение скорости ^ ответа сервера в мс.
Фреймворк Простой текст Fortunes Запрос Мультизапрос
ASP NET Core 2 417,000 7,300 9,600 1,100
Java Spring 50,300 4,200 5,100 350
Django 20,600 2,700 4,100 300
Ruby on Rails 2,900 1,300 1,600 190
Laravel 560 440 460 135
Таблица 2. Сравнение количества ответов сервера в сек. Вывод: среди данных фреймворков бесспорным лидером по производительности является ASP .NET Core 2. Но в реальности, выбор фреймворка зависит от множества факторов, таких как: количество специалистов на рынке труда, знающих выбранный фреймворк на должном уровне, стоимость разработки на выбранном фреймворке, требования к хост-машине (ОС, технические характеристики) и др. Т.е. выбор фреймворка должен учитывать вышеперечисленные факторы, а так же плюсы и минусы фреймворка. Но стоит отметить то, что оптимальными фреймворками для разработки enterprise-решений являются ASP .NET Core 2 и Java Spring.
Использованные источники:
1. Laravel - The PHP Framework For Web Artisans // Laravel. URL: https://laravel.com/ (дата обращения: 15.05.2019).
2. A web-application framework that includes everything needed to create database-backed web applications according to the Model-View-Controller (MVC) pattern. // Ruby on Rails URL: https://rubyonrails.org/ (дата обращения: 15.05.2019).
3. The Web framework for perfectionists with deadlines | Django // Django URL: https://www.djangoproject.com/ (дата обращения: 15.05.2019).
4. Spring // Spring. URL: https://spring.io/ (дата обращения: 15.05.2019).
5. Введение в ASP.NET Core // ASP.NET Core. URL: https://docs.microsoft.com/ru-ru/aspnet/core/?view=aspnetcore-2.2