Domanda

Mi chiedo se qualcuno di voi sono a conoscenza degli approcci architetturali adottati dal team onda per costruire il suo client web GWT? Dal momento che sto cercando di ottimizzare le prestazioni di un app GWT progettato per cellulari, è difficile non ammirare le sue credenziali veloci :)

  • Is Wave non utilizzando GWT-RPC per ottenere aggiornamenti regolari da server? Firefox tiene traccia certa comunicazione JSON andare oltre il filo, ma niente come roba RPC.

  • Come si procede quando, per esempio viene inviato un nuovo wavelet. C'è una sottofinestra per ogni DTO onda, o usano qualche altro motivo?

  • Come si aggiorna GUI dopo una risposta con, diciamo, una nuova ondata arriva. Sarebbe l'intera area con piccole onde essere rerendered o l'uso di alcune tecniche intelligenti per garantire che solo elemento particolare è toccato?

Grazie

È stato utile?

Soluzione

Questo è probabilmente sovraccarico di informazioni, ma dal momento che Google Wave è open source si può effettivamente vedere come si misero le cose qui .

Se si guarda alla WaveView.java, per esempio, si può vedere che stanno utilizzando un bus evento lato client come Ray Ryan menzionato in questo discorso al Google iO 2009. mi sembra di ricordare di aver visto un altro video in cui si parlava di questi aspetti di Google Wave:

  • Essi utilizzano un sistema di eventi di sparare eventi quando succede qualcosa sul lato client. Il sistema di eventi gestisce la comunicazione con il server, il passaggio di informazioni evento fino al server, ricevendo gli eventi dal server, e la pubblicazione di quegli eventi che tornano. Il bus eventi utilizza una sorta di tampone in modo che se un gruppo di eventi sono sparato in rapida successione, possono trasmetterli tutti in un unico lotto. Ad esempio, quando una nuova ondata arriva, un evento con le informazioni d'onda sarebbe licenziato, e qualsiasi parte dell'interfaccia utente che sono attivamente in ascolto per quell'evento sarebbe una notifica, in modo da poter stabilire se avevano bisogno di cambiare di conseguenza.
  • Essi punti di giunzione utilizzati (o qualche tale, non ricordo il nome) per fare in modo che GWT potrebbe rompere il codice in moduli, e solo caricare le porzioni che effettivamente devono essere utilizzati. Dal momento che il file javascript onda ui era in origine più di 1MB (minified e compresso), che era abbastanza importante.
  • Poiché solo alcune onde e wavelet sarebbero visibili alla volta, essi effettivamente utilizzato alcune tecniche complesse di riutilizzare gli stessi elementi DOM. Quindi, come si scorre verso il basso attraverso la vostra lista di onde, in realtà è di prendere l'elemento DOM che rappresenta l'onda in cima alla posta in arrivo, cambiare l'informazioni privilegiate, e spostandolo verso il basso della vostra zona di scorrimento, lasciando uno spazio vuoto nella parte dell'area di scorrimento che non riesci a vedere più.

Inoltre, sono abbastanza sicuro che usano qualcosa come Comet con JSONP per mantenere una comunicazione continua con il server, quindi non sono il polling del server costantemente di nuovi aggiornamenti, ma piuttosto c'è un file javascript dinamicamente generati che viene caricata in modo incrementale dal server, che contiene le istruzioni per il fuoco qualunque sia il server eventi ha deciso bisogno di essere licenziato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top