Compartir a través de


Metadatos y componentes autodescriptivos

Hasta ahora, un componente de software (.exe o .dll) escrito en un lenguaje no podía usar fácilmente un componente de software escrito en otro lenguaje. COM supuso un paso adelante en la resolución de este problema. .NET Framework hace la interoperación entre componentes todavía más fácil, permitiendo que los compiladores emitan información de declaración adicional en todos los módulos y ensamblados. Esta información, denominada metadatos, contribuye a que los componentes interactúen sin problemas.

Los metadatos son información binaria que describe un programa, almacenada en un archivo ejecutable portable (PE) de Common Language Runtime o en memoria. Cuando se compila el código en un archivo PE, los metadatos se insertan en una parte del archivo, y el código se convierte al lenguaje intermedio de Microsoft (MSIL) y se inserta en otra parte del archivo. Cada tipo y miembro que se define y al que se hace referencia en un módulo o ensamblado se describe en los metadatos. Cuando se ejecuta código, el motor en tiempo de ejecución carga los metadatos en la memoria y hace referencia a ellos para detectar información acerca de las clases, miembros, herencia, etc., del código.

Los metadatos describen todos los tipos y miembros definidos en el código mediante un lenguaje neutro. Los metadatos almacenan la siguiente información:

  • Descripción del ensamblado

    • Identidad (nombre, versión, referencia cultural, clave pública).

    • Los tipos que se exportan.

    • Otros ensamblados de los que depende éste.

    • Permisos de seguridad que hay que ejecutar.

  • Descripción de los tipos.

    • Nombre, visibilidad, clase base e interfaces implementadas.

    • Miembros (métodos, campos, propiedades, eventos, tipos anidados).

  • Atributos.

    • Elementos descriptivos adicionales que modifiquen los tipos y los miembros.

Ventajas de los metadatos

Los metadatos son la clave para un modelo de programación más sencillo y eliminando la necesidad de tener archivos de Lenguaje de definición de interfaz (IDL), archivos de encabezado o cualquier método externo de referencia a componentes. Los metadatos permiten que los lenguajes de .NET Framework se describan a sí mismos automáticamente independientemente del lenguaje, que no ven ni el programador ni el usuario. Además, los metadatos se pueden extender mediante el uso de atributos. Los metadatos proporcionan las siguientes ventajas principales:

  • Archivos autodescriptivos

    Los módulos y ensamblados de Common Language Runtime son autodescriptivos. Los metadatos de un módulo contienen todo lo necesario para interactuar con otro módulo. Los metadatos proporcionan automáticamente la funcionalidad del IDL en COM, por lo que puede usar un archivo tanto para la definición como para la implementación. Los módulos y ensamblados de Common Language Runtime no necesitan ni registrarse en el sistema operativo. En consecuencia, las descripciones que usa el motor en tiempo de ejecución reflejan siempre el código actual del archivo compilado, lo que aumenta la confiabilidad de la aplicación.

  • Interoperabilidad de lenguajes y diseño más sencillo, basado en el componente.

    Los metadatos proporcionan toda la información necesaria sobre el código compilado para derivar clases de archivos PE escritos en otro lenguaje. Se puede crear una instancia de cualquier clase escrita en cualquier lenguaje administrado (cualquier lenguaje dirigido a Common Language Runtime) sin tener que preocuparse por el cálculo de referencias explícito ni por usar código de interoperabilidad personalizado.

  • Atributos.

    .NET Framework le permite declarar determinados tipos de metadatos, denominados atributos, en el archivo compilado. Los atributos se encuentran en todo .NET Framework y se usan para controlar más minuciosamente el comportamiento del programa en tiempo de ejecución. Además, se pueden emitir metadatos personalizados propios en los archivos .NET Framework mediante atributos personalizados definidos por el usuario. Para obtener más información, vea Extender metadatos mediante atributos.

Temas relacionados

Título

Descripción

Metadatos y la estructura del archivo PE

Describe cómo se almacenan los metadatos independientemente del lenguaje intermedio de Microsoft (MSIL) en un archivo PE.

Uso de metadatos en tiempo de ejecución

Muestra el uso de los metadatos en tiempo de ejecución con un ejemplo de código.

Extender metadatos mediante atributos

Describe cómo aplicar atributos, escribir atributos personalizados y recuperar información almacenada en atributos.