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 :

Où placer la logique métier, en base de données, dans un tiers applicatif, etc? [Débat]


Sujet :

Architecture

  1. #1
    Expert éminent
    Avatar de elitost
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2003
    Messages
    1 985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 985
    Points : 6 566
    Points
    6 566
    Par défaut Où placer la logique métier, en base de données, dans un tiers applicatif, etc?
    Bonjour,

    Une question qui va je le souhaite aboutir à un débat constructif.

    Je travaille actuellement dans une entité où nous nous appuyons sur des données stockées sous Oracle, et plusieurs applications satellites utilisent ces données.

    Les langages de ces applications sont hétérogènes, Java, .Net, ColdFusion...

    Nous nous posons actuellement la question concernant la logique métier, où la positionner ?

    En base de données (triggers, procédures stockées, fonctions...) ?
    Dans un tiers applicatif entre Oracle et les IHM ?
    Dans le client (ex: javascript dans le navigateur ) ?

    C'est un gros débat, une guerre de positions, bcp d'arguments existent pour ou contre chacune des solutions, et bien souvent ça dépend de l'architecture en place

    J'aurais aimé lire vos arguments et idées sur la question...

    Merci d'avance

  2. #2
    Membre averti
    Inscrit en
    Août 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    chaque architecture a ses avantages et inconvénients.
    logique métier dans la base de donnée:
    avantages:
    - meilleurs performances
    - les procèdures stockées étant compilées, certaines erreurs SQL sont détectées très tôt.
    - La base de donnée étant l'ultime point de consolidation des données, placé certaine logique dans la base de donnée permet de mieux renforcer le contrôle de certaines contraintes applicatives, quelque soit les applications utilisant ces données.
    -déployement relativement aisé en cas de mise à jour de la logique métier
    - Administration et maintenance centralisées, donc simplifiées

    inconvénients:
    - solution non portable d'une base de donnée à l'autre
    - les langages de procèdures stockés sont non orientés object, pauvre en framework de developpement, par consèquent sont difficilement maintenables ( là je parle avec reserve)
    - solution gérant très difficilement la montée en charge
    - Le niveau de sécurité dépend du SGBD.

    logique métier dans les serveurs d'applications:

    avantages:

    - portable d'un bd à l'autre
    - gestion de la sécurité et des transactions renforcées (transaction impliquant plusieurs BD et autre ressource transactionelle comme les message queue), et indépendant des BD.
    - richesses des langages, frameworks de développement=> meilleur maintenabilité, et fiabilité
    - bonne gestion de la montée en charge.
    - déployment aisé: aucune installation sur le poste client (dans le cas où on utilise le Web (Ajax/HTML/Applet etc.) ou javawebstart comme technologie)
    - Administration et maintenance centralisées, donc simplifiées

    inconvénients:
    - mauvaises performances.

    logique métier sur le poste client

    avantages
    - portable d'une BD à l'autre
    - richesses des langages, frameworks de développement=> bonne maintenabilité, et fiabilité

    inconvénients

    - Mauvaise prise en charge de la sécurité et des transactions.
    -déployements plus difficiles
    - Administration et maintenance decentralisées, donc plus compliquées

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 781
    Points
    36 781
    Par défaut
    je plusse l'argumentaire de kisitomomotene

    Il me semble peu judicieux de mettre la logique métier dans les clients surtout avec un héritage aussi varié.

    Ce qui signifie de l'implémenter "plus bas".
    Et si on lit l'argumentaire de kisitomomotene, il est clair qu'il n'est pas raisonnable de tout miser sur les serveurs d'applications ou sur le SGDB.

    Donc coder la logique métier dans les serveurs d'applications sans s'interdire de faire faire certains traitements par des procédures stockées en base.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  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
    Je suis entièrement d'accord, et apporterais ma précision ainsi :

    Tout ce qui est critique doit etre fait au plus bas (pour être certain que le test soit fait par exemple).
    A contrario, les tests bonus (du genre "appeler le service X avec la donnée Y mais sans la donnée Z est inutile") peuvent être fait au niveau serveur d'application, voire client si on en est capable (griser le bouton si la textbox n'est pas renseignée...)
    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.

  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 916
    Points
    17 916
    Billets dans le blog
    2
    Par défaut
    de politique, en tenant compte des arguments ci-dessus, moi mon choix est fait :

    Certainement pas dans la BD. Le moteur peut changer, d'autres paramètres ou modifications de la logique métier (par exemple lois, normes, précisions, etc) peuvent apparaître, et tenir une compatibilité quand une BD est modifiée dans son fondement (par exemple pouvoir continuer avec le même soft à lire les archives) est vouée à l'échec..

    L'hétérogénéité des langages n'a que peu de rapport avec le fond du problème. La plupart des langages peuvent comnuniqer entre eux.

    Ce qui est important est :

    L'hétérogénétité des applications.

    • Si il y a beaucoup d'applications accèdant à la même logique métier, alors elle devra être dans les serveurs
    • Si il y a peu d'applications partageant la même logique métier, mais beaucoup partageant les mêmes données, alors la logique sera dans les applis.


    Pensez à la maintenance et l'évolutivité...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. Où placer la logique métier ?
    Par oranocha dans le forum Zend_Db
    Réponses: 3
    Dernier message: 29/07/2009, 19h46
  2. Problème de logique sur une base de données
    Par neuneu1 dans le forum Bases de données
    Réponses: 18
    Dernier message: 07/10/2007, 16h47
  3. Les bases de données dans un logiciel PRo
    Par LaMusaraigne dans le forum Langages de programmation
    Réponses: 1
    Dernier message: 30/06/2005, 08h18
  4. Réponses: 7
    Dernier message: 05/01/2005, 13h43
  5. Réponses: 4
    Dernier message: 29/11/2004, 16h51

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