Гость
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / коннекшн на каждой форме / 18 сообщений из 18, страница 1 из 1
27.08.2003, 06:05
    #32248313
UU
UU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
коннекшн на каждой форме
Есть web-приложение на с#
на каждой форме приходится делать коннекшн можно этого как-нибудь избежать.
...
Рейтинг: 0 / 0
27.08.2003, 06:20
    #32248316
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
коннекшн на каждой форме
чем это плохо? если делать один коннекшион на все формы, то быстро закончаться ресурсы сервера
...
Рейтинг: 0 / 0
27.08.2003, 13:56
    #32248900
UU
UU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
коннекшн на каждой форме
поподробнее, мне кажется когда к SQL-серверу один коннекшн вместо трех, то это лучше для сервера.
...
Рейтинг: 0 / 0
27.08.2003, 14:43
    #32248965
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
коннекшн на каждой форме
да но к sql серверу то будут обращаться через web сервер, и если для 100 посетителей будут обращаться к одному коннекшену, то будет большая проблема совместного доступа
...
Рейтинг: 0 / 0
27.08.2003, 18:12
    #32249260
Orion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
коннекшн на каждой форме
Не вздумай так замутить, я раз попробовал.
Пока один работаешь - нормально, но как несколько юзеров лезут за данными - караул (в смысле ошибка - поделить соединение не могут).

Создавай по месту и не забивай голову
...
Рейтинг: 0 / 0
28.08.2003, 08:05
    #32249504
UU
UU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
коннекшн на каждой форме
спасибо, ладно оставлю все как есть.
...
Рейтинг: 0 / 0
28.08.2003, 08:58
    #32249547
_maloi_alex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
коннекшн на каждой форме
А если создавать одно соединение для каждого сеанса, нормально будет работать ?
...
Рейтинг: 0 / 0
28.08.2003, 09:08
    #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
28.08.2003, 09:29
    #32249576
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
коннекшн на каждой форме
вот тут тто у тебя память web сервера и будет тратиться впустую.
если будет 100 посетителей, то будет в памяти сервера постоянно держаться 100 подключений. ресурсы сервера быстро кончаться.
если будешь создавать соединение только тогда когда надо, то соединений будет меньше, память сервера будет расходоваться меньше.
100 посетителей - это цифра просто так :) может быть и 10000.
потом, а что если у тебя после создания разорвется соединение? что ты с этой ошибкой делать будешь ?
...
Рейтинг: 0 / 0
28.08.2003, 09:41
    #32249590
Orion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
коннекшн на каждой форме
Правильно monstrU советует, во всех умных книжках так написано.
Если на то нет особой необходимости, не держите соединение открытым больше, чем это требуется, тем более что в web между двумя обращениями может пройти довольно много времени, а если пользователь вообще покинет сайт, сессия может быть ещё долго открытой, пока её принудительно не закроет сервер.
...
Рейтинг: 0 / 0
28.08.2003, 09:57
    #32249624
_maloi_alex
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
коннекшн на каждой форме
Спасибо, что грамотно разжували. Блин, теперь всю прогу придеться переделывать........:((
...
Рейтинг: 0 / 0
28.08.2003, 10:41
    #32249696
UU
UU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
коннекшн на каждой форме
ну вот смотрите

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

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

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

у меня почему-то три соединения остается висеть после того как я перестаю бегать по страничкам
...
Рейтинг: 0 / 0
28.08.2003, 13:54
    #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
28.08.2003, 14:08
    #32250085
UU
UU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
коннекшн на каждой форме
ДатаАдапрет сам открывает соединение и сам закрывает. Разрабочику задумываться об этом не надо!

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



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


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