Rust 2024 + Angular в десктопных приложениях: архитектура VortexDL
Связка веб-интерфейса на Signals с высокопроизводительным системным бэкендом на Rust и встраиваемой базой данных redb.
1. Почему связка Angular + Rust: сильные стороны каждого мира
При создании настольного приложения VortexDL требовалось решить две противоречивые задачи: предоставить богатый, доступный UI с гибкими настройками и одновременно обеспечить потоковую обработку гигабайтных медиафайлов, взаимодействие с ADB и работу с файловой системой без просадок FPS.
Электроноподобные решения на чистом Node.js задыхаются при интенсивном I/O в event loop. Перенос системной логики в нативный бинарник на Rust 2024 с рантаймом Tokio решил проблему в корне.
2. Типизированный IPC-контракт и zero-copy буферы
Взаимодействие фронтенда и Rust-бэкенда построено на строго валидируемых сообщениях. Схема событий генерируется из общих определений, исключая рассинхронизацию типов между TypeScript и Rust.
События прогресса скачивания передаются через бинарные потоки без избыточной сериализации в JSON, что гарантирует плавность UI даже при сотнях событий в секунду.
3. Встраиваемая база данных redb вместо тяжелых СУБД
Для хранения очереди загрузок и кэша метаданных используется встраиваемая транзакционная база данных redb, написанная на Rust. Она не требует внешних процессов, обеспечивает ACID-гарантии и молниеносно стартует вместе с приложением.