2010-11-11 4 views
0

Débutant question:GWT - Le serveur doit-il renvoyer les données brutes ou le widget?

En réponse à une demande, mon serveur retourne une structure de données arborescente, et je veux la présenter comme une arborescence sur le client. Cependant, la logique de la transformer en un widget arbre est un peu complexe.

Dois-je créer le widget Arbre GWT sur le serveur et le renvoyer tel quel, ou dois-je m'en tenir aux données brutes et formuler le widget sur le client?

Répondre

2

Deux raisons pour lesquelles je pense que vous ne devriez pas envoyer l'arbre entier widget:

  • Pour passer le traitement aux clients rend votre vie beaucoup plus facile de serveurs en particulier lorsqu'ils traitent avec beaucoup de demandes coûteuses. C'est ce que GWT veut dire: laisser le client faire le travail.
  • Ce n'est pas la responsabilité du serveur de faire des choses liées à l'interface utilisateur. Des fonctionnalités telles que la liaison différée (c'est-à-dire, décider quelles parties de votre application sont nécessaires pour le navigateur spécifique à partir duquel la requête est générée) sont effectuées sur le client une fois le no.cache.js chargé. Cela ne peut pas être fait sur le serveur.
5

(1) Vous voulez transférer des données pures (objets Java) entre le serveur et le client. Le client (code dans le navigateur) devrait être responsable de transformer les données pures en une représentation visuelle pour l'utilisateur. (2) En outre, comme les widgets GWT référencent des parties du DOM du navigateur, je suis à peu près certain que vous ne pouvez pas instancier ces objets sur le serveur de toute façon.

+1

Je serais un peu surpris si le code qui fait référence à Widgets même COMPILES sur le côté serveur. – Curtis

+0

@Curtis - Merci de l'avoir souligné, c'est ce que je voulais dire, mais maintenant je le relis, je vois qu'il pourrait être compris différemment. –

+1

Il compilera si le jar gwt-user est dans le classpath. – stan229

0

Peut-être avez-vous besoin d'une structure de données contenant des données de mise en page prétraitées? Vous pouvez prétraiter le code de disposition dont vous avez besoin du côté client, le coller dans un Array/ArrayList de certaines classes spéciales. Peut-être, vous pouvez alors contourner la logique côté client de la construction de l'arbre et juste itérer sur la liste? Mais vous devriez vérifier les horaires, par ex. pour trier une grande liste, il est plus rapide de trier sur le serveur et de renvoyer la liste, pour une petite liste, la surcharge réseau est plus grande que le javascript plus lent du navigateur. Je ne sais pas si cela est vrai pour votre exemple.