Los ensamblados y el código IL
description
Transcript of Los ensamblados y el código IL
![Page 1: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/1.jpg)
![Page 2: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/2.jpg)
Los ensamblados y el código IL
![Page 3: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/3.jpg)
ContenidoMódulo¿Qué es un Ensamblado?El código MSIL
![Page 4: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/4.jpg)
MódulosEn .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.
![Page 5: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/5.jpg)
EnsambladoUn ensamblado es la unidad mínima (primaria) de distribución, implantación y versionado en .NETEs 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.
![Page 6: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/6.jpg)
Assembly
Metadata
Código CompiladoMSIL
Recursos
MiBiblioteca.DLL
Descripción de TiposClasesClases BaseInterfaces ImplementadasAtributos de las ClasesMétodos de las Clases
NombreVersiónCultura
Manifiesto del Assembly
Otros AssembliesPermisos de SeguridadTipos Externos
![Page 7: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/7.jpg)
NETModuleEn .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 *.netmoduleNo se pueden utilizar directamente como ensamblados.Un módulo no es un ensamblado, sino sólo una pieza para formar uno.
![Page 8: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/8.jpg)
Tipos de Ensamblados
Assemby sencillo
Resources
MSIL
MetaData
Manifest
ThisAssembly.dll
Resources
MSIL
MetaData
Manifest
ThisAssembly.dll
MSIL
Metadata
A.netmodule
B.netmodule
Manifest(No Assembly Metadata)
MSIL
Metadata
Manifest(No Assembly Metadata)
Assembly complejo
![Page 9: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/9.jpg)
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.
![Page 10: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/10.jpg)
Que es el Metadata?Describe a un assembly
Identifica: Nombre, versión, Cultura, Llaves publicasQue tipos son exportadosA que otros assemblys hace referenciaPermisos que se necesitan para la ejecución
Descripción de tiposNombre, visibilidad, clases base, interfaces que implementaMiembros ( métodos, campos, propiedades, eventos, tipos anidados)
Sentencias declarativasAtributos definido por el usuarioAtributos definidos por el compiladorAtributos definidos por el framework
![Page 11: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/11.jpg)
Manifiest
![Page 12: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/12.jpg)
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
![Page 13: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/13.jpg)
Que son los AppDomains?Procesos lógicos dentro del CLR
Corren dentro de un proceso del Sistema OperativoUn 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 AppDomainProvee una frontera para
FallosTiposSeguridad
![Page 14: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/14.jpg)
CLR, AppDomains y Assemblies
Operating System ProcessOperating System Process
CLR (MSCOREE.DLL)
AppDomain A AppDomain B
Assembly1.dll
Assembly2.dll
AssemblyMain.exe
Assembly3.dll
Assembly4.dll
Type A Type B
Type C Type D
Type E Type F
Type Q
Type X Type YType P
Assembly1.dll
Type A Type B
![Page 15: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/15.jpg)
Assemblies - Aplicaciones .NET
Al ejecutar una aplicación, ¿cómo ubico los assemblies necesarios?
El Class Loader busca en el directorio local (preferido)Global Assembly Cache (GAC)
Diferentes aplicaciones pueden usar diferentes versiones
Actualizaciones más simplesDesinstalación más simple
![Page 16: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/16.jpg)
Ensamblado
![Page 17: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/17.jpg)
MSILMicrosoft Intermediate Language 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.
![Page 18: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/18.jpg)
CLR - MSIL
.method private hidebysig static void Main(string[] args) cil managed {
.entrypoint maxstack 8 L_0000: ldstr "Hola Mundo" L_0005: call void
[mscorlib]System.Console::WriteLine(string) L_000a: ret }
![Page 19: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/19.jpg)
Código MSIL
![Page 20: Los ensamblados y el código IL](https://reader035.fdocuments.net/reader035/viewer/2022062502/568149eb550346895db717bb/html5/thumbnails/20.jpg)
ILDASMHerramienta para navegar por el IL de un PE