Interfaces COM
Remonter à Composantes d'une application COM
Les clients COM communiquent avec des objets par le biais d'interfaces COM. Les interfaces sont des groupes de routines, liées par la logique ou par la sémantique, qui assurent la communication entre le fournisseur d'un service (objet serveur) et ses clients. Voici la représentation standard d'une interface COM :
Par exemple, tout objet COM doit implémenter l'interface de base, L'interface COM de base, IUnknown. Via une routine appelée QueryInterface de IUnknown, les clients peuvent demander les autres interfaces implémentées par le serveur.
Les objets peuvent avoir plusieurs interfaces, où chacune implémente une fonctionnalité. L'interface est le moyen de mettre à disposition du client le service fourni par l'objet, sans lui donner les détails de l'implémentation sur la façon dont ce service est fourni.
Les aspects majeurs des interfaces COM sont les suivants :
- Une fois publiées, les interfaces sont immuables ; c'est-à-dire qu'elles ne changent plus. Une interface permet d'accéder à un ensemble précis de fonctions. Les fonctionnalités supplémentaires sont fournies par le biais d'interfaces supplémentaires.
- Par convention, les identificateurs d’interfaces COM commencent par un I majuscule suivi d’un nom symbolique définissant l’interface, comme IMalloc ou IPersist.
- L'identification unique des interfaces est garantie par un GUID (Globally Unique Identifier), qui est un nombre aléatoire de 128 bits. Les GUID utilisés pour identifier les interfaces sont appelés IID (Identificateurs d'interfaces). Ils permettent d'éliminer les conflits de noms entre différentes versions d'un produit ou différents produits.
- Les interfaces sont indépendantes du langage. Vous pouvez utiliser n'importe quel langage pour implémenter une interface COM, à condition que ce langage supporte les structures de pointeurs et puisse appeler une fonction via un pointeur, de façon explicite ou implicite.
- Les interfaces ne sont pas elles-mêmes des objets ; elles fournissent l'accès à un objet. Donc, les clients n'ont pas accès directement aux données ; ils accèdent aux données par le biais d'un pointeur d'interface. Windows 2000 ajoute une couche supplémentaire d'indirection connue en tant qu'intercepteur à partir duquel il fournit des fonctionnalités COM+ telles que l'activation just-in-time et le regroupement d'objets.
- Les interfaces sont toujours dérivées de l'interface de base, IUnknown.
- Les interfaces peuvent être redirigées par COM via des proxy pour permettre aux appels de méthodes de l'interface de s'effectuer entre différents threads, processus et machines en réseau, sans que les objets client ou serveur ne soient jamais informés de la redirection. Pour plus d'informations, voir Serveurs en processus, hors processus et distants.