Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ODAC и COM [D7]


Note ©   (2006-12-22 16:29:00) 

Добрый день,
подскажите, как решить проблему. Имеется группа приложений, которые должны работать с БД (Oracle). Необходимо, чтобы соединение с БД создавалось в одном из них, и все остальные приложения использовали именно его для выполнения запросов к БД. Вопрос: каким образом (если вообще можно) передать ODAC connection (класс TOraSession) между приложениями, используя COM?


Ломброзо   (2006-12-23 21:15:00) [1]

Догадаться несложно - это в итоге нам дает трёхзвенку.
В итоге требование "соединение в одном из них" - превращается в сервер приложений,  а "все остальные приложения" превращаются в клиентов сервера приложений. Таким образом, только сервер приложений непосредственно использует соединение с Oracle, выгружая результат запроса в "отсоеднённый" ADODB.Recordset (эта фича поддерживается, если мне не изменяет память, с версии MDAC 2.6) и маршалируя его клиенту по DCOM в виде пакета. Клиент делает в рекордсете изменения и маршаллирует его обратно серверу, который опять-таки открывает соединение с Oracle и производит пакетное (batch) обновление таблицы в соответствии с изменениями в каждой строке рекордсета, то бишь вставку-изменение-удаление записей.

В классическом ADO по такой модели работать тяжеловато, зато в ADO.NET идея отсоединенных наборов данных достигла апогея.


Note   (2006-12-23 16:11:00) [2]

2 Sergey Masloff  
Жаль, а так рассчитывал… =(.  У компоненты OraSession  есть метод AssignConnect (Source: TOraSession), вот если бы вместо Source были указаны конктеные параметры нужные наследования подключения, а не просто класс, их можно было бы их упаковать  на сервере и передать клиенту, чтобы он юзал тот же самый коннект. Исходников нет, чтобы посмотреть.

2 Ломброзо ©
Что даёт передача рекордсетов? Я понимаю, что краткость - сестра таланта, но будьте добры чуть подробнее ;)


Ломброзо   (2006-12-23 01:37:00) [3]

Не надо передавать Connection. Надо передавать рекордсеты. Они маршаллируемые.


Sergey Masloff   (2006-12-23 00:42:00) [4]

Это у DOA такая фича была. В ODAC если и можно то недокументировано и с граблями.


Наверх

Титульная страница Поиск, карта сайта Написать письмо