Отдельный процесс ядра рядом с приложением
Как это работает сегодня: ваше приложение, дочерний процесс, обмен строками JSON и ядро на Rust.
Из чего состоит контур
Заголовок раздела «Из чего состоит контур»Ядро работает отдельным процессом рядом с приложением, поэтому в схеме четыре участника:
- Ваше настольное приложение — окно, доступ к файлам, связь с операционной системой, веб-оболочка редактора.
- Канал обмена — долгоживущий сеанс: строка JSON с запросом, строка JSON с ответом.
- Процессор
compute_contract_cli— сеанс книги, вычисления, импорт и экспорт. - Локальное или корпоративное хранилище — исходный файл и новая версия.
Фактический протокол сегодня
Заголовок раздела «Фактический протокол сегодня»Процессор запускается в режиме сеанса и первой строкой сообщает версию контракта и номер своего процесса. Дальше он принимает по одной команде JSON в строке и отвечает одной строкой JSON на каждую. Поле requestId возвращается в ответе — по нему вы сопоставляете пару в своих журналах.
Отвечает процессор строго по очереди: ответы приходят в том порядке, в каком отправлены запросы, поэтому долгая операция задерживает всё, что послано после неё. Отправлять следующую команду, не дождавшись ответа на предыдущую, смысла нет — она всё равно будет ждать. Если нужна параллельность, поднимайте второй процесс.
Запуск, завершение и перезапуск процесса — на вашей стороне.
| Сильная сторона | Цена / ограничение |
|---|---|
| Больше доступной памяти и предсказуемее работа с большими книгами. | Исполняемый файл нужно устанавливать, обновлять и следить за ним. |
| Прямой доступ к локальным файлам и корпоративному окружению. | Нужна строгая изоляция процессов и проверка путей и прав. |
| Интерфейс тот же, что в браузере. | Вы отвечаете за перезапуск после сбоя, тайм-ауты и уборку процессов, оставшихся без хозяина. |