Cette documentation est archivée et n’est pas conservée.

Interopérabilité (Guide de programmation C#)

L'interopérabilité vous permet de conserver et de tirer parti d'investissements existants dans le code non managé. Le code qui est exécuté sous le contrôle du common language runtime (CLR) est appelé « code managé », et le code qui est exécuté en dehors du CLR est appelé « code non managé ». Les composants COM, COM+, C++, les composants ActiveX et les API Win32 sont des exemples de code non managé.

Le .NET Framework permet l'interopérabilité avec le code non managé par le biais de services d'appel de plate-forme, de l'espace de noms System.Runtime.InteropServices et du CLR et par le biais de l'interopérabilité COM (COM Interop).

  • Il existe deux manières d'utiliser les API non managées à partir de code managé : via l'appel de plate-forme et via It Just Works (IJW) en C++. L'appel de plate-forme permet au code managé d'appeler des fonctions exportées d'une bibliothèque de liens dynamiques (DLL) non managée, telles que l'API Win32 et des DLL personnalisées. Le CLR gère le chargement et le marshaling des paramètres des DLL. Du point de vue de la performance, vérifiez s'il existe une fonction équivalente disponible dans le .NET Framework plutôt que d'utiliser l'appel de plate-forme. Pour plus d'informations, consultez Présentation détaillée de l'appel de plate-forme.

  • COM interop, qui permet au code managé d'interagir avec des objets COM par l'intermédiaire d'interfaces et de clients COM. Il existe deux manières d'utiliser des composants COM à partir du code managé :

    • Pour appeler des composants COM compatibles OLE Automation, utilisez COM Interop ou tlbimp.exe. Le CLR gère l'activation et le marshaling des paramètres du composant COM.

    • Pour les composants COM basés sur IDL, utilisez IJW et C++. Chaque classe managée publique qui implémente IUnknown, IDispatch, et d'autres interfaces COM standard, peut être appelée via COM Interop à partir de code non managé. Pour plus d'informations, consultez Microsoft .NET/COM Migration and Interoperability.

Pour plus d'informations, consultez Interopération avec du code non managé et Improving Interop Performance.

PInvoke et COM Interop utilisent tous deux le marshaling pour convertir de code managé en code non managé des arguments tels que des entiers, des chaînes, des tableaux, des structures et des pointeurs. Pour plus d'informations, consultez Vue d'ensemble du marshaling d'interopérabilité.

Pour plus d'informations, consultez les sections suivantes dans Spécifications du langage C#.

  • 10.5.7 Méthodes externes

  • 17.5 Attributs d'interopérabilité

  • 18.8 Allocation de mémoire dynamique

Afficher: