53 votes

Comment concevoir et architecturer une application Web Java / J2EE?

Je suis développeur java avec près de 5 années d'expérience sur Struts, Spring et Hibernate.

Nous avons un nouveau projet à venir dans quelques jours. Nous avons les exigences complètes avec nous et nous allons faire ce projet à l'aide de Spring MVC, Spring et Hibernate.

Il m'a été demandé de concevoir et d'architectes, l'ensemble de l'application web. Conception et création d'un Architecte est quelque chose que je n'ai pas fait jusqu'à présent dans ma carrière. Et je ne sais pas comment m'y prendre et par où commencer, quels sont les outils à utiliser et ainsi de suite. Je ne sais pas même l'A,B,C de la conception et de l'architecture.

Vous demandez peut-être pourquoi j'ai été même j'ai demandé à le faire à la première place. Le truc, c'est que j'ai été donné la possibilité de le faire et, à chaque étape, je vais être surveillés et je vais avoir mes aînés examen de la conception.

De sorte que toute suggestion, les idées et les étapes à suivre pour démarrer et aller de l'avant sont les bienvenus.

Merci !

123voto

kunal Points 4181

Je peux ajouter mes 2 cents à partir de mes propres expériences (bien que son plus à une compilation de développement des meilleures pratiques, vous trouverez peut-être utile de garder à l'esprit lors de la conception de votre demande):

  • Il n'y a pas de one-size-fits-all design
  • Essayez de garder l'application aussi léger que possible.
  • Utiliser Maven/Gradle pour gérer les dépendances
    • Ne comptez pas trop sur l'IDE. Assurez-vous que votre projet se construit sans IDE (Si vous utilisez maven/gradle, Il va :) Essayez d'ouvrir un projet, avec l'IDÉE, Netbeans et Eclipse.
  • Pour les technologies mentionnées ci-dessus, appfuse fait un bon point de départ.
  • La conception de votre base de données/entités première
  • Utilisation de bibliothèques de façon raisonnable et de manière judicieuse. Ne PAS en abuser.
  • N'oubliez pas d'inscrire JUnit/TestNG (au moins pour la couche de service)
  • Test de l'application sur tous les principaux navigateurs (et pas seulement celui que vous préférez :)
  • Déterminer le nombre total d'utilisateurs et le nombre d'utilisateurs simultanés de votre application web aura.
    • Ensuite, décidez si vous avez besoin de la mise en cache ou non.
    • vous allez utiliser l'app server clustering ou pas.
  • Sélectionnez le serveur d'application basé sur ses capacités, et plus important encore, "vos besoins"
    • Tomcat / Jetty sont absolument parfait pour la plupart des cas
  • Évitez d'utiliser n'importe quelle application-serveur d'api spécifiques
  • Utiliser JPA interfaces/annotations, même si l'utilisation d'hibernate comme implémentation JPA
  • Soyez prudent tandis que la cartographie des relations dans des entités. Déterminer les propriétés et les relations de charge paresseusement et qui vous permettra de charger avec impatience
  • Maintenir la sécurité des applications à l'esprit lors de la conception de l'application. Spring security est un excellent choix.
  • Ne jamais abuser de HttpSession. Ne pas stocker trop en elle.
  • Garder les entités Serializable. Appliquer les développeurs à utiliser toString(), hashCode() et equals()
  • N'Oubliez pas d'utiliser la version de contrôle à partir du Jour 1
  • Ne pas simplement supposer que spring/hibernate/spring-mvc sera le meilleur choix pour vous. créer de petites preuve de concepts avec atleast 3 à 4 options.
  • Essayez d'automatiser l'intégration/build/déployer CI avec des outils comme Jenkins
  • Vérifier et régler SQL générées par Hibernate (en tout temps)
  • Ne laissez pas la logique métier de fluage en vue de la couche. La haine jsp scriptlets? Envisager De Vitesse/Freemarker. JSP n'est pas la seule option.
  • l'externalisation de l'environnement spécifique de configuration en utilisant le Printemps PropertyPlaceholderConfigurator.
  • Si possible, essayez d'intégrer avec existant mécanisme d'Authentification de l'Utilisateur (Comme LDAP/ OpenID) plutôt que d'écrire votre propre. Cela vous évitera d'avoir à réinventer la roue et à vos utilisateurs de se rappeler encore un autre nom d'utilisateur et mot de passe.

13voto

Spidy Points 10242

Il y a plusieurs choses que vous aurez besoin pour la conception de l'architecture des documents. Pas une tâche facile, mais les accessoires sur la prise de l'occasion. Depuis c'est une grande question, on espère que ces liens peuvent vous aider à démarrer et vous pouvez affiner questions après vous mouiller les pieds.

Méthodologie

La méthodologie que vous utilisez aura une incidence sur les tâches que vous prenez sur la première. Cascade est un populaire, mais obsolète méthodologie. Une nouvelle méthodologie Agile qui a plusieurs visages. Mon préféré est Agile Scrum pour le développement de logiciels de toute taille.

Les diagrammes

Les diagrammes sont un des moyens les plus puissants pour représenter le système dans son ensemble et en tant que composants individuels. Le type de diagrammes que vous créez dépendent du système. Il y a des Diagrammes de Structure, le Comportement des Schémas, des Diagrammes d'Interaction, et des tonnes d'autres. Ces diagrammes montrent les pièces de l'ensemble du système, chacun des composants de la disposition physique et/ou logique de mise en page, les flux de communication, le déroulement de la procédure, etc..

La Documentation

La Documentation est juste comme il sonne, des documents et des documents qui ont des Descriptions de Projet, la Portée de l'Utilisateur des Cas, les Diagrammes de Séquence, et de tout autre document qui décrit le projet et pièces du projet.

4voto

squawknull Points 3688

Parcourez la Modélisation Agile site qui pousse pour "juste assez" de la modélisation. Ils ont quelques grandes lignes directrices, y compris une pleine "agile processus de modélisation" de la collecte des besoins à la conception/développement.

http://www.agilemodeling.com/

http://www.agilemodeling.com/essays/amdd.htm

http://www.agilemodeling.com/essays/agileArchitecture.htm

http://www.agilemodeling.com/essays/agileAnalysis.htm

http://www.agilemodeling.com/essays/agileDesign.htm

Comme pour les outils, j'aime Paradigme Visuel. Il est relativement peu coûteux par rapport à d'autres outils). Il ya une large gamme d'outils de modélisation (google est votre ami), mais aucun de comparer à Visual Paradigm, et pour peu qu'il en coûte, c'est bien la peine. Si mon employeur n'a pas de poney jusqu'à l'argent pour cela, je voudrais l'acheter moi-même... :)

4voto

Dormouse Points 189

Jetez un oeil à Robert Martin (alias Oncle Bob) une Architecture Propre. Voici un aperçu rapide. En utilisant cette approche, vous serez en mesure de reporter les détails comme Spring ou Hibernate à plus tard et de se concentrer plus sur la logique métier. Ou même migrer à partir du Printemps à l'JEE sans toucher à votre entreprise et la logique de l'application. Vous aurez aussi une application testable qui est conforme avec les principes SOLIDES, sans trop d'effort supplémentaire.

Je viens de créer une application de cette manière et je dois dire que je suis très heureux avec elle. Je pourrais facilement porter à un ordinateur de bureau ou l'application mobile, ou échanger le module de stockage. Les détails en fonction de la stratégie va un long chemin. Il favorise également penser à un API de passage et, lorsqu'il est appliqué correctement, ce qui rend vos modules très réutilisables.

Martin va aussi loin que de dire des détails tels que les cadres sont ennuyeux et ne fait pas partie de votre architecture. Je pense qu'ils appartiennent à l'architecture, mais seulement à un niveau différent. La plupart du temps vous ne souhaitez inclure des cadres à un stade précoce pour être en mesure de produire une fine tranche de travail d'une application de démonstration pour vos utilisateurs. Ou lorsque vous savez que vos cadres à l'avance et il n'y a pas de discussion à leur sujet, comme dans mon cas. Mais on pourrait la considérer comme distincts des architectures logicielles, lorsqu'ils sont combinés ensemble créer votre architecture de l'application.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X