# Introdução

DCOM é uma tecnologia proprietária da Microsoft para permitir a comunicação entre componentes de software distribuídos em uma rede. Ele é uma extensão do COM (Component Object Model) que inclui conceitos de distribuição e também possibilita a comunicação com aplicações servidoras baseadas em COM+.
A seguir serão abordadas as tecnologias COM, que fornece a base para o DCOM e para o COM+, que também serão discutidos.

## COM (Component Object Model)

O COM é uma plataforma proprietária da Microsoft utilizada para a criação de aplicações baseadas em componentes de software. Ele tem como propósitos possibilitar a comunicação entre processos e permitir a criação dinâmica de objetos em qualquer linguagem de programação que dê suporte à tecnologia. Utilizando conceitos de componentes de software, ela agrega características de reuso de software, facilitando a criação de aplicações complexas.
Em poucas palavras, COM fornece uma forma abstrata de implementar objetos de forma que eles se tornem independentes da linguagem utilizada na implementação e possam ser reutilizados. Com interfaces bem definidas, eles podem ser utilizados sem que se tenha conhecimento de sua implementação interna, apenas da interface.
COM compete com CORBA e JavaBeans para a criação de aplicações com componentes de software e tende a ser substituído (pelo menos em parte) pelo Framework .NET, apesar de que diversas fontes alegam que dificilmente a família COM deixará de ser usada em um futuro próximo.

## COM+

COM+ consiste na última ampliação do COM incluindo algumas novas funcionalidades, principalmente a adição da tecnologia Microsoft Transaction Server. Ele é voltado para o desenvolvimento de componentes de aplicações servidoras, oferecendo suporte a transações distribuídas, pooling de recursos, publicação de eventos, melhorias no gerenciamento de memória e processamento, entre outros. A adição e integração de vários módulos no COM+ simplificou ainda mais o desenvolvimento de componentes e, apesar do surgimento do Framework .NET, a integração do COM+ na plataforma Windows e o grande uso que vem sendo feito do mesmo provam que COM+ ainda é uma tecnologia viável.

## DCOM

A primeira especificação do DCOM foi introduzida pela Microsoft em 1996. A adição do “D” ao acrônimo da tecnologia COM corresponde ao uso de DCE/RPC (Distributed Computing Environment / Remote Procedure Calls – um sistema que permite abstração na comunicação realizada pelas camadas de rede inferiores, facilitando a programação de aplicações distribuídas), mais especificamente a versão da Microsoft, o MSRPC (Microsoft Remote Procedure Call).
DCOM adicionou alguns conceitos ao COM, como:
* Marshalling (serialização e deserialização dos argumentos e valores de retorno das chamadas remotas transmitidas pela rede); e
* Coleta de lixo distribuída (remoção de objetos não mais utilizados caso algum problema ocorra na comunicação, por exemplo).
O modelo de comunicação do DCOM é síncrono, ou seja, assim que o cliente invoca um método no servidor, sua execução para até que ele receba uma resposta. Este problema foi resolvido com a inclusão de extensões ao DCOM, principalmente as introduzidas com o COM+, possibilitando assim um modelo de comunicação assíncrono. Podem ser citadas algumas importantes, como interfaces para callback (um cliente faz uma chamada remota e oferece ao servidor um objeto COM com funções que podem ser chamadas pelo servidor) e pontos de conexão (baseados nas interfaces para callback, porém mais padronizados e permitem que um servidor tenha vários clientes anexadas a ele, e vice-versa).
A família COM ainda é muito utilizada e, apesar de estar sendo substituída pelo Framework .NET, provavelmente continuará sendo utilizada por muito tempo.
DCOM foi um grande concorrente do CORBA, mas problemas como a dificuldade de ambas como fazê-las operar através dos firewalls na Internet e em máquinas desconhecidas, heterogêneas e inseguras fez com que os Web services superassem ambos em relação à comunicação entre processo na Web.
Por ser uma tecnologia proprietária da Microsoft, o DCOM está fortemente conectado à plataforma Windows. Mesmo com o grande número de usuários que utilizam sistemas Microsoft atualmente, esta limitação do DCOM impede que ele se torne um padrão de propósito geral, que possa ser utilizado em todos os sistemas.

# Links Externos

* Página principal das tecnologias COM na Microsoft: http://www.microsoft.com/com/ (em inglês)
* DCOM na Wikipedia: http://pt.wikipedia.org/wiki/DCOM

# Bibliografia

* 1 2 Fischer, Florian. "Applied Computer Science Problems: DCOM", January, 2005.