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

Services Web Discussion :

Garder des objets en mémoire dans le service.


Sujet :

Services Web

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Points : 46
    Points
    46
    Par défaut Garder des objets en mémoire dans le service.
    Bonjour à tous,

    Nous réalisons un projet pour notre école ou nous devons utiliser des méthodes d'un webservice WCF.

    Ce webservice contient des listes d'objet en attribut. Lors de l'appel d'une méthode (du webservice) d'ajout, l'attribut liste du webservice reçoit un élément supplémentaire.

    Nous avons utilisé ce système afin de ne pas utiliser une base de données trop gourmande en mémoire pour les données que l'on avait à gérer.

    Cependant, sans comprendre pourquoi, nous nous sommes aperçu qu’au bout d'un certain laps de temps, le service semblait être détruit, détruisant ainsi la liste d'objet en mémoire. Pourtant le serveur IIS n'a pas bougé (pas de reboot, etc.).

    Est-il possible d'allonger en quelque sorte la durée de vie de l'instance de ce service ? Si oui, est-il recommandé de faire ceci ?

    Je joins un extrait du code de la classe du service en question pour mieux illustrer mon propos:


    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
        [ServiceContract]
        [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
        [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
        ConcurrencyMode = ConcurrencyMode.Multiple)]
        public class ServiceSession
        {
     
            private SynchronizedCollection<Session> Sessions = new SynchronizedCollection<Session>();
     
            public ServiceSession()
            {
            }
     
            [OperationContract]
            public List<Session> GetListSessions()
            {
                List<Session> result = null;
                try
                {
                    result = this.Sessions.ToList();
                }
                catch (Exception e)
                {
                    if (log.IsErrorEnabled)
                    {
                        log.Error("Création d'une session de cours impossible", e);
                    }
                    result = null;
                }
                return result;
            }
     
            [OperationContract]
            public bool CreateCoursesSession(Teacher auteur, string name)
            {
                bool result = false;
                try
                {
                    Session session = new Session(auteur, name);
                    this.Sessions.Add(session);
                    result = true;
                }
                catch (Exception e)
                {
                    if (log.IsErrorEnabled)
                    {
                        log.Error("Création d'une session de cours impossible", e);
                    }
                    result = false;
                }
                return result;
            }

    Merci par avance pour votre réponse.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Points : 346
    Points
    346
    Par défaut
    Salut Reminouche,

    Si je comprends bien, tu veux garder des objets durant ta session (par exemple: tant que Internet Explorer reste ouvert! Si tu le ferme, tu perds tout tes objets mis dans "Sessino"). Est-ce juste?

    Si tu stockes des objets au niveau de la session, ce qui semble être ton cas, j'avais activé au sein d'un Service Web l'élément "EnableSession" comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [WebMethod(EnableSession=true)]
    public void fonction()
    {
    ...
    }
    J'espère que cela puiasse t'aider dans ton cas

    Cédric

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Points : 46
    Points
    46
    Par défaut
    Non rien a voir avec la session HTTP.

    En gros je veux que mes objets soient gardés en mémoire tout le temps et que ce soit moi qui gère la libération de la mémoire.

    Merci de ta réponse même si c'est pas réellement ce dont je parlais.

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

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 314
    Points
    13 314
    Par défaut
    Peut être vérifier les paramètres de recyclage des process de IIS. IIS peut être paramétré pour recycler ses processus au bout d'"un certain temps" ou d'un certain nombre de requêtes.

    Commencer par vérifier ce point.

    Je ne réponds pas aux questions techniques par MP ! Le forum est là pour ça...


    Une réponse vous a aidé ? utiliser le bouton

    "L’ennui dans ce monde, c’est que les idiots sont sûrs d’eux et les gens sensés pleins de doutes". B. Russel

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 59
    Points : 46
    Points
    46
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Peut être vérifier les paramètres de recyclage des process de IIS. IIS peut être paramétré pour recycler ses processus au bout d'"un certain temps" ou d'un certain nombre de requêtes.

    Commencer par vérifier ce point.
    Merci je n'y avait pas vraiment penser je vais regarder de ce côté.

  6. #6
    Membre confirmé 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
    Points : 577
    Points
    577
    Par défaut
    Je pense que si tu mets cette variable static cela résoudra ton problème.

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/03/2008, 13h00
  2. Réponses: 6
    Dernier message: 01/09/2006, 18h04
  3. Réponses: 29
    Dernier message: 01/07/2006, 09h23
  4. Garder des valeurs en mémoire
    Par natie_49 dans le forum Langage
    Réponses: 23
    Dernier message: 27/05/2006, 12h06
  5. Implémentation des objets en mémoire
    Par SteelBox dans le forum C++
    Réponses: 6
    Dernier message: 15/01/2005, 21h38

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