Saltar al contenido principal

Comparación de transportes

Esta página ayuda a elegir el transporte de runtime adecuado para tu modelo de extensiones. Todas las opciones usan la misma semántica de canal de render, pero difieren en aislamiento, coste operativo y encaje en producción.

Matriz comparativa

Enlace al encabezado
ModoAislamientoRealismo del transporteComplejidad de integraciónMejor encajeRecomendación para producción
iframe🟢 (frontera de contexto del navegador)🟢 (ciclo de vida de postMessage, modelo de origin)🟡Extensiones no confiables con fronteras estrictasRecomendado por defecto para extensiones alojadas en navegador
Window (popup)🟡 (contexto de ventana separado; la política depende de comprobaciones de origin y del manejo del ciclo de vida)🟢 (postMessage con frontera explícita entre ventanas)🟡Extensiones tipo herramienta que necesitan un espacio visible independienteRecomendado cuando la UX en popup es aceptable y se aplican controles estrictos de origin y ciclo de vida
MessagePort🟡 (depende de los contextos de contenedor conectados por puertos)🟢 (canal asíncrono explícito con semántica de structured clone)🟡Handshakes de runtime personalizados y puentes de orquestaciónRecomendado como primitiva de transporte cuando necesitas control explícito del canal
Web Worker🟢 (contexto worker separado, sin acceso al DOM en el remoto)🟢 (frontera asíncrona, ciclo de vida dedicado del worker)🟡Runtimes remotos con mucho cómputo o independientes del DOMRecomendado cuando no se necesita un documento iframe
Desktop IPC🟡 (depende del aislamiento de procesos de escritorio y de la política de preload/capacidades)🟢 (frontera asíncrona explícita entre procesos)🔴Plataformas de plugins Electron/Tauri con runtimes aisladosRecomendado para shells de escritorio con política IPC endurecida
Socket🟡 (depende del despliegue del runtime y de la política del host)🟢 (la latencia, reconexión y orden a nivel de red son explícitos)🔴Runtimes de extensiones multi-proceso, entre máquinas y sesiones remotas vivasRecomendado para plataformas avanzadas con gobernanza fuerte de auth y protocolo
In-memory🔴 (runtime único)🔴 (sin frontera real de transporte)🟢Harnesses de desarrollo, pruebas de integración y diagnósticos rápidosNo recomendado como aislamiento de producción

Leyenda:

  • Integration complexity: 🟢 baja, 🟡 media, 🔴 alta.
  • Isolation y Transport realism: 🟢 fuerte, 🟡 dependiente del contexto, 🔴 débil.
  • Las valoraciones son comparativas para escenarios típicos de plataformas de extensiones, no garantías absolutas.
  1. Empieza con iframe si buscas aislamiento conservador en navegador.
  2. Usa MessagePort cuando necesites cableado explícito y personalizado del canal entre contenedores.
  3. Usa Web Worker cuando el código remoto no necesite un documento y quieras aislamiento ligero.
  4. Usa Desktop IPC para runtimes de extensiones separados por proceso en Electron/Tauri.
  5. Usa Socket cuando la topología del runtime cruce fronteras de proceso o máquina.
  6. Usa In-memory solo para acelerar dev/test.

Documentación relacionada

Enlace al encabezado