tutorial - gwt json
Formato de datos GWT RPC (1)
EDITAR: Brian Slesinsky acaba de documentar el protocolo (mediante la ingeniería inversa del código): https://docs.google.com/document/d/1eG0YocsYYbNAtivkLtcaiEE5IOF5u4LUol8-LL0TIKU/edit
En primer lugar, el protocolo GWT-RPC es asimétrico, por lo que siempre está optimizado para el lado del cliente: deserializa rápidamente algo que proviene del servidor y lo convierte rápidamente en serializar algo para enviarlo.
Obviamente no es binario, como sospechabas, sino basado en texto. el protocolo de cliente a servidor está delimitado por canalización mientras que el servidor por cliente se basa en JSON (con un //OK
prefijo //OK
o //EX
para indicar si la solicitud tuvo éxito o no). Ambos usan el conocimiento común de las clases serializables para serializar / deserializar; por ejemplo, ambos lados saben que la clase X tiene dos campos, un entero y una cadena, serializados en ese orden, por lo que ambos escriben / leen un entero, y luego una cadena, sin necesidad de especificar en el formato codificado qué campo es acerca de.
El protocolo GWT-RPC está versionado (cambia regularmente a medida que se lanzan nuevas versiones de GWT) y utiliza hashes de los nombres de las clases y campos serializables para garantizar que tanto el cliente como el servidor usan las mismas versiones de las clases (lo que significa que tiene que recompilar y vuelva a implementar su código de cliente cada vez que cambie una clase serializable).
La mejor documentación es el código, pero encontrará una descripción general del formato de solicitud en estas diapositivas: https://www.owasp.org/images/7/77/Attacking_Google_Web_Toolkit.ppt
RequestFactory, al contrario que GWT-RPC, utiliza un protocolo simétrico basado en JSON (basado en la serialización JSON de AutoBean) donde el cliente y el servidor pueden comunicarse incluso cuando no se compilan desde el mismo código (bueno, dependiendo de los cambios que haya realizado entre las versiones, por supuesto ), porque pasan nombres de clases y propiedades.
¿Cómo se ve el formato de datos de las llamadas RPC de Google Web Toolkits (GWT) y cómo se transmiten los objetos IsSerializables? Sé que Java Serializable transmite algún tipo de formato binario, pero ¿es este el caso también con GWT? (Ya que no espero que sea compatible con JavaScript, o al menos requiera un análisis adicional).