2009-04-25 4 views
1

J'étudie l'utilisation des frameworks web avec mon application web Java. Mes exigences de base sont la facilité de maintenance, la testabilité et la répétition.Est-il possible d'utiliser un framework web sans être dépendant de ce framework?

J'ai exploré l'écriture de ma propre application de type MVC en utilisant une sorte de modèle de contrôleur frontal et des JSP pour les vues. L'avantage de ceci est que j'ai le contrôle complet de tous les aspects de mon application web et si je le conçois correctement, il ne devrait pas être difficile de passer à un cadre plus testé à l'avenir si je le souhaite. Cependant, le fait est que je dois réinventer la roue pour ainsi dire.

J'entends de bonnes choses sur les frameworks web actuellement disponibles. Certaines technologies que j'ai regardées sont Spring, Wicket, Struts, Guice, Hibernate et Tapisserie.

Je me méfie un peu de Tapestry et Wicket. Je ne sais pas trop à leur sujet, mais ils semblent dévier de la formule servlet-> model jsp-> view. Je ne suis pas sûr si je suis à l'aise avec cela. Bien, j'entends que Wicket est en fait le meilleur ajustement avec Guice et est extrêmement testable. Le printemps semble être un bon ajustement, mais je me méfie beaucoup des cadres qui tentent de tout faire. J'aimerais utiliser spring-MVC, mais puis-je échanger avec d'autres composants? Puis-je par exemple utiliser Guice comme moteur de DI en utilisant Spring-MVC comme framework?

J'ai brièvement examiné Struts mais il semble trop complexe pour mes besoins et semble encore être un paquet complet. Je n'ai jamais utilisé Hibernate, mais cela semble être la norme pour ORM et si c'est quelque chose comme ActiveRecord (que j'ai seulement été exposé un peu), je suis sûr que cela correspond à mes besoins.

Je n'ai jamais vraiment utilisé Guice mais les gens semblent vraiment aimer, et je suis un fan de DI en général même si je ne suis pas sûr comment il est utilisé dans une application réelle. Fondamentalement, je suis seulement vraiment confiant avec l'écriture Servlets/JSP. Je ne suis pas opposé à l'apprentissage de technologies alternatives, mais je cherche des conseils quant à ceux qui me bénéficieraient vraiment.

Si je peux créer une application MVC en utilisant des Servlets et des JSP, cela vaut-il la peine d'incorporer Spring? Ou devrais-je simplement utiliser Servlets/JSP et incorporer un moteur DI comme Guice?

Je suis assez sûr que je voudrais utiliser Hibernate pour ORM, mais j'entends dire que cela peut être assez complexe. Tout ce que je cherche vraiment, c'est un moyen de mapper mes POJO à une base de données, donc s'il y a quelque chose de mieux/plus facile à utiliser, je suis prêt à le rechercher. Je me sens perdu et je cherche un peu de direction de personnes connaissant dans la région, toutes les opinions sur l'une de ces questions seraient grandement appréciées. Merci!

Répondre

3

"Le printemps semble être un bon ajustement, mais je me méfie beaucoup des frameworks qui essayent de tout faire, j'aimerai utiliser le spring-MVC, mais puis-je échanger d'autres composants? Guice en tant que mon moteur de DI tout en utilisant Spring-MVC comme cadre? "

Le printemps convenu offre beaucoup de choses, mais il est totalement modulaire. Vous pouvez utiliser DI avec ou sans AOP et ainsi de suite. Et oui, vous pouvez utiliser Spring MVC et Guice pour DI ensemble.

"J'ai brièvement examiné Struts, mais il semble trop complexe pour mes besoins et semble être un ensemble complet."

J'ai utilisé Struts depuis un certain temps maintenant, mais même quand j'ai commencé à l'utiliser, je l'ai trouvé facile comme une brise.Le contrôleur peut sembler accablant au début, mais vous aurez beaucoup de plaisir quand vous obtenez le coup Le meilleur moyen serait de regarder quelques exemples du monde réel en utilisant Struts

"Je n'ai jamais utilisé Hibernate, mais ça semble être la norme pour ORM et si c'est quelque chose comme ActiveRecord (que j'ai Oh, si vous avez trouvé Struts à dur, Hibernate est énorme, il nécessite une grande courbe d'apprentissage, il paie à la fin, mais si vous connaître ActiveRecord, je vais vous suggérer y ou de s'y tenir avant d'avoir une bonne connaissance d'Hibernate. "Je suis assez sûr que je voudrais utiliser Hibernate pour ORM, mais je l'entends peut être assez complexe."

À mon humble avis, très vrai ... au moins pour les débutants. (Quelqu'un suggère un changement ici?)

"Si je peux créer une application MVC en utilisant des Servlets et des JSP, cela vaut-il la peine d'intégrer Spring?"

Vous voulez dire sans Struts ou tout autre cadre? Comment?

On dirait que vous essayez d'en prendre trop trop vite. Essayez de considérer une chose à la fois. DI lui-même est une chose délicate à mettre en œuvre dans le monde réel. Oh oui conceptuellement c'est génial, mais ce que je veux dire, c'est que vous devez d'abord avoir une idée des choses une par une.

2

Très simplement, si vous êtes à l'aise avec les pages JSP et des servlets, alors si vous voulez sauver une partie de la pénibilité de la programmation web, je regarderais Stripes ou Struts 2.

Je suis très familier avec des rayures, et je suis seulement conscient que Struts 2 est similaire, donc je vais concentrer cette entrée sur Stripes. En outre, Struts 1 n'a aucune valeur. Il n'offre aucune valeur (franchement).

Stripes a plusieurs caractéristiques, mais je vais me concentrer sur seulement quelques-unes.

La valeur primaire de Stripes, et si c'était sa seule fonctionnalité, il serait encore très précieux, est son cadre de liaison.

La liaison est le processus de conversion des valeurs des chaînes de requêtes en valeurs d'actions. Stripes le fait incroyablement bien. Plus précisément, la liaison Stripes fonctionne très bien sur les paramètres imbriqués et indexés, ainsi que sur les conversions de types. Vous pouvez facilement avoir un champ de formulaire nommé "currentDate", puis avoir une "date currentDate" dans votre action, et Stripes "fera la bonne chose".

Si vous avez un champ de formulaire nommé "mainMap ['bob']. ListOfThings [3] .customer.birthDate", Stripes créera la carte, créera la liste, créera le client, convertira la chaîne en une date, peupler la date de naissance, mettre le client dans le 3 slot de la liste, et mettre cette liste dans l'endroit «bob» de la carte. (Je fais ce genre de choses tout le temps.)

La liaison des requêtes aux variables Action est simplement merveilleuse. En plus de cela, vous obtenez, si vous utilisez leurs étiquettes de formulaire, de bons comportements quand, par exemple, ils mettent "Fred" dans votre champ de date. Vous récupérez facilement le formulaire, avec Fred sur le terrain, et un bon message d'erreur.

Enfin, j'aime vraiment leurs résolutions à la suite de leurs actions. Par exemple, une ForwardResolution pour transmettre à une page, RedirectResolution pour rediriger vers une page, StreamingResolution si vous voulez pomper des données dans le socket, etc. C'est une fonctionnalité très élégante.

Stripes a toutes sortes de puissance et fait toutes sortes de choses, mais ces 3 pièces sont ce qui me convient le mieux, et ce que j'utilise 99% du temps. Simplement, il reste vraiment à l'écart et gère facilement la "plomberie" sans obscurcir complètement la nature de demande HTTP du système. Pour quelqu'un qui se contente de JSP/Servlets, Stripes, je pense, est un excellent pas en avant car il ajoute de la bonne valeur à très peu de frais (c'est simple à configurer) et sans avoir à jeter tout ce que vous savez déjà , car cela fonctionne parfaitement avec les JSP et JSTL. Apprenez le mécanisme simple qu'il utilise pour mapper les actions aux URL, et à quel point il est simple de mapper les demandes à vos actions, et vous volerez en un rien de temps.

Fonctionne très bien avec Ajax et similaires.

2

La question illustre une certaine confusion. Je pense que la réponse définitive est "non, il n'est pas possible d'utiliser un framework web sans en être dépendant".

Mais votre instinct est bon. Vous souhaitez optimiser les avantages généraux d'un framework en contribuant à la superposition et à la modularisation de votre code et en minimisant son caractère invasif. Cela dit, je pense que le printemps est le gagnant sur les deux points.

Si vous suivez l'idiome de Spring, la structure de votre code sera meilleure grâce à l'utilisation d'interfaces, de couches et d'aspects. Une partie de l'attention qu'ils paient pour la conception est vouée à déteindre sur vous. C'est aussi utile que le bon code de plomberie qu'ils fournissent.

Votre base de code ne doit pas forcément être 100% Spring. J'ai vu Spring utilisé dans les améliorations aux applications Java héritées qui n'ont pas été réécrites d'avant en arrière.

Struts a tendance à ne pas être un bon choix parce que c'est juste un framework Web. Il vous encourage à mettre tout votre traitement dans les sous-classes Action, à ne jamais sortir. Spring injecte l'idée d'une interface de service qui découplerait le niveau Web du backend. Il est plus facile d'échanger des niveaux Web et d'exposer le service en tant que SOAP, RMI, EJB ou appel HTTP distant.

Hibernate est beaucoup plus complexe que Struts. Si vous choisissez Spring, utilisez les interfaces de persistance et commencez avec Spring JDBC. Lorsque vous êtes prêt pour Hibernate, vous pouvez toujours écrire une nouvelle implémentation et l'injecter simplement à l'endroit où votre version de JDBC était auparavant.

Questions connexes