Дональд Бокс Сущность технологии СОМ. Библиотека программиста Предисловие Чарли Киндела Предисловие Грэйди Буча От автора Благодарности От издательства Глава 1. СОМ как улучшенный C++ Распространение программного обеспечения и язык С++ Динамическая компоновка и С++ C++ и мобильность Инкапсуляция и С++ Отделение интерфейса от реализации Абстрактные базы как двоичные интерфейсы Полиморфизм на этапе выполнения Расширяемость объекта Управление ресурсами Где мы находимся? Глава 2. Интерфейсы Снова об интерфейсах и реализациях IDL Методы и их результаты Интерфейсы и IDL Интерфейс IUnknown Управление ресурсами и IUnknown Приведение типов и IUnknown Реализация IUnknown Использование указателей интерфейса СОМ Оптимизация QueryInterface Типы данных Атрибуты и свойства Исключения Где мы находимся? Глава 3. Классы Снова об интерфейсе и реализации Объекты классов Активация Использование SCM Классы и серверы Обобщения Оптимизации Снова интерфейс и реализация Моникеры и композиция Моникеры и сохраняемость Время жизни сервера Классы и IDL Эмуляция классов Категории компонентов Где мы находимся? Глава 4. Объекты Снова IUnknown QueryInterface симметрична QueryInterface транзитивна QueryInterface рефлективна Объекты имеют статический тип Единственность и идентификация QueryInterface и IUnknown Множественные интерфейсы и имена методов Динамическая композиция Двоичная композиция Включение Где мы находимся? Глава 5. Апартаменты Снова интерфейс и реализация Объекты, интерфейсы и апартаменты Межапартаментный доступ Вспомогательные средства для внутрипроцессного маршалинга Архитектура стандартного маршалинга Реализация интерфейсных маршалеров Стандартный маршалинг, потоки и протоколы Управление жизненным циклом и маршалинг Специальный маршалинг Маршалер свободной поточной обработки (FreeThreaded Marshaler) Где мы находимся? Глава 6. Приложения Подводные камни внутрипроцессной активации Активация и SCM Снова о времени жизни сервера Снова о времени жизни сервера Идентификаторы приложений COM и защита Программируемая защита Контроль доступа Управление маркерами Где мы находимся? Разное Основы указателей Указатели и память Массивы Управление потоками данных Динамический вызов в сравнении со статическим Двунаправленные интерфейсные контракты Совмещение имен в IDL Асинхронные методы Где мы находимся? Проиложение А. Эволюция объектов Приложение Б. Избранный код
Глава 2. Интерфейсы void *pv = malloc(sizeof(int)); int *pi = (int*)pv; (*pi)++; free(pv); Аноним,1982
В предыдущей главе было показано несколько приемов программирования на C++, позволяющих разрабатывать двоичные компоненты повторного использования, которые со временем могут быть модернизированы. По своему смыслу эти приемы идентичны тем, которые используются моделью СОМ. Незначительные различия между методиками предыдущей главы и теми, которые используются СОМ, в большинстве случаев заключаются в деталях и почти всегда достаточно обоснованы. Вообще-то предыдущая глава прослеживала историю модели СОМ, которая прежде всего и в основном есть отделение интерфейса от реализации.
Снова об интерфейсах и реализациях