Compartir a través de


Introducción a la interoperabilidad

La interoperabilidad permite conservar y aprovechar las inversiones existentes en código no administrado. El código que se ejecuta bajo el control de Common Language Runtime (CLR) es código administrado y el código que se ejecuta fuera de CLR es código no administrado. Los componentes COM, COM+, C++, los componentes ActiveX y la API de Microsoft Windows son ejemplos de código no administrado.

.NET permite la interoperabilidad con código no administrado a través de los servicios de invocación de plataforma, el espacio de nombres System.Runtime.InteropServices, la interoperabilidad con C++ y la interoperabilidad con COM (interoperabilidad COM).

Invocación de plataforma

La invocación de plataforma es un servicio que permite que el código administrado llame a funciones no administradas implementadas en bibliotecas de vínculos dinámicos (DLL), como la API de Microsoft Windows. Busca e invoca una función exportada y gestiona sus argumentos (enteros, cadenas, matrices, estructuras, etc.) a través del límite de interoperatividad según sea necesario.

Para obtener más información, vea Consumo de funciones DLL no administradas y Cómo usar la invocación de plataforma para reproducir un archivo WAV.

Nota:

Common Language Runtime (CLR) administra el acceso a los recursos del sistema. La llamada a código no administrado que está fuera de CLR omite este mecanismo de seguridad y, por tanto, presenta un riesgo de seguridad. Por ejemplo, el código no administrado podría llamar directamente a los recursos en código no administrado, omitiendo los mecanismos de seguridad clR. Para obtener más información, consulte Seguridad en .NET.

Interoperabilidad de C++

Puede usar la interoperabilidad de C++, también conocida como It Just Works (IJW), para encapsular una clase nativa de C++. La interoperabilidad de C++ permite que el código creado en C# u otro lenguaje .NET acceda a él. Puede escribir código de C++ para encapsular un componente COM o DLL nativo. A diferencia de otros lenguajes .NET, Visual C++ tiene compatibilidad con la interoperabilidad que permite código administrado y no administrado en la misma aplicación e incluso en el mismo archivo. A continuación, compile el código de C++ mediante el modificador del compilador /clr para generar un ensamblado administrado. Por último, agrega una referencia al ensamblado en tu proyecto de C# y utiliza los objetos envolventes igual que usarías otras clases administradas.

Exponer componentes COM a C#

Puede consumir un componente COM desde un proyecto de C#. Los pasos generales son los siguientes:

  1. Busque un componente COM para usarlo y regístrelo. Use regsvr32.exe para registrar o anular el registro de un archivo DLL COM.
  2. Agregue al proyecto una referencia al componente COM o a la biblioteca de tipos. Al agregar la referencia, Visual Studio usa el Tlbimp.exe (Importador de biblioteca de tipos), que toma una biblioteca de tipos como entrada, para generar un ensamblado de interoperabilidad de .NET. El ensamblado, también denominado contenedor invocable en tiempo de ejecución (RCW), contiene clases administradas e interfaces que encapsulan las interfaces y clases COM que se encuentran en la biblioteca de tipos. Visual Studio agrega al proyecto una referencia al ensamblado generado.
  3. Cree una instancia de una clase definida en el RCW. La creación de una instancia de esa clase crea una instancia del objeto COM.
  4. Use el objeto igual que otros objetos administrados. Cuando el objeto sea reclamado por la recolección de elementos no utilizados, la instancia del objeto COM también se liberará de la memoria.

Para obtener más información, vea Exponer componentes COM en .NET Framework.

Exposición de C# a COM

Los clientes COM pueden consumir tipos de C# que se han expuesto correctamente. Los pasos básicos para exponer tipos de C# son los siguientes:

  1. Agregue atributos de interoperabilidad en el proyecto de C#. Puede hacer que un ensamblado COM esté visible modificando las propiedades del proyecto de C#. Para obtener más información, vea Cuadro de diálogo Información de ensamblado.
  2. Genere una biblioteca de tipos COM y regístrela para el uso de COM. Puede modificar las propiedades del proyecto de C# para registrar automáticamente el ensamblado de C# para la interoperabilidad COM. Visual Studio usa Regasm.exe (herramienta de registro de ensamblados), con el modificador de la línea de comandos /tlb, que toma un ensamblado administrado como entrada, para generar una biblioteca de tipos. Esta biblioteca de tipos describe los public tipos del ensamblado y agrega entradas del Registro para que los clientes COM puedan crear clases administradas.

Para obtener más información, vea Exponer componentes de .NET Framework a COM y clase COM de ejemplo.

Consulte también