Serveurs en processus, hors processus et distants

De RAD Studio
Aller à : navigation, rechercher

Remonter à Serveurs COM


Avec COM, un client n'a pas besoin de savoir où réside un objet, il suffit de faire un appel à une interface de l'objet. COM accomplit les étapes nécessaires à cet appel. Ces étapes sont différentes selon que l'objet réside dans le même processus que le client, dans un autre processus sur la machine du client ou sur une autre machine du réseau. Ces différents types de serveurs sont décrits ici :

Serveur en processus

Une bibliothèque (DLL) s'exécutant dans le même espace processus que le client, par exemple, un contrôle ActiveX incorporé dans une page Web visualisée sous Internet Explorer ou Netscape. Le contrôle ActiveX est alors téléchargé sur la machine du client et appelé dans le même processus que le navigateur Web. Le client communique avec le serveur en processus grâce à des appels directs à l'interface COM.

Serveur hors processus (ou serveur local)

Une autre application (EXE) s'exécutant dans un espace processus différent mais sur la même machine que le client. Par exemple, une feuille de calcul Excel incorporée dans un document Word constitue deux applications distinctes tournant sur la même machine. Le serveur local utilise COM pour communiquer avec le client.

Serveur distant

Une DLL ou une autre application s'exécutant sur une machine différente de celle du client. Par exemple, une application Delphi de base de données connectée à un serveur d'application sur une autre machine du réseau. Le serveur distant utilise des interfaces COM distribuées (DCOM) pour accéder aux interfaces et communiquer avec le serveur d'application.


Comme illustré dans la figure suivante, pour les serveurs en processus, les pointeurs sur les interfaces de l'objet sont dans le même espace processus que le client, et COM fait des appels directs dans l'implémentation de l'objet.

Serveur en processus

Remarque : Cela n'est pas toujours vrai avec COM+. Quand le client appelle un objet dans un contexte différent, COM+ intercepte l'appel afin qu'il se comporte comme l'appel d'un serveur hors processus (voir plus bas) même si le serveur est en processus.

Comme illustré dans la figure suivante, quand le processus est soit différent, soit sur une autre machine, COM utilise un proxy pour initier les appels de procédure distants. Le proxy réside dans le même processus que le client, de sorte que vu du client, tous les appels à des interfaces semblent pareils. Le proxy intercepte l'appel du client et le transmet là où l'objet réel s'exécute. Le mécanisme qui permet aux clients d'accéder aux objets d'un espace processus différent, ou même d'une machine différente, comme s'ils se trouvaient dans leur propre processus, est appelé le marshaling.

Serveurs hors processus et distants

La différence entre les serveurs hors processus et serveurs distants est le type de communication inter-processus utilisé. Le proxy utilise COM pour communiquer avec un serveur hors processus et COM distribué (DCOM) pour communiquer avec une machine distante. DCOM transfère de manière transparente une demande d'objet local dans l'objet distant s'exécutant sur une autre machine.

Remarque : Pour les appels de procédure à distance, DCOM utilise le protocole RPC fourni par le DCE (Distributed Computing Environment) d'Open Group. Pour la sécurité distribuée, DCOM utilise le protocole de sécurité NTLM (NT LAN Manager). Pour les services de répertoires, DCOM utilise le DNS (Domain Name System).

Voir aussi