Implémentation des objets COM à l'aide d'experts

De RAD Studio
Aller à : navigation, rechercher

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 :

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 :

Interfaces d'un contrôle ActiveX

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 :

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

Serveur COM

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.

Serveur Automation

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.

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.

Rubriques