DockStudio · Архитектура

Как устроена платформа

Пять слоёв с чёткими границами. Ядро не знает о модулях, модули не знают друг о друге — общение только через контракты сервисов.

1

Ядро

Загрузчик модулей, реестр служб, шина событий, настройки, фоновые задачи и журнал. Ядро ничего не знает о конкретных модулях.

2

Оболочка

Главное окно, менеджер доков, система вкладок, меню, тулбары и строка состояния. Отвечает за то, как складывается рабочее место.

3

Слой модулей

Предметные модули: каждый регистрирует свои панели, команды, настройки и права. Общение — только через контракты сервисов.

4

Платформа Windows

Безрамочное окно с Aero Snap, родные уведомления, трей, обновление и установщик. Версия для Linux — в планах.

5

SDK и расширения

Публичный API, шаблон модуля, разработка модуля отдельно от приложения, подпись плагинов.

Правила, которые мы не нарушаем

  • Модуль не обращается к другому модулю напрямую — только через зарегистрированный сервис.
  • Контракты версионируются; совместимость держится две мажорные версии назад.
  • Сбой в модуле не роняет приложение — модуль изолируется и помечается как неработоспособный.
  • UI не содержит бизнес-логики: панель — это представление над сервисом.
  • Любая длительная операция выполняется в фоне с прогрессом и возможностью отмены.

Технологический стек

.NET / C++Qt / WPFPostgreSQLSQLite (офлайн) gRPCRESTOpenTelemetrySerilog Windows 10 / 11Linux — в планах
Жизненный цикл

Что происходит при запуске приложения

Загрузка ядра → Чтение конфигурации → Регистрация модулей → Разрешение зависимостей → Сборка оболочки → Восстановление раскладки → Готово

Изоляция и надёжность

Каждый модуль инициализируется в защищённом контексте. Исключение при старте не блокирует запуск приложения — остальные модули работают.

Производительность

Ленивая загрузка панелей, виртуализация списков на сотни тысяч строк, фоновые задачи и кэш на уровне репозиториев.

Расширение без пересборки

Плагины подключаются как отдельные сборки и регистрируются в реестре ядра при старте. Пересобирать приложение не нужно.

Нужен разбор под вашу архитектуру?

Покажем, как DockStudio встраивается в существующий ландшафт и что получится перенести из текущего приложения.