Axion Платформа Скачать
Documentation · Engine · 01

Архитектура движка

Подсистемы, управление жизненным циклом и модель вызова Axion Engine.

01 Архитектура движка

Axion Engine — Rust-ядро платформы. Управляет WebView, жизненным циклом приложений, capabilities, permissions, IPC, workspace, storage, background-задачами и пакетами. Engine не зависит от конкретного UI — поверх него можно построить Flutter-оболочку, Qt-интерфейс или полностью нативный клиент.

1.1Место Engine в Axion

Axion — это Application Runtime, а не UI-фреймворк. Внешние оболочки общаются с Engine через Axion Protocol или напрямую через Rust API:

┌─────────────────────────────────────────┐
│  Custom Shells (Flutter / Qt / Native)  │
└──────────────────┬──────────────────────┘
                   │  Axion Protocol
          ┌────────▼────────┐
          │   Axion Engine   │
          └────────┬────────┘
                   │  Platform Abstraction
        ┌──────────┼──────────┐
        │          │          │
     Desktop    Mobile     ...
    Win/Mac/Linux  Android/iOS

1.2Подсистемы

Engine состоит из нескольких подсистем, каждая из которых решает свою задачу:

ПодсистемаОтветственность
RuntimeЗапуск, остановка, приостановка приложений; управление жизненным циклом
WebViewРендеринг интерфейса приложения; бridge window.axion
CapabilitiesРегистр доступных возможностей (filesystem, network, process…)
Permission BrokerПроверка и подтверждение прав (default deny)
IPC BrokerМежприложенческое взаимодействие через именованные методы
Package ManagerУстановка, обновление, удаление .axn-пакетов
WorkspaceЛогический каталог проекта
Storage / SecretsПерсистентное хранилище; защищённое хранилище ключей
Platform LayerАбстракция над ОС: Windows, macOS, Linux, Android, iOS

1.3Модель вызова

JavaScript-код приложения не обращается к ОС напрямую. Каждый вызов проходит через цепочку:

JavaScript (window.axion)
       ↓
   JS Bridge
       ↓
  Axion Protocol
       ↓
Capability Broker  ← проверка: заявлена ли capability в manifest
       ↓
Permission Broker  ← проверка: разрешил ли пользователь
       ↓
  Native Runtime
       ↓
  Operating System

Например, await axion.fs.readFile('main.js') — это не прямой доступ к файловой системе, а запрос к Engine, который проверяет filesystem.read в capabilities и затем выполняет чтение через workspace.

Default deny. Если пользователь ещё не подтвердил право, первый вызов вернёт структурированный маркер AXION_PERMISSION_NEEDED ticket=... capability=.... Страница показывает промпт, и после выбора «Разрешить» вызов повторяется — уже успешно.

1.4Жизненный цикл

Engine полностью контролирует состояния приложения:

  1. Installed — пакет распакован, manifest валиден;
  2. Launching — проверка capabilities, создание Runtime;
  3. Running — WebView загрузил entry HTML;
  4. Suspended — приложение свёрнуто, ресурсы освобождены;
  5. Stopped — остановка по запросу или при сбое.

Переходы отражаются событиями app.resumed / app.suspended. Клиент может вызвать engine.suspend(run_id) или engine.resume(run_id) через Axion Protocol.

Готовы встроить Engine в свой проект?
Встраивание