O Component Object Model

O Microsoft Component Object Model (COM) é um sistema independente de plataforma, distribuído e orientado a objetos para criar componentes de software binários que podem interagir. COM é a tecnologia base para OLE (documentos compostos), ActiveX (componentes habilitados para Internet) da Microsoft, bem como outros.

Para entender COM (e, portanto, todas as tecnologias baseadas em COM), é crucial entender que não é uma linguagem orientada a objetos, mas um padrão. A COM também não especifica como um aplicativo deve ser estruturado; Os detalhes de linguagem, estrutura e implementação são deixados para o desenvolvedor do aplicativo. Em vez disso, COM especifica um modelo de objeto e requisitos de programação que permitem que objetos COM (também chamados de componentes COM, ou às vezes simplesmente objetos) interajam com outros objetos. Esses objetos podem estar dentro de um único processo, em outros processos, e podem até estar em computadores remotos. Eles podem ser escritos em diferentes idiomas, e podem ser estruturalmente bastante diferentes, e é por isso que COM é referido como um padrão binário, um padrão que se aplica depois que um programa foi traduzido para código de máquina binário.

O único requisito de linguagem para COM é que o código seja gerado em uma linguagem que possa criar estruturas de ponteiros e, explícita ou implicitamente, chamar funções por meio de ponteiros. Linguagens orientadas a objetos como C++ e Smalltalk fornecem mecanismos de programação que simplificam a implementação de objetos COM, mas linguagens como C, Java e VBScript podem ser usadas para criar e usar objetos COM.

COM define a natureza essencial de um objeto COM. Em geral, um objeto de software é composto por um conjunto de dados e as funções que manipulam os dados. Um objeto COM é aquele em que o acesso aos dados de um objeto é obtido exclusivamente por meio de um ou mais conjuntos de funções relacionadas. Esses conjuntos de funções são chamados de interfaces, e as funções de uma interface são chamadas de métodos. Além disso, COM requer que a única maneira de obter acesso aos métodos de uma interface é através de um ponteiro para a interface.

Além de especificar o padrão de objeto binário básico, o COM define certas interfaces básicas que fornecem funções comuns a todas as tecnologias baseadas em COM, e fornece um pequeno número de funções que todos os componentes exigem. COM também define como os objetos trabalham juntos em um ambiente distribuído e adicionou recursos de segurança para ajudar a fornecer integridade do sistema e do componente.

Os tópicos a seguir nesta seção descrevem problemas básicos de COM relacionados à criação de objetos COM: