DCOM ( COM distribuido en inglés ) es una extensión del estándar del modelo de objetos componentes para admitir la comunicación entre objetos en diferentes computadoras a través de una red .
Para crear un objeto en una máquina remota, la biblioteca COM llama al administrador de control de servicios (SCM) de la computadora local, que se comunica con el SCM del servidor y le envía una solicitud para crear un objeto. El nombre del servidor puede especificarse al llamar a la función de creación de objetos o almacenarse en el registro.
Para llamar a un objeto remoto, los parámetros deben extraerse de la pila (o de los registros del procesador ), colocarse en un búfer y transmitirse a través de la red. El proceso de extraer parámetros y colocarlos en un búfer se denomina cálculo de referencias . Este proceso no es trivial, ya que los parámetros pueden contener punteros a matrices y estructuras, que a su vez pueden contener punteros a otras estructuras. En el servidor, se realiza el proceso inverso de volver a crear la pila, llamado desagregación, después de lo cual se llama al objeto requerido. Cuando se completa la llamada, el valor de retorno y los parámetros de salida se calculan y se envían al cliente .
Para realizar la clasificación y la anulación de la clasificación, debe tener una descripción precisa del método, incluidos todos los tipos de datos y tamaños de matriz. La descripción utiliza el lenguaje de descripción de interfaz (IDL) incluido en el estándar DCE RPC . Los archivos de descripción resultantes son compilados por un compilador IDL especial en código fuente C que clasifica y desclasifica para las interfaces especificadas . El código que se ejecuta en el lado del cliente se denomina "proxy", en el lado del objeto se denomina " stub " y la biblioteca COM lo carga según sea necesario.
El protocolo DCOM, conocido como Object RPC (ORPC), es una extensión del protocolo DCE RPC. ORPC usa paquetes RPC estándar con información adicional requerida por DCOM. El encabezado de la llamada contiene un identificador de puntero de interfaz (IPID) que se usa para identificar la interfaz requerida del objeto requerido en el servidor, y los parámetros comienzan con un argumento implícito adicional.
Los datos en el paquete ORPC se transmiten en el formato NDR estándar con un tipo de datos adicional que representa el identificador de objeto.
El cliente debe confirmar periódicamente su actividad haciendo "ping" al servidor. Si el período de ping expira sin recibir un ping, se considera que el cliente se bloqueó y se destruyen todas sus referencias a las interfaces del objeto.