2010-11-01 1 views
10
  1. Devo progettare lo scheletro di base HTML e iniziare da lì inserendo componenti e azioni tramite codice java?qual è l'approccio giusto per avviare un'applicazione GWT?

  2. Pianificare la creazione dell'intero progetto come un programma java progettando i dettagli nitidi utilizzando il codice java?

  3. Oppure c'è un modo migliore che non conosco?

A parte questo, quanto è facile o complesso mantenere il codice?

Sono nuovo di GWT e conosco le basi.

Grazie in anticipo per gli input.

+0

+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

+0

Webinator, grazie per il vostro supporto. Speriamo di ottenere una buona risposta. – Ramp

risposta

4

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):

  1. Feature Request: contiene la descrizione della funzionalità desiderata in un alto livello

  2. 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)

  3. Progetto definitivo: la finale esteso interfaccia utente della nuova funzione creata dal nostro designer (solo Photoshop, senza scheletro di html, css senza)

  4. 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 :)

+0

z00bs, grazie per l'input. – Ramp

+0

Prego. Se hai qualcosa di specifico che vorresti sapere: sono sempre felice di condividere le mie "lezioni apprese" :). – z00bs

2

Il mio consiglio è di iniziare pensando alla tua interfaccia. Come andrà a vedere e, soprattutto, come funzionerà. Pensa a quale problema la tua app sta per risolvere per i suoi utenti e come può farlo con il minor numero di clic e scorrimenti. Proteggi la tua interfaccia, UiBinder fa bene, quindi inizia a renderlo vivo con i gestori di eventi e le chiamate di servizio.

La cosa facile da fare è implementare una funzione e quindi creare un'interfaccia adatta a tale implementazione, ma si tende a finire con qualcosa che non è bello da usare. Potresti considerare anche il tuo modello di dati/schema db, ma non cadere nella trappola della creazione di un'applicazione CRUD clunky come tanti altri sviluppatori.

Il codice GWT è abbastanza gestibile, sicuramente più che provare a creare una webapp multipiattaforma senza la mia esperienza. Dovresti dare un'occhiata a google-gin e forse a gwt-mvp, aiutano a mantenere il tuo codice modulare e facile da testare.

+0

hambend, grazie per il vostro contributo. – Ramp