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

Dotnet Discussion :

Questions d architecture


Sujet :

Dotnet

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de M_Makia
    Homme Profil pro
    dev
    Inscrit en
    Février 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2008
    Messages : 121
    Par défaut Questions d architecture
    Bonjour à tous,

    Je souhaiterais avoir vos avis concernant la meilleure architecture à suivre pour un projet qui est en cours d’étude.
    Le projet consiste à développer une suite d'applications web MVC (intranet ou extranet selon les applications).

    Typiquement il y aura :
    -une appli pour gérer les contacts client
    -une appli pour gérer les devis et la facturation
    -une appli pour gérer un catalogue produit
    -une appli pour administrer l’authentification aux différentes applis
    -une appli SAV
    - ect ... (d'autres applis viendront se rajouter dans le futur)

    On peut estimer que la majorité des applications fonctionneront avec un ou plusieurs référentiels de données communs (par exemple le référentiel client qui sera lié à la facturation et au SAV).

    Voici mes questions :

    Est-il mieux de mettre les données de toutes les applications dans une même BDD ?
    Avantages ? Inconvénients ?

    Est-ce que d’après vous Entity Framework est adapté à ce type de projet ?
    Si non quels options envisageriez-vous pour l’accès aux données ?

    Merci pour vos retours.

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Citation Envoyé par M_Makia Voir le message
    Est-il mieux de mettre les données de toutes les applications dans une même BDD ?
    Oui
    Citation Envoyé par M_Makia Voir le message
    Avantages ? Inconvénients ?
    Simplicité d'utilisation. Pas sur qu'un besoin de découpage en plusieurs bases soit pertinent. Gérer des relations et notamment des contraintes d'intégrité entre bases de données c'est pas de la tarte.

    Citation Envoyé par M_Makia Voir le message
    Est-ce que d’après vous Entity Framework est adapté à ce type de projet ?
    Il n'y a pas de raisons que ca ne fonctionne pas, la bête commence à être mature et l'intégration avec ASP.Net MVC est bien faite.
    Citation Envoyé par M_Makia Voir le message
    Si non quels options envisageriez-vous pour l’accès aux données ?
    NHibernate pour rester dans les ORM. Ou sinon plusieurs autres solutions sont possibles (générateurs de DAL par exemple).

  3. #3
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    Bonjour,

    Je ne suis pas du tout de ton avis pour mettre toutes les données dans la même BDD, en tout cas si je comprends par BDD est un schéma.
    Il est préférable de faire un schéma par ensemble de responsabilité (facturation, référentiel client, catalogue produit...).
    Et les données ne sont pas si liées que cela.
    Par exemple une facture dans la facture il faut RECOPIER les données du catalogue et du client (prix, description, adresse...) car une facture émise ne change plus alors que l'adresse du client et les prix du catalogues vont être modifiés au cours du temps voir des produits retirés...
    De même l'administration et l'authentification se fait de manière indépendante dans un LDAP auquel on peut associer une base de données pour gérer les information de profil utilisateur.
    Cela permettra de bien séparer les infrastructure extranet et intranet (oui même au niveau des BDD ça peut éviter un risque).
    Idéalement chaque application a sa base de données avec un accès écriture et lecture, et peut interroger les données des autres base au travers de services (web service par exemple) fourni par l'application responsable de la base de données.
    Mais bon c'est toujours un peu plus lourd de bien faire les choses... tout mettre à la va vite dans la même base avec N applications qui vont écrire un peu n'importe où et consulter les données n'importe comment est la norme...
    Sinon EntityFramework c'est pas mal et le MVC made in Microsoft est aussi abouti.

  4. #4
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    Ah mais c'est pas parceque ce sont plusieurs applications du point de vue utilisateur qu'il n'est pas possible d'avoir une couche de services unifiée derrière

  5. #5
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 197
    Par défaut
    Citation Envoyé par NicoL__ Voir le message
    Bonjour,
    Idéalement chaque application a sa base de données avec un accès écriture et lecture, et peut interroger les données des autres base au travers de services (web service par exemple) fourni par l'application responsable de la base de données.
    Mais bon c'est toujours un peu plus lourd de bien faire les choses... tout mettre à la va vite dans la même base avec N applications qui vont écrire un peu n'importe où et consulter les données n'importe comment est la norme...
    Sinon EntityFramework c'est pas mal et le MVC made in Microsoft est aussi abouti.
    Ce n'est pas parce que tes données sont séparés que ca t'empeche de developper avec des pieds et inversément

    Perso je vois plus de risque et de complication que d'avantage.
    Peut-être plus de facilite en cas de recherche de plus de performance: tu pourras plus facilement repartir la charge sur plusieurs machines

    Par exemple une facture dans la facture il faut RECOPIER les données du catalogue et du client (prix, description, adresse...) car une facture émise ne change plus alors que l'adresse du client et les prix du catalogues vont être modifiés au cours du temps voir des produits retirés...
    euh j'espere que tu ne vas pas sauvegarder un produit à chaque facture
    Le versionning ca existe et même dans le cas de base séparée tu as interêt à utiliser cette technique.

  6. #6
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    Je pense que séparer les responsabilité permet de mieux gérer les choses et le faire avec les base de données me semble le bon sens. Cale simplifie les déploiement, et le travail en équipe.
    Après
    Ah mais c'est pas parceque ce sont plusieurs applications du point de vue utilisateur qu'il n'est pas possible d'avoir une couche de services unifiée derrière
    Je sais pas si c'est top un service unifié pour la maintenance et les déploiements... enfin de toute façon c'est pas un problème on peut faire un service unifié s'appuyant sur plusieurs BDD.

    Bref on arrive toujours faire du code qui fonctionne, mais c'est plus dur de faire un code lisible et maintenable et compréhensible. Une première approche est de bien séparer les responsabilités pour pas se retrouver avec des régressions tout le temps.

    Perso je vois plus de risque et de complication que d'avantage.
    Oui c'est vrai tout dépend de la vision et des perspectives du projet si c'est un projet d'école, oui le plus simple c'est de faire une base de données unique, c'est sûr...
    euh j'espere que tu ne vas pas sauvegarder un produit à chaque facture
    Oui c'est un peu violent comme idée mais il y a une parti à recopier. La foreign key du produit + la quantité ne permet de reconstituer une facture en réalité. A priori je dirais que ce qui peut-être imprimé sur une facture doit être enregistré en base et non reconstitué par une requête dans le catalogue produit.
    Après du versioning, oui pourquoi pas c'est une approche, plus complexe qu'il n'y parait à mon sens pour résoudre ce problème et va en entraîner bien d'autres...

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Bonjour

    Citation Envoyé par NicoL__ Voir le message
    Je ne suis pas du tout de ton avis pour mettre toutes les données dans la même BDD, en tout cas si je comprends par BDD est un schéma.
    Déjà, non. Tu peux avoir n schéma par BDD.

    Citation Envoyé par NicoL__ Voir le message
    Il est préférable de faire un schéma par ensemble de responsabilité (facturation, référentiel client, catalogue produit...).
    Pourquoi pas ....

    Et les données ne sont pas si liées que cela.
    Par exemple une facture dans la facture il faut RECOPIER les données du catalogue et du client (prix, description, adresse...) car une facture émise ne change plus alors que l'adresse du client et les prix du catalogues vont être modifiés au cours du temps voir des produits retirés...
    Typiquement, on a une table d'en tête de facture et une table de lignes de factures, qui effectivement vont contenir des données potentiellement dupliquées.

    De même l'administration et l'authentification se fait de manière indépendante dans un LDAP auquel on peut associer une base de données pour gérer les information de profil utilisateur.
    Là on ne voit pas du tout le rapport entre le LDAP et le choix entre BDD unique ou multiple.

    Cela permettra de bien séparer les infrastructure extranet et intranet (oui même au niveau des BDD ça peut éviter un risque).
    Lequel ?

    Idéalement chaque application a sa base de données avec un accès écriture et lecture, et peut interroger les données des autres base au travers de services (web service par exemple) fourni par l'application responsable de la base de données.
    Ce poitn de vue est tout à fait discutable : je ne vois pas de bénéfice à faire intervenir des entités tiers si c'est simplement pour fournir de la donnée, sans traitement métier. Par exemple, dans le cas que tu cites supra (séparation intranet vs extranet) l'usage de deux BDD est une option mais l'usge de tiers type web service pourra être avantageusement remplacé par des systèmes de réplication (à voir au cas par cas, mais affirmer une règle générale dans ce cas me semble franchement outrancier).

    Mais bon c'est toujours un peu plus lourd de bien faire les choses... tout mettre à la va vite dans la même base avec N applications qui vont écrire un peu n'importe où et consulter les données n'importe comment est la norme...
    Sinon EntityFramework c'est pas mal et le MVC made in Microsoft est aussi abouti.
    Dès l'instant où on spécialise les vues par application, je ne vois pas d'objection de principe à la BDD unique. Après il fait voir avec les volumétries, les contraintes de disponibilité, le nombre de tables, etc ... Si j'ai 5000 tables dans une BDD, je peux me dire que peut être aurai-je pu bénéficier d'une approche multi-base; si c'est pour se retrouver avec des BDD avec une dizaine de table chacune, c'est plus que discutable (du style les clients dans une base, la facturation dans une autre).
    Tu vas crééer des contraintes d'administration sans bénéfice a priori.

  8. #8
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    Déjà, non. Tu peux avoir n schéma par BDD.
    Oui c'est sûr. En fait j'entends BDD = schéma, c'est ce que j'ai écrit plus haut pour clarifier le sens de la question initiale.

  9. #9
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par NicoL__ Voir le message
    Oui c'est sûr. En fait j'entends BDD = schéma, c'est ce que j'ai écrit plus haut pour clarifier le sens de la question initiale.
    Oui, mais là tu fabriques une contrainte qui n'existe pas :

    1 serveur (machine) physique => n instances de SGBD.
    1 instance => n bases
    1 base => n schémas.

Discussions similaires

  1. Question sur Architecture d'un jeu vidéo 3D
    Par Polygon dans le forum Développement 2D, 3D et Jeux
    Réponses: 2
    Dernier message: 28/10/2007, 12h43
  2. [C# 2.0] Question d'architecture - code dynamique
    Par StormimOn dans le forum Framework .NET
    Réponses: 11
    Dernier message: 06/03/2007, 11h19
  3. [Création d'un moteur] Petite question d'architecture technologique
    Par ludovic85 dans le forum Décisions SGBD
    Réponses: 9
    Dernier message: 07/02/2007, 18h00
  4. [Architecture] Question d'architecture
    Par bourbaki2003 dans le forum Général Java
    Réponses: 3
    Dernier message: 11/07/2006, 10h38
  5. [JPanel] [GUI] question d'architecture
    Par _KB_ dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 15/06/2006, 15h10

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