Question

Si j'ai un wrapper singleton autour d'une collection en asp.net doit-il être mis en cache ou les données de ne ce soit persisté dans le dos poste?

De plus, si un autre utilisateur se connecte à l'application serait l'application créer une autre instance (lui-même) et par conséquent une autre instance du singleton ou serait-il accéder à la même singleton qui a été créé en premier lieu?

La mise en œuvre effective du singleton est l'un des éléments suivants: (Design 1:)

using System;

public sealed class Singleton
{
   private static volatile Singleton instance;
   private static object syncRoot = new Object();

   private Singleton() {}

   public static Singleton Instance
   {
      get 
      {
         if (instance == null) 
         {
            lock (syncRoot) 
            {
               if (instance == null) 
                  instance = new Singleton();
            }
         }

         return instance;
      }
   }
}

ou Design 2:

public sealed class Singleton
{
   private static readonly Singleton instance = new Singleton();

   private Singleton(){}

   public static Singleton Instance
   {
      get 
      {
         return instance; 
      }
   }
}
Était-ce utile?

La solution

Singleton est le modèle qui fait que il n'y a qu'une seule instance pour toute demande. Puisque vous l'avez déclaré statique, il existe pour la vie de l'application. Et la même instance sera retourné à tout utilisateur demandant l'objet à travers votre propriété.

Autres conseils

Une variable statique existera tant que l'application est en cours d'exécution, jusqu'à ce qu'un redémarrage de l'application. Il existerait dans postbacks et les utilisateurs.

Cet article montre comment implémenter un singleton: http: // msdn. microsoft.com/en-us/library/ff650316.aspx

Y a-t-il des exigences plus sur ce que vous essayez de faire cela aurait une incidence sur la mise en œuvre du singleton?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top