Implémentation des objets COM à l'aide d'experts
Remonter à Principes de COM - Index
Delphi facilite l'écriture de serveurs COM en fournissant des experts qui gèrent nombre des problèmes posés. Delphi propose des experts distincts permettant de créer :
- Un simple objet COM
- Un objet Automation
- Une bibliothèque de types
- Une bibliothèque ActiveX
Les experts gèrent beaucoup des problèmes intervenant dans la création de chaque type d'objet. Ils fournissent les interfaces COM requises pour chaque type d'objet. Avec un simple objet COM, l'expert implémente la seule interface COM obligatoire, IUnknown, qui fournit un pointeur d'interface vers l'objet.
Interface d'un objet COM simple :
L'expert objet COM propose également une implémentation de IDispatch si vous spécifiez que vous créez un objet gérant un descendant de IDispatch.
Pour les objets Automation et Active Server, l'expert implémente IUnknown et IDispatch, qui fournissent le marshaling automatique.
Interfaces d'un objet Automation :
Pour les objets contrôles ActiveX et fiches ActiveX, l'expert implémente toutes les interfaces requises par les contrôles ActiveX : IUnknown, IDispatch, IOleObject, IOleControl, etc. Pour obtenir la liste complète des interfaces, reportez-vous à la page de référence de Vcl.AxCtrls.TActiveXControl.
Interfaces d'un contrôle ActiveX :
Le tableau suivant énumère les divers experts et les interfaces qu'ils implémentent :
Experts Delphi qui implémentent des objets COM, Automation et ActiveX :
Expert | Interfaces implémentées | Ce que fait l'expert |
---|---|---|
IUnknown (et IDispatch si vous sélectionnez une interface par défaut qui descend de IDispatch) |
Exporte les routines nécessaires pour gérer le recensement du serveur, le recensement des classes, le chargement et le déchargement du serveur et l'instanciation des objets. Crée et gère les factories de classes pour les objets implémentés sur le serveur. Fournit les entrées de registre pour l'objet spécifiant le modèle de thread sélectionné. Déclare les méthodes qui implémentent l'interface sélectionnée et fournit un squelette d'implémentation que vous devez compléter. Fournit une bibliothèque de types, si elle est demandée. Vous permet de sélectionner une interface arbitraire qui est recensée dans la bibliothèque de types et de l'implémenter. Pour cela, vous devez utiliser une bibliothèque de types. | |
IUnknown, IDispatch |
Effectue les actions d'un expert serveur COM (décrit plus haut) plus : Implémente l'interface spécifiée (dual ou dispatch). Fournit une prise en charge côté serveur de la génération des événements, le cas échéant. Fournit automatiquement une bibliothèque de types. | |
Aucune par défaut |
Crée une nouvelle bibliothèque de types et l'associe au projet actif. | |
Bibliothèque ActiveX |
Aucune par défaut |
Crée une nouvelle bibliothèque de types et l'associe au projet actif. |
Si vous voulez, vous pouvez ajouter d'autres objets COM (ou refaire une implémentation existante). Pour ajouter un nouvel objet, il est plus simple d'utiliser l'expert une seconde fois. En effet, l'expert met en place l'association entre la bibliothèque de types et une classe d'implémentation, ainsi les modifications effectuées dans l'éditeur de bibliothèques de types sont automatiquement appliquées à l'unité d'implémentation.