El canal de mensajes
Cómo hablan de verdad la webview y Rust en cada motor: los tres mecanismos, qué tienen en común, y qué determina el coste de cruzar.
El mecanismo común
Los tres motores ofrecen lo mismo con nombres distintos: una forma de que el JavaScript mande un mensaje al lado nativo, y otra de que el lado nativo ejecute JavaScript en la página.
Y la fila de los cruces es la explicación del nivel 15.3: el canal transporta texto, así que todo lo que cruza se serializa y se reconstruye — y eso es lo que cuesta, no la distancia.
Qué determina el coste
Y con eso, los cuatro factores del coste de un mensaje:
Los cuatro juntos explican todas las recomendaciones de rendimiento del puente que este temario ha ido dando sin explicar del todo por qué.
Lo que no se puede hacer
Y las tres cosas que la naturaleza del canal impide:
- Pasar una referencia. Todo se copia; no hay objetos compartidos entre las dos mitades.
- Compartir memoria. No hay un buffer común: lo que hay es un canal de texto.
- Y mandar algo que no se pueda serializar. Nivel 15.1: una función, un manejador, un recurso abierto.
Y de ahí sale una regla de diseño: lo que cruza el puente son datos, no objetos con comportamiento. Si te ves queriendo pasar algo con comportamiento, la respuesta es un identificador y un comando que opere sobre él — el patrón del nivel 14.4.
Los mecanismos por motor
Y para cerrar, lo que difiere:
- Cada motor tiene su nombre y su forma de exponer el objeto de mensajes.
- El hilo en el que llega el mensaje difiere, y la capa lo normaliza.
- Y los límites de tamaño de un mensaje difieren, aunque en la práctica el coste llega antes que el límite.
Y en las tres, evaluar JavaScript desde el lado nativo es la vía de vuelta — que es por qué los eventos del nivel 19 son lo que son.