Question

J'envoie ID d'objet et-vient du client vers le serveur via le mécanisme RPC GWT. Les ids sortent du magasin de données comme Longs (8 octets). Je pense que tous mes ids aura seulement besoin de 4 octets, mais quelque chose au hasard pourrait se qui me donne une valeur (ou autre) 5 octets.

GWT va être intelligent sur l'emballage de ces valeurs dans un codage de longueur variable qui permettra d'économiser l'espace en moyenne? Puis-je préciser que faire quelque part? Ou devrais-je écrire mon propre code pour copier les ints et désire ardemment attention à ces situations exceptionnelles?

Merci ~

Était-ce utile?

La solution

Comme indiqué dans le documentation GWT .

  

long : JavaScript n'a pas de type intégral 64 bits, les besoins aussi longtemps une attention particulière. Avant GWT 1.5, le type long a été simplement mis en correspondance avec la gamme entière d'une valeur à virgule flottante JavaScript 64 bits, ce qui donne des variables longues une plage réelle inférieure à 64 complets de bits. Comme de GWT 1,5, de longues primitives sont émulés en tant que paire d'entiers de 32 bits, et fonctionnent de façon fiable sur toute la plage de 64 bits. Overflow est émulé pour correspondre au comportement attendu. Il y a quelques mises en garde. L'utilisation intensive des opérations longues aura un impact sur les performances en raison de l'émulation sous-jacente. De plus, les primitives longues ne peuvent pas être utilisés dans le code JSNI car ils ne sont pas un natif de type JavaScript numérique.

Si votre ids peut tenir dans un nombre entier, vous pourriez être mieux avec cela. Sinon, si vous utilisez un DTO, faire un double ids qui existe réellement en Javascript.

Autres conseils

GWT utilise la compression gzip pour des réponses avec une charge utile de 256 octets ou plus. Cela devrait bien fonctionner si vous avez beaucoup de zéro octets dans votre réponse.

RemoteServiceServlet.shouldCompressResponse :

  

Détermine si la réponse à une   demande de servlet donnée devrait ou   pas GZIP comprimé. Cette méthode est   seulement appelé dans les cas où la   demandeur accepte l'encodage GZIP.

     

Cette implémentation retourne actuellement   vrai si de la chaîne de réponse   durée estimée d'octets est plus longue que   256 octets. Les sous-classes peuvent remplacer   cette logique.

Ainsi, les premiers serveur vérifie si le demandeur (le navigateur, le plus souvent) accepte l'encodage GZIP. En interne, java.util.zip.GZIPOutputStream est utilisé - voir RPCServerUtils . Du côté client, il est le travail du navigateur décomprimer la charge utile gzip - puisque cela se fait dans le code natif , il devrait être assez rapide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top