Читать реферат по информатике, вычислительной технике, телекоммуникациям: "Перехват методов COM интерфейсов" Страница 1
- 1
- 2
- 3
- . . .
- последняя »
Перехват методов COM интерфейсов
Ivan Andreyev
Введение
В одной из статей RSDN Magazine описывался способ перехвата методов интерфейса IUnknown. Суть этого подхода заключалась в замене указателей на функции QueryInterace, AddRef, Release в VTBL интерфейса и выполнении дополнительной обработки внутри перехватчиков.
В этой статье мы продолжим обсуждение темы перехвата вызовов методов COM-интерфейсов и познакомимся с API-функциями CoGetInterceptor, CoGetInterceptorFromTypeInfo, позволяющими забыть обо всех технических трудностях и проблемах, связанных с передачей вызова от клиента перехватчику, и от перехватчика – исходному компоненту.
Технология “перехвата” вызовов API функций, обработчиков оконных сообщений, методов COM-компонентов имеет много общего с шаблоном проектирования Proxy (Заместитель). Суть этой технологии заключается в том, что вызов клиента перенаправляется (с помощью различных технических ухищрений – замена VTBL, Proxy-объект и т.п.) сначала коду заместителя, который выполняет пред- и постобработку, а затем уже – исходному объекту. Благодаря этому можно добавлять новую функциональность, никак не изменяя ни код клиента, ни код сервера.
Очень широкое распространение технология “перехвата” получила в COM – фундаментальные принципы прозрачности местонахождения компонента (location transparency) и прозрачности типа синхронизации (concurrency transparency) реализуются именно благодаря Proxy-компонентам из инфраструктуры COM, которые имитируют для клиента исходный компонент. С появлением COM+ набор сервисов, которые реализуют перехватчики, расширился еще больше – добавились поддержка транзакций, блокировок для синхронизации доступа к компонентам, поддержка just-in-time активации, ролевая безопасность. За счет того, что эти сервисы реализуются инфраструктурой COM+ прозрачно для клиента и серверных компонентов (хотя серверные COM+-компоненты могут взаимодействовать с инфраструктурой, например, чтобы отменить или подтвердить транзакцию), клиентский код ничего не знает о том, что случится с его вызовом на сервере – будет ли он обслуживаться COM+ или обычным COM-компонентом. Аналогично, один и тот же компонент может использоваться в составе COM+-приложения.
Помимо предоставления различных сервисов перехват вызовов методов COM-компонентов позволяет решить и другие задачи, например:
протоколирование вызовов COM-компонентов;
отладка – проверка значений аргументов, контроль подсчета ссылок;
специальный маршалинг;
использование альтернативных по отношению к RPC видов транспорта для передачи COM-вызовов (MSMQ, SOAP и т.п.);
асинхронные вызовы (заместитель сохраняет информацию о вызове и производит фактический вызов исходного компонента позднее).
Рисунок 1 иллюстрирует принцип перехвата вызовов COM-компонентов, Proxy и Stub – служебные компоненты, один из которых принимает вызовы от клиента, имитируя исходный компонент, а другой – передает эти вызовы компоненту, имитируя логику работы клиента. Именно по такой схеме работает маршалинг в COM, и по такой же схеме COM+ обеспечивает дополнительные сервисы (транзакции, блокировки и т.п.) для сконфигурированных компонентов. Рисунок 1. Принцип перехвата COM-вызова.
Как это часто случается, несмотря на простое описание технологии перехвата, ее техническая реализация очень непростое дело, в особенности, когда
- 1
- 2
- 3
- . . .
- последняя »
Похожие работы
| Тема: Перехват методов COM интерфейсов |
| Предмет/Тип: Информатика, ВТ, телекоммуникации (Реферат) |
| Тема: Перехват методов интерфейса Iunknown |
| Предмет/Тип: Информатика, ВТ, телекоммуникации (Реферат) |
| Тема: Перехват методов интерфейса Iunknown |
| Предмет/Тип: Информатика, ВТ, телекоммуникации (Реферат) |
| Тема: Исследование методов построения пользовательских интерфейсов |
| Предмет/Тип: Другое (Диплом) |
| Тема: Резидентный обработчик клавиатуры (перехват нажатий клавиш и запись в файл) |
| Предмет/Тип: Информационные технологии (Курсовая работа (п)) |
Интересная статья: Быстрое написание курсовой работы

(Назад)
(Cкачать работу)