Modelo de Objetos de Componentes Distribuidos
# Modelo de Objetos de Componentes Distribuidos

El Modelo de Objetos de Componentes Distribuidos (Distributed Component Object Model, DCOM) es una tecnología propietaria de Microsoft para desarrollar componentes de software distribuidos sobre varias computadoras y que se comunican entre sí.

Extiende el modelo Component Object Model (COM) de Microsoft y proporciona el sustrato de comunicación entre la infraestructura del servidor de aplicaciones COM+ de Microsoft.

Ha sido abandonada en favor del framework Microsoft .NET.

El agregado de la "D" a COM fue por el uso extensivo de DCE Remote Procedure Call (DCE/RPC), o más específicamente la versión mejorada de Microsoft, conocida como MSRPC.

En términos de las extensiones que añade a COM, DCOM tenía que resolver los problemas de:

* Aplanamiento: serializar y deserializar los argumentos y valores de retorno de las llamadas a los métodos "sobre el cable".
* Recolección de basura distribuida: asegurándose que las referencias mantenidas por clientes de las interfaces sean liberadas cuando, por ejemplo, el proceso cliente ha caído o la conexión de red se pierde.

Uno de los factores clave para resolver estos problemas es el uso de DCE/RPC como el mecanismo Remote Procedure Call (RPC) subyacente bajo DCOM. DCE/RPC define reglas estrictas en cuanto al aplanamiento y a quién es responsable de liberar la memoria.

DCOM fue uno de los mayores competidores de CORBA. Los defensores de ambas tecnologías sostenían que algún día serían el modelo de código y servicios sobre Internet. Sin embargo, las dificultades que suponía conseguir que estas tecnologías funcionasen a través de cortafuegos y sobre máquinas inseguras o desconocidas, significó que las peticiones HTTP normales, combinadas con los navegadores web les ganasen la partida. Microsoft, en su momento intentó y fracasó anticiparse a esto añadiendo un transporte extra HTTP a DCE/RPC denominado "ncacn_http" (connection-based, over HTTP).

## Versiones alternativas e implementaciones

El Open Group tiene una implementación DCOM llamada COMsource, cuyo código fuente está disponible, así como la documentación completa, suficiente para su uso y suficiente también para implementar una versión interoperable de DCOM. De acuerdo con la documentación, COMsource viene directamente del código fuente de Windows NT 4.0, e incluso incluye el código fuente de un Servicio de Registro de Windows NT.

El equipo de Wine también está implementando DCOM. Lo hacen para conseguir la interoperabilidad binaria, y no están interesados en la parte de distribución sobre la red de DCOM, que es proporcionada por MSRPC. Si bien se centran en implementar representación de datos en red a través de las interfaces de programación de aplicaciones de Microsoft, dicha implementación tratará de ser tan compatible como sea posible con MSRPC.

## Notas y referencias

* ↑ Pro VB 2010 and the.NET 4.0 Platform, 19 de octubre de 2010. ISBN 1-4302-2985-3. ISBN 978-1-4302-2985-8. Pág. 1063.
* ↑ Pro C# 2010 and the.NET 4 Platform. 14 de mayo de 2010. ISBN 1-4302-2549-1. ISBN 978-1-4302-2549-2. Edición: 5, pág. 1014.
