Comparación de transportes
Propósito
Enlace al encabezadoEsta página te ayuda a elegir el transporte más adecuado para tu modelo de extensiones. Todas las opciones comparten la misma semántica de canal de render, pero cambian en aislamiento, costo operativo y viabilidad para producción.
Matriz comparativa
Enlace al encabezado| Modo | Aislamiento | Qué tan representativo es el transporte | Complejidad de integración | Mejor encaje | Recomendación para producción |
|---|---|---|---|---|---|
iframe | 🟢 (frontera de contexto del navegador) | 🟢 (ciclo de vida real de postMessage, modelo de origin) | 🟡 | Extensiones no confiables con fronteras estrictas | Recomendado por defecto para extensiones en navegador |
Window (popup) | 🟡 (ventana separada; depende de origin y del manejo del ciclo de vida) | 🟢 (postMessage con frontera explícita entre ventanas) | 🟡 | Extensiones tipo herramienta que necesitan un espacio visible aparte | Recomendado cuando la UX en popup es aceptable y se aplican controles estrictos de origin y ciclo de vida |
MessagePort | 🟡 (depende de los contenedores conectados por puertos) | 🟢 (canal asíncrono explícito con semántica de structured clone) | 🟡 | Conexiones personalizadas por canal y puentes de orquestación | Recomendado cuando necesitas control explícito sobre la conexión |
Web Worker | 🟢 (worker separado, sin acceso al DOM en el remoto) | 🟢 (frontera asíncrona con ciclo de vida dedicado) | 🟡 | Entornos remotos con más cómputo o sin necesidad de DOM | Recomendado cuando no necesitas un documento con iframe |
Desktop IPC | 🟡 (depende del aislamiento entre procesos y de la política de preload/capacidades) | 🟢 (frontera asíncrona explícita entre procesos) | 🔴 | Plataformas de plugins en Electron o Tauri con entornos aislados | Recomendado para aplicaciones de escritorio con una política IPC endurecida |
Socket | 🟡 (depende del despliegue del entorno y de la política del host) | 🟢 (la latencia, reconexión y orden en red quedan explícitos) | 🔴 | Entornos remotos distribuidos entre procesos, máquinas o sesiones vivas | Recomendado para plataformas avanzadas con buena gobernanza de autenticación y protocolo |
In-memory | 🔴 (un solo entorno) | 🔴 (no existe una frontera real de transporte) | 🟢 | Desarrollo, pruebas de integración y diagnósticos rápidos | No recomendado como aislamiento de producción |
Leyenda:
- Complejidad de integración:
🟢baja,🟡media,🔴alta. - Aislamiento y realismo del transporte:
🟢fuerte,🟡dependiente del contexto,🔴débil. - Estas valoraciones son comparativas para escenarios comunes de plataformas de extensiones; no son garantías absolutas.
Guía rápida
Enlace al encabezado- Empieza con
iframesi buscas una opción conservadora y bien aislada en navegador. - Usa
MessagePortcuando necesites una conexión explícita y personalizada entre contenedores. - Usa
Web Workercuando el código remoto no necesite un documento y quieras un aislamiento ligero. - Usa
Desktop IPCpara extensiones separadas por proceso en Electron o Tauri. - Usa
Socketcuando la topología cruce fronteras de proceso o de máquina. - Usa
In-memorysolo para acelerar desarrollo y pruebas.