Pregunta

Me pregunto si algunos de ustedes son conscientes de los enfoques arquitectónicos tomadas por el equipo de Wave para construir su cliente Web GWT? Desde que estoy tratando de optimizar el rendimiento de una aplicación GWT diseñada para móviles, es difícil no admirar sus credenciales rápidos :)

  • No es onda usando GWT-RPC para obtener actualizaciones regulares desde un servidor? Firefox rastrea algún tipo de comunicación JSON ir sobre el alambre, pero nada como las cosas RPC.

  • ¿Cómo se procede cuando, por ejemplo, se envía un nuevo tren de ondas. ¿Hay un objeto de vista para cada DTO onda, o utilizar algún otro patrón?

  • ¿Cómo GUI se actualiza después de una respuesta con, digamos, una nueva ola llega. Sería toda la zona con pequeñas olas que se rerendered o el uso de algunas técnicas inteligentes para asegurar que único elemento en particular se ha tocado?

Gracias

¿Fue útil?

Solución

Esta es probablemente la sobrecarga de información, pero desde que Google Wave es de código abierto en realidad se puede estudiar la forma de establecer las cosas aquí .

Si nos fijamos en WaveView.java, por ejemplo, se puede ver que están utilizando un bus de eventos del lado del cliente como Ray Ryan menciona en esta charla en Google IO 2009. Creo recordar ver otro vídeo en el que se habló de estos aspectos de Google Wave:

  • Se utiliza un sistema de eventos de disparar eventos cuando sucede algo en el lado del cliente. El sistema de eventos gestiona la comunicación con el servidor, pasando la información del evento hasta el servidor, hacer que los eventos desde el servidor, y la publicación de esos eventos que vienen atrás. El bus de eventos utiliza una especie de amortiguador de modo que si un montón de eventos se disparó en rápida sucesión, pueden enviar a todos ellos en un solo lote. Por ejemplo, cuando llega una nueva ola, un evento con la información de onda podría ser despedido, y sería notificado ninguna parte de la interfaz de usuario que están escuchando activamente para ese evento, para que pudieran determinar si tenían que cambiar en consecuencia.
  • Ellos puntos de costura utilizados (o algo así, no puedo recordar el nombre) para hacerlo de modo que GWT podría romper el código en módulos, y sólo cargar las porciones que realmente necesitan para ser utilizado. Dado que el archivo JavaScript ui ola era originalmente más de 1 MB (minified y comprimido), que era bastante importante.
  • Dado que sólo ciertas ondas y wavelets serían visibles a la vez, que en realidad utiliza algunas técnicas complejas de reutilizar los mismos elementos DOM. De manera que se desplaza hacia abajo por la lista de las olas, en realidad está tomando el elemento DOM que representa la onda en la parte superior de la bandeja de entrada, el cambio de la información privilegiada, y moverlo a la parte inferior de su área de desplazamiento, dejando un espacio en blanco en la parte del área de desplazamiento que no se está viendo más.

Además, estoy bastante seguro de que usar algo como el cometa con JSONP para mantener una comunicación continua con el servidor, así que no son de votación el servidor constantemente nuevas actualizaciones, sino que hay un archivo javascript generado dinámicamente que está siendo cargado en forma incremental desde el servidor, que contiene instrucciones a fuego cualquiera que sea el servidor de eventos ha decidido necesidad de ser despedido.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top