powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / devart dotConnect for oracle использование сесии к ораклу
13 сообщений из 13, страница 1 из 1
devart dotConnect for oracle использование сесии к ораклу
    #37194568
Cheese)))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как правильно:
1) Хранить сессию к ораклу в пользовательской сессии
2) Каждый раз в коде подключаться к ораклу, а драйвер (devart dotConnect for oracle) сам будет обрабатывать подключения и отдавать его через пул
?
...
Рейтинг: 0 / 0
devart dotConnect for oracle использование сесии к ораклу
    #37197345
Cheese)))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up!
...
Рейтинг: 0 / 0
devart dotConnect for oracle использование сесии к ораклу
    #37197458
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2
...
Рейтинг: 0 / 0
devart dotConnect for oracle использование сесии к ораклу
    #37199784
Фотография devart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
devart dotConnect for oracle использование сесии к ораклу
    #37377695
Cheese)))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про метод 2, пожалуйста, объясните:
Раз каждый раз создается подключение, то не существует сессии закрепленной за конкретным пользователем, а это значит я не могу сделать 3 апдейта с трех последовательных страниц, а потом commit; получается что при таком подходе я должен все изменения передавать одной процедурой в конце которой будет коммит или я не прав?
...
Рейтинг: 0 / 0
devart dotConnect for oracle использование сесии к ораклу
    #37377733
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cheese))),

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

Транзакция - это одна логическая единица работы. С точки зрения интерфейса она должна выполняться одним движением, так что ни каких трёх страниц не может быть в рамках 1 транзакции.
...
Рейтинг: 0 / 0
devart dotConnect for oracle использование сесии к ораклу
    #37671596
Cheese)))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
devart dotConnect for oracle использование сесии к ораклу
    #37671807
brainproof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При выходе из блока вызовется Dispose, а если товарищи делали с умом, в чем я не сомневаюсь, по патерну то и Close внутри него
...
Рейтинг: 0 / 0
devart dotConnect for oracle использование сесии к ораклу
    #37671814
brainproof
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя может я погорячился с патерном а просто интерфейс IDisposable.не ругайте)
...
Рейтинг: 0 / 0
devart dotConnect for oracle использование сесии к ораклу
    #37671879
Cheese)))
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
brainproof,

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


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