Arquitectura y Modelo de Procesos
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
fetchdel 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
| Aspecto | Webview nativo (Tauri) | Chromium (Electron) |
|---|---|---|
| Windows | WebView2 (Edge) | Chromium empaquetado |
| macOS | WebKit (Safari) | Chromium empaquetado |
| Linux | WebKitGTK | Chromium empaquetado |
| Tamano | 0 bytes (ya esta en el SO) | ~150MB |
| Parches | Los aplica el SO | Debes actualizar tu app |
| Consistencia | Varia entre SOs | Identico 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 →