2010-12-11 6 views
3

Wenn der Benutzer auf die Site kommt, wird ein leerer Einkaufswagen auf der Client- und Serverseite erstellt. Wenn er ein Produkt in den SC einfügt, wird ein RPC-Aufruf durchgeführt, um das Produkt auf der Serverseite hinzuzufügen. Wir müssen dieselbe Clientseite verwenden, um synchron zu sein und die Benutzeroberfläche zu aktualisieren. Wenn nicht, wechseln wir zu einer Ansicht, die einen Verweis auf einen alten SC enthält. Die Benutzeroberfläche wird nicht entsprechend aktualisiert (leerer SC, obwohl ein Produkt darin enthalten ist).GWT Synchronisieren des Client- und Servermodells

Lösung 1

Der RPC-Aufruf gibt die aktualisierte SC und tun clientSC = returnedSC. Es ist nicht sehr effizient, da viele Daten über die Leitung übertragen werden müssen.

Lösung 2

Der RPC-Aufruf liefert das zusätzliche Produkt und auf der Client-Seite, rufe eine Methode addProduct, die das Produkt zu einer Liste hinzuzufügen, anstatt sie in dem Datenspeicher (wie auf der Serverseite) Speicher .

Lösung 3

gleiche wie die Lösung 2, sondern ein Ereignis verwenden, um die Moderatoren in Kenntnis zu setzen (I verwenden, um das MVP-Muster), die einen Verweis auf einen SC hat.

Welches ist das Beste, was ist die beste Vorgehensweise, um das Client- und Servermodell in Übereinstimmung zu halten?

Antwort

4

Verwenden Sie RequestFactory, das mit gwt 2.1 geliefert wird.

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

RequestFactory macht es leicht zu sowohl eine Datenzugriffsschicht auf Client und Server implementieren. Es ermöglicht Ihnen Ihren serverseitigen Code in eine datenzentrierte Weise zu strukturieren und bietet eine höhere Abstraktionsebene als GWT-RPC, , die serviceorientiert ist, anstatt datenorientiert. Auf der Clientseite, hält RequestFactory Spur von Objekten , die geändert wurden und sendet nur Änderungen an den Server, die in sehr leichten Netzwerk Nutzlasten führt. Darüber hinaus bietet RequestFactory eine solide Grundlage für automatische Batching und Caching von Anforderungen in der Zukunft.

RequestFactory verwendet seine eigenen Servlet, RequestFactoryServlet und implementiert ein eigenes Protokoll für den Datenaustausch zwischen Client und Server. Es ist nicht für allgemeine Dienste wie GWT-RPC, sondern eher für datenorientierte Dienstleistungen wie wir in Kürze sehen werden. RequestFactory verwendet GWT-RPC nicht und soll es nicht ersetzen. Es wurde speziell für entwickelt, um eine Persistenzschicht auf Client und Server zu implementieren.