Formato de datos GWT RPC


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 con GWT también? (Ya que no espero que sea compatible con JavaScript, o al menos requiere un análisis adicional).

Author: kenorb, 2011-05-26

1 answers

EDITAR: Brian Slesinsky acaba de documentar el protocolo (mediante ingeniería inversa del código): https://docs.google.com/document/d/1eG0YocsYYbNAtivkLtcaiEE5IOF5u4LUol8-LL0TIKU/edit

Primero, el protocolo GWT-RPC es asimétrico, por lo que siempre está optimizado para el lado del cliente: rápido para deserializar algo que viene del servidor, y rápido para serializar algo para enviarlo.

Obviamente no es binario, como sospechabas, sino basado en texto. protocolo cliente-servidor está delimitado por tuberías, mientras que de servidor a cliente se basa en JSON (con un 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 de qué campo se trata.

El protocolo GWT-RPC está versionado (cambia regularmente a medida que se lanzan nuevas versiones de GWT), y usa hashes de la clase y nombres de campos serializables para asegurar que el cliente y el servidor usen las mismas versiones de las clases (lo que significa que debe recompilar y redistribuir 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 de GWT-RPC, utiliza un protocolo simétrico basado en JSON (basado en la serialización JSON de AutoBean) donde cliente y servidor pueden comunicarse incluso cuando no están compilados desde el mismo código (bueno, dependiendo de los cambios realizados entre versiones, por supuesto), porque pasan nombres de clases y propiedades.

 50
Author: Thomas Broyer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-11 08:17:47