5.1 Средства СОМ
Пока объекты поддерживают стандартные интерфейсы при обмене данными, редактор текстов, электронная таблица и база данных на мэйнфрейме могут не иметь информации о фактической реализации друг друга. Редактору текстов требуется лишь знать, как связаться с электронной таблицей; а той — как предоставить свои сервисы любому, кто хочет связаться с ней.
Примечание Технологии связывания и внедрения объектов (Object Linking and Embedding, OLE) и ActiveX основаны на СОМ. Хотя термин ActiveX все чаще употребляют вместо OLE, последний по-прежнему применяется в отношении отдельных реализаций, например структурированных хранилищ OLE (OLE Structured Storage) и OLE-автоматизации (OLE Automation).
Объекты СОМ
Ненадолго прервите чтение, запустите видеоролик Chap05.exe с прилагаемого к книге компакт-диска: в нем объясняется разница между объектами, создаваемыми в объектно-ориентированных языках программирования, и объектами СОМ.
Объекты СОМ — это повторно используемые программные компоненты, которые разработаны специально для вызова из других приложений. Ранее объекты, созданные в объектно-ориентированных языках программирования (ООП), можно было повторно применять только в том же самом языке. Технология СОМ позволяет инкапсулировать объекты ООП в повторно используемые динамические библиотеки (DLL), ActiveX-элементы (ОСХ) или исполняемые файлы для работы в разных приложениях и языках программирования. Например, компонент, созданный в Visual C++, Вы легко и просто вставите в приложение, написанное на Visual Basic.
Структура и иерархия объектов
СОМ описывает не структуру объектов, а их взаимодействие. Внутреннюю структуру компонента определяют язык программирования и среда разработки, которая, однако, не устанавливает стандарты на работу с объектами за пределами приложения. Благодаря языково-независимым интерфейсам, СОМ действует там, где языки программирования уже не способны предоставить необходимые возможности взаимодействия приложений и компонентов.
Предоставление сервисов
Объекты СОМ предоставляют свои сервисы клиентам — любой части кода (не обязательно приложению), которая использует сервисы объекта.