Domanda

Hai provato a utilizzare MVC o qualsiasi altro modello di interfaccia utente per il codice client GWT. Quali sono le insidie ??/ i vantaggi che hai affrontato in diversi approcci?

È stato utile?

Soluzione

Penso che tu debba trattare GWT come qualsiasi altro framework dell'interfaccia utente, come Swing, Cocoa, ecc. Tutto ciò che ha senso in quei framework in termini di MVC (o altri paradigmi) ha senso anche in GWT. Penso che a volte le persone portino la cosa MVC troppo lontano, e mi piace il modo in cui funziona in Cocoa più della maggior parte dei framework. Si crea una vista, si dispone di un ViewController che controlla tutto il comportamento della vista e quindi si hanno oggetti modello con tutti i dati. Non penso che tu debba essere dogmatico su dove sia tutta la tua logica aziendale, deve solo essere dove ha senso.

In termini di insidie, la principale in cui ti imbatterai è che GWT è puramente una tecnologia di front-end, quindi tecnicamente il back-end è seduto su un server da qualche parte. Non lo vedo così diverso dalla scrittura di un'applicazione swing del server client, che memorizza i suoi dati nel cloud da qualche parte. La differenza è che GWT è compilato in javascript e ha tutti i limiti di un'applicazione web javascript, quindi ci saranno alcune cose che semplicemente non puoi fare sul front-end. Diciamo ad esempio che vuoi creare un PDF e mostrarlo all'utente, non puoi farlo in GWT, devi chiamare il back-end per farlo per te. D'altra parte in un'app Swing potresti probabilmente usarla in seguito e farlo sul lato client.

Altri suggerimenti

Il modello MVC per GWT è discusso in questa , che ha anche un collegamento a questo approfondito post di blog .

L'unica cosa che aggiungerei è che il codice lato client nella sua interezza può essere considerato il "quot" in "MVC", che può alterare il modo in cui lo guardi. Pensando al codice lato client come al proprio componente MVC nidificato, beh, è ??Java, è orientato agli oggetti, quindi può essere progettato in modo molto simile a un'app Swing. Penso che sia a tuo vantaggio estrarre il maggior numero di codice controller dalla vista per gestire le cose RPC GWT. Il modello a volte è più problematico, perché potrebbe essere necessario decidere se lo si desidera sul server anziché sul client. Oppure crea un proxy modello, ecc.

http://code.google.com/p/gwt-mvc/ potrebbe aiutarti.

I vantaggi sono:

  • controller di facile lettura
  • Gestione dei token di cronologia
  • I controller sono testabili con JMock (ma non GwtTestCase)
  • MVC gerarchico
  • Semplice eredità per iniziare a codificare vista, controller e modelli.

Hai provato GWTruts ( http://sourceforge.net/projects/gwtruts/ ) ? È anche un framework GWT MVC open source che separa View e Controller in GWT

L'uso di una sorta di modello di tipo MVC / MVP è davvero importante quando le app GWT vanno oltre il progetto più piccolo altrimenti perdi il controllo di ciò che sta succedendo.

Oltre a ciò che è già stato menzionato, c'è anche l'implementazione MVC di GXT che ho visto qui: http://www.bristol-gtug.org/?p=45

Questo discorso a Google IO dell'anno scorso ha iniziato molte persone a pensare a MVC / MVP su GWT: http://code.google.com/events/io/2009/sessions/GoogleWebToolkitBestPractices.html .

Di recente ho notato che ora c'è anche un tutorial sull'architettura MVP nella documentazione GWT che è un buon inizio: http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.html

Potresti dare un'occhiata a JetPad-Mappers, un framework MVC minimalista sviluppato su JetBrains e utilizzato in diversi prodotti (attualmente non rilasciati).

Disclaimer, sono coinvolto nello sviluppo di questo framework.

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