Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez aussi afficher la version anglaise dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte.
Traduction
Anglais

COM Wrappers

 

COM diffère du modèle objet .NET Framework sur plusieurs points importants :

  • Les clients des objets COM doivent gérer la durée de vie de ces objets ; le Common Language Runtime gère la durée de vie des objets dans son environnement.

  • Les clients des objets COM déterminent si un service est disponible en demandant une interface qui fournit ce service et en récupérant le cas échéant un pointeur d'interface en retour. Les clients des objets .NET peuvent obtenir une description de la fonctionnalité d'un objet par l'intermédiaire de la fonctionnalité de réflexion.

  • Les objets NET résident dans la mémoire managée par l'environnement d'exécution .NET Framework. Celui-ci peut déplacer des objets dans la mémoire en vue d'améliorer les performances et mettre à jour toutes les références aux objets qu'il déplace. Les clients non managés, ayant obtenu un pointeur désignant un objet, s'attendent à ce que cet objet reste au même emplacement. Ces clients ne disposent d'aucun mécanisme leur permettant d'utiliser un objet dont l'emplacement n'est pas fixe.

Pour triompher de ces différences, le runtime fournit des classes wrapper pour faire croire aux clients à la fois managés et non managés qu'ils appellent des objets dans leur environnement respectif. Chaque fois que votre client managé appelle une méthode sur un objet COM, le runtime crée un wrapper RCW (Runtime Callable Wrapper). Les wrappers RCW permettent, entre autres, de gommer les différences entre les mécanismes de référence managé et non managé. Le runtime crée également un wrapper CCW (COM Callable Wrapper) pour inverser le processus, permettant ainsi à un client COM d'appeler de façon transparente une méthode sur un objet .NET. Ainsi que le montre l'illustration suivante, la perspective du code appelant détermine la classe wrapper créée par le runtime.

Vue d'ensemble du wrapper COM

Wrapper COM : vue d'ensemble

Dans la plupart des cas, les wrappers RCW ou CCW standard générés par le runtime assurent un marshaling adéquat pour les appels qui franchissent la limite séparant COM du .NET Framework. En utilisant des attributs personnalisés, vous pouvez facultativement définir la façon dont le runtime représente le code managé et non managé.

Afficher: