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 :

Connection à une BDD


Sujet :

ASP.NET

  1. #1
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut Connection à une BDD
    Bonjour,

    Je me suis toujours posé cette question. Pour une connection Bdd utilisé pour l'ensemble d'un site Web, faut il faire une classe static de connection ou un singleton ou juste une classe que j'instancierais ?

    Merci

  2. #2
    Membre confirmé Avatar de Marsupilami_00
    Profil pro
    Architecte logiciel
    Inscrit en
    Janvier 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte logiciel

    Informations forums :
    Inscription : Janvier 2007
    Messages : 102
    Par défaut
    Hello,

    Utiliser une classe static c'est très bien. Utiliser de design pattern Singleton pour une connexion base de donnée pour une application Web c'est à discuter.

    si tu veux qu'une seule connexion pour toutes les sessions Web (ou tous les utilisateurs qui se connectent à ton site web) alors dans ce cas oui.

    Maintenant comme la plupart des fournisseurs utilisent le pool de connexion tu n'as plus à te soucier de cela. tu peux créer une connexion à chaque requête de base de donnée. Ainsi tu es sur d'avoir un contexte de base de données spécifique pour le traitement en cours.

  3. #3
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Je ne veux pas une seule connection pour mon site, je veux une utilisation normale.

    Donc c'est le pool qui s'occupera de ca.

    Donc static c'est ce que tu recommandes ? Car la difference entre un singleton et static n'est pas evidente.

  4. #4
    Membre confirmé Avatar de Marsupilami_00
    Profil pro
    Architecte logiciel
    Inscrit en
    Janvier 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte logiciel

    Informations forums :
    Inscription : Janvier 2007
    Messages : 102
    Par défaut
    Le fait d'utiliser une classe static est d'éviter de passer par une instanciation pour accèder au contenu de la classe.

    Oon utilise une classe static pour l'implémentation du singleton. Cette classe doit en plus vérifier si la connexion est unique dans le sens qu'on vérifie qu'elle n'existe pas avant d'en créer une autre.

    La classe static sans l'implémentation du singleton permet de créer tout le temp une connexion à la base de données.

    A+

  5. #5
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Pour moi l'utilisation d'un singleton c'est justement pour ne pas utiliser une class static.

    Elle verifie effectivement si l'objet est deja instancié ou non et renvoi la meme instance ou en cree une si rien n'existe.

    Dans les 2 cas, est ce gerer par le pool de connection ?
    Est ce qui si 100 utilisateurs se conenctent au meme site, ils utliseront 100 connections (1 par utilisateur et rien qu'une ?) ou 1 seule pour les 100 utilisateurs ?

  6. #6
    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
    Vous vous prenez la tête pour rien.

    T'as besoin d'accéder à la base:
    - tu crées une DbConnection
    - tu l'ouvres
    - tu fais ta requête
    - tu la fermes

    Le framework s'occupe du reste. Il gére le pool de connexions, prend une connexion dispo quand il en a besoin, agrandit le pool si nécessaire...

  7. #7
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    tu crées une DbConnection
    - tu l'ouvres
    - tu fais ta requête
    - tu la fermes
    La question c'est tu le fait dans une classe static, non static, singleton ?!? et la derniere question c'est :

    Est ce qui si 100 utilisateurs se conenctent au meme site, ils utliseront 100 connections (1 par utilisateur et rien qu'une ?) ou 1 seule pour les 100 utilisateurs ?
    J'ai besoin de comprendre reeelementce qui se passe

  8. #8
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Static ou non static, a la limite, c'est secondaire...ca depdends si tu veux faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dbHelper.ExecuteNonQuery("database","delete from user where id = 1");
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DatabaseWrapper dbHelper = new DatabaseWrapper("database")
    dhHelper.ExecuteNonQuery("delete from user where id = 1");


    Par contre, Singleton, bof, bof...a moins que tu veuilles qu'un seul utilisateur accede a la base de donnees a un instant t...

    Est ce qui si 100 utilisateurs se connectent au meme site, ils utliseront 100 connections (1 par utilisateur et rien qu'une ?) ou 1 seule pour les 100 utilisateurs ?
    Et la reponse est...ca depends...ca depends du nombre d'utilisateurs conenctes, de la duree de tes requetes, etc...

    si tu as 5 utilisateurs qui font une requete en meme temps, ils vont utiliser 5 connections differentes, par contre, si un 6eme arrive alors que le premier vient de finir, le mecanisme de pooling va recuperer la conenction qui vient d'etre liberee...

    Pour avoir 100 connexions ouvertes en meme temps, il faut que 100 utilisateurs soient en train de faire une requete (ou que tu ne fermes pas les connections )

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  9. #9
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Donc le pool de connection se charge de tout (genial), et cela peut importe de l'utilisation static, non static ou singleton alors.

    C'est bien ca ?

  10. #10
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    http://msdn.microsoft.com/fr-fr/library/8xx3tyca.aspx

    c'est ca...sauf que si tu utilises un singleton, tu vas empecher tes utilisateurs de travailler sur ton objet tant qu'il est utilise par un autre utilisateur...

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  11. #11
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Merci pour ces precision.

    Je vais lire ta page.

    Sinon dans quelle contexte utilise t on les singletons ? je ne vois aucun cas concret pour un site web. Pour les logs peut etre ?

  12. #12
    Membre confirmé Avatar de Marsupilami_00
    Profil pro
    Architecte logiciel
    Inscrit en
    Janvier 2007
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte logiciel

    Informations forums :
    Inscription : Janvier 2007
    Messages : 102
    Par défaut
    Dans le cas où tu veux qu'une seule objet d'une classe disponible pour plusieurs demandeur au lieu et place d'un objet par demandeur

  13. #13
    Membre éprouvé
    Avatar de topolino
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    1 901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 901
    Par défaut
    Je sais bien a quoi sert le singleton, main en pratique je n'ai jamais eu le cas !!! c'est pour ca que je demande des exemples concrets

  14. #14
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Honnetement ?

    Je crois que je n'ai pas trouve une seule *vraie* necessite d'utiliser un singleton en 8 ans...

    a moins que tu n'aies un objet dont l'initialisation est tres couteuse, je ne vois pas de vrai avantage...a moins que tu doives designer un systeme ou fonctionellement, tu doives assurer l'unicite d'une ressource, ce qui arrive tres rarement

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  15. #15
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Bonjour,
    J'arrive au milieu de votre discussion....

    Concernant les Singletons, vous ne les utilisés pas pour faire des mécanismes de logs, de caches (cache de données, ou de configuration)?

    Je trouve ça assez pratique, même si comme vous le dites ce n'est pas une nécessité.

  16. #16
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    pour les logs, j'utilise log4net, qui marche bien (pas la peine de reinventer le roue )

    Pour les caches, des classes statiques, avec un lock si elles doivent charger une quantite importante de donnees

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  17. #17
    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
    Citation Envoyé par pvialatte Voir le message
    pour les logs, j'utilise log4net, qui marche bien (pas la peine de reinventer le roue )
    +1

  18. #18
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    Même si vous êtes contraints de logger dans le journal Windows....

  19. #19
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par eric39 Voir le message
    Même si vous êtes contraints de logger dans le journal Windows....
    Dans ce cas la, je crois que tu as le EventLogAppender
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     <appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
            <param name="LogName" value="MyLog" />
            <param name="ApplicationName" value="MyApp" />
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
            </layout>
    (tiens, faudrait que je blogues ca )

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  20. #20
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 380
    Par défaut
    OK, merci pour cette info.

    Je suis nouveau dans le monde C#/ASP.NET (je viens de java) et j'apprends pleins choses sympa!

Discussions similaires

  1. [SAGE ODBC] Comment connecter une BDD ?
    Par aqwz dans le forum Autres SGBD
    Réponses: 8
    Dernier message: 14/09/2006, 10h00
  2. Se connecter à une BDD Mysql à partir du c++
    Par crazydede8 dans le forum Bibliothèques
    Réponses: 4
    Dernier message: 06/05/2006, 00h50
  3. [MySQL] Connection à une bdd sur serveur distant
    Par papyphp dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/03/2006, 21h13
  4. Réponses: 1
    Dernier message: 25/07/2005, 17h11
  5. [debutant] connection à une BDD MySQL
    Par Golork dans le forum Bases de données
    Réponses: 1
    Dernier message: 11/03/2005, 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