Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.02;
Скачать: [xml.tar.bz2];

Вниз

Торможу. Запросить интерфейс через 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
1-2077
Marina_S
2004-01-20 12:08
2004.02.02
установка RXlibrary


3-1998
SerKom
2004-01-08 05:39
2004.02.02
Как считать


4-2429
Ascan
2003-11-24 14:48
2004.02.02
Perform(EM_CANPASTE, 0, 0) в TMemo


1-2216
TTT
2004-01-20 17:26
2004.02.02
fsMDIForm с компонентами BitBtn


14-2303
ИдиотЪ
2004-01-12 13:25
2004.02.02
Спящий режим





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский