Pergunta

Estou a enviar id de objecto e para trás a partir do cliente para o servidor através do GWT RPC mecanismo.Os ids estão saindo do armazenamento de dados, como Longos (8 bytes).Eu acho que todos os meus ids só precisa de 4 bytes, mas algo aleatório poderia acontece que me dá 5 bytes (ou qualquer que seja o valor.

É GWT vai ser inteligente sobre a embalagem estes valores de algumas variáveis-codificação de comprimento que vai economizar espaço em média?Posso especificar o que é fazê-lo em algum lugar?Ou devo escrever o meu próprio código para copiar o Longs para ints e atente para as situações excepcionais?

Obrigado~

Foi útil?

Solução

Como indicado no GWT documentação.

longo:O JavaScript não tem 64 bits, tipo integral, desde precisa de atenção especial.Antes GWT 1.5, o tipo long foi simplesmente foi mapeada para a integral do intervalo de uma versão de 64-bit JavaScript valor de ponto flutuante, dando tempo de variáveis de um intervalo real menor que o total de 64 bits.Como GWT 1.5, muito primitivos são emulados como um par de números inteiros de 32 bits, e de trabalhar de forma confiável durante todo o 64-bit faixa.O excesso é emulada para coincidir com o comportamento esperado.Há um par de oposições.O uso pesado de operações longo vai ter um impacto no desempenho, devido à subjacentes emulação.Além disso, muito primitivos não pode ser usado em JSNI código porque eles não são nativos do JavaScript tipo numérico.

Se o ids pode caber em um Inteiro, você poderia ser melhor com isso.Caso contrário, se você estiver usando um DTO, fazer as identificações de um casal, que realmente existe em Javascript.

Outras dicas

O GWT usa a compactação GZIP para respostas com uma carga útil de 256 bytes ou mais. Isso deve funcionar bem se você tiver muitos bytes zero em sua resposta.

A partir de RemoteServiceServlet.shouldCompressResponse:

Determina se a resposta a uma determinada solicitação de servlet deve ou não ser compactada GZIP. Este método é chamado apenas nos casos em que o solicitante aceita a codificação do GZIP.

Atualmente, essa implementação retorna true se o comprimento estimado do byte da sequência de resposta for superior a 256 bytes. As subclasses podem substituir essa lógica.

Portanto, o servidor verifica primeiro se o solicitante (o navegador, geralmente) aceita a codificação GZIP. Internamente, java.util.zip.GZIPOutputStream é usado - veja RPCServerUtils. No lado do cliente, é o trabalho do navegador descompacte a carga útil giratória - Como isso é feito no código nativo, deve ser bastante rápido.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top