Share via


Información general acerca de la interoperabilidad de lenguajes

Actualización: noviembre 2007

La interoperabilidad entre lenguajes es la posibilidad de que el código interactúe con código escrito en un lenguaje de programación diferente. La interoperabilidad entre lenguajes puede ayudar a maximizar la reutilización de código y, por tanto, puede mejorar la eficacia del proceso de programación.

Dado que los desarrolladores utilizan una gran variedad de herramientas y tecnologías, cada una de las cuales podría admitir distintos tipos y características, desde tiempo atrás ha sido complicado garantizar la interoperabilidad entre lenguajes. No obstante, los compiladores y las herramientas de lenguaje dirigidos a Common Language Runtime se benefician de la compatibilidad que integra el motor en tiempo de ejecución para la interoperabilidad entre lenguajes.

Common Language Runtime ofrece la base necesaria para la interoperabilidad entre lenguajes al especificar e imponer un sistema de tipos común, y al suministrar metadatos. Debido a que todos los lenguajes dirigidos a Common Language Runtime siguen las reglas del sistema de tipos común para definir y utilizar los tipos, la utilización de tipos es coherente entre todos los lenguajes. Los metadatos habilitan la interoperabilidad entre lenguajes mediante la definición de un mecanismo uniforme para almacenar y recuperar la información sobre tipos. Los compiladores almacenan la información sobre tipos como metadatos y Common Language Runtime usa esta información para proporcionar servicios durante la ejecución; el motor en tiempo de ejecución puede administrar la ejecución de aplicaciones de varios lenguajes porque toda la información de tipos se almacena y recupera de la misma forma, independientemente del lenguaje en que se haya escrito el código.

El código administrado se beneficia de que el motor en tiempo de ejecución admita la interoperabilidad entre lenguajes de las maneras siguientes:

  • Los tipos pueden heredar la implementación de otros tipos, pasar objetos a los métodos de otro tipo y llamar a métodos definidos para otros tipos, sea cual sea el lenguaje en que se implementen los tipos.

  • Los depuradores, generadores de perfiles u otras herramientas deben reconocer un solo entorno, es decir, MSIL (Microsoft intermediate language, Lenguaje intermedio de Microsoft) y los metadatos de Common Language Runtime, para poder ser compatibles con cualquier lenguaje de programación dirigido al motor en tiempo de ejecución.

  • El control de excepciones es coherente entre todos los lenguajes. El código puede producir una excepción en un lenguaje y esa excepción puede ser recibida y reconocida por un objeto escrito en otro lenguaje.

Aunque el motor en tiempo de ejecución permite que todo el código administrado se ejecute en un entorno de múltiples lenguajes, no existe ninguna garantía de que la funcionalidad de los tipos creados pueda ser utilizada completamente por los lenguajes de programación que usen otros desarrolladores. La razón principal es que el compilador de un lenguaje dirigido a Common Language Runtime usa el sistema de tipos y los metadatos que son compatibles con un conjunto de características de lenguaje propio y exclusivo. Si no se sabe en qué lenguaje se va a escribir el código que realiza la llamada, existen pocas posibilidades de saber si las características que expone un componente van a estar accesibles para el llamador. Por ejemplo, si el lenguaje que ha elegido proporciona compatibilidad para enteros sin signo, podría diseñar un método con un parámetro de tipo UInt32; sin embargo, ese método sería inútil para un lenguaje que no reconociese los enteros sin signo.

Para garantizar que el código administrado será accesible para los desarrolladores que utilicen cualquier lenguaje de programación, .NET Framework proporciona Common Language Specification (CLS), que describe un conjunto fundamental de características de lenguaje y define reglas sobre cómo utilizar dichas características. Para obtener más información sobre la compatibilidad con CLS en componentes y herramientas, vea Escribir código conforme con CLS.

Vea también

Conceptos

Common Language Specification

Escribir código conforme con CLS

Otros recursos

Información general acerca de .NET Framework

Sistema de tipos comunes

Metadatos y componentes autodescriptivos