Question

Avez-vous essayé d'utiliser MVC ou tout autre modèle d'interface utilisateur pour le code client GWT. Quels sont les pièges / avantages que vous avez rencontrés dans différentes approches?

Était-ce utile?

La solution

Je pense que vous devez traiter GWT comme n'importe quel autre framework d'interface utilisateur, comme Swing, Cocoa, etc. Tout ce qui a du sens dans ces frameworks en termes de MVC (ou d'autres paradigmes) a également un sens dans GWT. Je pense que parfois les gens vont trop loin avec le concept MVC, et j'aime mieux la façon dont cela fonctionne dans Cocoa que dans la plupart des frameworks. Vous créez une vue, vous avez un ViewController qui contrôle tout le comportement de la vue, puis vous avez des objets de modèle avec toutes vos données. Je ne pense pas que vous deviez être dogmatique sur toute la logique de votre entreprise, mais simplement là où cela a du sens.

En ce qui concerne les pièges, le principal que vous allez rencontrer est que GWT est purement une technologie front-end, donc techniquement le back-end est assis sur un serveur quelque part. Je ne vois pas cela comme étant très différent de l'écriture d'une application swing client-serveur, qui stocke ses données quelque part dans le cloud. La différence est que GWT est compilé en javascript et présente toutes les limitations d'une application Web javascript. Il y a donc des choses que vous ne pouvez tout simplement pas faire en amont. Supposons, par exemple, que vous souhaitiez créer un fichier PDF et montrer à l'utilisateur que vous ne pouvez pas le faire dans GWT, vous devez appeler le back-end pour le faire à votre place. En revanche, dans une application Swing, vous pouvez probablement utiliser itext et le faire côté client.

Autres conseils

Le modèle MVC pour GWT est présenté dans cette question , qui contient également un lien vers ce document détaillé article de blog .

La seule chose que j’ajouterais, c’est que l’ensemble du code client peut être considéré comme le "V". dans "MVC", ce qui peut modifier votre façon de voir les choses. Considérant le code côté client comme son propre composant MVC imbriqué, eh bien, il s’agit de Java, il est orienté objet, de sorte qu’il peut être conçu comme une application Swing. Je pense qu'il est dans votre intérêt d'extraire autant de code de contrôleur de la vue que possible pour gérer les éléments RPC GWT. Le modèle est parfois plus problématique, car vous devrez peut-être décider si vous le souhaitez sur le serveur plutôt que sur le client. Ou créez un proxy de modèle, etc.

http://code.google.com/p/gwt-mvc/ pourrait vous aider.

Les avantages sont les suivants:

  • contrôleur facile à lire
  • Gestion des jetons d'historique
  • Les contrôleurs sont testables avec JMock (mais pas GwtTestCase)
  • MVC hiérarchique
  • Un héritage simple pour commencer à coder votre vue, vos contrôleurs et vos modèles.

Avez-vous essayé GWTruts ( http://sourceforge.net/projects/gwtruts/ ) ? C’est aussi un framework open source GWT MVC qui sépare View et Controller dans GWT

Utiliser une sorte de modèle de type MVC / MVP est vraiment important lorsque les applications GWT dépassent le plus petit projet, sinon vous perdez le contrôle de ce qui se passe.

Outre ce qui a déjà été mentionné, il existe également une implémentation MVC de GXT, que j’ai examinée ici: http://www.bristol-gtug.org/?p=45

Lors de la conférence de Google IO l'année dernière, de nombreuses personnes ont commencé à penser à MVC / MVP sur GWT: http://code.google.com/events/io/2009/sessions/GoogleWebToolkitBestPractices.html .

J'ai récemment remarqué qu'il y avait maintenant un tutoriel sur l'architecture MVP dans la documentation GWT, ce qui est un bon début: http://code.google.com/webtoolkit/doc/latest/tutorial/mvp-architecture.html

Vous pouvez jeter un coup d’œil sur JetPad-Mappers, un framework MVC minimaliste développé par JetBrains et utilisé dans plusieurs produits (non encore commercialisés).

Avertissement, je suis impliqué dans le développement de ce cadre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top