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

Вниз

Торможу. Запросить интерфейс через TSocketConnection   Найти похожие ветки 

 
Hose   (2004-01-19 15:00) [0]

Есть сервер приложения. К нему доступ через TSocketConnection.
На сервере в одном коклассе объявляю 2 интерфейса. Типа такого

IIntf1: IAppServer;
IIntf2: IDispatch;

как у Intf1 запросить Intf2? Надо переопределять QueryInterface?
В общем посоветуйте плз.


 
Erik ©   (2004-01-19 15:35) [1]

Лучше незапрашивать, а то проблем необерешся. Кидай все методы в IAppServer.


 
Dimka Maslov ©   (2004-01-19 15:41) [2]

А как вообще ты хочешь через сокеты передавать указатель? Куда он будет указывать адресном пространстве клиента на удалённой машине. А посоветовать можно лишт прочитать про COM+


 
Hose   (2004-01-19 15:56) [3]

2 Dimka Maslov ©
А куда указывает в адресном пространстве клиента указатель на наследника IAppServer?


 
Dimka Maslov ©   (2004-01-19 16:04) [4]

Прочитай ещё и про COM есть такие понятия как Proxy и Stub


 
icWasya ©   (2004-01-19 16:09) [5]

Надо переопределять QueryInterface?
если на сервере всё сделано правильно, то не надо

var
IIntf1: IAppServer;
IIntf2: IDispatch;

IIntf2:=CreateComObject(CLASS_Server);

IIntf1 := IIntf2 as IAppServer;


 
Hose   (2004-01-19 16:15) [6]

2 Dimka Maslov ©
Странно. Вот и я про них подумал. :)) Не разу не приходилось писать ручками маршалинг. Т.е. надо писать маршалинг?

2 icWasya ©
К чему это все? Оба интерфейса реализуются одним коклассом.


 
Digitman ©   (2004-01-19 16:15) [7]

IMyInterface = interface(IAppServer);

var
IIntf2: IMyInterface;

IIntf2 := socketconnection.GetServer as IMyInterface;


 
Hose   (2004-01-19 16:20) [8]

2 Digitman ©
нет не так

TMyClass = class(TMtsDataModule, IIntf1, IIntf2)


 
Digitman ©   (2004-01-19 16:34) [9]


> Hose (19.01.04 16:20) [8]


зачем ?

если требуется только IAppServer, то он по дифолту и будет получен вызовом GetServer

если же требуется наследник IMyInterface, то будет неявно вызван QueryInterface()


 
Hose   (2004-01-19 16:47) [10]

> Digitman © (19.01.04 16:34) [9]

> зачем ?

Странный вопрос. Вам не кажется? Условия задачи такие.


 
Digitman ©   (2004-01-19 16:56) [11]


> Hose (19.01.04 16:47) [10]


> Странный вопрос. Вам не кажется?


ничего странного. не кажется

цитирую :


> как у Intf1 запросить Intf2? [*]


достаточно не усложнять себе жизнь, а наследовать Intf2 от Intf1 - и условия [*] выполняются до безобразия элементарно, см. [7] ... не так ли ?


 
Hose   (2004-01-19 17:15) [12]

> цитирую :
> как у Intf1 запросить Intf2? [*]

не надо при цитировании вырывать из контекста вопроса отдельные фразы.

> достаточно не усложнять себе жизнь, а наследовать Intf2 от
> Intf1 - и условия [*] выполняются до безобразия элементарно,
> см. [7] ... не так ли ?

нет. не так. принципиально Intf1 и Intf2 содержат совершенно различные наборы методов. при чем здесь наследование?


 
Digitman ©   (2004-01-19 17:40) [13]


> Hose (19.01.04 17:15) [12]



> не надо


тогда, будь любезен, объясни автору, чем ему грозит решение такой задачи ИМЕННО в такой постановке БЕЗ переделки TSocketConnection, BSS и общих для них модулей, начиная с маршаллера ... а я, с твоего позволения, понаблюдаю


 
Hose   (2004-01-19 18:03) [14]

Digitman © (19.01.04 17:40) [13]


> тогда, будь любезен, объясни автору, чем ему грозит решение
> такой задачи ИМЕННО в такой постановке БЕЗ переделки TSocketConnection,
> BSS и общих для них модулей, начиная с маршаллера ... а
> я, с твоего позволения, понаблюдаю


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


 
Digitman ©   (2004-01-19 18:13) [15]


> Hose (19.01.04 18:03) [14]


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


 
Hose   (2004-01-19 18:31) [16]

Digitman © (19.01.04 18:13) [15]

> тебе Маслов Димка уже сказал - без переделки штатного маршаллинга,
> заложенного в связке TSocketconnection - BSS , не обойтись
> для решения задачи в ориг.постановке

Я к вам все время обращаюсь на "вы". Меня так родители с детства учили. И уж тем более вот эдакие распальцовки тебя не делают более крутым программистом.

Спасибо всем ответившим по существу. Вопрос закрыт.


 
Digitman ©   (2004-01-19 18:35) [17]


> Hose (19.01.04 18:31) [16]



> тебя не делают более крутым программистом


у меня что - прямо таки на лбу написано "крутой программист" ?)))))))))))))))))))))))))))


 
Digitman ©   (2004-01-19 18:39) [18]


> Hose (19.01.04 16:20)


ссылки - станд.модуль SConnect.pas (и все от чего онт пляшет), книга Эрика Хармона по программированию c использованием COM-технологии под Win32 ... если интересно, могу дать детальные атрибуты книги ... книга замечательная !!


 
Dred2k ©   (2004-01-19 21:49) [19]

Только одно не ясно - причем здесь транспорт и собственно COM.
(на крайний случай: source\vcl\ScktSrvr.dpr и SConnect.pas там же - что еще нужно?)

P.S. Сорри, коль не прочитал всю ветку.



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

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

Наверх




Память: 0.51 MB
Время: 0.019 c
14-2312
hexone
2004-01-12 09:48
2004.02.02
Шрифт в редакторе Delphi


3-1983
Aleks_S
2004-01-07 16:07
2004.02.02
Порядок полей в структуре таблицы.


3-2014
GASTON
2004-01-06 17:00
2004.02.02
date в MySQL


14-2372
_none_
2004-01-06 16:02
2004.02.02
Почему школьникам и студентам до сих пор преподают pascal 6,7?


8-2236
Sim
2003-09-16 20:07
2004.02.02
Фракталы (мн-во Мандельброта)