200 likes | 364 Views
Los ensamblados y el código IL. Contenido. Módulo ¿Qué es un Ensamblado? El código MSIL. Módulos. En .NET Framework se llama Módulo a un archivo DLL o EXE. Contiene código en Lenguaje Intermedio (IL), metadatos y opcionalmente el manifiesto del Ensamblado ( Assembly ).
E N D
Contenido • Módulo • ¿Qué es un Ensamblado? • El código MSIL
Módulos • En .NET Framework se llama Módulo a un archivo DLL o EXE. • Contiene código en Lenguaje Intermedio (IL), metadatos y opcionalmente el manifiesto del Ensamblado (Assembly). • Pueden ser de 2 tipos: • Archivos de Recursos. • Archivos de Código compilado.
Ensamblado • Un ensamblado es la unidad mínima (primaria) de distribución, implantación y versionado en .NET • Es autodescriptivo e independiente de la plataforma. • Tiene extensión DLL o EXE (PE) • Compuesto de un manifiesto y de uno o más módulos. • Parecido al código ensamblador, pero de alto nivel. • Todas las aplicaciones .NET generan código MSIL.
Descripción de Tipos Clases Clases Base Interfaces Implementadas Atributos de las Clases Métodos de las Clases MiBiblioteca.DLL Metadata Manifiesto del Assembly Código CompiladoMSIL Nombre Versión Cultura Recursos Otros Assemblies Permisos de Seguridad Tipos Externos Assembly
NETModule • En .NET, existe un tercer tipo de archivo (que no es un ensamblado, sino parte de él). • Se utiliza para conformar un solo ensamblado de varios archivos. • Son archivos con extensión *.netmodule • No se pueden utilizar directamente como ensamblados. • Un módulo no es un ensamblado, sino sólo una pieza para formar uno.
Assemby sencillo Assembly complejo A.netmodule Manifest (No Assembly Metadata) ThisAssembly.dll ThisAssembly.dll Metadata Manifest Manifest MSIL MetaData MetaData MSIL MSIL B.netmodule Resources Resources Manifest (No Assembly Metadata) Metadata MSIL Tipos de Ensamblados
Características de un Assembly • Unidad de distribución • Uno o mas archivos independientemente del empaquetado ( packaging) • Auto descriptivo usando el metadata • Reflection • Versionado • Capturada por el Compilador • Frontera de Seguridad • Contienen permisos de ejecución • Seguridad basada en evidencias • Los métodos pueden demandar pruebas de permisos concedido para todo el proceso de ejecución.
Que es el Metadata? • Describe a un assembly • Identifica: Nombre, versión, Cultura, Llaves publicas • Que tipos son exportados • A que otros assemblys hace referencia • Permisos que se necesitan para la ejecución • Descripción de tipos • Nombre, visibilidad, clases base, interfaces que implementa • Miembros ( métodos, campos, propiedades, eventos, tipos anidados) • Sentencias declarativas • Atributos definido por el usuario • Atributos definidos por el compilador • Atributos definidos por el framework
Global Assembly Cache • Cache a nivel máquina • Almacena assemblies que deben ser compartidos por diferentes aplicaciones • Instalar en GAC solo los assemblies que deben ser compartidos y mantener privados a los que no • Para instalar en GAC un assembly • Utilizar un instalador • Utilizar la herramienta gacutil.exe • Utilizar el Windows Explorer para arrastrar los assemblies al cache
Que son los AppDomains? • Procesos lógicos dentro del CLR • Corren dentro de un proceso del Sistema Operativo • Un proceso del sistema operativo puede contener varios AppDomains • Es mucho mas barato que múltiple procesos del sistema operativo • Mucho menos costoso el intercambio de ejecución • Un assembly y sus tipos son siempre cargados dentro de un AppDomain • Provee una frontera para • Fallos • Tipos • Seguridad
Assemblies - Aplicaciones .NET • Al ejecutar una aplicación, ¿cómo ubico los assemblies necesarios? • El ClassLoader busca en el directorio local (preferido) • Global Assembly Cache (GAC) • Diferentes aplicaciones pueden usar diferentes versiones • Actualizaciones más simples • Desinstalación más simple
MSIL • Microsoft IntermediateLanguage Es el lenguaje nativo de .NET. • Como su nombre lo indica es el Lenguaje Intermedio entre la aplicación y el procesador. • Independiente al Procesador en el que se vaya a ejecutar. • Parecido al código ensamblador, pero de alto nivel. • Todas las aplicaciones .NET generan código MSIL.
ILDASM • Herramienta para navegar por el IL de un PE