Синглтон в ASP.NET - PullRequest
       20

Синглтон в ASP.NET

1 голос
/ 07 января 2011

Если у меня есть одноэлементная оболочка для коллекции в asp.net, нужно ли ее кэшировать или данные будут сохранены в почтовых архивах?

Также, если другой пользователь войдет в приложение, создаст ли приложение другой экземпляр (сам по себе) и, следовательно, другой экземпляр синглтона, или оно получит доступ к тому же синглтону, который был создан в первом экземпляре?

Фактическая реализация синглтона является одной из следующих: (Дизайн 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;
      }
   }
}

или Дизайн 2:

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

   private Singleton(){}

   public static Singleton Instance
   {
      get 
      {
         return instance; 
      }
   }
}

Ответы [ 2 ]

4 голосов
/ 07 января 2011

Статическая переменная будет существовать до тех пор, пока приложение работает, до его перезапуска.Это будет существовать через постбэков и пользователей.

В этой статье показано, как реализовать статический синглтон: http://msdn.microsoft.com/en-us/library/ff650316.aspx

Существуют ли еще какие-либо требования к тому, что вы пытаетесь сделать, которые могут повлиять на реализацию синглтона?

2 голосов
/ 07 января 2011

Singleton - это шаблон, который гарантирует, что существует только один экземпляр для всех запросов.Поскольку вы объявили его статическим, он существует на протяжении всего времени существования приложения.И тот же экземпляр будет возвращен любому пользователю, запрашивающему объект через ваше свойство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...