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

Сравнение транспортов

Эта страница помогает выбрать транспорт runtime под вашу extension-модель. Все варианты используют одинаковую channel-семантику рендера, но различаются по изоляции, эксплуатационной стоимости и пригодности для production.

Матрица сравнения

Ссылка на заголовок
РежимИзоляцияРеалистичность транспортаСложность интеграцииЛучший сценарийРекомендация для production
iframe🟢 (граница browser context)🟢 (postMessage lifecycle, origin-модель)🟡Недоверенные расширения со строгими границамиРекомендуемый вариант по умолчанию для browser-hosted extensions
Window (popup)🟡 (отдельный window context, итоговая защищенность зависит от origin-проверок и lifecycle-контроля)🟢 (postMessage с явной межоконной границей)🟡Tool-расширения с независимым видимым workspaceРекомендуется, если popup UX приемлем и соблюдается строгий origin/lifecycle контроль
MessagePort🟡 (зависит от container-контекстов, соединенных портами)🟢 (явный async-канал со structured-clone семантикой)🟡Кастомные runtime-handshake и orchestration bridgeРекомендуется как транспортный примитив, когда нужен явный контроль канала
Web Worker🟢 (отдельный worker context, без DOM-доступа в remote)🟢 (асинхронная граница, dedicated worker lifecycle)🟡Remote-runtime без потребности в iframe-документе и с compute-нагрузкойРекомендуется, когда iframe-документ не нужен
Desktop IPC🟡 (зависит от process isolation и preload/capability политики)🟢 (явная межпроцессная async-граница)🔴Electron/Tauri plugin-platform с изолированными runtimeРекомендуется для desktop-shell при hardening IPC-политики
Socket🟡 (зависит от размещения runtime и host-политик)🟢 (сетевые latency/reconnect/ordering факторы явно наблюдаемы)🔴Multi-process, cross-machine runtime и live remote-сессииРекомендуется для продвинутых платформ с сильным auth/protocol governance
In-memory🔴 (один runtime)🔴 (нет реальной транспортной границы)🟢Dev-оболочки, интеграционные тесты, быстрая диагностикаНе рекомендуется как production-модель изоляции

Легенда:

  • Сложность интеграции: 🟢 низкая, 🟡 средняя, 🔴 высокая.
  • Изоляция и Реалистичность транспорта: 🟢 сильная, 🟡 зависит от контекста, 🔴 слабая.
  • Оценки сравнительные для типичных extension-platform сценариев, а не абсолютные гарантии.

Быстрые рекомендации

Ссылка на заголовок
  1. Начинайте с iframe, если нужен консервативный уровень browser-изоляции.
  2. Используйте MessagePort, когда нужен явный custom wiring канала между контейнерами.
  3. Используйте Web Worker, когда remote-коду не нужен document и нужна более легкая изоляция.
  4. Используйте Desktop IPC для process-separated runtime в Electron/Tauri.
  5. Используйте Socket, когда runtime топология выходит за пределы одного процесса/машины.
  6. Используйте In-memory только для ускорения dev/test цикла.

Связанные разделы

Ссылка на заголовок