2016-08-02 31 views
0

Derzeit arbeiten an einer Webanwendung. Ein bestimmter Bereich/Seite dieser Anwendung führt bestimmte Zeit aus, DB-Operationen zu nehmen. Die aktuelle Struktur dieser Seite lautet:Wie man eine Methode in asynchrone konvertieren - Frühling, DWR?

1) DWR call from the front end to the backend 
2) Front end waits for the backend to return data 
3) When data is returned, the callback function is executed in the 
    front end and data is displayed to user in the format needed. 

Während Schritt # 2, nimmt Backend viel Zeit zurückliegende Daten zu verarbeiten und zu senden. Während dieser ganzen Zeit ist die Anwendung unbrauchbar.

Die Änderung, die vorgenommen werden sollte, ist:

1) Let the user use the application after sending the request in step #1 
2) Front end will be populated with data after the backend processes the data and 
    send the details back. 
3) When user revisits the page, information from previous request is available. 

ich nach Möglichkeiten suchen dies möglich zu machen. Nicht sicher, ob es einen DWR- oder Federmechanismus gibt, um dies zu erreichen. Bitte weisen Sie mich in die richtige Richtung, damit ich mehr nach dem richtigen Code recherchieren kann.

Antwort

0

Die Hauptfrage ist - welche Technologie Sie für die Seiten verwenden und wie viel "Warten" erforderlich ist.

  1. einfachste Fall ist, wenn der Browser eine offene Verbindung während des Wartens halten: dies geschieht, wenn die Wartezeit nicht zu lang ist, und der Benutzer bleibt auf der gleichen Seite. In diesem Fall stellt der Server REST zur Verfügung, während er nicht merkt, wer ihn verbraucht. Die meiste Arbeit wäre auf der Client-Seite, die asynchrone Ajax ausführen muss - wenn es DWR see here ist, wenn es Frühling ist, dann mischt es sich nicht auf der Client-Seite ein und Sie können alle Javascript-Helfer verwenden, die Sie mögen, z. JQuery

  2. Es wird komplizierter, wenn die Wartezeit lang ist, oder wenn der Benutzer eine Push-Benachrichtigung erhalten soll, auch wenn er in der Zwischenzeit zu einer anderen Seite navigiert hat. In diesem Fall würde ich vorschlagen, in websockets or server-sent events oder Long-Polling-Mechanismen zu suchen (google es - es gibt viele Beispiele und Produkte, einige frei, einige teuer). Sei jedenfalls bereit für eine Lernkurve hier.

  3. Zu Anforderungen 3 (schnelle Möglichkeit, die Daten beim erneuten Besuch der Seite zu sehen), habe ich keine magische Lösungen, nur gute alte Caching ... Ihr Cache könnte an verschiedenen Standorten - von Client zu Server über einen Caching-Proxy in der Mitte. Offensichtlich muss man die Cache-Auffrischungs-Richtlinie in Betracht ziehen - am einfachsten, wenn Sie mit den gleichen Daten "für X Minuten/Stunden" leben können. Ein komplexer Fall ist, wenn Sie bei bestimmten Geschäftsaktionen aktualisieren müssen.