2012-04-23 34 views
9

Po wielu przypadkach pomocy technicznej zdajemy sobie sprawę, że największym problemem, jaki mamy z naszą aplikacją opartą na GWT, jest to, że użytkownicy pozostawiają go otwarte przez kilka tygodni. Oznacza to, że gdy co tydzień lub dwa wprowadzamy poprawkę, kody pośredniczące RPC są niezsynchronizowane i powodują wygenerowanie cichych wyjątków powodujących, że witryna wygląda "zepsuta". Czy ktoś wie o sposobie automatycznego wykrycia i uniknięcia tego problemu? Kilka pomysłów miałem ...Elegancki sposób na wykrycie, czy aplikacja GWT jest nieaktualna i czy automatycznie odświeżana przeglądarka?

  1. Po złapaniu wyjątku niezgodności RPC odśwież przeglądarkę.
  2. Podczas ładowania strony hosta należy wprowadzić numer wersji w kontrolerze źródłowej, z której pochodzi kompilacja, mieć kontroler stanu/timer, który sprawdza, czy liczba nie uległa zmianie. Kiedy przeładuje.
  3. Załaduj ponownie na dowolnym zegarze (być może dwa razy dziennie).

Jakieś pomysły?

+3

Poszedłbym z opcją 1, ponieważ będzie konsekwentnie "IncompatibleRemoteServiceException". Złap, daj im ładny komunikat o błędzie i 'location.reload (true);'. – Strelok

+0

Zgodnie z [javadoc] (http://google-web-toolkit.googlecode.com/svn/javadoc/latest/com/google/gwt/user/client/rpc/IncompatibleRemoteServiceException.html), IncompatibleRemoteServiceException nie jest generowany, gdy po prostu zmieniasz implementację metody usługi bez dodawania lub usuwania pól. Więc idę z moją wersją opcji 2: Mam numer kompilacji po stronie klienta. Każde wywołanie RPC GWT powinno wysłać ten numer kompilacji na serwer. Możesz sprawdzić, czy numer kompilacji jest najnowszy po stronie serwera, jeśli nie możesz odświeżyć stronę. –

Odpowiedz

1

Chciałbym przedstawić czwartą opcję.

Utwórz proxy proxy RPC i UI Object Object, w którym przesyłane są wszystkie żądania interfejsu użytkownika i żądania RPC. W ten sposób, gdy serwer proxy wykryje, że coś jest nieaktualne, może dynamicznie ładować widget lub zmieniać oczekiwane modele RPC.

To bardzo dobrze, jak Vaadin robi rzeczy i działa świetnie. Vaadin to zestaw narzędzi do interfejsu użytkownika zbudowany na GWT na wypadek, gdybyś nie był tego świadomy. W ciągu ostatnich kilku lat korzystamy z kilku długotrwałych aplikacji produkcyjnych i wprowadziliśmy kilka poprawek w języku UI (UIDL), aby dodać niedopasowanie wersji.

Ten diagram jest dobrym odzwierciedleniem tego, co robią i jeśli nie chcesz zbudować czegoś takiego sam, oczywiście poleciłbym przenieść się do Vaadin.

Vaadin Client Side Architecture

0

wdrożenia zabezpieczeń, który loguje się użytkowników po godzinie bezczynności. Zakładając, że twoje wydania są dostępne na noc lub w weekendy, użytkownicy logują się po wydaniu. Nie musisz odświeżać aplikacji. jest to opłacalne, zwłaszcza jeśli witryna potrzebuje użytkowników do zalogowania się.

Powiązane problemy