powered by simpleCommunicator - 2.0.35     © 2025 Programmizd 02
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / коннекшн на каждой форме
18 сообщений из 18, страница 1 из 1
коннекшн на каждой форме
    #32248313
UU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть web-приложение на с#
на каждой форме приходится делать коннекшн можно этого как-нибудь избежать.
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32248316
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чем это плохо? если делать один коннекшион на все формы, то быстро закончаться ресурсы сервера
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32248900
UU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поподробнее, мне кажется когда к SQL-серверу один коннекшн вместо трех, то это лучше для сервера.
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32248965
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да но к sql серверу то будут обращаться через web сервер, и если для 100 посетителей будут обращаться к одному коннекшену, то будет большая проблема совместного доступа
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32249260
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не вздумай так замутить, я раз попробовал.
Пока один работаешь - нормально, но как несколько юзеров лезут за данными - караул (в смысле ошибка - поделить соединение не могут).

Создавай по месту и не забивай голову
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32249504
UU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, ладно оставлю все как есть.
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32249547
_maloi_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если создавать одно соединение для каждого сеанса, нормально будет работать ?
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32249561
_maloi_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я сделал следующим образом:

protected void Session_Start(Object sender, EventArgs e)
{
oConn = new OleDbConnection(strConnString);
oConn.Open();
Session.Add("oConn", oConn);
}

А потом просто обращаюсь к соединению:

OleDbCommand cmd = new OleDbCommand();
cmd.Connection = (OleDbConnection) Session["oConn"];

Здесь для каждого сеанса создается отдельное соединение, по этому я думаю каких-то конфликтов между пользователями не должно возникать.

Если я не прав, поправте пожалуйста. Буду благодарен.
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32249576
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот тут тто у тебя память web сервера и будет тратиться впустую.
если будет 100 посетителей, то будет в памяти сервера постоянно держаться 100 подключений. ресурсы сервера быстро кончаться.
если будешь создавать соединение только тогда когда надо, то соединений будет меньше, память сервера будет расходоваться меньше.
100 посетителей - это цифра просто так :) может быть и 10000.
потом, а что если у тебя после создания разорвется соединение? что ты с этой ошибкой делать будешь ?
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32249590
Orion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Правильно monstrU советует, во всех умных книжках так написано.
Если на то нет особой необходимости, не держите соединение открытым больше, чем это требуется, тем более что в web между двумя обращениями может пройти довольно много времени, а если пользователь вообще покинет сайт, сессия может быть ещё долго открытой, пока её принудительно не закроет сервер.
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32249624
_maloi_alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, что грамотно разжували. Блин, теперь всю прогу придеться переделывать........:((
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32249696
UU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну вот смотрите

на page_load у меня открывается коннекшн, заполняются датаадаптеры
после этого надо закрыть коннекшн или как-то надо отлавливать что со страницы ушли (но как это можно отлавить если перешли по гиперссылке)
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32249826
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 UU

Ничего не надо - коннекшн сам пропадет при перегрузке страницы.

Еще полезно делать - если MS SQL и много юзеров - пул коннектов. Тогда определенное количество коннектов все время остаются открыты и при создании нового соединения если в пуле есть свободные коннекты, то туда сразу соединение из страницы и идет вместо того, чтобы создавать новое соединение. Получается хорошая экономия ресурсов и времени
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32249840
monstrU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все таки надежнее закрывать после того как он перестал быть нужным
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32249862
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он сам закрывается - после отработки codebehind все переменные аннулируются :) И можео о них не заботиться - .net теперь это делает сама.
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32249893
UU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to tygra

у меня почему-то три соединения остается висеть после того как я перестаю бегать по страничкам
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32250061
Айвенго
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДатаСет заполняется через датаадаптер..испольуется метод Fill
Код: plaintext
1.
2.
3.
4.
5.
DataSet ds = new DateSet();
SqlConnection SqlCon = new SqlConnection (conString);
SqlDataAdapter da = new DataAdapter ( "usp_Select" , SqlConn);
da.Fill(ds);



ДатаАдапрет сам открывает соединение и сам закрывает . Разрабочику задумываться об этом не надо!

А вот при работе с Datareader'ом, разработчику нужно управлять соединением самостоятельно..

[src]
SqlConnection SqlCon = new SqlConnection (conString);
SqlCommand cmd = new SqlCommand("usp_Select", SqlConn)
SqlConn.Open();

SqlDataReader dr = cmd.ExequteReader();
while(dr.Read())
{
//do something
}
SqlConn.Close();
[src]

Коннекцию надо закрывать сразу же после исполнения команды.
...
Рейтинг: 0 / 0
коннекшн на каждой форме
    #32250085
UU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДатаАдапрет сам открывает соединение и сам закрывает. Разрабочику задумываться об этом не надо!

А вот при работе с Datareader'ом, разработчику нужно управлять соединением самостоятельно..



понял, спасибо
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / коннекшн на каждой форме
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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