Вниз
Скачать: 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.012 c
3-27846
BSD
2002-11-09 16:59
2002.12.09
Утечки памяти в TIBQuery :(


6-28190
acid_v
2002-10-11 18:25
2002.12.09
Как определить имя пользователя на удаленном компьютере ?..


6-28188
guest_xxx
2002-10-07 09:36
2002.12.09
Шлюз?


3-27847
karbo
2002-11-20 17:23
2002.12.09
Мне тоже помогите запрос составить...


8-28136
j_onion
2002-08-23 03:00
2002.12.09
Как проверить, установлен ли конкретный кодек в системе?




   Наверх