Фреймворки упрощают разработку, ликвидируют хаос и задают понятные рамки при создании приложения.
При этом каждый фреймворк имеет определенный набор готовых инструментов — проверенных опытом технических решений, ускоряющих и облегчающих разработку.
В этой статье мы рассмотрим 10 самых популярных фреймворков для backend-а в 2024 году, без которых сегодня не обходится практически ни одно приложение.
❯ Задачи серверных фреймворков
Как правило любое серверное приложение выполняет набор типовых функций:
Роутинг. Обработка пользовательских запросов по REST API.
Аутентификация. Выполнение регистрации и авторизации пользователей.
Логика. Реализация основной логики серверного приложения: генерация содержимого страниц, управление корзиной, обработка сообщений и т.д.
Хранение. Подключение к (удаленной) базе данных, запись, чтение и сортировка информации.
Платежи. Обработка платежных транзакций.
Расширения. Поддержка стороннего программного обеспечения (библиотеки и фреймворки), необходимого для управления внешними устройствами: смартфонами, персональными компьютерами, серверами и т.д.
Микросервисы. Коммуникация с удаленными приложениями (например, микросервисами) через REST API.
Хороший backend-фреймворк должен удовлетворять вышеперечисленным критериям, обеспечивая работоспособность, безопасность и производительность готового продукта.
❯ 1. ASP.NET Core
ASP.NET Core — это кроссплатформенный фреймворк от компании Microsoft, который используется для создания современных веб-приложений и API.
Фреймворк используется совместно с языком программирования C# и и запускается на платформах Windows, Linux и macOS.
При этом ASP.NET Core не ASP.NET Framework, а его эволюционное продолжение — современное, кроссплатформенное, модульное и универсальное решение.
Фреймворк использует классический шаблон проектирования MVC для разделения данных и логики, отчего весь код приложения делится на 3 части:
Модель
Представление
Контроллер
Информация
Язык программирования: C#
Разработчик: Microsoft
Первый релиз: 2016
Особенности
Кроссплатформенность. Позволяет разрабатывать и разворачивать приложения на большинстве популярных операционных системах: Windows, Linux, macOS.
Производительность. Оптимизирован для высокой производительности и масштабируемости, благодаря чему приложения способны обрабатывать большое количество запросов.
Модульность. Задействует только необходимые компоненты, делая приложение легковесным и гибким.
Поддержка. Активно поддерживается и обновляется Microsoft, что гарантирует доступ к новым функциям, исправлениям ошибок и улучшениям безопасности.
Инструменты. Интегрируется с современными инструментами разработки, такими как Visual Studio и Visual Studio Code.
Аудитория
За счет своей гибкости платформа APS.NET Core подойдет не только для веб-разработки с ее клиентскими сервисами, но и для мобильной разработки, где игры и приложения требуют сложной backend-логики и быстрого взаимодействия с базами данных.
Однако несмотря на свою кроссплатформенность, ASP.NET Core в больше степени сосредоточен на разработчиках и пользователях платформы Windows.
Особенно полезным фреймворк окажется для крупных предприятий и корпоративных разработчиков, которым важно создавать масштабируемые, высокопроизводительные и отказоустойчивые приложения и микросервисы, структура и архитектура которых будет более строгой и понятной.
Код
Пример того, как может выглядеть простой код роутера в APS.NET Core. в рамках шаблона MVC:
Модель:
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
Контроллер:
public class BooksController : Controller
{
public IActionResult Details(int id)
{
ViewBag.Id = id;
return View();
}
}
Представление:
@{
ViewData["Title"] = "Details";
int id = ViewBag.Id;
}
<h1>Details</h1>
Book Id : @id
❯ 2. Django
Django — это свободно распространяемый высокоуровневый фреймворк, написанный на языке программирования Python, который аналогично использует шаблон проектирования MVC.
Это модульный фреймворк, который активно использует принцип «Don't Repeat Yourself» (DRY, «Не повторяй себя»), который помогает сократить избыточность кода и упростить его поддержку.
Каждый проект Django состоит из множества приложений (apps), которые можно разрабатывать и тестировать отдельно. Благодаря этому приложения можно повторно использовать в разных проектах.
Важная особенность фреймворка — инструмент Object-Relational Mapping (ORM), который позволяет управлять реляционной базой данных исключительно с помощью кода на Python без написания SQL-запросов.
Информация
Язык программирования: Python
Разработчик: Django Software Foundation
Первый релиз: 2005
Особенности
Переиспользуемость. Модульная архитектура позволяет легко переиспользовать код и избегать дублирования.
Инструменты. Фреймворк поставляется с широким набором встроенных функций, доступных «из коробки»: система аутентификации, админ-панель, роутер, менеджер баз данных.
Поддержка. Фреймворк предоставляет подробную и хорошо структурированную документацию, что делает его легким для изучения и использования. Также большое сообщество разработчиков постоянно вносит вклад в развитие фреймворка и регулярно предлагает решения множества проблем.
Аудитория
Встроенные функции и модульная архитектура Django позволяет быстро создавать и развертывать MVP (Minimum Viable Product) приложений. По этой причине фреймворк больше всего подходит стартапам и небольшим компаниям.
При этом Django хорошо масштабируется, отчего может стать неплохим решением для корпоративного уровня.
Код
Вот так может выглядеть кусок кода на Django, определяющий роутинг пользовательских запросов:
from rest_framework import routers
from collaborativeAPP import views
router = routers.DefaultRouter()
router.register(r'get_one', views.OneViewSet)
router.register(r'get_two', views.TwoViewSet)
router.register(r'get_three', views.ThreeViewSet)
urlpatterns = patterns(
...
url(r'^service/', include(router.urls))
)
...
❯ 3. Laravel
Laravel — популярный PHP-фреймворк для разработки веб-приложений, который также следует шаблону MVC.
Он известен своим понятным синтаксисом, удобным шаблонизатором Blade и встроенным инструментом автоматизации задач Artisan CLI.
Этот фреймворк упрощает рутинные задачи, ускоряет разработку и обеспечивает высокую производительность приложений.
Он также поддерживается большим сообществом и имеет обширную документацию, что делает его доступным инструментом для разработки современных веб-приложений.
Информация
Язык программирования: PHP
Разработчик: Taylor Otwell + сообщество
Первый релиз: 2011
Особенности
Синтаксис. Фреймворк известен своими высокоуровневыми абстракциями, а также простым, элегантным и выразительным синтаксисом, который упрощает написание и чтение кода. Это делает его доступным даже для начинающих разработчиков.
Шаблонизация. Фреймворк имеет встроенную систем шаблонизации, которая позволяет использовать простой и мощный синтаксис для создания динамических веб-страниц.
Сообщество. У Laravel есть большое и активное сообщество разработчиков, которое создает дополнительные пакеты для фреймворка.
Аудитория
Лаконичность синтаксиса Laravel будет очень кстати для начинающих разработчиков на PHP или фрилансеров, желающих добавить больше функциональности в разрабатываемые проекты.
Кстати, благодаря своей простоте и выразительности, Laravel часто используется в образовательных программах для обучения веб-разработке.
При этом разработчики из небольших стартапов могут быстро тестировать различные гипотезы с помощью Laravel.
Код
Небольшой кусок кода, демонстрирующий синтаксис роутинга в Laravel:
Route::match(array('GET', 'POST'), '/', function()
{
return 'Main Page';
});
Route::post('foo/bar', function()
{
return 'Foo and Bar';
});
Route::get('user/{id}', function($id)
{
return 'User '.$id;
});
❯ 4. Ruby on Rails
Ruby on Rails (или просто Rails) — это популярный фреймворк для разработки веб-приложений, написанный на языке программирования Ruby, который предоставляет разработчикам готовую структуру для написания кода.
Главной особенность Ruby on Rails — принцип «Convention over Configuration» (Соглашение вместо конфигурации), который кардинально меняет разработку веб-приложения, делая ее более интуитивной и продуктивной.
Вместо того чтобы заставлять разработчиков писать обширные конфигурационные файлы, Rails предполагает подходящую конфигурацию заранее, что значительно сокращает объем кода, который нужно написать самостоятельно.
Информация
Язык программирования: Ruby
Разработчик: David Heinemeier Hansson
Первый релиз: 2004
Особенности
Скорость. Благодаря стандартным соглашениям фреймворка, разработчики могут быстрее приступить к созданию функциональности приложения, минуя этапы настройки и конфигурирования.
Стандартизация. Помимо ускорения разработки, единые соглашения «по умолчанию» упрощают чтение и понимание кода, что облегчает совместную работу в команде.
Безопасность. В Rails есть встроенные механизмы безопасности, такие как защита от SQL-инъекций, атак XSS и CSRF и т.п.
Аудитория
Скорость разработки — основная фишка Ruby on Rails. Поэтому фреймворк порадует тех, кому нужно очень быстро собрать прототип проекта и проверить работоспособность различных фич.
В некоторых случаях использование готовой CMS при создании веб-сайта может лишить проект гибкости, либо добавить в него излишне тяжелый функционал. В этом случае можно воспользоваться Rails и с малыми усилиями написать свой собственный движок для веб-приложения.
Код
Небольшой пример синтаксиса Ruby on Rails, в котором реализуется контроллер вывода статей:
class ArticlesController < ApplicationController
def index
@articles = Article.recent
end
def show
@article = Article.find(params[:id])
fresh_when etag: @article
end
def create
article = Article.create!(article_params)
redirect_to article
end
private
def article_params
params.require(:article).permit(:title, :content)
end
end
❯ 5. Express.js
Express.js — это самый популярный (а возможно самый лучший фреймворк для бэкенда вообще) минималистичный веб-фреймворк на платформе Node.js, с помощью которого можно создавать гибкие HTTP-серверы с применением RESTful API.
Это довольно мощный инструмент, который подходит для широкого круга разработчиков благодаря своей простоте и обширной экосистеме.
Информация
Язык программирования: JavaScript
Разработчик: Strongloop и IBM
Первый релиз: 2010
Особенности
Лаконичность. Простой и понятный синтаксис на языке программирования JavaScript.
Гибкость. Фреймворк не навязывает жесткую структуру проекта, позволяя разработчикам проектировать свою собственную архитектуру приложения.
Изоморфность. Благодаря Express.js можно унифицировать проект, используя JavaScript как на стороне клиента (в браузере), так и на стороне сервера (с Node.js).
Библиотеки. Существование Express.js на платформе Node.js означает, что вместе с фреймворком у разработчика есть возможность использовать десятки тысяч полезных пакетов, выполняющих различные функции на стороне сервера. Например, сериализацию данных, математические расчеты, запись в базы данных, управление сетевыми подключениями и т.д. Все эти пакеты, как и сам Express.js, написаны на одном и том же языке программирования — JavaScript.
Зарекомендованность. Несмотря на наличие множества других современных веб-фреймворков для платформы Node.js, за счет многолетней поддержки Express.js является наиболее проработанным и, можно сказать, классическим вариантом.
Аудитория
Начинающие разработчики на Node.js однозначно должны ознакомится с Express.js и взять его на вооружение — в 9 из 10 случаев работа с веб-приложениями будет строиться с применением именно этого фреймворка.
Так как Express.js написан на JavaScript, он может стать отличным проводником в мир backend-а для frontend-разработчиков, которые смогут легко и быстро создавать серверную часть для своих приложений, тем самым обеспечивая fullstack-разработку.
Ну а для разработчиков RESTful API этот фреймворк однозначно «must have».
За счет своей популярности и абсолютности реализации, многие считает Express.js единственным подходящим JS-фреймворком для backend-а.
Код
Самое простое приложение на Express.js выглядит примерно так:
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Добро пожаловать!')
})
app.listen(port, () => {
console.log(`Это приложение прослушивает порт ${port}`)
})
❯ 6. CakePHP
CakePHP — это open-source-фреймворк для разработки веб-приложений на PHP, который построен на архитектурном шаблоне MVC.
Изначально CakePHP задумывался как клон фреймворка Ruby on Rails, но только на PHP, поэтому многие идеи были заимствованы именно оттуда:
Своя структура файлов
Расширение функционала с помощью плагинов
Инструменты абстрагирования данных
Поддержка большого числа баз данных
Информация
Язык программирования: PHP
Разработчик: Cake Software Foundation
Первый релиз: 2005
Особенности
Генерация. Специальный инструмент генерации кода Bake позволяет быстро создавать скелеты моделей, контроллеров и представлений, что ускоряет процесс разработки.
Структура. Фреймворк предполагает готовую структуру каталогов для файлов и классов. Если разработчики следуют этой структуре, фреймворк автоматически подключает нужные файлы без дополнительной настройки.
Автомаршрутизация. Фреймворк автоматически связывает URL с соответствующими контроллерами и действиями, что упрощает создание маршрутов для веб-приложения.
Аудитория
CakePHP довольно универсален. Он подойдет как небольшим стартапам, так и крупным предприятиям. С другой стороны, инструментарий CakePHP достаточно разнообразен, поэтому начинающим разработчикам понадобится время, что во всем разобраться.
Код
Пример контроллера статей, взятый из официальной документации:
namespace App\Controller;
class ArticlesController extends AppController
{
public function index()
{
$this->loadComponent('Paginator');
$articles = $this->Paginator->paginate($this->Articles->find());
$this->set(compact('articles'));
}
}
❯ 7. Flask
Flask — это крайне легковесный backend-фреймворки на Python, который идеально подходит для создания небольших и средних веб-приложений.
Простота и минимализм — отличительные черты Flask. Он предоставляет только основные компоненты для веб-разработки, и ничего более. При этом, он все еще довольно гибок и универсален.
Информация
Язык программирования: Python
Разработчик: Armin Ronacher
Первый релиз: 2010
Особенности
Компактность. Фреймворк очень компактный, легкий и быстрый, без ненужных компоненты. По этой причине его так просто освоить.
Гибкость. Фреймворк не создает никаких строгих предписаний, не навязывает разработчикам жесткой структуры (архитектуры) проекта, что позволяет использовать его в самых разнообразных подходах.
Аудитория
Небольшие проекты и прототипы для тестирования фич и гипотез — это то, для чего Flask подходит больше всего. Для начинающих разработчиков фреймворк может стать входным билетом в мир Python.
При этом, если домашний pet-проект постепенно станет превращаться в сложный коммерческий продукт — гибкость и масштабируемость Flask еще долго сможет удовлетворять растущим потребностям проекта.
Код
Вот пример самого простого приложения с роутером, которое отправляет пользователю содержимое основных страниц:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/about')
def about():
return render_template('about.html')
❯ 8. Spring Boot
Spring Boot — это мощный фреймворк на Java для backend-а, работающий на более низкоуровневом фреймворке Spring. По сути Spring Boot является частью экосистемы Spring и предоставляет инструменты и функции, которые делают процесс разработки более эффективным.
Spring предоставляет высокую степень контроля, отчего требует сложной ручной конфигурации. Spring Boot упрощает и ускоряет разработку на основе Spring за счет автоматической конфигурации и предоставления готовых шаблонов.
Информация
Язык программирования: Java
Разработчик: Rod Johnson, VMware
Первый релиз: 2014
Особенности
Автоконфигурация. Фреймворк автоматически конфигурируется на основе указанных зависимостей. Это позволяет избежать необходимости писать обширные конфигурационные файлы.
Серверы. Фреймворк включает встроенные серверы для приложений: Tomcat, Jetty, Undertow. Это упрощает процесс разработки, так как приложение можно запускать непосредственно из IDE или с помощью командной строки.
Аудитория
Начинающие разработчики, которые уже слышали про экосистему Spring и только начинают с ней работать могут упростить и ускорить обучение с помощью Spring Boot.
Помимо этого, Spring Boot идеально подходит для создания микросервисов, благодаря возможности быстро развертывать отдельные компоненты приложения.
К тому же, приложения на Spring Boot довольно легко упаковываются в Docker-контейнеры и управляются с помощью систем оркестрации — например, Kubernetes.
Код
Как показано в официальной документации, самое простое приложения на Spring Boot может выглядеть так:
package com.example.springboot;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/")
public String index() {
return "Greetings from Spring Boot!";
}
}
❯ 9. Коа
Koa — это современный веб-фреймворк для Node.js, который создали разработчики Express.js. Разумеется, он написан и работает на JavaScript.
Koa можно считать более выразительной, минималистичной и гибкой итерацией Express.js. Множество ограничений, несовершенств и сложных конструкций, существующих в Express.js, были устранены в Koa.
Можно сказать, что Koa раскрывает сильные стороны Express.js.
Информация
Язык программирования: JavaScript
Разработчик: Strongloop
Первый релиз: 2017
Особенности
Асинхронность. Фреймворк изначально спроектирован для использования современных возможностей JavaScript — асинхронных вызовов
async
иawait
. Это позволяет писать асинхронный код, который легче читать и поддерживать по сравнению с традиционными callback-функциями.
Легковесность. Koa не поставляется с набором встроенных middleware-компонентов, что делает его довольно легковесным. Разработчики вправе самостоятельно выбирать и использовать только те компоненты, которые необходимы для их приложения.
Код
Самое простое приложение на Koa выглядит так:
'use strict';
const Koa = require('koa');
const app = new Koa();
app.use(ctx => {
ctx.body = 'Привет, Timeweb';
});
app.listen(3000);
❯ 10. Phoenix
Phoenix — это современный веб-фреймворк для функционального языка программирования Elixir.
Информация
Язык программирования: Elixir
Разработчик: Phoenix Framework
Первый релиз: 2014
Особенности
Производительность. Фреймворк использует язык программирования Elixir и виртуальную машину Erlang, что обеспечивает высокую производительность и масштабируемость благодаря функциональному программированию и конкурентной обработке (Concurrency Model).
Чистота. Функциональная природа Elixir способствует написанию более чистого, надежного, предсказуемого и поддерживаемого кода.
Аудитория
Прежде всего те, кто предпочитает функциональное программирование и ценит иммутабельность данных и чистые функции, найдут в Phoenix удобный инструмент для разработки.
При этом разработчики на Erlang могут использовать Phoenix для создания веб-приложений, используя уже знакомые принципы и архитектуру.
Код
Пример простого роутера, взятый из официальной документации:
defmodule HelloWeb.Router do
use HelloWeb, :router
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_live_flash
plug :put_root_layout, html: {HelloWeb.Layouts, :root}
plug :protect_from_forgery
plug :put_secure_browser_headers
end
pipeline :api do
plug :accepts, ["json"]
end
scope "/", HelloWeb do
pipe_through :browser
get "/", PageController, :home
end
end
❯ Заключение
Мы рассмотрели самые популярные и зарекомендовавшие себя фреймворки, которые коммьюнити разработчиков активно использует не только в 2024, но и в предыдущие годы тоже.
Многим из перечисленных фреймворков более 15 лет, что очевидным образом указывает на их полную состоятельность в качестве технологического решения в самых разных проектах.
Почти все из них за прошедшие годы прошли через многочисленные обновления, адаптируясь к изменениям в технологиях и потребностях разработчиков. Поэтому их зрелость и стабильность позволяют им продолжать оставаться основными инструментами для создания современных приложений.
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩
? Читайте также:
Комментарии (28)
j0ker13
07.11.2024 08:49А почему symfony нет?
itools
07.11.2024 08:49там учить много надо ))))
GothicJS
07.11.2024 08:49И чем он от фласка отличается?) От того самого, про который говорят, что он для хелло ворлд)
k4ir05
07.11.2024 08:49Языком же как минимум )
GothicJS
07.11.2024 08:49Гениально, спасибо! Сам бы я до такого никогда не додумался!))
Если серьезно, то речь о типе фреймворка, что он дает, для чего лучше предназначен. Фласк и симфони по сути одного типа в противоположность ларавель, джанго и рельсам, например, но одновременно в мире питона бытует мнение, что фласк для джунов и хелло ворлд, а в мире пхп - что симфони для помидоров и для суперархитектуры)
Очень интересно наблюдать, как про по сути одно и то же одновременно говорят противоположные вещи)
k4ir05
07.11.2024 08:49Я, конечно, ими не пользовался, но при беглом осмотре заметил, что там ведь действительно разный набор компонентов. Во Фласке самый минимум: роутинг да рендеринг. А в Симфони набор примерно как в Ларавель, побольше, чем в Рельсах. Хм интересно, там даже есть рельсовые Турбо и Стимулус.
Fadmin
07.11.2024 08:49Может быть перед генерацией статьи хотя бы проверить techempower или подобный ресурс?
Free_ze
07.11.2024 08:49Странное описание, не выделяющие каких-либо преимуществ той или иной технологии перед остальными. Отрывки кода выбраны будто случайно, не делают эквивалентные вещи. Критериев топовости не описано. Какой смысл в статье тогда?
1. ASP.NET Core
Фреймворк использует классический шаблон проектирования MVCА где Blazor? Где Razor Pages? Minimal API?
ASP.NET Core в больше степени сосредоточен на разработчиках и пользователях платформы Windows.
В чем это выражается? Особенно интересно про пользователей на том конце HTTP-протокола.
olku
07.11.2024 08:49Определить критерии лучшего это для яйцеголовых с вышкой. Отсюда и платежи как часть фреймворка. Фтопку.
Seeroygaming
07.11.2024 08:49ИМХО, Express.js/Koa не являются прям фреймворками. Здесь лучше смотрелись бы Nest.js/Elysia.js/Hono
tolyanski
07.11.2024 08:49Прочитал ваш список, и как будто переместился лет на 10 назад)) спасибо за приятный вечер)
anton99zel
07.11.2024 08:49Статья не плохая, но по факту перечисление того, что и так все знают. Богато бы смотрелось, если бы указали сферы применения фреймворков. Например, на каком языке лучше сделать то, или иное. Например, билинг или бонусную программу, новостной сайт или библиотеку данных. Без примеров для новичка этот список ни о чём не говорит.
some1else
07.11.2024 08:49Я бы рекомендовал взглянуть на tapir ещё, но правда это только API, без ORM и прочего
de_cubik
Добавил бы сюда nestjs, вместо koa, но это imho. Также, если говорить о php фреймворках - даже Yii2, который никак не переродится в Yii3, и имеет кучу болячек, довольно неплохо справляется с задачами, описанными в статье и может вполне реализовывать неплохие решения.
suprunchuk
согласен. на слуху последнее время везде nestjs. про koa вообще впервые слышу
yeezussniper
По поводу nestjs с вами согласен. Да и кроме Express и Koa есть fastify с его набором плагинов.
По поводу php, даже laravel неплохо справляется с базовыми CRUD из коробки.
Статья, к сожалению, не имеет ничего общего с Лучшие backend-фреймворки
Cere8ellum
Вот тоже, первое, что пришло в голову, не увидев в списке.