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

Autres Discussion :

5 couches applicatives est-ce trop?


Sujet :

Autres

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    605
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 605
    Points : 670
    Points
    670
    Par défaut 5 couches applicatives est-ce trop?
    Jusqu'à ce jour, j'ai vécu bâtissant des applications fondées sur architecture à cinq couches applicatives: persistance, domaine, service, coordination, IHM.
    Avec pour simplifier grossièrement, les contrats suivants pour ces couches:


    Sur la base d'une expression de besoins et d'une analyse fonctionnelle établie par des utilisateurs et des analystes fonctionnels décrivant leurs problèmes avec précision,


    De portée "Entreprise":

    Service:
    Plusieurs services, représentant ceux qui existent dans l'entreprise (Service courrier, service comptabilité, service expédition...) présentent leurs fonctions, c'est à dire ce qu'ils se disent capables de rendre comme service à l'ensemble [ou à certains acteurs seulement] de l'entreprise lorsque l'on fait appel à eux.
    Ils implémentent les cas d'utilisation qui sont ressortis de l'expression de besoins. Chaque point d'entrée d'un service est un cas d'utilisation, qui se fonde sur les règles de gestion décrites dans l'analyse fonctionnelle pour autoriser des opérations réclamées par divers acteurs à avoir lieu.


    Domaine:
    Ce que manipulent les acteurs au quotidien dans l'entreprise pour répondre à leurs tâches professionnelles. Client, Facture, Bon de commande, Bon de Livraison, Bon d'expédition, Produit, Transport...
    Un objet figurant dans la couche domaine est un objet métier. Il ne peut s'y trouver que si un utilisateur au moins le comprend intégralement. Un objet "technique" d'informaticien ne devrait pas s'y trouver.

    Avec dès cet endroit une règle d'essence "Test Driven" qui dit qu'à partir du moment où l'on sait ce que l'on a (les objets métiers) et que l'on sait ce que l'on doit faire (les services que l'on peut rendre) on peut déjà décrire intégralement ce qui sera mis en place et préparer ses tests.

    Domaine + Services = tout ce que sait faire l'entreprise.


    Persistance:
    La manière dont les objets de la couche domaine (essentiellement) sont placés, relus, et détruits d'un support quelconque. Ce support n'est pas forcément une base de données.
    Cette couche ne connaît pas le métier de l'entreprise. Elle ne sait pas préjuger si une opération d'E/S qui lui est demandée a un sens ou non du point de vue de l'analyse fonctionnelle ou de l'expression des besoins.

    Il y est fait souvent usage de Data Access Objects (DAO) dont le but est de masquer la nature du support physique à celui qui les emploie, tout en représentant d'éventuels problèmes survenus sur le support de la manière qui aidera le plus possible l'appellant.

    Sauf excès de rigueur de ma part, seule la couche service est habilitée à réclamer des opérations sur les supports physiques. Elle est la seule à apercevoir la couche persistance.


    De portée "Application":
    (une entreprise utilise plusieurs applications)

    Coordination:
    Comment une application se représente la résolution des problèmes auxquels elle doit répondre.
    Elle doit composer avec les cas d'utilisation présentés par l'entreprise. Et ceux-là peuvent lui convenir parfaitement ou réclamer d'elle des circonvolutions.
    Cette couche est porteuse du modèle, sorte d'intelligence équivalente à celle de la couche service, mais à la hauteur du client.
    Cette couche a aussi la possibilité de provoquer ou de réagir à des évenements venus d'interfaces homme-machine.


    Interfaces homme-machine (IHM)
    Les interfaces graphiques (le plus souvent) la manière dont l'utilisateur réalise ses demandes à son application.


    Toutes ces définitions sont mes perceptions de leurs rôles, que vous pouvez corriger ou compléter selon vos propres compréhensions.


    Cependant, régulièrement, je vois cette répartition remise en cause.

    Soit par des frameworks qui semblent ignorer la couche service (JBoss Seam?) soit par l'arrivée de mécanismes comme ceux des entity beans qui associent objets de la couche domaine et persistance en un seul constituant.

    Dans ce cas, je me dis: aujourd'hui, allons-nous vers une diminution du nombre de couches applicatives?


    Mais si je me mets à un autre angle, et que je dis: mes couches domaine et service sont les plus importantes à mes yeux, elles sont définies de manière indépendante de toute base de données et de tout protocole de communication (ce qui me semble l'idéal), alors je suis amené à:
    - Créer des objets dégradés (Data Transfert Object: DTO) pour représenter le contenu d'une base de données, par exemple, qui ne s'accorde pas très bien avec mon modèle objet (une base ancienne par exemple).

    - Je suis amené à en créer aussi si le transport d'objets métiers à destination du client est:
    . Soit trop consommateur en temps et en ressources, et qu'il faut diminuer la quantité d'informations échangée.
    . Soit trop révélateur du fonctionnement de l'entreprise: à un web service appelé par je ne sais qui dans le monde, je ne veux pas remettre des objets qui portent déjà en eux une certaine "puissance logique".

    Dans ce cas, je me demande si plutôt que de diminuer les couches applicatives, cela n'en crée pas une sixième, destinée aux échanges (je suis le premier à penser que ce mot n'est pas très heureux... j'en cherche un autre).


    Quels sont vos avis/réflexions sur l'emploi des couches logicielles?
    Sur le bien fondé qu'il y aurait que certaines disparaissent, ou au contraire, soient ajoutées?

  2. #2
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Personnellement, j'ai vu tout ou presque !

    De l'application une couche à celle à 15 (!) couches... Et grosso modo, tout fonctionnait plus ou moins bien. Je pense que trois à cinq couches reste un choix judicieux : moins, et le couplage est fort, plus, et on perd son temps à mapper les données et les faire traverser de couche en couche.
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2005
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 47
    Points : 38
    Points
    38
    Par défaut
    à mapper les données et les faire traverser de couche en couche.
    Bonjour

    Je rebondis sur cette phrase, comment faites vous cela ? par quelles technologies ?

    Rf mon post ici :
    http://www.developpez.net/forums/sho...d.php?t=459470

    Merci Beaucoup ! !

  4. #4
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    Le mapping se fait avec la meilleure technologie qui aie jamais été conçue : la main

    Dans le cas avec les quinze couches, on ne faisait transiter que les données minimales, donc on devait réaliser le mapping à la main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CoucheInférieure.Objet1.Propriete1 = CoucheSupérieure.Objet1.Propriete1
    ....
    Dans un cas à trois couches, pas vraiment besoin de mapping, mais plutôt de binding entre la vue et les données.

    D'autre part, il est possible d'améliorer le mapping, si celui-ci est systématique, grâce à de la réflexion (pas de respect de syntaxe dans l'exemple qui suit):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    foreach Property p in CoucheInférieure.Objet1.GetType().GetProperties() :
      CoucheInférieure.Objet2.GetType().GetProperty().SetValue....
    Hervé Delannoy, Ingénieur études&développement.

    Je n'accepte pas les demandes de mise en relation MSN/yahoo sans motif.
    ------------------------------------------------------------------------
    Si , ni , ne peuvent vous aider, mais nous oui, pensez à un pti et au !
    Merci de vous relire
    ____________________________________________________________________________________
    Recherche joueurs de "Magic" sur Lille et environs.
    Donner plutôt que jeter.

Discussions similaires

  1. [D7/CLX] Détecter si l'application est déjà lancée
    Par cedricgirard dans le forum EDI
    Réponses: 2
    Dernier message: 23/02/2006, 18h27
  2. [JSF] Séparation couches applicative/entreprise
    Par Original Prankster dans le forum JSF
    Réponses: 6
    Dernier message: 16/02/2006, 19h09
  3. Couche applicative
    Par azman0101 dans le forum Langages de programmation
    Réponses: 3
    Dernier message: 11/03/2005, 14h28
  4. Réponses: 9
    Dernier message: 08/12/2004, 14h36
  5. [Access] Mon application est détruite !!!
    Par mathias dans le forum Access
    Réponses: 4
    Dernier message: 26/06/2003, 14h14

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