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

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

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

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

[Пользователь / агент]
| действие
v
[Продукт партнёра: бренд, права, карточка, процесс]
| mount / open / save / events
v
[Web Surface] <--> [Host Bridge / Session Contract]
| typed commands
v
[Rust Core]
model -> layout -> scene -> writeback
|
v
[DOCX bytes / storage]
Объект Что делает Владелец
Host application Окно продукта, бренд, права, карточка и бизнес-процесс. Партнёр
Web Surface Лента, страницы, ввод, выделение, диалоги и визуальная обратная связь. A4; настраивается
Host Bridge Связывает host и редактор; не хранит документную истину. Совместная граница
Document Session Жизненный цикл одного документа и его revision. A4 contract
Rust Core Читает, моделирует, вычисляет, проверяет и записывает документ. A4
Storage Оригинал, версии, retention и audit trail. Партнёр
Capability profile Доступные функции и ограничения конкретной поставки. Согласуется

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

Rust Core — процессор Web Surface — поверхность
Владеет канонической моделью документа и revision. Показывает страницы, команды, выделение и состояния.
Разбирает DOCX/OOXML и сохраняет поддерживаемую структуру. Собирается как browser bundle и работает внутри WebView.
Выполняет layout, формирует печатную сцену и геометрию. Получает scene/projection и рисует разрешённое контрактом.
Проверяет команды, защиту, stale revision и ограничения. Превращает жест, клик или ввод в типизированное намерение.
Выполняет тяжёлые операции без второго JS-движка истины. Управляет focus, locale, theme, readOnly и host events.
Возвращает результат, warning или typed refusal. Не записывает DOCX напрямую и не делает DOM истиной.

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

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

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

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