Перейти к содержимому
FastOffice

Архитектура: четыре слоя и объекты

Одна система из четырёх слоёв ответственности, точное место ядра, перечень объектов и главные связи между ними.

Система разделена на четыре слоя, и у каждого свой владелец. Таблица читается по последнему столбцу: он говорит, чего слой делать не должен, — именно там проходят границы, которые нельзя нарушать при встраивании.

Слой Владелец Ответственность Не должен делать
Ваше приложение Вы Пользователи, права, карточка документа, версии, аудит, процессы согласования. Документооборот здесь лишь один из случаев: с тем же успехом это учётная система или отраслевая платформа. Знать внутреннее устройство файла XLSX не обязано.
Оболочка редактора Мы, под вашим брендом Показывает редактор, собирает намерение пользователя, отображает ответ. Формулы не считает и файл сама не меняет.
Контракт операций Общая граница, за которую отвечаем оба Описывает команды, результаты, отказы, ревизии и возможности. От того, где именно работает ядро, не зависит.
Ядро на Rust Мы Единственный владелец смысла книги: расчёт, изменения, история, сохранение. Карточкой документа и вашими пользователями не управляет.

Ядро — не сервер и не экран. Это переносимый вычислительный модуль. В браузере тот же код собирается в WebAssembly. В настольном приложении или на сервере он запускается как обычный исполняемый файл. Меняется способ запуска; смысл рабочей книги и контракт операций остаются одними и теми же.

  • Оболочка — то, что видит пользователь, и порядок вызовов.
  • Контракт операций — команды в JSON и ответы известного вида.
  • Ядро — единая модель книги и операции над ней.

Какие объекты существуют и как они связаны

Заголовок раздела «Какие объекты существуют и как они связаны»
Объект Содержит / знает Жизненный цикл
Сеанс интеграции Идентификатор документа, права пользователя, настройки продукта. Создаётся вашей системой, когда открывают редактор.
Сеанс книги Открытую книгу, номер текущей ревизии, историю правок, способ исполнения и состояние сохранения. Живёт от открытия до закрытия; от других книг отделён.
Книга Листы, имена, стили, настройки, связи и служебные части файла. Загружается из файла и меняется только ядром.
Лист Ячейки, строки и столбцы, таблицы, объекты и параметры печати. Опознаётся внутри книги по ключу, который не меняется.
Окно просмотра Только видимую часть листа и сведения о ней. Меняется при прокрутке и изменении масштаба; всей книгой не является.
Операция, она же намерение Действие, его параметры, ожидаемый номер ревизии и ограничения. Один запрос через контракт операций.
Результат и событие Новое состояние, что именно изменилось, предупреждение или отказ и данные для показа. Приходят оболочке и вашему приложению после каждой операции.
Сохранённый файл Содержимое файла, его формат и сведения о сохранении. Уходит в вашу систему документооборота новой версией.
  • Сеанс интеграции создаёт и ограничивает → сеанс книги

  • Сеанс книги владеет состоянием → книга, номер ревизии, история правок

  • Книга отдаёт наружу только нужное → окно просмотра

  • Операция сверяет ревизию и меняет → сеанс книги

  • Сохранение создаёт → готовый файл → новую версию в вашей системе

Ассистент документации

Ответ собран из документации и может быть неточным — сверяйтесь с источниками.