Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / devart dotConnect for oracle использование сесии к ораклу / 13 сообщений из 13, страница 1 из 1
01.04.2011, 15:45:19
    #37194568
Cheese)))
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
devart dotConnect for oracle использование сесии к ораклу
Как правильно:
1) Хранить сессию к ораклу в пользовательской сессии
2) Каждый раз в коде подключаться к ораклу, а драйвер (devart dotConnect for oracle) сам будет обрабатывать подключения и отдавать его через пул
?
...
Рейтинг: 0 / 0
04.04.2011, 10:22:20
    #37197345
Cheese)))
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
devart dotConnect for oracle использование сесии к ораклу
up!
...
Рейтинг: 0 / 0
04.04.2011, 11:04:11
    #37197458
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
devart dotConnect for oracle использование сесии к ораклу
2
...
Рейтинг: 0 / 0
05.04.2011, 11:52:19
    #37199784
devart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
devart dotConnect for oracle использование сесии к ораклу
Cheese))) Как правильно?С dotConnect for Oracle Вы можете использовать любой из этих двух подходов, но при этом нужно учитывать особенности вашего окружения (время открытия коннекшина, стабильность подключения).

Cheese))) 1) Хранить сессию к ораклу в пользовательской сессииВы можете открыть коннекшин и держать его открытым в течении всей пользовательской сессии. При этом желательно реализовать логику ре-коннекта (а), если коннекшин оказался невалидным, либо валидировать коннекшин (б) перед очередным его использованием:
а) при работе через OCI (Oracle Client) можно использовать фичу Transparent Application Failover Support .
б) в директ режиме нужно обрабатывать эту ситуацию вручную - делать OracleConnection. Ping() (round-trip на сервер), и если соединение оказалось невалидным, открывать новое.

Cheese))) 2) Каждый раз в коде подключаться к ораклу, а драйвер (devart dotConnect for oracle) сам будет обрабатывать подключения и отдавать его через пулПредпочтительный способ коннекта для директ режима.
Принцип работы пулинга описан здесь . По умолчанию, Pooling=true. Если connection pooling включен и вызывается connection.Close(), коннекшин помещается в connection pool. Каждый коннекшин в пуле валидируется connection pooling manager-ом в параллельном потоке через 60 сек после открытия и потом каждые 30 сек. По умолчанию, connection не валидируется, когда он извлекается из пула. Т.е. возможна ситуация, когда приложение получит невалидный коннекшин из пула по connection.Open(). В этом случае Вы можете выставить дополнительную валидацию с коннекшин стринг параметром "Validate Connection=true" - и коннекшин будет валидироваться в момент извлечения из пула. Но.. используйте Validate Connection только в случае абсолютной необходимости, потому что его использование влечет дополнительный round-trip к серверу каждый раз при получении коннекшина из пула и, как следствие, потерю производительности.

В любом случае, мы рекомендуем Вам протестировать разные из перечисленных выше подходов, чтобы подобрать оптимальный для Вас.
...
Рейтинг: 0 / 0
02.08.2011, 21:24:41
    #37377695
Cheese)))
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
devart dotConnect for oracle использование сесии к ораклу
Про метод 2, пожалуйста, объясните:
Раз каждый раз создается подключение, то не существует сессии закрепленной за конкретным пользователем, а это значит я не могу сделать 3 апдейта с трех последовательных страниц, а потом commit; получается что при таком подходе я должен все изменения передавать одной процедурой в конце которой будет коммит или я не прав?
...
Рейтинг: 0 / 0
02.08.2011, 22:16:06
    #37377733
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
devart dotConnect for oracle использование сесии к ораклу
Cheese))),

Три апдейиа с трёх страниц в одной транзакции - не получится. Хотя бы по той простой причине, что, когда сформировалась страница, коннекта уже нету. То есть, каждая страница - со своим коннектом. Пул соединений здесь совершенно ни при чём.
...
Рейтинг: 0 / 0
02.08.2011, 22:23:29
    #37377746
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
devart dotConnect for oracle использование сесии к ораклу
За это время могли бы и проверить. :)
Стартаните на первой странице транзакцию, проинсертите что-то в таблицу, на второй странице ещё запись проинсертите, а на третьей вызовите роллбек. Потом посмотрите, что записано в таблице. Если пусто - то Вы таки умудрились как-то сохранить транзакцию между страницами, а если нет, то и увы... .
ПС. Я сам не проверял. Чисто теоретически... .
...
Рейтинг: 0 / 0
02.08.2011, 23:52:36
    #37377845
Starlex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
devart dotConnect for oracle использование сесии к ораклу
Cheese)))это значит я не могу сделать 3 апдейта с трех последовательных страниц, а потом commit; получается что при таком подходе я должен все изменения передавать одной процедурой в конце которой будет коммит или я не прав?

Транзакция - это одна логическая единица работы. С точки зрения интерфейса она должна выполняться одним движением, так что ни каких трёх страниц не может быть в рамках 1 транзакции.
...
Рейтинг: 0 / 0
21.02.2012, 07:31:36
    #37671596
Cheese)))
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
devart dotConnect for oracle использование сесии к ораклу
devart,

Уважаемый, подскажите, пожалуйста, если я пишу таким образом:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
                using (OracleConnection c = new OracleConnection(connString))
                {

                    c.Open();

                    string commandQuery = @"select lpu.x.y(:pLid, :pRid) from dual";
                    using (OracleCommand cmd = new OracleCommand(commandQuery, c))
                    {
                        cmd.Parameters.Add("pLid", key.lid);
                        cmd.Parameters.Add("pRid", rid);
                        return Convert.ToDecimal(cmd.ExecuteScalar());
                    }
                }



При выходе из блока using автоматически будет вызван c.Close(); c.Dispose(); ? или необходимо в конце прописать c.Close(); для помещения в пул?
...
Рейтинг: 0 / 0
21.02.2012, 10:35:20
    #37671807
brainproof
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
devart dotConnect for oracle использование сесии к ораклу
При выходе из блока вызовется Dispose, а если товарищи делали с умом, в чем я не сомневаюсь, по патерну то и Close внутри него
...
Рейтинг: 0 / 0
21.02.2012, 10:37:11
    #37671814
brainproof
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
devart dotConnect for oracle использование сесии к ораклу
хотя может я погорячился с патерном а просто интерфейс IDisposable.не ругайте)
...
Рейтинг: 0 / 0
21.02.2012, 11:17:12
    #37671879
Cheese)))
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
devart dotConnect for oracle использование сесии к ораклу
brainproof,

интересует прежде всего вызывается ли Close
...
Рейтинг: 0 / 0
22.02.2012, 13:41:11
    #37674321
brainproof
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
devart dotConnect for oracle использование сесии к ораклу
вскройте рефлектором чтоб глянуть исходники или посмотрите состояние в дебаге. делов то
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / devart dotConnect for oracle использование сесии к ораклу / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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