Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.17;
Скачать: CL | DM;

Вниз

MIDAS сервер на TRemouteDataModule. Как передать сооб-е клиентам?   Найти похожие ветки 

 
maxi   (2003-02-10 08:44) [0]

Такая проблема : Построил MIDAS сервер на TRemouteDataModule. На клиенте использую TSocketConnection (сервер построен на основе программы scktsrvr). Однако как передать сообщение от сервера к клиентам ?????
Пробовал такой вариант : на клиенте ставлю Automation Object (объект автоматизации), при запуске клиента создаю копию объекта через CoMyAutomationObject, беря тем самым его интерфейс IMyAutomationObject. Этот интерфейс передаю в качестве параметра (IUnknown или IDispatch) в интерфейс сервера. Тот его получает и вроде бы всё нормально, но при первом же вызове методов из интерфейса клиента возникает "Разрушительный сбой" и сервер заваливается.
Как сделать так что бы всё работало верно ???? или подскажите, что у меня неверно .... Буду очень признателен.


 
Digitman ©   (2003-02-10 08:55) [1]

BSS не "умеет" выполнять асинхронные обратные вызовы клиента.
Без серьезной переделки BSS никак не обойтись


 
А2   (2003-02-10 09:28) [2]

Это можно сделать, посмотрите журнал RSDN #2"2002 или на их сайте www.rdsn.ru, статья "Обратные вызовы в MIDAS через TSocketConnection". Там очень подробно описано.


 
Klim Samgin   (2003-02-10 09:48) [3]

Что-то ссылка www.rdsn.ru не работает. Не ошибся ли ты, A2?


 
yn   (2003-02-10 09:58) [4]

wer


 
Digitman ©   (2003-02-10 10:43) [5]

www.rsdn.ru

RSDN = Russian Software Developer"s Network... вроде бы так)

все там замечательно, только ни о какой асинхронности обр.вызовов речи не идет

иными словами, если клиент находится в состоянии ожидания результата прямого вызова (например, вызов, в контексте которого на серв.стороне выполняется длительный запрос к СУБД), то до момента получения результата ни на какие события, связанные с обр.вызовом, клиент реагировать не имеет возможности, ибо обработка транспортных событий реализована последовательно


 
Соловьев ©   (2003-02-10 10:47) [6]

С делал обмен между сервером и клиентом. Тоже намучался с "Разрушительным сбоем". Опиши конкретно что ты хочешь, а то я что-то не понял :)


 
Romkin ©   (2003-02-10 11:03) [7]

2Digitman
Ну понятно - хочешь асинхронности - реализуй поток на клиенте, а то что получается? ждем одно, получаем другое..
Достаточно организовать поток, и в нем соединение - все будет асинхронно.
2Соловьев: "Разрушительный сбой" чаще всего возникает из-за передачи интерфейсов между потоками без маршалинга, что недопустимо.


 
Digitman ©   (2003-02-10 11:10) [8]


> Romkin


Да есть там транспортный поток-то ) ... см. TTransportThread
Только толку-то от него(... тр.события этот поток все равно синхронизирует с осн.потоком... так что без переделки TSocketConnection тоже не обойтись


 
Romkin ©   (2003-02-10 11:22) [9]

Поток есть... Переписывать, потом отлаживать, да еще и мультипоточность...
Все там правильно сделано - клиент как правило на одном потоке, и нафиг мне не нать ответ от сервера в другом потоке...
Я ж говорю - напиши на клиенте поток, в котором и соединяйся с сервером для асинхронных обратных вызовов. Быстро и сердито.


 
Digitman ©   (2003-02-10 11:34) [10]


> напиши на клиенте поток, в котором и соединяйся с сервером
> для асинхронных обратных вызовов


Может быть, в каких-то случаях это и оправдано ... но в общем случае выигрыш в упрощении таким способом транспортной логики сводится к проигрышу в использовании доп.сет.ресурсов из-за необходимости создания отдельной вирт.петли коннекта с партнером


 
Romkin ©   (2003-02-10 12:02) [11]

Бррр... Последнее вообще не понял :-))


 
Digitman ©   (2003-02-10 12:06) [12]


> Romkin


чего не понял ? )


> в котором и соединяйся с сервером


читай :
отдельный экз-р TSocketConnection = отдельный экз-р TClientSocket = отдельное гнездо и т.д.


 
Romkin ©   (2003-02-10 12:15) [13]

Добавь еще - отдельный экземпляр rdm на сервере :-))
Меня это никогда не тревожило, главное - простота и логика работы...


 
Digitman ©   (2003-02-10 12:24) [14]


> Добавь еще - отдельный экземпляр rdm на сервере :-))


разумеется - добавлю)... экз-ры маршаллеров-то - разные для каждого коннекта)



 
Klim Samgin   (2003-02-10 13:05) [15]

А в Delphi 7 эту тему пробивал кто-нибудь?


 
MrZeRo   (2003-02-10 13:43) [16]

А поискать в инете решение слабо?
Dan Miser подробно описал решение данной проблемы.
http://www.google.com/search?hl=ru&ie=windows-1251&q=MIDAS+CALLBACK



Страницы: 1 вся ветка

Текущий архив: 2003.02.17;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.012 c
1-52812
Wowa-K
2003-02-06 06:26
2003.02.17
MS Word 2000 & XP


9-52698
pasha676
2002-09-13 09:28
2003.02.17
Пересечения 3D объектов


1-52966
Dinn
2003-02-08 00:36
2003.02.17
TTreeView с wordwrap текста в нодах


3-52792
alxx
2003-01-31 15:55
2003.02.17
Cannot attach to password database - проблемы с соединением


9-52702
ArtGamer
2002-09-12 23:51
2003.02.17
X-Com will be back