Partager via


Vue d’ensemble de l’interopérabilité

L’interopérabilité vous permet de conserver et de tirer parti des investissements existants dans du code non managé. Le code qui s’exécute sous le contrôle du Common Language Runtime (CLR) est du code managé, et le code qui s’exécute en dehors du CLR n’est pas managé. Les composants COM, COM+, C++, Les composants ActiveX et l’API Microsoft Windows sont des exemples de code non managé.

.NET permet l’interopérabilité avec du code non managé par le biais de services d’appel de plateforme, de l’espace de noms, de l’interopérabilité System.Runtime.InteropServices C++ et de l’interopérabilité COM (COM Interop).

Appel de plateforme

L’appel de plateforme est un service qui permet au code managé d’appeler des fonctions non managées implémentées dans des bibliothèques de liens dynamiques (DLL), telles que l’API Microsoft Windows. Il localise et appelle une fonction exportée et marshale ses arguments (entiers, chaînes, tableaux, structures, et ainsi de suite) sur la limite d’interopérabilité si nécessaire.

Pour plus d’informations, consultez Consommation de fonctions DLL non managées et Guide pratique pour utiliser l’appel de plateforme pour lire un fichier WAV.

Remarque

Le Common Language Runtime (CLR) gère l’accès aux ressources système. L’appel de code non managé qui se trouve en dehors du CLR contourne ce mécanisme de sécurité et présente donc un risque de sécurité. Par exemple, le code non managé peut appeler des ressources directement dans du code non managé, en contournant les mécanismes de sécurité CLR. Pour plus d’informations, consultez Sécurité dans .NET.

Interopérabilité C++

Vous pouvez utiliser l’interopérabilité C++, également appelée It Just Works (IJW), pour encapsuler une classe C++ native. L’interopérabilité C++ active le code créé en C# ou un autre langage .NET pour y accéder. Vous écrivez du code C++ pour encapsuler une DLL native ou un composant COM. Contrairement à d’autres langages .NET, Visual C++ prend en charge l’interopérabilité qui active le code managé et non managé dans la même application et même dans le même fichier. Vous générez ensuite le code C++ à l’aide du commutateur du compilateur /clr pour produire un assembly managé. Enfin, vous ajoutez une référence à l’assembly dans votre projet C# et utilisez les objets encapsulés comme vous utiliseriez d’autres classes managées.

Exposition de composants COM à C#

Vous pouvez utiliser un composant COM à partir d’un projet C#. Les étapes générales sont les suivantes :

  1. Recherchez un composant COM à utiliser et inscrivez-le. Utilisez regsvr32.exe pour inscrire ou annuler l’inscription d’une DLL COM.
  2. Ajoutez au projet une référence au composant COM ou à la bibliothèque de types. Lorsque vous ajoutez la référence, Visual Studio utilise l' Tlbimp.exe (Importateur de bibliothèque de types) qui prend une bibliothèque de types comme entrée, pour générer un assembly d’interopérabilité .NET. L’assembly, également nommé wrapper pouvant être appelé au runtime (RCW), contient des classes managées et des interfaces qui encapsulent les classes et interfaces COM qui se trouvent dans la bibliothèque de types. Visual Studio ajoute au projet une référence à l’assembly généré.
  3. Créez une instance d’une classe définie dans rcW. La création d’une instance de cette classe crée une instance de l’objet COM.
  4. Utilisez l’objet comme vous utilisez d’autres objets managés. Lorsque l’objet est récupéré par la collecte des déchets, l’instance de l’objet COM est également libérée de la mémoire.

Pour plus d’informations, consultez Exposing COM Components to the .NET Framework.

Exposition de C# à COM

Les clients COM peuvent utiliser des types C# qui ont été correctement exposés. Les étapes de base pour exposer les types C# sont les suivantes :

  1. Ajoutez des attributs d’interopérabilité dans le projet C#. Vous pouvez rendre un assembly COM visible en modifiant les propriétés du projet C#. Pour plus d’informations, consultez la boîte de dialogue Informations sur l’assemblage.
  2. Générez une bibliothèque de types COM et inscrivez-la pour une utilisation COM. Vous pouvez modifier les propriétés du projet C# pour inscrire automatiquement l’assembly C# pour l’interopérabilité COM. Visual Studio utilise l'outil Regasm.exe (outil d’enregistrement d’assembly) à l’aide du commutateur de ligne de commande /tlb, qui prend un assembly géré comme entrée, pour générer une bibliothèque de type. Cette bibliothèque de types décrit les public types dans l’assembly et ajoute des entrées de Registre afin que les clients COM puissent créer des classes managées.

Pour plus d’informations, consultez Exposing .NET Framework Components to COM and Example COM Class.

Voir aussi