Welches sind die Best Practices, um in GWT riesige Datenmengen vom Server zum Client zu senden?
Im Moment haben wir es mit GWT 2.3.0 zu tun.
Unsere Server-Seite sendet riesige xml (Größe in MB / GB) an die Client-Seite, unsere Client-Seite analysiert diese XML und verwendet geparste Daten, eine Liste von Beans wird gebildet, um Daten im Celltable-Raster zu füllen.
Wir füllen 1k + / 10k + Datensätze im CellTable-Raster.
Gibt es einen effektiven Weg / Best Practices beim Umgang mit solch riesigen Datenmengen? Wenn wir die Daten serverseitig analysieren und die Beans serverseitig bilden, ist das gut? oder irgendeinen alternativen Weg.
Jede Hilfe oder Anleitung in dieser Angelegenheit wäre willkommen.
Grundsätzlich werden nur so viele Daten (und etwas mehr) angefordert, als der Benutzer gerade sieht, nicht der gesamte Datensatz.
Weitere Informationen finden Sie unter Hinzufügen von Paging-Steuerelementen .
Zwei Vorgehensweisen beim Umgang mit großen Daten für Ihren Fall:
1) Verwenden Sie JSON anstelle von XML, so dass der Client die Daten nicht analysieren muss, sondern die Daten direkt verwenden kann. In GWT können Sie über die GWT-JSNI-Schnittstelle Datenobjekte schreiben, die auf diese JavaScript-Objekte zugreifen, siehe: Ссылка . Mit einer JSON-REST-Bibliothek können Sie JSON auf dem Server generieren, anstatt XML an den Client zu senden. Sie können GWT-RPC jedoch auch auf beiden Clients / Servern verwenden, was die Programmierung vereinfacht, da die gesamte Datenkonvertierung von und nach JSON von GWT gehandhabt wird, aber den send-Objekten einige Typinformationen hinzugefügt werden.
2) Paging verwenden: Daten nur abrufen, die für den Benutzer sichtbar sind, und im Client zwischenspeichern. Wenn Sie eine Tabellenpräsentation haben, ist es nicht wahrscheinlich, dass der Benutzer alle Daten gleichzeitig benötigt. GWT Cell Panels haben Unterstützung von Anfang an (siehe den Link Oliver erwähnt über Hinzufügen von Paging Controls)
Geben Sie wie in den anderen Antworten nur die Daten zurück, die vom Benutzer sinnvoll verwendet werden können, und holen Sie andere Daten, wenn der Benutzer sie anfordert (oder Predictive Holen Sie ).
Siehe Abschnitt AsyncDataProvider hier: Ссылка
Verwenden Sie Paging. GWT-Zellen-Widgets unterstützen das sofortige Auslagern. Implementieren Sie also Server-seitiges Paging, sodass jedes Mal, wenn Sie auf "Weiter" klicken, ein Server-Aufruf erfolgt. Auf diese Weise behandelt der Client nur etwa 10 oder 20 Datensätze gleichzeitig.
Verwenden Sie Javascript Overlay-Typen als Anzeige-Beans. Um diese Beans zu füllen, verwenden Sie JSON als Transportmodell anstelle von XML. Wenn Sie XML (d. H. Async-Aufrufe) verwenden, führt GWT einige JAXB-Marshalling / Unmarshalling-Logik im Back-End durch. Wenn Sie JSON verwenden, wird viel davon vermieden.