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 :

problème de structure et connexions


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 53
    Points : 40
    Points
    40
    Par défaut problème de structure et connexions
    Bonjour, voici mon problème pour ceux qui le comprendront, je suis entrain de reprendre une application et j'ai quelques soucis avec l'existant...

    Environnement :

    Base de données oracle , asp.net 1.1, C#, visual studio 2003

    Résumé :

    Utilisation d'une classe ConnectionBdd à oracle avec execution et récupération de données

    avec un dataset ou un datareader (ExecuterRequete(String rqt) : DataSet ...).

    Utilisation d'une classe accesAuxDonnees qui prend en parametre un objet de type

    ConnectionBdd. Cette classe permet la création des requetes et le renvoi des resultats de la

    requete sous forme de dataset ou datareader (getMembres() : dataReader,

    getNomMembreById(String id) : dataSet ...).
    Cette classe utilise donc la classe connection.

    La Classe accesAuxDonnes est utilisée pour l'affichage des données dans les différents

    formulaire web.

    Le projet contient deux variables d'application : une pour la classe accesAuxDonnees, une

    pour la classe connection.

    Dans la classe accesAuxDonnees pour chaque méthode, on ouvre la connection et on la ferme.

    Problème :

    personne1 demande affichage de tous les membres
    au même moment
    personne2 demande la même chose

    le 1er va voir les membres s'afficher et le deuxieme un message d'erreur car la connexion

    est refermé par personne1 puisque c'est une variable d'application.

    Solution:

    merci d'avance.

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Pourquoi la connexion est elle une variable d'application ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    C'est une bonne question :s , je vais dire que c'est une solution de facilité pour pouvoir utiliser la connexion sans avoir à redéclarer une objet connexionBdd à chaque fois...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Citation Envoyé par p1k1
    C'est une bonne question :s , je vais dire que c'est une solution de facilité pour pouvoir utiliser la connexion sans avoir à redéclarer une objet connexionBdd à chaque fois...

    Ce qui fait que si 2 personnes accède au meme objet, il y a conflit...

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 619
    Points
    1 619
    Par défaut
    utilise un variable static pour la connexion. utilise le design pattern singleton.

  6. #6
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    hum je ne connais pas, je vais me renseigner et voir si ça peut s'implementer dans l'appli.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    Le singleton ne résoudra pas le probleme : tous les utilisateurs accederont au meme singleton.
    Il y a un arcticle sur les probleme du Singleton en env multithread sur developpez. Et meme si ca marche :tous les utilisateurs accèdent toujours au meme objet : il y a embouchure meme si le probleme d'instanciation est résolu...

    Moi je dirais de regarder plutot du coté des variable de sessions (un par client)
    Sinon il y a le Multiton (Singleton avec une instance unique pour une clefs de hashage), mais il n'est pas reconnu par le Gof.

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 240
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 240
    Points : 1 619
    Points
    1 619
    Par défaut
    ca ne serait pas plutot ta conception qui n'est pas bonne?
    de toute facon pour faire une opération en base tu es obligé d'ouvrir et de fermer la connexion si tu ne veux pas penaliser ton appli. Dans ton cas il faudrait que tu fasses une vraie architecture 3 tiers, ou sinon bah tu codes ouverture et fermeture à chacune de tes opérations.

  9. #9
    Membre habitué Avatar de lapanne
    Inscrit en
    Juin 2006
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 200
    Points : 197
    Points
    197
    Par défaut
    +1 pour le problème du singleton.
    Sinon perso, j'utilise une classe static de connection à la BDD.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    public static class DataConnect
    {
        static  SqlConnection _sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["CoreNet_ConnectionString"].ToString());
     
        public static void OpenConnection()
        {
            if (_sqlConn.State == ConnectionState.Closed)
            {
                _sqlConn.Open();
            }
        }
     
         public static void CloseConnection()
        {
            if (_sqlConn.State == ConnectionState.Open)
            {
              _sqlConn.Close();
            }
        }  
     
        public static SqlConnection Connection
        {
            get { return _sqlConn;}
        } 
    }
    Voilà, en espérant que ça puisse t'être utile
    Petite quesiton en passant : pourquoi passes-tu ces deux classes an variables applications ?
    <SplyRock95> c'est quoi ton style?
    <Bat> #bat{height:180cm;weight:160lbs; eye-color:#0000FF; hair-color: #FFFF00;}
    Copyright @ bashfr.org

  10. #10
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Pour répondre à vos questions, oui la conception je la trouve très mauvaise...

    Mais je n'ai pas le choix malheureusement, comme je l'ai dis au début je reprends une application et elle n'est pas de moi...

    Les variables d'application ne servent "à rien" sinon à avoir accès partout à un objet connexion et à la classe qui construit les requêtes. J'aurai bien virer ses variables d'applications, mais sachant qu'elles touchent toutes les classes et webform du projet je voulais trouver une alternative

    En tout cas merci pour vos réponses, je vous tiens au courant

  11. #11
    Membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Bon finalement j'ai pris mon courage à deux mains, passé au peigne fin les quelques 10 000 lignes de codes, virer toutes ces variables d'applications moisies et fais un truc plus propre avec ouverture au plus tard et fermeture au plus tôt de la connexion!
    Merci à tout ceux qui ont répondu

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2005
    Messages : 700
    Points : 780
    Points
    780
    Par défaut
    C'était peut etre le mieux à faire. Fermer au plutot la conex à la BDD est impératif...

    Et dans l'idéal, il faut meme libérer le thead asp pendant la requete...
    Si tu veux un petit article intéressant la dessus :
    http://msdn.microsoft.com/msdnmag/is...lt.aspx?loc=fr

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

Discussions similaires

  1. Problème de stabilité de connexion
    Par Theocourant dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 1
    Dernier message: 19/04/2006, 08h21
  2. Problème de reconfiguration de connexion ?
    Par MAJIK_ENIS dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/04/2006, 21h02
  3. [Système] Problème internet : établissement de connexions
    Par Eusebius dans le forum Autres Logiciels
    Réponses: 13
    Dernier message: 21/11/2005, 15h58
  4. [Oracle 8i et ADO] Problème de chaine de connexion
    Par hrezzaz dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/10/2005, 17h52
  5. [OCaml] Problème de structure/parser
    Par marv1 dans le forum Caml
    Réponses: 4
    Dernier message: 09/05/2005, 12h16

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