Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

Wrappers COM

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.

Wrapper COM : vue d'ensemble

Vue d'ensemble du wrapper COM

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é.

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft