Interoperabilidad entre lenguajes
En esta sección se describe la compatibilidad integrada en Common Language Runtime para la interoperabilidad entre lenguajes y se explica el rol que desempeña Common Language Specification (CLS) a la hora de permitir una interoperabilidad entre lenguajes garantizada.
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 elegido proporciona compatibilidad con enteros sin signo, podría diseñar un método con un parámetro de tipo UInt32. Sin embargo, ese método no se podría usar en un lenguaje que no tuviera ninguna noción de los enteros sin signo.
Para garantizar que el código administrado será accesible para los desarrolladores que empleen otros lenguajes 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 usar 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.
Temas relacionados
Título |
Descripción |
---|---|
Explica la necesidad de que exista un conjunto de características comunes para todos los lenguajes e identifica las reglas y características de CLS. |
|
Discute el significado de la conformidad con CLS para los componentes e identifica los niveles de conformidad con CLS para las herramientas. |
|
Explica cómo declara, usa y administra los tipos Common Language Runtime. |
|
Explica el mecanismo que utiliza Common Language Runtime para describir un tipo y para almacenar esa información con el tipo. |