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

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

Midas-DComConnection


bkv ©   (2003-01-10 10:43:00) 

Недавно при написании сервера приложения MIDAS я столкнулся с проблемой: не как не хотел запускаться второй экземпляр клиента.
Использовал TDComConnection.
Первый экземпляр клиента запускается и производит соединения с Сервером автоматизации без проблем. Сервер автоматизации при первом обращении как положенно запускается- всё нормально.
Запускаю клиентское приложение еще раз- ошибка:
мол типа не уникальное имя в данном контексте, интерфейс не поддерживается. т.е Соединениу TDComConnection c сервером не происходит если сервер уже имеет хотябы одно активное соединение.
Причем буквально 20мин назад все работало Ок.
Повозившись, я обнаружил следующюю вещь: На сервере для доступа к БД я Использовал BDE - TDatabase. Так вот, если я компилирую сервер с TDatabase.Connected= true то к серверу подсоединяется не более 1 клиента, остальные попытки вызывают exception.
Если TDatabase не подключен к БД на этапе компилирования, то
все клиентские соединения проходят без проблем.
В чем тут дело я так и не понял.
Кто-нибудь сталкивался с такой ситуацией?


Romkin   (2003-01-10 11:33:00) [1]

А это ему пофиг :-)) разница, в том, что иногда приходится выбирать между значениями ResolveToDataset
BDE - Это немного устарело уже, да и громоздко
ADO - необходимо ставить при поставке (так же, как BDE)
dbExpress - новая технология, причем приспособленная именно к MIDAS, обычно работа идет через TClientDataSet. Легко ставится - 3 dll зарегистрировать через regsvr32, что обычно любой инсталлятор может.
А так - все зависит от того, к какой БД подсоединяешься, и от личных пристрастий.
Переходить тоже достаточно легко на разные соединения, правда, особенности тоже есть


bkv   (2003-01-10 11:04:00) [2]

Понятно, спасибо.
И еще вопрос:
Что лучше использовать для MIDAS : BDE, ADO или dbExpress?


Romkin   (2003-01-10 10:57:00) [3]

Если модель потоков сервера не tmSingle, в каждом TRemoteDataModule должны находится TSession & TDatabase, причем у TSession AutoSessionName должно быть True.
Связано это с тем, что на каждое клиентское соединение создается свой экземпляр модуля данных, и в отдельном потоке.
При этом BDE не потокобезопасна, разделение по потокам должно обеспечиваться с помощью TSession, и AutoSessionName просто обеспечивает уникальные имена сессий (SessionName), блокировки проводятся именно по ним
PS Developers Guide рекомендую все-таки почитать


OlegE   (2003-01-10 10:51:00) [4]

Нужно использовать TSession.


Наверх

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