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

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

Семь объектов решения, граница ответственности между ядром на Rust и поверхностью редактора и правило, по которому решается, кто владеет операцией.

Для первого понимания достаточно семи объектов. Каждый имеет одну ясную ответственность.

[Пользователь / агент]
| действие
v
[Ваш продукт: бренд, права, карточка, процесс]
| встроить, открыть, сохранить, получать события
v
[Поверхность] <--> [Мост к приложению и контракт сеанса]
| типизированные команды
v
[Ядро на Rust]
модель → вёрстка → сцена → запись в файл
|
v
[Байты DOCX и хранилище]
Объект Что делает Владелец
Ваше приложение Окно продукта, бренд, права, карточка документа и рабочий процесс. Вы
Поверхность редактора (Web Surface) Лента, страницы, ввод, выделение, диалоги и отклик на действия. A4, настраивается под ваш бренд
Мост к приложению Связывает ваше приложение и редактор; сам документ не хранит. Общая граница
Сеанс документа Жизненный цикл одного документа и его ревизии. Контракт A4
Ядро на Rust Читает, моделирует, вычисляет, проверяет и записывает документ. A4
Хранилище Исходный файл, версии, сроки хранения и журнал обращений. Вы
Профиль возможностей Доступные функции и ограничения конкретной поставки. Согласуется

Это не дублирование. Rust и Web решают разные классы задач и соединены узким контрактом.

Ядро на Rust — процессор Web Surface — поверхность
Владеет главной моделью документа и его ревизией. Показывает страницы, команды, выделение и состояния.
Разбирает DOCX и сохраняет поддержанную структуру. Собирается как обычное веб-приложение и работает внутри WebView.
Считает вёрстку, строит печатную сцену и геометрию. Получает готовую сцену и рисует то, что разрешено контрактом.
Проверяет команды, защиту, устаревшую ревизию и ограничения. Превращает жест, щелчок или ввод в типизированное намерение.
Выполняет тяжёлые операции — второго движка на JavaScript нет. Управляет фокусом, языком, темой, режимом чтения и событиями для вашего приложения.
Возвращает результат, предупреждение или явный отказ с причиной. Не записывает DOCX напрямую и не подменяет собой документ.

Документ — это не только видимый текст. Внутри DOCX находятся связи, стили, секции, таблицы, колонтитулы, рецензирование и объекты. Чтобы записать это без потерь, нужен один владелец смысла, строгие типы и одно и то же ядро для настольного, серверного и мобильного вариантов.

Web-технологии позволяют встроить одну поверхность в Electron, WebView2, WKWebView, Android WebView или другой совместимый контейнер. Вам не нужно переписывать редактор под каждый набор родных элементов интерфейса, а внешний вид продукта остаётся вашим.

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

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