2015-11-01 3 views
0

Я использую ниже код для реализации экземпляра singleton и хранения некоторых данных в нем в виде списка и доступа к файлам классов в проекте. Вопрос в том, что произойдет, если этот проект будет размещен на двух серверах, будет ли создан два экземпляра. Потому что я думаю, что он создаст два экземпляра, если он с двух серверов. Это то, что мне нужно.Singleton with multiserver

Код ниже Два вопроса:

  1. Сколько экземпляра, если же сервер и несколько веб-сайт?

  2. Сколько экземпляров, если два разных сервера?

    public class XXX 
    { 
        private static XXX _instance; 
        // Lock synchronization object 
        private static readonly object SyncLock = new object(); 
    
        private XXX() 
        { 
        } 
    
        public static XXX Instance 
        { 
         get 
         { 
          if (_instance == null) 
          { 
           lock (SyncLock) 
           { 
            if (_instance == null) 
            { 
             _instance = new XXX(); 
            } 
           } 
          } 
          return _instance; 
         } 
        } 
    
        public List<XXX> XXXDetails { get { return _XXX ; } set { _XXX = value; } } 
        private List<XXX> _XXX = new List<XXX>(); 
    } 
    
+0

1 экземпляр на приложение на сервер. 2 веб-приложения = 2 экземпляра. – dbugger

+0

Спасибо за ваш ответ. поэтому, если два веб-сервера будут созданы два экземпляра. –

ответ

0

В .NET приложение или служба работает в песочнице называется домене приложения представленного AppDomain класса.

То есть, статический ресурс будет доступен только для тех же AppDomain и не будет использоваться для разных процессов.

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

+0

Два сервера приемлемы, он будет иметь два экземпляра. –

+0

Два сервера приемлемы, у него будет два экземпляра. Для одного сервера вы имеете в виду, что у двух приложений будет 2 домена приложения, поэтому он не будет делиться друг с другом. Но в случае, если два приложения на одном сервере настроены для одного домена приложения, он будет иметь два экземпляра? –

Смежные вопросы