Pregunta

Estoy enviando ID de objetos de ida y vuelta desde el cliente al servidor a través del mecanismo de GWT RPC. Los identificadores están saliendo del almacén de datos como Longs (8 bytes). Creo que todos mis ids sólo se necesitan 4 bytes, pero algo al azar podría suceda eso me da un 5 bytes (o lo que sea) de valor.

es GWT va a ser inteligentes acerca de embalaje estos valores en alguna codificación de longitud variable que va a ahorrar espacio en promedio? ¿Puedo especificar que lo haga en alguna parte? O debo escribir mi propio código para copiar los anhela enteros y cuidado con esas situaciones excepcionales?

Gracias ~

¿Fue útil?

Solución

Como se indica en la GWT documentación .

  

los : JavaScript tiene ningún tipo integral de 64 bits, necesita tanto tiempo una consideración especial. Antes de GWT 1.5, el tipo de largo fue simplemente se asigna a la gama integral de un valor de coma flotante de 64 bits JavaScript, dando variables de largas un rango real menos de los 64 bits completos. A partir de GWT 1.5, primitivas largos se emulan como un par de enteros de 32 bits, y el trabajo de forma fiable en todo el rango de 64 bits. Desbordamiento se emula a coincidir con el comportamiento esperado. Hay un par de advertencias. El uso intensivo de las operaciones de largo tendrá un impacto en el rendimiento debido a la emulación subyacente. Además, las primitivas largas no se pueden utilizar en el código JSNI porque no son un tipo numérico nativo de JavaScript.

Si sus identificaciones pueden caber en un entero, que podría ser mejor con eso. De lo contrario, si usted está usando un DTO, hacer que los identificadores de un doble, que en realidad existe en Javascript.

Otros consejos

GWT utiliza la compresión gzip para las respuestas con una carga útil de 256 bytes o más. Eso debería funcionar bien si usted tiene una gran cantidad de bytes cero en su respuesta.

Desde RemoteServiceServlet.shouldCompressResponse :

  

Determina si la respuesta a una   petición de servlet determinado debe o   No se GZIP comprimido. Este método es   Sólo llamada en caso de que la   solicitante acepta GZIP codificación.

     

Esta implementación devuelve actualmente   true si la cadena es la respuesta   estimado longitud en bytes es más largo que   256 bytes. Las subclases pueden anular   esta lógica.

Por lo tanto, las primeras servidor comprueba si el solicitante (el navegador, por lo general) acepta GZIP codificación. Internamente, java.util.zip.GZIPOutputStream se usa - ver RPCServerUtils . En el lado del cliente, que es el trabajo del navegador para descomprimir la carga útil gzipped - ya que esto se hace en código nativo , que debe ser bastante rápida.

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