Этот выбор не является абсолютным суждением по поводу двух структур. Это архитектурный компромисс, задокументированный здесь на основании того, что мы проверили в коде и общедоступных записях, а не на неизмеренных показателях производительности.
Самое необходимое
Axum не создает ничего проприетарного: он использует tower::Service в качестве промежуточного программного обеспечения, Hyper для транспорта и запрещает любой код unsafe. Actix-web включает собственную систему промежуточного программного обеспечения (Logger, Session, CORS), собственный HTTP/2 и сам ссылается на тест TechEmpower Framework Benchmark как доказательство скорости. На crates.io у Axum сегодня более 436 миллионов загрузок по сравнению с примерно 78 миллионами у Actix-web – несмотря на почти четырехлетнюю разницу в возрасте, что является его недостатком. Aurabase выбрала Axum для композиции Tower, проверенной в одиннадцати реальных репозиториях Cargo.toml, а не из-за неизмеренной производительности.
Два фреймворка, одна и та же база Токио
Axum и Actix-web работают на Tokio, эталонной асинхронной среде выполнения в Rust. В README Actix-web это прямо указано — «Полная совместимость с Tokio» — и его официальный пример кода не использует никаких актеров из исторической среды actix: достаточно классического обработчика async fn с аннотацией #[get(...)]. Путаница «Actix-web обязательно требует актеров» больше не соответствует текущему API.
Axum родился на непосредственной орбите Токио: репозиторий принадлежит GitHub-организации tokio-rs, а его официальная документация однозначна — "axum предназначен для работы с tokio и Hyper. Независимость времени выполнения и транспортного уровня не является целью, по крайней мере, на данный момент".
Таким образом, это не выбор между двумя конкурирующими средами выполнения, а между двумя способами создания HTTP API поверх одного и того же асинхронного механизма. Это сравнение охватывает четыре поддающиеся проверке области — модель промежуточного программного обеспечения, заявленную безопасность памяти, собственную поверхность HTTP, внедрение, измеренное на crates.io и GitHub, — а затем объясняет, с помощью вспомогательного кода, почему ядро Rust Aurabase выбрало Axum.
Компонуемая башня промежуточного программного обеспечения в сравнении с интегрированной системой
Axum не создает никаких проприетарных систем промежуточного программного обеспечения. Он полностью полагается на tower::Service: таймауты, трассировка, сжатие, авторизация — все предоставляется «бесплатно» через экосистему Tower, согласно его собственному README. Промежуточное программное обеспечение, написанное для приложения Hyper или Tonic, можно повторно использовать в приложении Axum без адаптации.
Actix-web идет противоположным путем: он встраивает свою собственную систему промежуточного программного обеспечения (Logger, Session, CORS и т. д.), описанную в руководстве пользователя, со своим собственным связанным HTTP-клиентом (awc). Это более интегрированная платформа — меньше деталей для сборки, но и меньше прямого повторного использования с остальной частью общей асинхронной экосистемы Rust.
Маршрутизация следует той же явной логике композиции. Axum заявляет о «API без макросов» для объявления маршрутов — Router::new().route(...) остаётся обычным значением Rust — где Actix-web полагается на выделенные макросы методом HTTP (#[get(...)]), размещенные непосредственно над обработчиком. Два стиля высказываний, а не разница в способностях.
За возможность компоновки Axum приходится платить: вы должны добавить tower-http, чтобы получить CORS, сжатие или ограничение размера запроса, где Actix-web доставляет их внутри себя. Готовая интеграция против явной композиции — настоящий компромисс, а не недостаток с одной стороны.
Ноль объявлен небезопасным, два разных MSRV
В исходном коде Axum заявлено #![forbid(unsafe_code)]: 100% фреймворка написано на безопасном Rust, без каких-либо лазеек. Actix-web не делает аналогичного заявления в своем README — это не означает, что фреймворк опасен, просто проект не предоставляет такой гарантии публично.
В двух фреймворках установлена разная минимальная версия Rust: Axum совместим с Rust 1.80, Actix-web требует Rust 1.88. Более узкое окно для Actix-web, что может иметь значение, если ваша цепочка инструментов застряла на более старой версии.
Что каждый из них предлагает изначально
Actix-web перечисляет большую поверхность HTTP непосредственно в своем ящике: HTTP/1.x и HTTP/2, WebSockets, прозрачное сжатие (br, gzip, deflate, zstd), TLS через OpenSSL или Rustls. Все собрано вместе, без каких-либо дополнительных зависимостей на выбор.
Axum намеренно остаётся минимальным: маршрутизация, экстракторы, обработка ошибок — всё остальное (сжатие, CORS, ограничение запросов, трассировка) поступает из tower-http, сопутствующего крейта из той же экосистемы. Aurabase, например, включает только функции cors, trace, compression-gzip, request-id, timeout и limit tower-http — намеренный выбор, а не весь пакет.
Что мы можем проверить, а что не публикуем повторно
Actix-web заявляет о своей скорости, ссылаясь на точный внешний источник: «Один из самых быстрых веб-фреймворков, доступных согласно тесту TechEmpower Framework Benchmark» (раунд r21, составной), с прямой ссылкой на techempower.com в собственном README. Это тип цитаты, которую вы можете проверить самостоятельно.
Аксум не делает подобных заявлений. Его README ограничен более скромным заявлением — «axum — это относительно тонкий слой поверх Hyper и добавляет очень мало накладных расходов» — с двумя ссылками на тесты стороннего сообщества, а не на официальную цифру проекта.
Aurabase в настоящее время не публикует каких-либо количественных сравнений Axum и Actix-web на собственной производственной нагрузке. Число, которое мы не измеряли сами, никогда не будет опубликовано здесь в качестве аргумента продукта — см. нашу методологию воспроизводимых тестов , созданную именно для публикации проверяемого метода, а не голого числа.
Что говорят crates.io и GitHub на момент написания этой статьи
На crates.ioу Axum всего 436 464 896 загрузок, включая 109 000 226 за последние 90 дней. Actix-web накапливает 78 074 020 загрузок в общей сложности, включая 9 730 975 в том же недавнем окне (crates.io, по состоянию на 23 августа 2026 г.). В этом отношении разрыв очевиден: сегодня Axum получает примерно в 11 раз больше последних загрузок, чем Actix-web.
Парадокс: Actix-web — более старый из двух, опубликованный на crates.io с октября 2017 года по сравнению с июлем 2021 года для Axum. На GitHub разрыв в популярности меньше — 26 931 звезд для tokio-rs/axum против 24 793 для actix/actix-web (GitHub, по состоянию на 23 августа 2026 г.) — и Actix-web поддерживает больше вилок (1880 по сравнению с 1462), что является признаком того, что историческая база участников все еще активна.
Actix-web по-прежнему далеко не заброшен: его версия 4.15.0 была опубликована 21 августа 2026 года, за три дня до написания этой статьи. В очереди задач GitHub Axum отображает 75 открытых заявок по сравнению со 192 у Actix-web — сигнал обслуживания, к которому следует относиться с осторожностью: история, длившаяся почти четыре года, механизирует более длинную очередь, это не является доказательством менее тщательного проекта.
Сам README Axum предупреждает, что его ветка main готовит версию 0.9 с критическими изменениями — стабильная ветка, опубликованная на crates.io, остается 0.8.x. Если вы начинаете сегодня, закрепите точную версию, а не следуйте ветке репозитория по умолчанию.
Почему Axum, проверено в коде
Корневое рабочее пространство Aurabase Cargo имеет одиннадцать сервисов. Десять напрямую полагаются на Axum — от API-шлюза (aura-gateway) до собственного механизма искусственного интеллекта (aura-ai), включая аутентификацию и хранение. Одиннадцатый, aura-migrator, — это CLI-инструмент миграции без HTTP-сервера: ему просто не из чего выбирать. Ни один Cargo.toml в репозитории — ни одна запись в корне Cargo.lock — не объявляет actix-webдаже в транзитивной зависимости; и ни один файл .rs не содержит инструкции use actix_web::.
Этот выбор не является косметическим: шлюз Aurabase (aura-gateway) объединяет свое промежуточное программное обеспечение с tower::ServiceBuilder и Layer Tower — TraceLayer, TimeoutLayer, RequestBodyLimitLayer — дополненными внутренними уровнями через axum::middleware::from_fn для идентификатора запроса, аутентификации и заголовков безопасности. Это именно та модель композиции, которую подчеркивает README компании Axum: промежуточное программное обеспечение Tower устанавливается, тестируется и повторно используется независимо от остальной части маршрутизатора.
Здесь проверяется выбранная архитектура — реальная зависимость, реальный состав промежуточного программного обеспечения. Никакого количественного прироста производительности не заявлено: информацию о том, что мы не публикуем, см. в предыдущем разделе.
Axum и Actix-web, бок о бок
| Промежуточное ПО | Композиционная башня::Сервис, ничего фирменного | Интегрированная система (Logger, Session, CORS) |
|---|---|---|
| Безопасность памяти | объявлен запрет (unsafe_code) | Нет эквивалентной декларации |
| МСРВ | Ржавчина 1.80 | Ржавчина 1.88 |
| Лицензия | Массачусетский технологический институт | Apache-2.0 ИЛИ MIT |
| Родной HTTP | Маршрутизация + экстракторы; остальное через Tower-http | HTTP/1.x, HTTP/2, сжатие, встроенный TLS |
| загрузок crates.io (всего) | 436 464 896 | 78 074 020 |
| Загрузки crates.io (90 дней) | 109 000 226 | 9 730 975 |
| Звезды GitHub | 26 931 | 24 793 |
| На crates.io с тех пор | июль 2021 г. | Октябрь 2017 г. |
| Используется Aurabase | Да — 10 из 11 сервисов Rust | Нет — никаких зависимостей, прямых или транзитивных |
Источники: API crates.io (/api/v1/crates/axum, /api/v1/crates/actix-web) и GitHub API, по состоянию на 23 августа 2026 г. Официальные файлы README tokio-rs/axum и actix/actix-web для остальных.
Кому что следует выбрать
Вы запускаете модульный мультисервисный бэкэнд на Rust. Axum идеально подходит: его структура Tower упрощает совместное использование промежуточного программного обеспечения между службами, как это делает Aurabase между десятью своими HTTP-службами.
У вас есть существующая и работающая база кода Actix-web. Мигрировать не нужно. Actix-web продолжает активно поддерживаться и изначально поддерживает HTTP/2, WebSockets и сжатие без дополнительных зависимостей.
Вы хотите, чтобы как можно больше функций HTTP было реализовано в одном пакете, без самостоятельной сборки tower-http. Actix-web напрямую отвечает этой потребности.
Вы уже используете промежуточное программное обеспечение Tower с другими службами Hyper или Tonic (gRPC). Axum повторно использует эти слои такими, какие они есть – это аргумент, который повлиял на Aurabase.