Arquitectura y Modelo de Procesos

Por: Artiko
tauriarquitecturaipcwebviewprocesos

Arquitectura y Modelo de Procesos

Dos procesos

Tauri ejecuta dos procesos separados:

Proceso Core (Rust)

  • Compila a binario nativo
  • Acceso completo al sistema operativo
  • Gestiona ventanas, menus, system tray
  • Ejecuta logica de negocio pesada
  • No es trivial de revertir (seguridad)

Proceso Webview

  • Renderiza la interfaz HTML/CSS/JS
  • Usa el webview nativo del SO (no empaqueta Chromium)
  • Acceso limitado: solo lo que el Core expone via IPC
  • Cada ventana tiene su propio proceso webview

IPC: comunicacion entre procesos

El frontend y Rust se comunican via paso de mensajes asincrono. Es mas seguro que memoria compartida porque el receptor puede rechazar peticiones maliciosas.

Dos primitivas

Comandos — estilo request/response:

Frontend (invoke) → Core (procesa) → Frontend (respuesta)
  • Similar a fetch del navegador
  • Usa protocolo JSON-RPC internamente
  • Argumentos y retorno deben ser serializables a JSON

Eventos — dispara y olvida:

Core (emit) → Frontend (escucha)
Frontend (emit) → Core (escucha)
  • Unidireccionales, no esperan respuesta
  • Ideales para notificar cambios de estado

Flujo tipico

┌──────────────┐         IPC          ┌──────────────┐
│   Frontend   │ ◄──── eventos ─────► │  Core (Rust) │
│  (Webview)   │ ───── invoke ──────► │              │
│              │ ◄──── response ────  │              │
└──────────────┘                      └──────────────┘

Limites de confianza

El codigo en el Webview no es confiable por defecto. Solo tiene acceso a recursos del sistema que el Core expone explicitamente. Esto es fundamental para la seguridad:

  • El Core decide que comandos estan disponibles
  • Los permisos (capabilities) restringen que puede hacer cada ventana
  • El CSP previene inyeccion de scripts maliciosos

Webview nativo vs Chromium

AspectoWebview nativo (Tauri)Chromium (Electron)
WindowsWebView2 (Edge)Chromium empaquetado
macOSWebKit (Safari)Chromium empaquetado
LinuxWebKitGTKChromium empaquetado
Tamano0 bytes (ya esta en el SO)~150MB
ParchesLos aplica el SODebes actualizar tu app
ConsistenciaVaria entre SOsIdentico en todos

La ventaja de parches del SO: los mantenedores de paquetes del sistema parchean vulnerabilidades significativamente mas rapido que los desarrolladores de apps individuales.

La desventaja: el comportamiento del webview puede variar entre sistemas operativos. Prueba en todas las plataformas objetivo.

Resumen

  • Tauri ejecuta dos procesos: Core (Rust) y Webview (frontend)
  • Se comunican via IPC: comandos (request/response) y eventos (fire-and-forget)
  • Todo se serializa a JSON para cruzar el limite de procesos
  • El frontend no tiene acceso directo al SO — solo lo que el Core expone
  • Usa el webview nativo, no empaqueta un navegador
  • Prueba en todas las plataformas porque los webviews varian

← Crear tu Primer Proyecto | Indice | Siguiente: Llamar Rust desde el Frontend →