Ядро в браузере через WebAssembly
Ядро работает на устройстве пользователя: как идёт обмен, что это даёт и какие ограничения нужно учесть.
Из чего состоит контур
Заголовок раздела «Из чего состоит контур»Ядро считает на устройстве пользователя. Работы у вас здесь меньше, чем в остальных средах: ядро приезжает вместе со страницей, его не нужно ни устанавливать, ни обновлять, ни перезапускать после сбоя. Участников в схеме четыре:
- Ваш сервер — отдаёт страницу, сборку и файл, выдаёт сеанс и права, принимает сохранённый результат.
- Браузер или WebView — оболочка F1 и фоновый поток.
- Ядро в WebAssembly — сеанс книги и вычисления живут в памяти браузера.
- Ваш продукт — версии, аудит, маршруты согласования, уведомления.
Откуда берётся сборка
Заголовок раздела «Откуда берётся сборка»Ядро под WebAssembly и модуль-мост к нему идут пакетами движка F1 — это отдельный артефакт поставки, см. Состав поставки. В установщике настольного приложения их нет: там нативный процессор, который в браузере не работает.
Что доступно в браузере
Заголовок раздела «Что доступно в браузере»Набор операций тот же, что и в настольном приложении: сборка для браузера принимает те же запросы контракта и передаёт их тому же ядру. Урезанного подмножества нет — ограничения браузера касаются среды: памяти, потоков и времени первой загрузки.
Как идёт обмен
Заголовок раздела «Как идёт обмен»Оболочка обращается к сеансу в WebAssembly, который помнит состояние книги между вызовами. Книга остаётся в памяти вкладки или фонового потока, а на ваш сервер файл уходит только при открытии и сохранении либо по отдельно согласованному событию.
| Сильная сторона | Цена / ограничение |
|---|---|
| Документ обрабатывается без передачи во внешнее облако. | Память и процессор ограничены устройством и браузером. |
| Между действием пользователя и ядром почти нет задержки. | Первая загрузка кода и открытие большой книги занимают время, которое надо заложить. |
| Одинаковое поведение с сетью и без неё. | Векторные вычисления (SIMD) есть не в каждом браузере, а многопоточность включается только вместе с ними и только на сайте, изолированном по источнику двумя заголовками — COOP и COEP. Обычной сборке не нужно ни того, ни другого. |
| Ваш сервер проще: хранение, вход и версии. | Долгие операции нужно выносить в фоновый поток, давать возможность их отменить и учитывать, что вкладку могут закрыть. |