Содержание
- 2. Модель COM Основой как ActiveX, так и OLE является модель многокомпонентных объектов (COM). СОМ устанавливает абстракции
- 3. Описание объектов СОМ Программы, созданные с использованием СОМ, предоставляет свои сервисы через один или несколько СОМ-объектов.
- 4. В состав каждого интерфейса входит один или более методов — функций, которые могут вызываться клиентом объекта.
- 5. Интерфейсы Каждый поддерживаемый объектом интерфейс, по сути дела, — контракт между этим объектом и его клиентами.
- 6. Идентификация интерфейса У каждого интерфейса СОМ два имени. Одно из них предназначено для людей — строка
- 7. По соглашению читабельные имена большинства СОМ-интерфейсов начинаются с буквы I (от interface). Различные технологии, основанные на
- 8. Простые дружественные имена, вроде приведенных выше, удобны при упоминании интерфейса в разговоре или при выборе имен
- 9. Создатель любого интерфейса должен присвоить ему уникальное имя — глобально уникальный идентификатор (globally unique identifier —
- 10. Проблема сводится к тому, чтобы гарантировать уникальность каждого GUID во времени и пространстве. Уникальность во времени
- 11. Хотя человеку и трудно работать с GUID, последние отлично подходят для назначения гарантированно уникальных имен интерфейсов
- 12. Спецификация интерфейса Объект и клиент должны иметь заранее согласованный способ описания интерфейса, т.е. способ определения методов,
- 13. Для определения интерфейсов удобно иметь стандартный инструмент. В СОМ такой инструмент есть — язык описания интерфейсов
- 14. Например, ниже приведена спецификация на IDL для гипотетического интерфейса корректировщика орфографии ISpellChecker: [ object, uuid(E7CDODOO-1827-11CF-9946-444553540000) ]
- 15. Спецификация интерфейса начинается со слова object, указывающего, что будут использоваться расширения, добавленные СОМ к оригинальному IDL
- 16. Далее идет имя интерфейса — ISpellChecker, за ним — двоеточие и имя другого интерфейса — IUnknown.
- 17. На практике наследование интерфейсов используется в СОМ нечасто. Вместо этого объект обычно поддерживает каждый необходимый ему
- 18. Далее в спецификации интерфейса идет оператор import. Так как данный интерфейс наследует от IUnknown, то некоторой
- 19. Каждый параметр помечен [in] или [out]. Значения параметров [in] передаются при вызове метода от клиента объекту,
- 20. Важное обстоятельство, связанное со спецификациями интерфейса: после того как интерфейс опубликован и начал где-то работать, после
- 21. Добавление новой или изменение существующей функциональности требует определения полностью нового интерфейса. Такой интерфейс может наследовать от
- 22. Реализация интерфейса Чтобы вызвать метод, клиенту необходимо точно и подробно знать, как это делать. Спецификация интерфейса,
- 23. Клиентский указатель интерфейса фактически является указателем на указатель внутри объекта. Последний в свою очередь указывает на
- 24. Что представляют собой первые три метода ISpellChecker? Это методы, определенные интерфейсом IUnknown. Поскольку ISpellChecker наследует от
- 25. Формат интерфейса СОМ моделирует структуру данных, генерируемую компилятором C++ для класса этого языка (класс задает тип
- 26. При вызове клиентом метода интерфейса выполняется проход по описанной структуре (с помощью указателя на виртуальную таблицу
- 27. IUnknown — фундаментальный интерфейс Каждый объект СОМ должен поддерживать интерфейс IUnknown — в противном случае он
- 28. Назначение IUnknown::QueryInterface Обычно свой первый указатель на интерфейс объекта клиент получает при создании объекта. Имея первый
- 29. Чтобы воспользоваться QueryInterface, клиент вызывает его с помощью любого из имеющихся у него в данный момент
- 30. Самый важный элемент СОМ — QueryInterface. Именно эта простая схема решает очень важную и сложную проблему
- 31. Лучше всего продемонстрировать это на примере. Допустим, имеется некий набор инструментов обработки текста, реализованный в виде
- 32. Теперь допустим, что фирма, продающая этот объект — инструментарий для обработки текста, — решила добавить поддержку
- 33. Предположим теперь, что на машине установлена новая версия текстового процессора, поддерживающая работу со словарем синонимов. Когда
- 34. Ну а как быть тем, кто установил новую версию текстового процессора, но еще не приобрел новую
- 35. Рассмотрим еще один пример. Что, если создатель объекта — инструментария для обработки текста — пожелает изменить
- 36. Объект по-прежнему поддерживает ISpellChecker, но теперь он также будет поддерживать и ISpellChecker2. Добавление в объект поддержки
- 37. Querylnterface и требование неизменности интерфейсов СОМ позволяют программным компонентам, разрабатываемым независимыми организациями, обновляться по отдельности и
- 39. Скачать презентацию