2011-08-09 3 views
8

Quelles sont les meilleures pratiques pour envoyer une énorme quantité de données du serveur au client dans GWT?GWT Meilleure pratique pour envoyer une énorme quantité de données du serveur au client

Actuellement, nous sommes confrontés à des problèmes de performances dans GWT 2.3.0. Notre côté serveur envoie un énorme xml (taille en Mo/Go) côté client, notre côté client analyse xml et en utilisant des données analysées, la liste des beans est formée pour remplir les données dans la grille Celltable.

Nous remplissons les enregistrements 1k +/10k + dans la grille CellTable.

Y a-t-il un moyen efficace de suivre ces bonnes pratiques? Si nous analysons les données côté serveur et formons les beans côté serveur, est-ce bon? ou toute autre manière ..

Toute aide ou conseil à ce sujet serait apprécié.

+0

Comment fonctionne bien les données compriment? Peut-être que compresser - envoyer - décompresser peut être plus rapide si le retard est dans le réseau. – rossum

Répondre

6

Fondamentalement, vous demandez uniquement autant de données (et un peu plus) que ce qui est actuellement affiché par l'utilisateur, et non l'ensemble des données.

Voir Adding Paging Controls pour plus de détails.

3

Deux pratiques lorsqu'ils traitent avec les grandes quantités de données pour votre cas:

1) Utiliser JSON au lieu de XML, de cette façon que le client n'a pas besoin d'analyser les données, mais peut utiliser directement les données. Dans GWT via l'interface GWT-JSNI, vous pouvez écrire des objets de données accédant à ces objets JavaScript, voir: http://code.google.com/webtoolkit/doc/latest/DevGuideCodingBasicsJSNI.html. Avec une bibliothèque JSON REST, vous pouvez générer le JSON sur le serveur au lieu d'envoyer un fichier XML au client. Mais vous pouvez aussi utiliser GWT-RPC sur le client/serveur, ce qui facilite la programmation car toute la conversion de données vers et à partir de JSON est gérée par GWT, mais ajoute des informations de type aux objets envoyés.

2) Utiliser la pagination: obtenez uniquement les données visibles par l'utilisateur et mettez-les en cache dans le client. Si vous avez une présentation de table, il est peu probable que l'utilisateur ait besoin de toutes les données à la fois. panneaux de cellules GWT ont l'appui de la boîte (voir le lien Oliver mentionne sur l'ajout de contrôles de radiomessagerie)

2
  1. Utiliser la pagination. Les widgets de cellules GWT prennent en charge la pagination prête à l'emploi. Implémentez donc la pagination côté serveur de sorte que chaque fois que vous cliquez sur "Suivant", un appel de serveur est effectué. De cette façon, le client ne traite que 10 ou 20 enregistrements à la fois.

  2. Utilisez les types de superposition Javascript comme les beans d'affichage. Et pour peupler ces beans, utilisez JSON comme modèle de transport au lieu de XML. Si vous utilisez XML (c'est-à-dire des appels asynchrones), GWT exécute une logique JAXB marshalling/unmarshalling dans le back-end. Si vous utilisez JSON, une grande partie de cela est évitée.

Questions connexes