Come verificare che la vista del cliente sia coerente con il modello remoto?

2

sto progettando un sistema client-server tramite web broswser e ho questo problema: Invio i dati al client tramite JSON, quindi la vista javascript mostra le cose. Quindi l'utente esegue azioni e i comandi vengono inviati al server. Cose usuali, il problema è cosa succede se i dati della vista sono corrotti o vecchi? Una soluzione che ho pensato è creare un hash via SHA1 o qualche altro algoritmo degli oggetti completi nel modello del client, ma i dati JSON non sono ordinati, anche questo aggiunge ritardi al sistema. In che modo Google Documenti gestisce questo tipo di cose? Inoltre, inviando TUTTI I DATI, ogni volta che il modello viene aggiornato non ha senso, ma come faccio a mantenere la consistenza inviando solo le modifiche? Penso che l'intero problema sia solo uno.

    
posta alfa64 29.04.2012 - 03:16
fonte

1 risposta

1

Nella maggior parte dei casi, probabilmente lo farei in questo modo:

  • Memorizza uno stato iniziale più tutte le modifiche apportate da quel stato (tutte con data e ora).
  • Esegui il polling solo per le modifiche dall'ultimo timestamp recuperato.
  • Se qualcuno pubblica un aggiornamento, invia il timestamp dell'ultimo visto con esso. Se ci sono stati aggiornamenti da allora, gestiscilo di conseguenza. (Vedi sotto)
  • Periodicamente, calcola lo stato dei dati in un dato momento.
  • Quando si carica lo stato nuovo, caricare solo lo stato calcolato per ultimo più le modifiche apportate da quel momento.

Quando dico "gestiscilo di conseguenza", intendo che dipende molto dal caso. Se riesco a fare il secondo aggiornamento in modo sicuro e a inviare l'aggiornamento mancante al client, lo farò. Ma a volte vorrai informare l'utente di un doppio aggiornamento e permetterle di prendere la decisione che cosa fare dopo.

    
risposta data 29.04.2012 - 06:36
fonte

Leggi altre domande sui tag