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

ASP.NET Discussion :

Architecture 3 tiers


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Braillane
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 212
    Par défaut Architecture 3 tiers
    Bonjour,
    je suis en train de développer un site web (asp.NET/c#) et je pense que je vais respecter l'architecture 3 tiers car je devrais utilisé mes classes dans d'autre programme.
    Bon mon problème est de comprendre l'architecture 3 tiers et de la mettre en application. J'ai donc plein de questions car plus je lis des docs sur le forum et sur google et plsu je m'embrouille ... Voici mes questions
    • J'ai eu l'impression que l'architecture 3 tiers représenté 2 choses en meme temps, des fois une architecture physique client->serveur->BD, et des fois fois une architecture logicielle composé de trois couches (présentation, métier , accès aux donnés)... Ai-je bien compris, est ce bien 2 choses complètement distincte?
    • Comment les différentes couches doivent elles etre séparé dans le code? Dans mon cas j'aurai dit : la couche présentation = mes aspx avec le code behind qui appelle ma couche métier, la couche métier = un namespace (package) qui va utiliser la couche accès aux données, la couche accès aux données = un namespace???? ou alors je fais juste une classe dans la couche métier qui fera tout les accès à la base?
    • Est-ce que la base de données(physique) se place dans cette architecture? Les procédures stockées font-elle partie de la couche accès aux données?
    • [difficile de me comprendre]
      Comment la couche métier communique avec la couche accès aux données? Admettons que j'ai un objet "dr" de type "Driver" (avec un nom, un numéro, une date et une image). Je veux faire une méthode qui met cet objet en base. Comment procéder?
      • Premiere supposition : Je fait une méthode dans la classe Driver "toDataBase" qui va appelle la méthode "addDriver" de ma classe BD en passant en argument tout les champs de mon driver (sachant qu'en réalité il ya énormément de champ donc c'est super lourd )
      • Seconde supposition : Je fait une méthode addDriver dans ma classe BD qui va prendre en argument un driver et qui va se chargé elle meme d'extraire les attributs du driver et de les mettres en base. Ceci impliquerait que la couche "accès aux données utilisent la couche "métier" et pas l'inverse!

      [/difficile de me comprendre]
    • Admettons que je veuille récupérer la liste des drivers existant dans la base. Ou dois-je créer la méthode qui va me récupérer cette liste de driver? Dois-je faire une classe Drivers qui contient tout les drivers??
    • L'architecture 3 tiers ne risque t'elle pas de faire fortement chuter les performances en multipliant les accès à la BD? Vu que je suis dans un site web je travaille en mode connecté (car le mode déconnecté m'obligerais à recharger ma base à chaque fois que la page web se recharge) chaque appel à une fonction de ma couche "acces aux données" équivaut à au moins un appel à la base!


    Merci beaucoup beaucoup d'avance

    PS : j'avais déja posté ce sujet dans Général Développement > Conception > Méthodes mais personne n'y a répondu et à mon avis c'était pas le bon forum donc je post ici. Si un modo veut le supprimer il peut

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Dans ton cas, l'archi 3 tiers qui t'intéresse est l'archi logicielle.
    Y a aussi l'archi physique avec comme tu l'as dit client/serveur web/serveur DB dans la mesure où les DB sont souvent hébergées sur un serveur différent du serveur web.

    Pour l'archi logicielle: la couche présentation, ca sera ton projet web.
    Ensuite, t'as la couche accès aux données et la couche métier.
    La couche DAL (Data Access Layer) ne se contente que du CRUD (Create,Read,Update,Delete).
    La couche BLL (Business Logic Layer) rajoute "l'intelligence" et appelle ta DAL.
    Ptite exemple:
    Imaginons, tu gères un stock et tu veux modifier un prix. Une règle dit que le prix ne doit pas varier de +/- 10%. Cette intelligence doit se trouver dans ta BLL. Si c'est valide, tu appelles la DAL pour modifer en base.
    Un truc dans le genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    BLL.ModifyPrice(double newPrice, double oldPrice, long idProduct)
    {
       if (ptit calcul de %) < 10
      {
           DAL.UpdateProduct(newPrice, idProduct);
      }
      else
      {
           throw new exception("Modification de prix > 10%");
      }
    }
    Si y a pas d'intelligence, dans la plupart des cas ta BLL sera juste un "proxy" par rapport à ta DAL.

    En ce qui concerne le dev, ta BLL et DAL doivent se trouvent dans des projets de bibliothèques de classes.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Par défaut
    Il y a une forme d'amalgame autour du terme "n-tiers" qui correspond en principe à un découpage "physique" d'une solution.
    http://davidhayden.com/blog/dave/arc...7/22/2401.aspx

    C'est pour cela que certains (beaucoup?) préfèrent employer le terme de "n-layers" pour ce qui correspond à View / BLL / DAL. "n" car aucune couche ne sait de combien est faite celle qu'elle référence.

    En fait par abus de langage quand quelqu'un parle de "archi n-tiers" ça sous entend surtout le découpage logiciel. Tu verras très vite que ta BLL et tes BO se trouvent dans une assembly référencée par toutes les autres couches: c'est le coeur de ton appli, la base de tout. Cette assembly contient en grande partie des interfaces pour tes BO et ta BLL (et des classes concretes de comportements : Comparers, etc. )

    Donc là tu te dis :
    Comme ce sont des interfaces : ma couche view ne peux pas les instancier directement, et je ne dois pas y déclarer mes DAO (sinon couplage fort : patatrak...)...
    Donc tu auras besoin d'une Factory....
    Et là comme on tombe dans les Design Patterns, tu verra qu'il te reste des heures de lectures passionnantes et de casses tête

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    1 377
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 377
    Par défaut
    Salut,

    Voici un bon exemple qui te permettera de débuter dans le 3-tier :

    http://morpheus.developpez.com/architecture/
    Échouer, c'est avoir la possibilité de recommencer de manière plus intelligente.

    Twitter Blog Mon site

    Mon article sur l'agilité

  5. #5
    Membre confirmé Avatar de bartoumi
    Profil pro
    Inscrit en
    Février 2005
    Messages
    178
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 178

  6. #6
    Membre confirmé Avatar de Braillane
    Profil pro
    Développeur Java
    Inscrit en
    Janvier 2007
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Janvier 2007
    Messages : 212
    Par défaut
    Merci beaucou beaucoup à vous tous! Ca fait plaisir de voir l'entraide qu'il y a entre les développeur!
    Je pense que l'exemple va bien m'aider!
    Je met résolu!
    Bonne journée à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Architecture 3 tiers : quelle est la véritable nouveauté ?
    Par unix27 dans le forum Langages de programmation
    Réponses: 8
    Dernier message: 11/03/2007, 18h21
  2. [N-Tier] Problème conception architecture 3-tiers
    Par Royd938 dans le forum Autres
    Réponses: 3
    Dernier message: 17/06/2005, 11h47
  3. [info] Architecture 3-tiers
    Par Shiryu44 dans le forum Servlets/JSP
    Réponses: 22
    Dernier message: 29/03/2005, 10h30
  4. [VB.NET] Architecture n-tiers
    Par Dnx dans le forum ASP.NET
    Réponses: 2
    Dernier message: 08/02/2005, 19h10
  5. [Design Patterns] Architecture 3 tiers
    Par HPJ dans le forum Design Patterns
    Réponses: 1
    Dernier message: 29/07/2003, 11h49

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