Mécanismes d'appels
Les serveurs peuvent être de plusieurs formes. Ce peut être une DLL ou un fichier portant l'extension .EXE. Ce dernier format permet à la fois d'appeler un serveur COM se trouvant sur sa propre machine (en local) ou sur un autre ordinateur (mode « remote »).
Regardons le fonctionnement général de ces trois formats de serveurs.
Serveur sous forme de DLL
Les échanges entre clients et serveurs se font en plusieurs étapes.
Première étape : le client demande au processus COM de se connecter
Deuxième étape : le serveur est chargé dans la zone mémoire du client.
Troisième étape : le client appelle des interfaces au serveur et s'en sert pour exécuter des méthodes.
Quatrième étape : le client demande à COM de décharger la DLL.
Serveur local sous forme de fichier exécutable
Les mêmes étapes sont réalisées ici : le client fait parvenir une demande de connexion à COM qui va lire dans la base de registres l'emplacement sur disque du serveur. COM lance ensuite une instance de ce serveur. Les deux entités (le client et le serveur) dialoguent via COM. C'est le client qui met fin à la communication.
Le processus COM se matérialise sous forme d'une fenêtre invisible.
Serveur distant sous forme de fichier exécutable
Toutes les étapes se font de la même manière. En premier lieu, le client lancé sur la machine A, demande à COM de lancer une instance du serveur sur une machine distante (machine B). Le processus COM (machine A) envoie donc un message au processus COM de la machine du serveur (B). Le serveur est d'abord localisé sur le disque dur à l'aide de la base de registres puis est lancé par la machine B. Le client va utiliser la même voie de communication pour appeler les méthodes du serveur, COM s'occupant de faire transiter les informations nécessaires par le réseau (via RPC : Remote Procedure Call).
Une fois que le client n'a plus besoin des services du serveur, il demande à COM de le libérer. Le processus COM de la machine B demande alors au serveur de se décharger. Comme toujours, le serveur ne sera effectivement déchargé que lorsqu'il ne sera plus référencé par aucun client.
Comme dans le mode serveur local, le processus COM se matérialise sous forme d'une fenêtre invisible.