Модель COM

Объектная модель компонента Майкрософт (COM) — это независимая от платформы распределенная объектная система для создания компонентов двоичного программного обеспечения, которые могут взаимодействовать. COM — это базовая технология OLE Корпорации Майкрософт (составные документы), ActiveX (компоненты с поддержкой Интернета), а также для других.

Чтобы понять COM (и, следовательно, все технологии на основе COM), важно понимать, что это не объектно-ориентированный язык, а стандарт. Кроме того, COM не указывает, как должно быть структурировано приложение; Сведения о языке, структуре и реализации остаются для разработчика приложения. Вместо этого COM задает объектную модель и требования к программированию, позволяющие COM-объектам (также называемым COM-компонентами или иногда просто объектами) взаимодействовать с другими объектами. Эти объекты могут находиться в одном процессе, в других процессах и даже на удаленных компьютерах. Они могут быть написаны на разных языках, и они могут быть структурно довольно непохожими, поэтому COM называется двоичным стандартом; стандарт, который применяется после перевода программы в двоичный машинный код.

Единственным требованием языка для COM является создание кода на языке, который может создавать структуры указателей и (явно или неявно) вызывать функции с помощью указателей. Объектно-ориентированные языки, такие как C++ и Smalltalk, предоставляют механизмы программирования, упрощающие реализацию COM-объектов, но такие языки, как C, Java и VBScript, можно использовать для создания и использования COM-объектов.

COM определяет основную природу COM-объекта. Как правило, программный объект состоит из набора данных и функций, которые управляют данными. COM-объект — это объект, в котором доступ к данным объекта достигается исключительно с помощью одного или нескольких наборов связанных функций. Эти наборы функций называются интерфейсами, а функции интерфейса называются методами. Кроме того, COM требует, чтобы единственный способ получить доступ к методам интерфейса — это указатель на интерфейс.

Помимо указания базового стандарта двоичного объекта COM определяет определенные базовые интерфейсы, обеспечивающие функции, общие для всех технологий на основе COM, и предоставляет небольшое количество функций, необходимых всем компонентам. COM также определяет, как объекты работают вместе в распределенной среде и добавили функции безопасности для обеспечения целостности системы и компонентов.

В следующих разделах этого раздела описываются основные проблемы COM, связанные с проектированием COM-объектов: