El manifiesto del ensamblado

El manifiesto del ensamblado

Ya que uno de los imperativos de la tecnología .NET, radica en que todos los componentes que se ejecuten dentro de la plataforma sean auto descritos, esto es, que no necesiten de elementos exteriores al propio componente para obtener información acerca del mismo, la forma que tienen los ensamblados de proporcionar esta información, es a través de metadatos contenidos en su interior. Los metadatos de un ensamblado reciben el nombre de manifiesto.

Un manifiesto contiene la siguiente información: • Nombre. Una cadena con el nombre del ensamblado. • Versión. Número de versión. • Cultura. Información sobre idioma y otros elementos culturales que soporta el ensamblado. • Nombre seguro. En el caso de ensamblados compartidos, este nombre permite identificar al

ensamblado a través de una clave. • Lista de ficheros. Los nombres y un resumen de cada uno de los ficheros que forman el

ensamblado.

© Grupo EIDOS 3. .NET Framework, nuevos cimientos para la nueva generación de aplicaciones

• Referencia de tipos. Información que usa el entorno para localizar el código IL de cada uno

de los tipos que contiene el ensamblado. • Ensamblados referenciados. Lista de los ensamblados con los que el actual mantiene

dependencias. De los puntos que acabamos de describir, los cuatro primeros forman lo que se denomina la identidad

del ensamblado. El manifiesto se almacena, dependiendo del modo de creación del ensamblado, de las siguientes

maneras: • Si el ensamblado es de fichero único, la información del manifiesto se añade al fichero

ejecutable .EXE o DLL (con formato PE) resultante. • Si el ensamblado es de fichero múltiple, la información del manifiesto se graba en un fichero

independiente (también con formato PE, pero que en este caso no es ejecutable), que sólo contiene los datos del manifiesto (aunque también se puede añadir a uno de los ficheros DLL o EXE que componen el ensamblado).

La siguiente sección, nos proporciona una información más detallada del lugar en el que es grabado el manifiesto dependiendo del tipo de ensamblado.

Tipos de ensamblado según contenido

Según el modo en que agrupemos sus elementos, obtendremos uno de los siguientes tipos de ensamblado:

• Ensamblado de fichero único. Está compuesto por un sólo fichero con formato PE (ejecutable transportable), bien .EXE o .DLL, en el que se incluyen todos los elementos

necesarios. En este tipo de ensamblado, el manifiesto se encuentra integrado dentro del propio fichero. Ver Figura 19.

Figura 19. Estructura de un ensamblado de fichero único.

Programación con Visual Basic .NET © Grupo EIDOS

• Ensamblado de múltiples ficheros. Esta compuesto por un conjunto de ficheros. La ventaja

de este tipo de ensamblado, reside en que podemos diseñarlo para optimizar la descarga de sus tipos, en función de la frecuencia con que sean utilizados.

Por ejemplo, podemos desarrollar una aplicación en la que existan varias clases, de las que algunas son utilidades generales, y otras son específicas de la aplicación; por último tenemos también un gráfico que usaremos en el interfaz de usuario.

En una situación como esta, podemos agrupar las clases específicas en una librería y las de utilidad en un módulo independiente, dejando el gráfico en su propio fichero, que sólo consumirá recursos cuando sea referenciado, optimizando de esta manera el rendimiento de la aplicación. El manifiesto en este caso, puede ser creado en un fichero aparte.

La Figura 20 muestra un esquema de ensamblado con múltiples ficheros.

Figura 20. Estructura de un ensamblado de múltiples ficheros.

Un aspecto muy importante a tener en cuenta con referencia a este tipo de ensamblados, consiste en que los ficheros que lo componen, no están conectados físicamente (no se compilan a un fichero destino); es el manifiesto del ensamblado el que se encarga de mantener las referencias, de manera que el CLR al ejecutar el ensamblado, lee el manifiesto para averiguar que elementos lo forman, y así poder manipular el ensamblado como una entidad ejecutable única.

Este aspecto de la arquitectura de los ensamblados es de suma importancia, ya que un mismo fichero, conteniendo uno o varios módulos compilados en IL, puede formar parte al mismo tiempo de varios ensamblados, al no estar conectado físicamente con ninguno de ellos, sólo a través del manifiesto. Ver Figura 21.

© Grupo EIDOS 3. .NET Framework, nuevos cimientos para la nueva generación de aplicaciones

Figura 21. El manifiesto de cada ensamblado maneja las referencias a los ficheros que componen el ensamblado.

Tipos de ensamblado según ámbito

En función del lugar desde el que podamos acceder a un ensamblado, podemos clasificarlos en dos categorías:

• Privados. Un ensamblado privado es aquél que sólo es empleado por la aplicación, quedando situado en su mismo directorio. Como hemos indicado anteriormente, este es el modo por

defecto en que se crean los ensamblados. • Compartidos. Un ensamblado compartido, como su propio nombre indica, puede ser utilizado

por varias aplicaciones. A diferencia de un ensamblado privado, que sólo es visible desde la propia aplicación, y se encuentra instalado en el directorio de esta, un ensamblado compartido debe exponer su funcionalidad al exterior; este motivo, hace que deban ser tenidos en cuenta factores adicionales, como la localización del ensamblado, seguridad en cuanto a accesos, versiones, etc., para que no entren en conflicto con el resto de ensamblados compartidos del sistema. Estos aspectos serán tratados a continuación