2010-12-11 25 views
3

Lorsque l'utilisateur accède au site, un panier vide est créé côté client et côté serveur. Lorsqu'il ajoute un produit dans le SC, un appel RPC est effectué pour ajouter le produit du côté serveur. Nous devons faire le même côté client pour être synchronisés et mettre à jour l'interface utilisateur. Si ce n'est pas le cas, passez à une vue qui fait référence à un ancien SC. L'interface utilisateur ne sera pas mise à jour en conséquence (SC vide alors qu'il y a un produit dedans).GWT Synchronisation du client et du modèle de serveur

Solution 1

L'appel RPC renvoie le SC mis à jour et faire clientSC = returnedSC. Ce n'est pas très efficace car il y a beaucoup de données à transférer sur le réseau.

Solution 2

L'appel RPC renvoie le produit ajouté, et sur le côté client, appeler une méthode addProduct qui ajouter ce produit à une liste au lieu de le stocker dans le magasin de données (tel que sur le côté serveur) .

Solution 3

solution identique à 2 mais en utilisant un événement pour avertir les présentateurs (j'utilise le modèle MVP) qui ont une référence à un SC.

Lequel est le meilleur, plus généralement quelle est la meilleure pratique pour synchroniser le modèle client et serveur?

Répondre

4

Utilisez RequestFactory, fourni avec gwt 2.1.

http://code.google.com/webtoolkit/doc/latest/DevGuideRequestFactory.html

RequestFactory le rend facile à mettre en œuvre une couche d'accès aux données sur le client et le serveur . Il vous permet de structurer votre code côté serveur de manière centrée sur les données et offre un niveau d'abstraction plus élevé que que GWT-RPC, qui est orienté service plutôt que orienté données. Du côté client, RequestFactory garde la trace des objets qui ont été modifiés et envoie uniquement modifications au serveur, ce qui se traduit en réseau très léger charges utiles. En outre, RequestFactory fournit une base solide pour le traitement automatique et la mise en cache des demandes dans l'avenir.

RequestFactory utilise son propre servlet, RequestFactoryServlet, et met en œuvre son propre protocole d'échange de données entre client et le serveur. Il n'est pas conçu pour les services d'usage général comme GWT-RPC, mais plutôt pour services axés sur les données comme nous le verrons bientôt . RequestFactory n'utilise pas GWT-RPC et n'est pas destiné à remplacer il. Il est conçu spécifiquement pour en implémentant une couche de persistance sur à la fois client et serveur.