Вниз
Скачать: CL | DM;

Что лучше использовать ConnectionPoint или Callback Interfaces   Найти похожие ветки 

 
----   (2002-11-28 18:22) [0]



 
asmith   (2002-11-28 19:24) [1]

Можно руководствоваться такими принципами:
1. IConnectionPoint строятся на основе IDispatch и поэтому требуют больших накладных расходов при работе, если клиент обращается к серверу, нужны такие вызовы:
a) Server.QueryInterface (IConnectionPointContainer)
b) IConnectionPointContainer.FindConnectionPoint (CP)
c) IConnectionPoint.Advise (IUnknown),
последний вызов требует еще один QueryInterface от сервера клиенту. Отсоединение ивента снова потребует 3 вызова:
a) Server.QueryInterface (IConnectionPointContainer)
b) IConnectionPointContainer.FindConnectionPoint (CP)
c) IConnectionPoint.Unadvise (Cookie)
т.е. акт обмена м-ду сервером и клиентом требует 7 прямых вызовов. Для in-process сервера или локального out-of-process это не страшно, но плохо для удаленного out-of-process.
2. Connection points устроены так, что приконнектившихся клиентов трудно различить. Трудно или даже невозможно их фильтровать для выполнения разных действий для них.


 
Fantasist ©   (2002-11-29 03:23) [2]


> IConnectionPoint строятся на основе IDispatch


При чем тут IDispatch? Если описание интерфейсов известны, методы IDispatch использовать вовсе не обязательно. Из-за того, что он часто используется - это не является обязаловкой.


> т.е. акт обмена м-ду сервером и клиентом требует 7 прямых
> вызовов. Для in-process сервера или локального out-of-process
> это не страшно, но плохо для удаленного out-of-process.


Ну это не акт обмена. Соеденение, положим, 4 вызова. Если клиент не дурак, то он сохранит указатели на интерфейсы, и не будет второй раз у сервера их запрашивать, так что для рассоеденения достадочно одного вызова. Потом, соедениться и отсоедениться надо, чаще всего, только один раз. Чтобы "послать событие", как раз нужен только один вызов.



> 2. Connection points устроены так, что приконнектившихся
> клиентов трудно различить. Трудно или даже невозможно их
> фильтровать для выполнения разных действий для них.

Енто верно. С другой стороны - это стандарт, значит каждый кому ты покажешь IDL сможет к тебе присоедениться. С callback интерфейсами придется еще и объяснять всем как это callback интерфейс передать.

P.S. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/com/cmi_c_5h2q.asp



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

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.015 c
1-28017
Dber
2002-11-29 16:32
2002.12.09
Date/Time в Accesse


1-28024
Tenrai
2002-11-30 01:11
2002.12.09
MDI-приложение


14-28216
Anatoly Podgoretsky
2002-11-17 10:21
2002.12.09
Именинники 17 ноября


7-28321
Anar
2002-10-07 00:51
2002.12.09
Как перезагрузить комп в Windows XP?


3-27893
robi
2002-11-21 18:14
2002.12.09
Контекстное меню в DBGride




   Наверх