На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Один коннект к базе для всех классов приложения
    Есть приложение с несколькими формами и классами. При запуске главной формы производиться коннект к базе данных, так вот как сделать чтобы этот коннект был доступен для всех форм и классов. Проблемма в том что очень долгий коннект к базе и открывать для каждого окна по новой занимает много времени, что недопустимо.
      Pit-Bul, если хочется, сделай соединение синглтоном или используй статические переменные. Но один конект это не правильно. По многоим причинам, ИМХО.
        Цитата juice @
        Но один конект это не правильно.

        угу! принцип ADO.NET. Открывай соединение настолько поздно насколько это возможно и закрывай настолько рано, насколько позволяет задача.

        Но с другой стороны если идет непрерывный обмен данными, то можно и открытым коннект подкржать
          Цитата Pit-Bul @
          базе и открывать для каждого окна по новой занимает много времени
          - ты что, пул конектов отключал?
            может сделать его static ?
              спасибо всем, статик помог, а вот на счет синглтонов ничего не нашол, можа в кратце кто об этом пару слов черкнет.

              Цитата PIL @
              базе и открывать для каждого окна по новой занимает много времени
              - ты что, пул конектов отключал?


              база данных находиться на машине со 100мб-ой сетевухой, а коннектов к этой машине очень много (Уговариваю приобрести гигабитную сетевуху и свич с гигабитным портом), плюс еще как мне кажется траблы не столько с базой сколько с лицензиями (как я не хвалил Cache в большой скорости работы даже на гиблых машинах, но динамические лицензии сильно портят картину, со статическими лицензиями все прекрасно работает). Есть еще одна причина по которой нужен постоянный коннект, лицензий намного меньше чем пользователей, и по этой причине человек начавший работу с базой должен завершить свою работу без препятсвий и ожиданий когда освободиться коннект (хоть самому и не нравиться, но это одно из условий ТЗ).
                Реализация шаблона синглтон под С#. Суть в том что всегда существует только одна сущность(копия) этого класса. Бывает очень удобно использовать когда необходима одна точка входа для всего приложения. Реализаций всяких несколько, мне нравится эта:
                ExpandedWrap disabled
                  using System;
                   
                  public sealed class Singleton
                  {
                     private static Singleton instance;
                   
                     private Singleton() {}
                   
                     public static Singleton Instance
                     {
                        get
                        {
                           if (instance == null)
                           {
                              instance = new Singleton();
                           }
                           return instance;
                        }
                     }
                  }
                  Цитата Coffee @
                  Реализация шаблона синглтон под С#. Суть в том что всегда существует только одна сущность(копия) этого класса. Бывает очень удобно использовать когда необходима одна точка входа для всего приложения. Реализаций всяких несколько, мне нравится эта:

                  Она не потоко-безопасная. Есть вариант короче и симпатичней, а главное безопасный с точки зрения межпоточного взаимодействия.

                  ExpandedWrap disabled
                        public class Singleton
                        {
                            private static readonly Singleton _instance = new Singleton();
                     
                            private Singleton() { }
                     
                            public static Singleton Create()
                            {
                                return _instance;
                            }
                        }


                  CLR обеспечивает потокобезопасность конструкторов. Что и используется в вышепреведенном подходе в реализации патерна.
                  Сообщение отредактировано: juice -
                    МОжет, проще сделать класс для работы с БД а потом просто к нему обращаться из всех остальных?
                      Синглтон это же и есть класс
                        juice, Coffee спасибо за разъяснения, оказывается я этот метод раньше встречал и наверное до конца не понял его использования.

                        Slukad если сделать отдельный класс, то при обращении к БД из разных окон и классов приложения надо соэдавать новый экземпляр класса, что по сути и есть создание нового коннекта к базе.
                        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                        0 пользователей:


                        Рейтинг@Mail.ru
                        [ Script execution time: 0,0337 ]   [ 16 queries used ]   [ Generated: 7.05.24, 06:27 GMT ]