IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Architecture n-tiers, votre avis ?


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Par défaut Architecture n-tiers, votre avis ?
    bonjour,

    j'ai besoin de l'aide de quelques chevronnés sur les architectures n-tiers !

    voilà, j'ai un projet à réaliser qui va me demander d'utiliser pas mal d'outils pour être "propre", interopérable, modulaire, fonctionnel etc.. il s'agit d'avoir, comme pour un jeu en ligne, un serveur et des clients, jusque là tout va bien ! il y aura une ou plusieurs BDD.

    quelques "contraintes" :
    - programmer en JAVA/(opengl ou éq.)
    - utiliser PostgreSQL
    - utiliser HIBERNATE ou éq.
    - utiliser la techno RMI ou éq.

    voici mon problème principal. je souhaite savoir s'il serait judicieux (et si c'est possible, je pense que oui) d'utiliser la technologie JAVA RMI de ce genre d'architecture et avec mes autres contraintes ??? est-ce que "ça se fait" ou il y a mieux / plus simple ?

    grosso modo, voici mon schéma final. le client est un container semi-lourd je dirai car il possède tous les médias lourds (objets 3d principalement). mais le client est une interface et l'objet client est crée sur le serveur (conformément au fonctionnement RMI). le code des actions client (comme se déplacer, attaquer etc...) est donc côté serveur et le serveur gère tous les clients. le client n'est donc pas surchargé en code. après vient le mapping avec HIBERNATE et les BDD (ça c'est pas trop compliqué).

    j'aimerais savoir ce que vous en pensez. ah j'oubliais, je comptais utiliser MAVEN pour les dépendances et la gestion du projet (deux sous-projets donc : client et serveur).

    alors ? c'est un bon choix ou il y a des choses qui vous semblent inutiles ou au contraire il manque une couche au dessus / en dessous de quelque chose ?

    merci d'avance pour votre aide !
    (n'hésitez-pas si j'ai oublié de préciser qq chose ou si vous avez des questions)

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Comme ça, "à la louche", ça me parait correcte.
    Tu pourrais accessoirement utiliser EJB à la place de RMI (même si EJB s'appuit sur RMI-IIOP) qui pourrait t'apporter un + (sauf si tu as une forte contrainte performance et/ou pas de serveur JEE à disposition).
    Dans ce contexte, EJB3 entity peut remplacer avantageusement Hibernate ("natif"), même si tu peux utiliser Hibernate comme implémentation de JPA (d'EJB).
    Pour le reste, un client lourd (en quoi ? swing ?) pour les traitements graphiques, c'est ok... si tu veux dessiner ou t'interfacer avec des composants de la machine cliente... sinon, tu pourrais utiliser une architecture web à base de jsf + facelets + richfaces... ça fait des choses fabuleuses visuellement... ça dépend un peu de ce que doit faire le client...
    Peux-tu préciser cet aspect ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre chevronné
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Par défaut
    Tu pourrais accessoirement utiliser EJB à la place de RMI (même si EJB s'appuit sur RMI-IIOP) qui pourrait t'apporter un + (sauf si tu as une forte contrainte performance et/ou pas de serveur JEE à disposition).
    Dans ce contexte, EJB3 entity peut remplacer avantageusement Hibernate ("natif"), même si tu peux utiliser Hibernate comme implémentation de JPA (d'EJB).
    EJB est basé sur RMI ? et en fait, c'st donc plus lourd mais d'après toi plus simple d'utilisation ? EJB3 entity pourrait donc "remplacer" hibernate ?

    en fait, je dois faire un petit jeu. donc d'un côté un serveur (j'ai un serveur debian complètement sous contrôle et assez puissant) interfacé avec le ou les BDD que je créerait (je mettrait une interface si il y ena plusieurs mais normalement, au ébut, ce ne sera pas le cas). et un côté client JAVA/opengl. le client lui même, si j'utilise RMI sera une interface distante au serveur mais tout objet client "vivra" sur le serveur. bien sur, du côté client, je dois aussi utiliser opengl mais la n'est pas le problème.

    la ou je galère c'est savoir exactement ce qui répondrait le mieux à mes besoins. je n'ai pas besoin d'avoir des perfs de fou également.

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bricecol Voir le message
    EJB est basé sur RMI ?
    oui, quand on utilise une interface Remote
    Citation Envoyé par bricecol Voir le message
    et en fait, c'st donc plus lourd mais d'après toi plus simple d'utilisation ?
    Plus lourd, certainement, ça fait beaucoup plus que du RMI.
    En résumé, RMI n'est rien d'autre qu'une invocation à distance d'une méthode alors qu'EJB fait bien d'autres choses "nativement".
    Les plus importantes :
    - persistance
    - les transactions
    - le maintient d'état

    Globalement, on a 3 grands types d'EJB :
    - Entity (pour la persistance)
    - Session (avec ou sans état (stateful / stateless)
    - MessageDriven (comme son nom l'indique, répondant à un message (JMS))

    Citation Envoyé par bricecol Voir le message
    EJB3 entity pourrait donc "remplacer" hibernate ?
    Oui, en quelque sorte.
    Il faut comprendre que la partie persistance des EJB3 est basé sur l'api JPA.
    Elle définit une "norme" et ça s'arrête là.
    On a ensuite les implémentations de JPA, et c'est ici qu'on retrouve Hibernate.
    L'avantage, c'est qu'on pourrait passer d'une implémentation Hibernate à une implémentation TopLink (ou EclipseLink) sans modification de code.

    Je pense que ton explication du besoin (côté client) tend à pousser vers les EJB3 plutôt que RMI
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre chevronné
    Avatar de bricecol
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Avril 2007
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 364
    Par défaut
    ok. quand tu parles de persistance, il faut que je sache de quel côté. en effet, les clients sont crées côté client mais vivent coté serveur. leur "infos" sont stocké dans une BDD, côté serveur donc.

    je connais JPA, des annotations en fait. ensuite, si j'ai bien compris, hibernate se sert de ces annotations, de cette "norme", pour faire l'interface avec la BDD (enfin, on peut aussi mettre des DAO entre les objets annotés et hibernate je pense là n'est pas le problème, on pourrait alors changer facilement pr un eq. d'hibernate).

    j'avoue que je n'ai que très peu tenter de faire fonctionner "tout çà" au sein d'un même projet en "cohabitation" sans trop de troubles ^^

    bon, j'essaie de faire un petit schéma récapitulatif de tout ca et je reviens

    merci bcp pour ton aide !

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par bricecol Voir le message
    ok. quand tu parles de persistance, il faut que je sache de quel côté. en effet, les clients sont crées côté client mais vivent coté serveur. leur "infos" sont stocké dans une BDD, côté serveur donc.
    Côté serveur, c'est ce qu'il y a de mieux et de plus sécurisé (si besoin).
    Tu utiliserais un EJB session stateless (à priori) pour faire la persistance.
    Dans ce cas, on peut voir cet EJB comme une DAO remote.

    Sinon, pour Hibernate natif et DAO, ça fonctionne très bien aussi.
    Rien n'empêche de mixer les éléments :
    - EJB stateful pour conserver l'état entre différents appels de chaque client et faisant office de Contrôleur
    - des DAO standards appelés pour l'accès aux données

    (c'est juste un peu dommage de se priver de la puissance des transactions déclaratives des EJB3 avec JTA)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Votre avis sur le livre "Architecture logicielle"
    Par Ricky81 dans le forum Architecture
    Réponses: 4
    Dernier message: 31/05/2010, 22h44
  2. Réponses: 0
    Dernier message: 10/12/2009, 10h13
  3. Votre avis sur une architecture
    Par Max.Adorable dans le forum Architecture
    Réponses: 0
    Dernier message: 15/08/2008, 14h52
  4. Code et Architecture, vos conseils / votre avis.
    Par Hybrix dans le forum Développement 2D, 3D et Jeux
    Réponses: 9
    Dernier message: 07/02/2008, 21h17
  5. [Architecture]Votre avis et vos critiques
    Par fabszn dans le forum Développement Web en Java
    Réponses: 5
    Dernier message: 26/12/2007, 00h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo