powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Совет новичку. На каждый чих открывать конекшн заново?
25 сообщений из 28, страница 1 из 2
Совет новичку. На каждый чих открывать конекшн заново?
    #39424910
Всем привет!
Нужен совет новичку в ООП.
Я все время кодил на Дельфи (модульно-процедурным методом), вот теперь переехал на C# WinForms, и как-то он у меня легко пошёл, никаких книг по нему не читал, только гугл и VS2015 на виртуалке и вперёд.
Интересует техника работы с БД. В Дельфях как просто было - открыл Connection, поработал длительное время (хоть сутки), закрыл Connection.
Примеры же по C# пестрят конструкциями, где на каждый чих открывается Connection, производится действие с данными, и тут же закрывается Connection. Вот эта фича мне непонятна, а что разве нельзя Connection всё время держать открытым, и закрывать только при выходе из программы?
Если сами не сможете объяснить, то хотя бы киньте ссыль на книгу-статью, где обосновывается такая методика.
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39424921
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Новичок ООП..а что разве нельзя Connection всё время держать открытым, и закрывать только при выходе из программы?
Можно, если клиентов 5-10, то без разницы

https://msdn.microsoft.com/ru-ru/library/8xx3tyca(v=vs.110).aspx
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39424943
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2, ну и работа в один поток...
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39424957
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок ООП..Вот эта фича мне непонятна, а что разве нельзя Connection всё время держать открытым, и закрывать только при выходе из программы?

Не нужно этого делать. А в чем проблема? Накладных расходов нет.
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39424962
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttНакладных расходов нет.
Ну это не совсем так, но к остальному присоединяюсь...
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39424967
Fantomny
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Накладных расходов нет. ,
в свое время обжегся на этом...
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39425029
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичок ООП..Если сами не сможете объяснить, то хотя бы киньте ссыль на книгу-статью, где обосновывается такая методика.
смотри Connection Pooling

https://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39425051
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Вообще-то иногда полезно не сразу закрывать соединение.
Например.
1. Когда какой-нибудь датчик шлет 100 инсертов в секунду, то лучше вообще не закрывать
2. Когда в начале работы программы закачивается много таблиц, то лучше открыть, закачать все и закрыть.
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39425058
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserhVosttНакладных расходов нет.
Ну это не совсем так, но к остальному присоединяюсь...

Тут дело такое. Если это становится проблемой, значит что-то делается не так. Т.е. многократной открытие/закрытие соединение за короткий промежуток времени выявляет проблему не в работе с соединением, а в логике работы с данными. Слишком мелкие и частые запросы в БД это косяк. Поэтому в целом можно считать, что накладных расходов нет, там есть пул. Зато профит от кратковременной жизни соединения очевиден с точки зрения надёжности.
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39425062
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Вообще-то иногда полезно не сразу закрывать соединение.
Например.
1. Когда какой-нибудь датчик шлет 100 инсертов в секунду, то лучше вообще не закрывать
2. Когда в начале работы программы закачивается много таблиц, то лучше открыть, закачать все и закрыть.

Не надо делать 100 инсертов в секунду, надо организовать буффер и инсертить пачками. Не в открытом/закрытом соединении проблема.
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39425280
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
hVosttCat2Вообще-то иногда полезно не сразу закрывать соединение.
Например.
1. Когда какой-нибудь датчик шлет 100 инсертов в секунду, то лучше вообще не закрывать
2. Когда в начале работы программы закачивается много таблиц, то лучше открыть, закачать все и закрыть.

Не надо делать 100 инсертов в секунду, надо организовать буффер и инсертить пачками. Не в открытом/закрытом соединении проблема.
Вот еще. Буду я фигней заниматься и оптимизировать наноскунды . Сервер справляется и ладно
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39425339
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Вот еще. Буду я фигней заниматься и оптимизировать наноскунды . Сервер справляется и ладно

Смотря какие требования по нагрузке, надёжности, доступности и отказоустойчивости. Если там конь не валялся, никаких требований, лишь бы хоть как-то шевелилось, то ок.
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39425653
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2Вообще-то иногда полезно не сразу закрывать соединение.
Например.
1. Когда какой-нибудь датчик шлет 100 инсертов в секунду, то лучше вообще не закрывать
Ниже ответили. Да для множественных инсертов есть свои средства.
Cat22. Когда в начале работы программы закачивается много таблиц, то лучше открыть, закачать все и закрыть.
А вот за "закачивание много таблиц в начале работы" - молотком по пальцам!
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39425816
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВА вот за "закачивание много таблиц в начале работы" - молотком по пальцам!
вне контекста конкретной задачи - эмоциональная оценка неуместна
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39425921
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
самое главное, не объяснили автору, почему нужно закрывать.
для закрывания подключений есть несколько причин:
а) Пул соединений не бесконечный, если их не закрывать, а количество подключений к базе большое, то желательно высвобождать место в пуле, чтоб другие могли подключиться.
б) Если забывать закрывать соединение и потом каждый раз будет отрываться новое, пул соединений на сервере переполнится и 'nj приведет к блокинку (скорее всего) и все подключенные к базе клиенты тоже будут иметь проблемы. По этому лучше, когда подключение закрывается примерно там же, где и открывалось. В пределах 1 экрана хотя бы (в коде).
Обычно соединение помещают в блок using {}. Когда объект Connection будет Disposed, соединение само закроется
в) обычно 1 соединения должны быть открыто в рамках 1 транзакции, так будет проще и удобнее понять, что происходит в рамках этого подключения в будущем.
г) если забыть закрыть соединение, то оно может быть закрыто уборщиком, но тут может крыться опасная проблема, закрытие подключения может быть достаточно длительной операцией и если она превысит таймаут сборщика, сборка мусора "упадет", + будут фризы.
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39426198
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилЕвгенийВА вот за "закачивание много таблиц в начале работы" - молотком по пальцам!
вне контекста конкретной задачи - эмоциональная оценка неуместнаНе только не неуместна, но и необходима!
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39426222
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
ЕвгенийВА вот за "закачивание много таблиц в начале работы" - молотком по пальцам!
Вы вероятно путаете "много таблиц" с "много длинных таблиц".
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39426257
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesсамое главное, не объяснили автору, почему нужно закрывать.
для закрывания подключений есть несколько причин:
а) Пул соединений не бесконечный, если их не закрывать, а количество подключений к базе большое, то желательно высвобождать место в пуле, чтоб другие могли подключиться.
Кто это другие?

ИМХО великое множество WinForms приложений запускается в одном экземпляре в единицу времени на машине пользователя.
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39426259
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesб) Если забывать закрывать соединение и потом каждый раз будет отрываться новое, пул соединений на сервере переполнится и 'nj приведет к блокинку (скорее всего) и все подключенные к базе клиенты тоже будут иметь проблемы. По этому лучше, когда подключение закрывается примерно там же, где и открывалось. В пределах 1 экрана хотя бы (в коде).
Уточните пожалуйста что Вы имели в виду, когда написали "пул соединений на сервере".
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39426260
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesв) обычно 1 соединения должны быть открыто в рамках 1 транзакции, так будет проще и удобнее понять, что происходит в рамках этого подключения в будущем.
Кому и где будет проще и удобнее?
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39426262
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesг) если забыть закрыть соединение, то оно может быть закрыто уборщиком, но тут может крыться опасная проблема, закрытие подключения может быть достаточно длительной операцией и если она превысит таймаут сборщика, сборка мусора "упадет", + будут фризы.
Ни разу такого не встречал.
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39426430
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cat2ЕвгенийВА вот за "закачивание много таблиц в начале работы" - молотком по пальцам!
Вы вероятно путаете "много таблиц" с "много длинных таблиц".
какая нафик разница?
Сейчас ковыряюсь с говнопроектом, когда то там "для улучшения производительности кешировли" метаданные. При их небольшом количестве и когда БД в локальной сети - занимало несколько сек.
Сейчас стало много и БД в тырнете, пинг до сервера >=20 мс и вся гребаная инициализация полчаса занимает.
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39426474
Арктур Менгск
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВCat2пропущено...

Вы вероятно путаете "много таблиц" с "много длинных таблиц".
какая нафик разница?
Сейчас ковыряюсь с говнопроектом, когда то там "для улучшения производительности кешировли" метаданные. При их небольшом количестве и когда БД в локальной сети - занимало несколько сек.
Сейчас стало много и БД в тырнете, пинг до сервера >=20 мс и вся гребаная инициализация полчаса занимает.Вы - о чём вообще? Что это за поток сознания?
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39426583
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Арктур МенгскВы - о чём вообще? Что это за поток сознания?
Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий.(с)
...
Рейтинг: 0 / 0
Совет новичку. На каждый чих открывать конекшн заново?
    #39426649
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВАрктур МенгскВы - о чём вообще? Что это за поток сознания?
Многие вещи нам непонятны не потому, что наши понятия слабы; но потому, что сии вещи не входят в круг наших понятий.(с)До ленивой загрузки писатели не догадались?
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Совет новичку. На каждый чих открывать конекшн заново?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]