Архитектура: четыре слоя и объекты
Одна система из четырёх слоёв ответственности, точное место ядра, перечень объектов и главные связи между ними.
Система разделена на четыре слоя, и у каждого свой владелец. Таблица читается по последнему столбцу: он говорит, чего слой делать не должен, — именно там проходят границы, которые нельзя нарушать при встраивании.
| Слой | Владелец | Ответственность | Не должен делать |
|---|---|---|---|
| Ваше приложение | Вы | Пользователи, права, карточка документа, версии, аудит, процессы согласования. Документооборот здесь лишь один из случаев: с тем же успехом это учётная система или отраслевая платформа. | Знать внутреннее устройство файла XLSX не обязано. |
| Оболочка редактора | Мы, под вашим брендом | Показывает редактор, собирает намерение пользователя, отображает ответ. | Формулы не считает и файл сама не меняет. |
| Контракт операций | Общая граница, за которую отвечаем оба | Описывает команды, результаты, отказы, ревизии и возможности. | От того, где именно работает ядро, не зависит. |
| Ядро на Rust | Мы | Единственный владелец смысла книги: расчёт, изменения, история, сохранение. | Карточкой документа и вашими пользователями не управляет. |
Где именно работает ядро
Заголовок раздела «Где именно работает ядро»Ядро — не сервер и не экран. Это переносимый вычислительный модуль. В браузере тот же код собирается в WebAssembly. В настольном приложении или на сервере он запускается как обычный исполняемый файл. Меняется способ запуска; смысл рабочей книги и контракт операций остаются одними и теми же.
- Оболочка — то, что видит пользователь, и порядок вызовов.
- Контракт операций — команды в JSON и ответы известного вида.
- Ядро — единая модель книги и операции над ней.
Какие объекты существуют и как они связаны
Заголовок раздела «Какие объекты существуют и как они связаны»| Объект | Содержит / знает | Жизненный цикл |
|---|---|---|
| Сеанс интеграции | Идентификатор документа, права пользователя, настройки продукта. | Создаётся вашей системой, когда открывают редактор. |
| Сеанс книги | Открытую книгу, номер текущей ревизии, историю правок, способ исполнения и состояние сохранения. | Живёт от открытия до закрытия; от других книг отделён. |
| Книга | Листы, имена, стили, настройки, связи и служебные части файла. | Загружается из файла и меняется только ядром. |
| Лист | Ячейки, строки и столбцы, таблицы, объекты и параметры печати. | Опознаётся внутри книги по ключу, который не меняется. |
| Окно просмотра | Только видимую часть листа и сведения о ней. | Меняется при прокрутке и изменении масштаба; всей книгой не является. |
| Операция, она же намерение | Действие, его параметры, ожидаемый номер ревизии и ограничения. | Один запрос через контракт операций. |
| Результат и событие | Новое состояние, что именно изменилось, предупреждение или отказ и данные для показа. | Приходят оболочке и вашему приложению после каждой операции. |
| Сохранённый файл | Содержимое файла, его формат и сведения о сохранении. | Уходит в вашу систему документооборота новой версией. |
Главные связи
Заголовок раздела «Главные связи»-
Сеанс интеграции создаёт и ограничивает → сеанс книги
-
Сеанс книги владеет состоянием → книга, номер ревизии, история правок
-
Книга отдаёт наружу только нужное → окно просмотра
-
Операция сверяет ревизию и меняет → сеанс книги
-
Сохранение создаёт → готовый файл → новую версию в вашей системе
- Что происходит от открытия книги до сохранения — Жизненный цикл.
- Что умеет ядро рядом с Excel — карта возможностей.
- Первый проект — Быстрый старт.