# Distributed Component Object Model

Distributed Component Object Model (abr. DCOM) est une technique propriétaire de Microsoft qui permet la communication entre des composants logiciels distribués au sein d'un réseau informatique. DCOM, appelé à l'origine « Network OLE », étend COM et fournit le substrat sous l'infrastructure du serveur d'application COM+. Il a été rendu obsolète par Microsoft .NET.
L'addition du « D » à COM est due à l'utilisation intensive de DCE/RPC, plus précisément sa version Microsoft, connue sous le nom de MSRPC.
En termes d'extensions ajoutées à COM, DCOM devait résoudre les problèmes de :
* Marshalling – sérialisation et désérialisation des paramètres et des valeurs de retour des appels de méthode à travers le réseau.
* Ramasse-miettes distribué - s'assurant que les références des clients des interfaces soient libérées quand, par exemple, le processus client plantait, ou la connexion réseau était perdue.
Un des facteurs clés de la résolution de ces problèmes est l'utilisation de DCE/RPC comme le mécanisme RPC derrière DCOM. DCE/RPC possède des règles strictement définies à propos de la sérialisation et de la responsabilité de la libération de la mémoire.
DCOM fut un adversaire important de CORBA. Les supporters de ces deux techniques les voyaient un jour devenir le modèle pour la réutilisation de code et de services sur Internet. Cependant les difficultés pour les faire marcher à travers des pare-feu et sur des machines inconnues et non sécurisées, ont impliqué que des requêtes HTTP normales combinées avec des navigateurs web les ont supplantés. Microsoft a, à un moment, essayé et échoué de les atténuer en ajoutant une couche de transport supplémentaire http à DCE/RPC appelée ncacn_http (Network Computing Architecture, Connection-based, over HTTP, littéralement : architecture de réseau informatique, basée sur des connexions, sur HTTP). Ceci fut recyclé plus tard pour supporter des connexions Exchange 2003 sur HTTP.

## Versions et implémentations alternatives

The Open Group possède une implémentation appelée COMsource. Son code source est disponible, avec de la documentation complète, suffisante pour utiliser et implémenter une version interopérable de DCOM. D'après cette documentation, COMsource vient directement du code source de Windows NT 4.0, et inclut même le code source d'une base de registre Windows NT.
L'équipe Wine est aussi en train d'implémenter DCOM pour des questions d'interopérabilités : ils ne sont pas intéressés pour l'instant par le côté réseau de DCOM, fournit par MSRPC. Ils ne peuvent qu'implémenter la NDR (Network Data Representation ou représentation donnée en réseau) via l'API de Microsoft, mais promettent de la rendre aussi compatible que possible avec MSRPC.
j-Interop est une implémentation LGPL de MSRPC en Java pur, qui supporte des applications clientes en Java sur toute plate-forme communiquant avec des serveurs DCOM.
J-Integra est une implémentation commerciale en Java du protocole DCOM qui autorise l'accès aux composants COM à partir de clients Java, et aux objets Java à partir de clients COM.
EntireX DCOM est une complémentation commerciale par Software AG pour Windows, AIX, HP/UX, Solaris, Linux, AS/400, z/OS, z/VM et BS2000/OSD.