Bibliothèques COM, DCOM et types

Com (Component Object Model) et DCOM (Distributed Component Object Model) utilisent des appels rpc (Remote Procedure Calls) pour permettre aux objets de composant distribués de communiquer entre eux. Ainsi, une interface COM ou DCOM définit l’identité et les caractéristiques externes d’un objet COM. Il constitue le moyen par lequel les clients peuvent accéder aux méthodes et données d’un objet. Avec DCOM, cet accès est possible, que les objets existent dans le même processus, des processus différents sur la même machine ou sur des ordinateurs différents. Comme avec les interfaces client/serveur RPC, un objet COM ou DCOM peut exposer ses fonctionnalités de différentes manières et via plusieurs interfaces.

Bibliothèque de types

Une bibliothèque de types (.tlb) est un fichier binaire qui stocke des informations sur les propriétés et méthodes d’un objet COM ou DCOM dans un formulaire accessible à d’autres applications au moment de l’exécution. À l’aide d’une bibliothèque de types, une application ou un navigateur peut déterminer les interfaces prises en charge par un objet et appeler les méthodes d’interface d’un objet. Cela peut se produire même si l’objet et les applications clientes ont été écrites dans différents langages de programmation. L’environnement d’exécution COM/DCOM peut également utiliser une bibliothèque de types pour fournir un marshaling inter-appartements, inter-processus et inter-ordinateurs automatique pour les interfaces décrites dans les bibliothèques de types.

Caractéristiques d’une interface

Vous définissez les caractéristiques d’une interface dans un fichier de définition d’interface (IDL) et un fichier de configuration d’application (ACF) facultatif :

  • Le fichier IDL spécifie les caractéristiques des interfaces de l’application sur le réseau, c’est-à-dire la façon dont les données doivent être transmises entre le client et le serveur, ou entre les objets COM.
  • Le fichier ACF spécifie des caractéristiques d’interface, telles que les handles de liaison, qui se rapportent uniquement à l’environnement d’exploitation local. Le fichier ACF peut également spécifier comment marshaler et transmettre une structure de données complexe sous une forme indépendante de l’ordinateur.

Pour plus d’informations sur les fichiers IDL et ACF, consultez Fichiers IDL et ACF.

Les fichiers IDL et ACF sont des scripts écrits en MIDL (Microsoft Interface Definition Language), qui est l’implémentation Microsoft et l’extension du langage IDL (OSF-DCE Interface Definition Language). Les extensions Microsoft du langage IDL vous permettent de créer des interfaces COM et des bibliothèques de types. Le compilateur, Midl.exe, utilise ces scripts pour générer des stubs et des fichiers d’en-tête en langage C, ainsi que des fichiers de bibliothèque de types.

Compilateur MIDL

En fonction du contenu de votre fichier IDL, le compilateur MIDL génère l’un des fichiers suivants.

Un fichier proxy/stub en langage C, un fichier d’identificateur d’interface, un fichier de données DLL et un fichier d’en-tête associé pour une interface COM personnalisée. Le compilateur MIDL génère ces fichiers lorsqu’il rencontre l’attribut object dans une liste d’attributs d’interface. Pour plus d’informations sur ces fichiers, consultez Fichiers générés pour une interface COM.

Un fichier de bibliothèque de types compilé (.tlb) et un fichier d’en-tête associé. MIDL génère ces fichiers lorsqu’il rencontre une instruction de bibliothèque dans le fichier IDL. Pour obtenir des informations générales sur les bibliothèques de types, consultez Contenu d’une bibliothèque de types dans la référence du programmeur Automation.

Les fichiers stub du client et du serveur en langage C/C++, ainsi que le fichier d’en-tête associé pour une interface RPC. Ces fichiers sont générés lorsqu’il existe des interfaces dans le fichier IDL qui n’ont pas l’attribut object . Pour obtenir une vue d’ensemble des fichiers stub et d’en-tête, consultez Procédure de génération générale. Pour plus d’informations, consultez Fichiers générés pour une interface RPC.