I miei approfondimenti dopo aver lavorato un anno in un progetto GWT/Seam. Presumo che non ci sia un sito web esistente che significa che puoi partire da zero. Se ce n'è uno, ti suggerisco di onorare la tua eredità e di migliorarla inserendo selettivamente i widget GWT in posizioni specifiche delle pagine html esistenti (altri dettagli here).
Il nostro processo di sviluppo può o meno essere riassunto dalle seguenti fasi (cicli di feedback, incontri standup e tali omessi, si conosce l'affare):
Feature Request: contiene la descrizione della funzionalità desiderata in un alto livello
Wire Frames: un alto livello di interfaccia utente che dà una prima impressione di come la funzionalità sta per essere forniti all'utente finale e come si è integrato in app esistente (senza fronzoli)
Progetto definitivo: la finale esteso interfaccia utente della nuova funzione creata dal nostro designer (solo Photoshop, senza scheletro di html, css senza)
Implementazione e test: mi concentrerò sulla realizzazione e descrivere come è cambiato nel corso uno anno
Abbiamo iniziato il nostro progetto con GWT 1.6, che è priva di qualsiasi sostegno UiBinder. Quindi la decisione era 1) costruire l'intero lato client della nostra app con GWT (ad es., codice java) o 2) costruisci le nostre pagine con JSF (visto che stiamo usando Seam) ed estendale con i widget GWT. Abbiamo deciso di optare per la seconda opzione principalmente perché ci piaceva l'idea di spingere la maggior parte dello stato ai clienti e lasciare che facessero l'elaborazione. E fare tutto in java è stato promettente con il nostro forte background nello sviluppo di java.
L'implementazione della logica di business non ha creato alcun problema. Quello che ci ha messo più tempo è stato costruire l'interfaccia utente: comporre il layout delle pagine e modellarle in java richiede molto tempo ed è soggetto a errori. Il divario tra l'html finale (basato sul design del passaggio 3) e i widget GWT era troppo grande.
Passare a UiBinder è stato il primo passo da fare quando è stato rilasciato GWT 2.0. Poiché abbiamo dovuto rielaborare la maggior parte del nostro codice cliente, abbiamo anche adattato lo MVP pattern. La produttività è cresciuta in modo significativo dopo che uno sviluppatore stava implementando la logica di business (principalmente la parte presenter di MVP) mentre un altro era occupato a costruire la parte vista (.ui.xml e il widget). Unit testing è diventato anche più facile perché la funzionalità principale era ora ben separata nella parte presenter (e GWTTestCase faceva parte del passato).
Il prossimo passo importante che stiamo facendo è passare dalla nostra implementazione di MVP a uno più elaborato (ovvero gwt-platform). Motivazioni alla base di questa decisione: DI attraverso GIN (le dipendenze sono chiare e il codice diventa più pulito), un buon supporto per la cronologia del browser (l'abbiamo trascuratamente trascurato - un enorme errore!), Supporto per la suddivisione del codice, schema di comando per chiamate asincrone e altro ancora.
La mia conclusione dopo un anno di esperienza: utilizzare UiBinder per la parte dell'interfaccia utente e scegliere un'architettura MVP pulita. La curva di apprendimento potrebbe essere ripida ma percorrere la stessa strada, quindi molti sviluppatori GWT ti hanno portato decisamente più tempo.
... i miei 2 centesimi :)
+1, questa è una domanda di programmazione molto buona, incentrata sul "quadro generale". Mi piacerebbe anche avere delle risposte da persone che hanno effettivamente realizzato progetti GWT su questo (al contrario di commenti negativi che dicono * "quella domanda non appartiene a SO" * da persone che non sono in grado di rispondere, commenti e persone chi entrambi possono davvero andare a/dev/null). – SyntaxT3rr0r
Webinator, grazie per il vostro supporto. Speriamo di ottenere una buona risposta. – Ramp