Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.143.223.33] |
|
Сообщ.
#1
,
|
|
|
Есть приложение с несколькими формами и классами. При запуске главной формы производиться коннект к базе данных, так вот как сделать чтобы этот коннект был доступен для всех форм и классов. Проблемма в том что очень долгий коннект к базе и открывать для каждого окна по новой занимает много времени, что недопустимо.
|
Сообщ.
#2
,
|
|
|
Pit-Bul, если хочется, сделай соединение синглтоном или используй статические переменные. Но один конект это не правильно. По многоим причинам, ИМХО.
|
Сообщ.
#3
,
|
|
|
Цитата juice @ Но один конект это не правильно. угу! принцип ADO.NET. Открывай соединение настолько поздно насколько это возможно и закрывай настолько рано, насколько позволяет задача. Но с другой стороны если идет непрерывный обмен данными, то можно и открытым коннект подкржать |
Сообщ.
#4
,
|
|
|
Цитата Pit-Bul @ - ты что, пул конектов отключал? базе и открывать для каждого окна по новой занимает много времени |
Сообщ.
#5
,
|
|
|
может сделать его static ?
|
Сообщ.
#6
,
|
|
|
спасибо всем, статик помог, а вот на счет синглтонов ничего не нашол, можа в кратце кто об этом пару слов черкнет.
Цитата PIL @ базе и открывать для каждого окна по новой занимает много времени - ты что, пул конектов отключал? база данных находиться на машине со 100мб-ой сетевухой, а коннектов к этой машине очень много (Уговариваю приобрести гигабитную сетевуху и свич с гигабитным портом), плюс еще как мне кажется траблы не столько с базой сколько с лицензиями (как я не хвалил Cache в большой скорости работы даже на гиблых машинах, но динамические лицензии сильно портят картину, со статическими лицензиями все прекрасно работает). Есть еще одна причина по которой нужен постоянный коннект, лицензий намного меньше чем пользователей, и по этой причине человек начавший работу с базой должен завершить свою работу без препятсвий и ожиданий когда освободиться коннект (хоть самому и не нравиться, но это одно из условий ТЗ). |
Сообщ.
#7
,
|
|
|
Реализация шаблона синглтон под С#. Суть в том что всегда существует только одна сущность(копия) этого класса. Бывает очень удобно использовать когда необходима одна точка входа для всего приложения. Реализаций всяких несколько, мне нравится эта:
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; } } } |
Сообщ.
#8
,
|
|
|
Цитата Coffee @ Реализация шаблона синглтон под С#. Суть в том что всегда существует только одна сущность(копия) этого класса. Бывает очень удобно использовать когда необходима одна точка входа для всего приложения. Реализаций всяких несколько, мне нравится эта: Она не потоко-безопасная. Есть вариант короче и симпатичней, а главное безопасный с точки зрения межпоточного взаимодействия. public class Singleton { private static readonly Singleton _instance = new Singleton(); private Singleton() { } public static Singleton Create() { return _instance; } } CLR обеспечивает потокобезопасность конструкторов. Что и используется в вышепреведенном подходе в реализации патерна. |
Сообщ.
#9
,
|
|
|
МОжет, проще сделать класс для работы с БД а потом просто к нему обращаться из всех остальных?
|
Сообщ.
#10
,
|
|
|
Синглтон это же и есть класс
|
Сообщ.
#11
,
|
|
|
juice, Coffee спасибо за разъяснения, оказывается я этот метод раньше встречал и наверное до конца не понял его использования.
Slukad если сделать отдельный класс, то при обращении к БД из разных окон и классов приложения надо соэдавать новый экземпляр класса, что по сути и есть создание нового коннекта к базе. |