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 :

Gestion base de données sur session


Sujet :

ASP.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 201
    Par défaut Gestion base de données sur session
    Bonjour,

    Je suis entrain de construire une application et je m'interroge sur la gestion de la base de données.
    Je m'explique:
    J'ai construit une DAL pour l'accés à la base de données.
    Cette Dal une fois intialisé ne traite qu'une connexion à la fois et qu'une seul transaction à la fois.

    A l'initailisation de la session de l'utilisateur, j'initialise une instance de cette DAL que j'utilise tout au long de la session.

    Cela fonctionne bien si mon utilisateur de session ne peut faire qu'un seul accés serveur au même moment.

    Mais je crois qu'il est possible que mon utilisateur face plusieurs accés au serveur dans un même temps:
    Je m'explique: Si mon utilisateur lance un traitement via callback sur le serveur et que pendant ce callback, il lance un autre traitement via un autre callback, alors je suppose que j'aurais deux traitements parralèle sur mon serveur pour la même session? Mon hypothèse est-elle juste ?

    Du coup, ma DAL ne fonctionnera car j'aurais deux traitements qui rentrerons en conflit sur la même instance de DAL ?

    Merci pour vos lumières
    Sylo

  2. #2
    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
    Bonjour olysmar2,

    Du coup, ma DAL ne fonctionnera car j'aurais deux traitements qui rentrerons en conflit sur la même instance de DAL ?
    Oui effectivement ça peut te poser des problèmes !!!

    La session est pratique mais trop persistante pour l'utilisation d'une DAL, tu risques d'avoir des effet de bord si tu continues sur cette voie ( ralentissements, bug, crash, consommation mémoire importante voir fuite mémoire ... ).

    je te conseille de stocker ta DAL juste le temps d'une requête Http avec l'objet => HttpContext.Current.Items["MyKey"]

    Cet objet est assez méconnu des développeurs, c'est simplement un dictionnaire clé/valeur comme une session mais l'objet est stocké en mémoire juste le temps d'une requête.

  3. #3
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Utiliser un Singleton pour une DAL est une très mauvaise idée pour une application ASP.NET, car dans l'absolu un seul utilisateur pourra être servi, les autres seront mis en attente.

    De plus, les connexions doivent être ouvertes et fermées le plus rapidement possible, tout ceci étant géré derrière par le regroupement de connexions (connection pooling), donc à priori il n'y a également aucun intérêt à stocker une instance de la DAL, sauf si tu as une architecture spécifique qui le nécessite absolument.

    Enfin, si on reste sur les principes basiques d'architecture, la DAL ne devrait être appelée que par la couche Business, éventuellement par d'autres couches intermédiaires, mais certainement pas par la couche UI.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 201
    Par défaut
    Pour répondre à DotNetMatt, Ma Dal ouvre et ferme les connexion à chaque requète, a moins que je ne l'ouvre manuellement dans la dal, et dans ce cas là, c'est à mois de veiller à la fermer (particulièrement dans le cadre d'une transaction)
    Par contre, je ne comprend pas pourquoi tu me dis qu'un seul utilisateur pourra être servi? Chaque utilisateur dispose d'une instance de sa DAL avec sa propre connexion, donc je ne vois pas le problème... C'est un peu comme si mes users ouvrait et fermait la connexion via un sqlconnection sauf que l'ADO est déporté dans la DAL... Si une connexion reste ouverte, c'est que j'ai mal gérer mes objets...
    Enfin, pour les principes de bases de l'architecture, je comprend bien ce que tu me dis, mais ce n'est pas mon soucis majeur pour l'application que je développe...
    Merci tout de même pour toutes ces informations

    En tous les cas, ce que me propose Makia semble correspondre à mon attente... Je vais creuser de ce coté là

    Merci beaucoup
    Sylo

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    201
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 201
    Par défaut
    La solution de Makia semble bien fonctionner.
    Merci beaucoup
    Sylo

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

Discussions similaires

  1. [AC-2007] base de donnée sur la gestion d'une citée universitaire
    Par albert romeo dans le forum Access
    Réponses: 1
    Dernier message: 25/01/2011, 19h58
  2. [MySQL] Connexions à 2 bases de données sur une même page
    Par guy2004 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 08/02/2006, 09h38
  3. [base de donnée] accée a la base de données sur eclipse
    Par khalidlyon dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 07/04/2005, 22h12
  4. Base de données sur cd-rom ?
    Par vitsec dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 03/05/2004, 18h07

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