los ensamblados y el código il contenido módulo ¿qué es un ensamblado? el código msil

20

Upload: luis-martin-contreras

Post on 23-Jan-2016

226 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Los ensamblados y el código IL Contenido Módulo ¿Qué es un Ensamblado? El código MSIL
Page 2: Los ensamblados y el código IL Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

Los ensamblados y el código IL

Los ensamblados y el código IL

Page 3: Los ensamblados y el código IL Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

ContenidoContenido

Módulo¿Qué es un Ensamblado?El código MSIL

Page 4: Los ensamblados y el código IL Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

MódulosMó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.

Page 5: Los ensamblados y el código IL Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

EnsambladoEnsambladoUn 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 Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

AssemblyAssembly

Metadata

Código CompiladoMSIL

Recursos

MiBiblioteca.DLL

Descripción de Tipos

ClasesClases 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 Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

NETModuleNETModule

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 *.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 Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

Tipos de EnsambladosTipos 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 Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

Características de un AssemblyCaracterí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 Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

Que es el Metadata?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 Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

ManifiestManifiest

Page 12: Los ensamblados y el código IL Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

Global Assembly CacheGlobal 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 Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

Que son los AppDomains?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 Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

CLR, AppDomains y AssembliesCLR, 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 Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

Assemblies - Aplicaciones .NETAssemblies - 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 Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

EnsambladoEnsamblado

Page 17: Los ensamblados y el código IL Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

MSILMSIL

Microsoft 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 Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

CLR - MSILCLR - 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 Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

Código MSILCódigo MSIL

Page 20: Los ensamblados y el código IL Contenido Módulo ¿Qué es un Ensamblado? El código MSIL

ILDASMILDASM

Herramienta para navegar por el IL de un PE