web-dev-qa-db-fra.com

Spring + GWT ou Printemps vs GWT

Contexte

Je suis en train de développer une application Web utilisant GWT, Java et EclipseLink. Chacune de ces sélections sont des choix que j'ai faits pour mettre en œuvre ce programme. GWT est le seul choix où il n’est pas possible de savoir exactement ce qu’il est comparé à quelque chose comme Spring. À l’heure actuelle, j’utilise les widgets GWT pour implémenter le client et GWT RequestFactory pour implémenter la communication serveur-client des entités d’EclipseLink.

Des vues

Je considère donc que GWT est principalement une bibliothèque de widgets avec un cadre simple pour la communication serveur-client. C’est à peu près de la même façon que je vois Spring, une bibliothèque de widgets avec un cadre beaucoup plus complexe et sophistiqué pour contrôler les communications serveur-client - avec la possibilité qu’elle n’implémente pas AJAX aussi facilement que GWT.

Donc, gardant cela à l'esprit, je considère GWT comme un tremplin pour comprendre et finalement travailler avec Spring. Cependant, en repensant à ce sujet sur Google, j’ai rencontré plusieurs sujets tels que one et que one semblent aller à l’encontre des notions originales de Spring cela signifie pour GWT.

Questions

  1. Y at-il une idée fausse sur les points de vue sur GWT et Spring? Si tel est le cas, quelques brèves indications à ce sujet seraient très appréciées!
  2. Quelle serait la contrepartie des widgets GWT dans Spring Framework?
  3. Quelle serait la contrepartie de GWT RequestFactory dans Spring Framework?
21
hulkmeister

Cela dépend vraiment de la manière dont vous envisagez d'utiliser GWT dans votre application. 

GWT est le mieux utilisé pour les applications Web à page hôte unique.
Cela signifie que toute la synchronisation des flux et la logique métier sont effectuées côté client à l'aide de GWT.
C’est là que GWT brille vraiment (voir ici pour plus de détails). 

Cependant, si vous vous engagez dans cette voie, vous obtiendrez essentiellement deux applications distinctes. Vous aurez un frontend développé avec GWT et un backend utilisant Spring par exemple. Votre serveur (Spring ou ce que vous utilisez) agira uniquement comme un "stockage de données" vous fournissant les données que vous allez afficher dans votre interface GWT. Ainsi, votre volonté n’utilisera probablement pas de la fonctionnalité Spring MVC's

Bien sûr, vous pouvez également utiliser Spring MVC et utiliser GWT uniquement pour ajouter une fonctionnalité Web 2.0ish à votre site, mais pour ce cas d'utilisation, je vous recommanderais plutôt d'utiliser jQuery, Closure ou d'autres frameworks javascript. 

A vos questions: 

Y at-il une idée fausse sur les points de vue sur GWT et Spring? Si tel est le cas, De brèves remarques sur ce sujet seraient très appréciées!

Si vous utilisez GWT comme prévu (applications Web à page hôte unique), vous n'utiliserez pas la partie MVC de Spring. Vous pouvez toujours utiliser autorisation , authentification ,ORMet de nombreux autres composants du framework Spring, mais GWT gère toutes les vues.
Spring agit plus ou moins uniquement comme stockage de données pour votre application frontale GWT. C'est comme avoir deux applications distinctes qui sont connectées via un protocole de communication (RequestFactory, REST, RPC, etc.). 

Quelle serait la contrepartie des widgets GWT dans Spring Framework?

Il n'y a pas de véritable contrepartie aux widgets GWT dans Spring Framework (peut-être pour certains étend JSF). Spring concerne uniquement le côté serveur, de sorte que toutes les vues y sont créées. Considérant que GWT est tout au sujet du côté client. 

Quelle serait la contrepartie de GWT RequestFactory dans le cadre de printemps

RequestFactory est le protocole de communication entre votre application frontale (GWT) et votre application backend ( Spring ). Lorsque vous utilisez Spring MVC, vous n’avez besoin d’aucun protocole de communication car les vues sont générées côté serveur où vous avez déjà les données. 

26
Ümit

GWT n'est pas une bibliothèque de widgets, mais un framework complet pour produire des applications Web complètes qui s'exécutent dans le client plutôt que dans le serveur. La différence fondamentale réside dans le fait que Spring (modèle MVC) est axé sur le serveur. Il se connecte donc à la ddbb, exécute la logique métier et génère la vue à envoyer au client, car GWT (modèle MVP) exécute le présentateur dans le navigateur qui génère le message. vue, et il se connecte simplement au serveur pour obtenir des résultats ou des objets (méthodes distantes).

Selon votre application GWT, vous pourriez avoir besoin de plus ou moins de logique côté serveur, ainsi que d'autres éléments tels que ddbb, spring, etc.

La décision quant au moment de choisir GWT ou tout autre framework dépend de la nécessité d'une application riche (de type bureau) exécutée dans un navigateur.

Logiquement, vous pouvez combiner GWT et Spring dans n’importe quel niveau de complexité, mais la méthode logique consiste à confier à Spring la responsabilité du modèle de données et de sa logique métier, et à GWT de faire le reste.

La meilleure façon d'apprendre cette combinaison consiste à explorer un petit projet généré avec Spring-roo . Il peut créer un projet entier avec tous les ensembles pour maven, spring, gwt, mvp et rf. Il suffit d'installer roo 1.2.2 et d'exécuter cet ensemble de commandes dans la console roo:

project --topLevelPackage com.project.contacts
persistence setup --provider ECLIPSELINK --database HYPERSONIC_PERSISTENT
database properties set --key database.url --value jdbc:hsqldb:/var/tmp/contacts.db
entity jpa --class com.project.contacts.domain.Contact --testAutomatically
field string name --notNull --sizeMin 1 --sizeMax 30 --class ~.domain.Contact
field string surname --notNull --sizeMin 1 --sizeMax 30 --class ~.domain.Contact
field string phone --notNull --sizeMin 1 --sizeMax 15 --class ~.domain.Contact
web gwt setup
web gwt all --proxyPackage ~.client.proxy --requestPackage ~.client.request
quit

Puis exécuter

mvn gwt:run

Le problème principal que je vois avec roo est qu’il utilise 'aspectj' pour mettre à jour les classes gérées lorsque vous modifiez le modèle, mais vous pouvez supprimer les fichiers de dépendance et aspectj de roo à l’aide d’Eclipse une fois votre projet configuré.

Consultez Objectify pour votre backend. Bien plus simple.

0
tborja