Saltar al contenido

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.