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

Architecture Discussion :

[Architecture]Developpement en couches et performances


Sujet :

Architecture

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 97
    Points : 76
    Points
    76
    Par défaut [Architecture]Developpement en couches et performances
    Bonjour à tous,
    j'ai suivi et mis en oeuvre le tutoriel de Thomas LeBrun sur le developpement en couches: Introduction au développement en couches

    Dans ce tutoriel tres bien fait, il n'est pas abordé les différences de performances entre une application développée en couches et une application ne respectant pas ce schéma de developpement.

    Je souhaiterais connaitre vos points de vue sur cette question:

    Le developpement en couches pénalise t-il les performances de l'application?

  2. #2
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Ca dépend par rapport à quoi. Si tu compares par rapport à une application mal developpé et sans architecture en couches, je pense qu'une bonne architecture en couches peut même amélioré un peu les performances. Mais je pense qu'avec une appli bien developpé mais sans séparation des couches, tu as un risque de pertes de performances, mais je pense que c'est minime. Par contre, c'est au niveau de la maintenance que tu vas gagner du temps sur la deuxième application.

    J'ai jamais fait de tests, donc je suis pas sûr de ce que je dis.

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par wichtounet
    Ca dépend par rapport à quoi. Si tu compares par rapport à une application mal developpé et sans architecture en couches, je pense qu'une bonne architecture en couches peut même amélioré un peu les performances. Mais je pense qu'avec une appli bien developpé mais sans séparation des couches, tu as un risque de pertes de performances, mais je pense que c'est minime. Par contre, c'est au niveau de la maintenance que tu vas gagner du temps sur la deuxième application.

    J'ai jamais fait de tests, donc je suis pas sûr de ce que je dis.
    mwé tu fais bien de rajouter la dernière phrase

    En fait, au contraire, une bonne application en couche facilite la maintenance à un facteur exponentiel au nombre de couches.

    Regardons bêtement le Web :

    Si on fait une application qui mélange au même niveau :

    • encodage du protocole tcp
    • gestion des sockets
    • encodage du protocole html
    • affichage


    ça fait un joyeux casse-tête


    avec en plus l'inconvénient majeur d'avoir à re-développer des parties déjà ultra-utilisées, débuggées, etc...

    Il y a d'autres formes de développement, mais le "développement en couches" n'est pas autre chose que la formalisation objet pour le développement et non pour le langage..

    "Scope" précis et réduit, indépendance vis-à vis des couches supérieures, réutilisabilité, etc...

    Donc certainement pas un désavantage en terme de maintenance....

    Quant aux performances, je ne sais pas comment on peut comparer, s'agissant du développement... Un binaire est un binaire.. Qu'on l'ai développé en couches ou non. Dès qu'on fait appel à une routine, il y a un peu d'overhead. Mais il est le même dans les 2 cas.

  4. #4
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par souviron34
    mwé tu fais bien de rajouter la dernière phrase

    En fait, au contraire, une bonne application en couche facilite la maintenance à un facteur exponentiel au nombre de couches.

    Regardons bêtement le Web :

    Si on fait une application qui mélange au même niveau :

    • encodage du protocole tcp
    • gestion des sockets
    • encodage du protocole html
    • affichage


    ça fait un joyeux casse-tête


    avec en plus l'inconvénient majeur d'avoir à re-développer des parties déjà ultra-utilisées, débuggées, etc...

    Il y a d'autres formes de développement, mais le "développement en couches" n'est pas autre chose que la formalisation objet pour le développement et non pour le langage..

    "Scope" précis et réduit, indépendance vis-à vis des couches supérieures, réutilisabilité, etc...

    Donc certainement pas un désavantage en terme de maintenance....

    Quant aux performances, je ne sais pas comment on peut comparer, s'agissant du développement...
    C'est bien ce que j'ai dis

    Je disais bien que c'est un gain de temps en terme de maintenance avec une architecture en couches. Je suis tout à fait d'accord avec toi. Mais je m'exprime peut-être mal.

    Ma dernière phrase était pour les performances.

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Ok alors j'avais mal compris cette phrase :

    Citation Envoyé par wichtounet
    ...
    Par contre, c'est au niveau de la maintenance que tu vas gagner du temps sur la deuxième application.
    ...
    Désolé

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 97
    Points : 76
    Points
    76
    Par défaut
    Si je vous suit bien,
    à qualité de codage égale, l'architecture en couche n'influence pas les performances de l'application?

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Absolument..

    Les perfomances "runtime" n'ont absolument rien à voir avec le modèle de développement....

    Par contre, cela a à voir avec la qualité du codage.... Et l'optimisation du code.. Et l'usage ou non d'un langage compilé. et la vitesse du CPU, et la vitesse des bus, et la taille mémoire, et la taille du swap, et le "gérant" des processus, etc.....

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 97
    Points : 76
    Points
    76
    Par défaut
    Merci pour toutes ses précisions.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2003
    Messages : 53
    Points : 37
    Points
    37
    Par défaut
    Moi j'ai une autre question peut etre bete mais je la pose quand meme (lol).

    Est ce qu'on peut utiliser la classe de la couche BLL de la meme facon dans une aplli web que dans une appli Window? Je veux dire par la, est ce que le fait d'utiliser un singleton et de locker l'instance ne va pas poser des problemes quand on a plusieur utilisateurs qui font appelle au meme objet, et peut etre en meme temps!

    Merci pour les reponses.

  10. #10
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Bonjour Aurazed

    j'ai vu que vous avez mis en oeuvre le tutoriel de Thomas LeBrun sur le developpement en couches, moi aussi je viens de le faire puisque j'ai à developper une application avec .Net et Sql server et j'ai choisi de le faire avec la technique N-tier, le problème c'est que a la compilation j'ai les deux erreurs suivantes:

    'System.Windows.Forms.ListBox' does not contain a definition for 'DataContext'

    'System.Windows.Forms.ListBox' does not contain a definition for 'DisplayMemberPath'

    Est ce que cela pourrait etre du au fait que j'utilise du WindowsForms alors que le tutoriel utilise WPF?

    Merci d'avance pour votre aide

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 359
    Points : 36 890
    Points
    36 890
    Par défaut Prenons de très mauvais exemples.
    Citation Envoyé par Aurazed Voir le message
    Si je vous suit bien,
    à qualité de codage égale, l'architecture en couche n'influence pas les performances de l'application?
    Si on écrit une application objet en Java, on va l'exécuter sur une couche logicielle qui s'appelle la JVM.
    Si vous développez en C++, vous n'aurez pas cette couche d'abstraction et les performances seront généralement meilleures.

    => Chaque fois qu'on ajoute des couches, le risque d'impact sur les performances ne sera jamais nul.

    Ceci dit en échange de ce risque (et souvent de ce prix), vous obtiendrez:
    1. des modules ré-utilisables, plus robustes, plus simples à maintenir,
    2. moins de code à écrire pour livrer votre application,
    3. ...


    Faut-il partiellement violer la belle architecture en couche pour obtenir de meilleures performances?
    Parfois cela vaut le coût: ne ré-écrit-on pas certains algo en assembleur?
    Mais il va falloir arbitrer ce bénéfice avec les soucis que cela va poser en maintenabilité,...
    - W

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Attention tout de même
    Cet article est très bien écrit mais il y a tout de même deux points sur les quels j'aimerais apporter des précisions :

    Permier point : L'utilisation du pattern Singleton.
    Le pattern Singleton n'est pas la panacée pour gérer les connexions. C'est vrai qu'il permet de n'avoir qu'une seule instance de la connexion à la base de données, mais cela n'est rentable (et viable) que dans un contexte non web. Dans un contexte web, le pooling de connexion des SGBD va être dérouté par la réutilisation d'une seule instance de connexion (erreur du genre connexion already opened, ou connection has been closed...). Il vaut mieux, dans un contexte Web utiliser une connexion éphémère.

    Second point : Le respect de l'intimité des couches. Thomas n'appuie pas assez sur le fait qu'une seule fuite d'intimité peut effacer tous les avantages de cette architecture. Il est IMPERATIF de respecter la séparation des couches et ce modèle de développement nécessite une grande rigueur et également l'adhésion de l'ensemble de l'équipe sur le long terme.

    Voilà, c'est tout

    Eugene

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 17/03/2010, 17h44
  2. Audit d'un developpement en couches
    Par Yogy dans le forum Débuter
    Réponses: 11
    Dernier message: 31/03/2009, 17h52
  3. [Architecture] Conception multi-couches
    Par djflex68 dans le forum Architecture
    Réponses: 42
    Dernier message: 10/06/2008, 13h33
  4. architecture Developper suite
    Par big1 dans le forum Outils
    Réponses: 2
    Dernier message: 12/10/2007, 12h00
  5. Developpement en couches
    Par Nico_stras dans le forum Windows
    Réponses: 8
    Dernier message: 27/12/2006, 10h50

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