Обзор архитектуры
Как устроен Fusion Framework — Rust-ядро, языковые биндинги и FMA
Что такое Fusion
Fusion Framework — это классовый HTTP-фреймворк. Вы описываете API-модули как классы (подклассы FusionBaseApi), регистрируете их через route-декоратор или атрибут и запускаете FusionApp. Общее Rust-ядро (fusion-core) отвечает за HTTP-сервер, маршрутизацию, настройки, хелперы заголовков и сериализацию ответов. Языковые биндинги (Python, TypeScript/Node.js, C#) остаются тонкими и сосредоточены на удобстве разработки.
Текущая опубликованная версия пакетов фреймворка: 1.2.6 (см. репозиторий fusion-framework).
Философия проектирования
| Принцип | Что это значит на практике |
|---|---|
| Общее ядро | Токены путей, настройки, коды статуса и хелперы заголовков реализованы один раз в Rust |
| Классовые API | Обработчики живут на классах, а не в свободных функциях — модуль владеет поверхностью ресурса |
| Тонкие биндинги | Python / Node / C# повторяют ту же HTTP-семантику с идиоматичным синтаксисом |
| Явная регистрация | Импорт route-модуля (или вызов Route.Register) регистрирует его; магического автосканирования файловой системы нет |
| Компонуемые пакеты | Переиспользуемые библиотеки — обычные пакеты, устанавливаемые через Fusion Tool (fusion add) |
Архитектура верхнего уровня
flowchart TB
subgraph app [Your application]
Main[main / Program entry]
RouteMods[Route modules FusionBaseApi]
Libs[Installed library packages]
end
subgraph binding [Language binding]
Decorators[route / http_* / attributes]
MW[Middleware chain]
App[FusionApp]
end
subgraph core [fusion-core Rust]
Settings[Settings]
Router[Router]
Hyper[Hyper server]
Headers[Header helpers]
OpenAPI[OpenAPI data]
end
Main --> RouteMods
Main --> App
Libs --> RouteMods
RouteMods --> Decorators
Decorators --> Router
App --> MW
MW --> Router
App --> Settings
App --> Hyper
Router --> Hyper
Headers --> binding
OpenAPI --> AppСлои, с которыми вы работаете
| Слой | Ответственность |
|---|---|
| Application | main.py / entry-файл, JSON окружения, список middleware, импорт модулей |
| Route module | Класс FusionBaseApi с @route / route() / [Route] — владеет HTTP-обработчиками ресурса |
| Library package | Публикуемый пакет, созданный через fusion module init и установленный через fusion add — обычный импортируемый код, не особый тип runtime-плагина |
| Binding | Языкоспецифичный API поверх Rust-ядра |
| fusion-core | HTTP-сервер, роутер, настройки, naming-токены, fingerprints, сериализация |
FMA (Fusion Module Architecture)
FMA — модель модульности Fusion: приложения собираются из route-модулей и опциональных переиспользуемых пакетов, с чёткой границей между HTTP-поверхностью и общими библиотеками.
→ Подробнее: Fusion Module Architecture (FMA)
Путь обучения
- Чем Fusion не является — границы области (без ORM, без DI-контейнера, …)
- Workspace и crates — где живут ядро и биндинги
- Структура проекта — что создаёт
fusion init - Fusion Tool — scaffold приложений и окружений
- Быстрый старт по языкам: Python · TypeScript · C#
- Route-модули приложения
- Переиспользуемые пакеты · CLI Modules
- Жизненный цикл приложения · Настройки и конфигурация · Жизненный цикл запроса
- Лучшие практики · Анти-паттерны
Связанные инструменты
- Fusion Tool — scaffold приложений, окружений, команд, пакетных модулей
- Fusion Desktop — GUI для управления Fusion-бэкендами