Está en la página 1de 33

Ensamblados y AppDomains

Cap. 14 Balena UAI Facultad de Tecnologa Informtica Ingeniera en sistemas informticos Programacin Orientada a Objetos 2007

Ensamblado (concepto)
1/+ Mdulos administrados = 1 Assembly (para el .NET Framework) Concepto fsico: Coleccin de uno o ms mdulos ejecutables o no Concepto lgico: Menor unidad de software reutilizable y susceptible de ser implementado con control de versiones

Mdulos (elementos)
Encabezado PE (Portable Excecutable) Encabezado de archivo de .NET Framework Metadatos MSIL

Mdulos (elementos)
Encabezado PE y de .NET Comn en todos los ejecutables de windows Diferencia en Ensablados: Contiene JMP a puntos de entrada _CorExeMain o _CorDllMain de MsCorEE (RunTime de .NET) Se carga Assembly en memoria (si no estaba ya) y acciona el JIT

Mdulos (elementos)
Metadatos Definicin de tipos internos y tipos referidos y vinculados Inseparables del mdulo y viceversa Principales funciones: Cdigo administrado seguro, y Reflection

Mdulos (elementos)
MSIL Cdigo intermedio Portable Optimizable por el compilador a cdigo nativo para la plataforma de ejecucin

Ensamblados (elementos)
Manifiesto Metadata MSIL Recursos

Ensamblados (elementos)
Manifiesto Asimilado a metadatos (los incluye) Informacin de Versionado, Nombre, Compaa, Firma digital, Plataformas compatibles, etc Informacin principal de tipos (incluyendo mdulos internos)

Ensamblados (elementos)
Metadata Definicin de tipos internos y tipos referidos y vinculados Principales funciones: Cdigo administrado seguro, y Reflection

Ensamblados (elementos)
MSIL Cdigo portable y compilable por el JIT a cdigo nativo

Ensamblados (elementos)
Recursos Elemento no ejecutable Imgenes, cadenas de texto, conos, etc. Opcional

Ensamblados (elementos)
Ensamblado de un solo archivo MiEnsamblado.dll
Manifiesto Metadatos MSIL Recursos

Ensamblados (elementos)
Ensamblado de ms de un archivo

MiEnsamblado.dll
Manifiesto Metadatos MSIL Recursos

Manifiesto (del mdulo) Metadatos MSIL

Manifiesto (del mdulo) Metadatos MSIL

Ensamblados
Privados: Se instalan con la aplicacin Pblicos: Compartidos entre aplicaciones. Se instalan en el GAC

Ensamblados
Ensamblados pblicos y privados. Diferencias. Diferencias.
Pblicos permiten control de versiones. Pueden coexistir distintas. Pblicos tienen administracin ms profunda de seguridad. Pblicos solo levantan una instancia para las aplicaciones. Pblicos pueden ser firmados.

Ensamblados
Nombres seguros Evita conflictos de ensamblados pblicos Utilidad SN (generacin de firma para ensamblados) Archivos .snk (claves pblica y privada) Firma parcial y demorada (delaysign). Archivo .key

Ensamblados
Enlace en tiempo de ejecucin (elementos)
Nombre Versin (solo pblicos) Referencia cultural Clave pblica (solo pblicos)

Ensamblados
Enlace en tiempo de ejecucin (pasos)
1. 2. 3. 4. 5. Verificacin de directiva de versin en archivos de configuracin Utilizacin del ensamblado (si se carg antes) Bsqueda en el GAC Bsqueda segn sugerencias de cdigo base Bsqueda en el rbol directorio de la aplicacin

Ensamblados
Enlace en tiempo de ejecucin (Directivas de versin)
Archivos de configuracin:  De aplicacin (nombreaplicacion.exe.config)  De fabricante (para GAC)  De equipo
(\Windows\Microsoft.NET\Framework\[versin Windows\Microsoft.NET\Framework\ del framework]\Config\machine.config) framework] Config\

Ensamblados
Enlace en tiempo de ejecucin (Directivas de versin)
<configuration> <runtime> <assemblyBinding xmlns:[URI]> <dependentAssembly> <assemblyIdentity name=MiAssembly publicKeyToken=xxxxx culture=es-ar/> culture=es<bindingRedirect oldVersion=x.x.x newVersion=x.x.y/> <publisherPolicyApply=no/> <codeBase version=xx.x.x href=http://xx.com/x.dll/> href=http://xx.com/x.dll/> </dependentAssembly> </assemblyBinding> </runtime> </configuration>

Ensamblados
Enlace en tiempo de ejecucin (Ensamblados cargados previamente)
Verifica si el ensamblado se ha cargado previamente en cach (por esta aplicacin u otra) Se identifica con nombre seguro

Ensamblados
Enlace en tiempo de ejecucin (Bsqueda en el GAC)
Verifica si el ensamblado se encuentra en el GAC (si se trata de un ensamblado pblico) Se identifica con nombre seguro

Ensamblados
Enlace en tiempo de ejecucin (Sugerencias de cdigo base)
Definidas en archivos de configuracin Desactivan el Sondeo Muy til si se descargan ensamblados de Internet

Ensamblados
Enlace en tiempo de ejecucin (Sondeo)
Bsqueda en el directorio de la aplicacin o subdirectorios Bsqueda heurstica empleando algunos elementos del nombre seguro + ruta binaria (definida opcionalmente en archivos de configuracin)

Ensamblados
Herramienta de configuracin de .NET Framework y aplicaciones
Parte de la Microsoft Management Console Lnea de comandos: MMC Archivo/Agregar o quitar complemento/Agregar/.NET Framework X.X Configuration

Ensamblados
Herramientas de lnea de comandos
Compliladores (vbc, csc, jsc ,etc) Vinculador de ensamblados (AL) Utilidad de nombre seguro (NS) Utilidad de GAC (GACUTIL) Desensamblador MSIL (ILDASM) Compilador a nativo (NGEN)

AppDomains
Concepto: Es una aplicacin administrada de forma lgica que se ejecuta dentro de un proceso fsico

AppDomain A

AppDomain C

AppDomain B

AppDomain D

Proceso 1 del SO

Proceso 2 del SO

AppDomains
Las aplicaciones pueden comunicarse entre distintos AppDomains y Procesos
AppDomain A AppDomain C

AppDomain D AppDomain B

Proceso 1 del SO

Proceso 2 del SO

AppDomains
Puede haber distintas instancias de una misma aplicacin ejecutndose en el mismo proceso de Windows en diferentes AppDomains

AppDomains (la clase AppDomain)


Principales elementos de interfaz: Atributos:
FriendlyName  BaseDirectory  SetupInformation (Retorna un AppDomainSetup)


AppDomains (la clase AppDomain)


Principales elementos de intefaz: Mtodos:
CreateDomain  Unload  GetCurrentThreadId  GetAssemblies  ExecuteAssembly  CreateInstance


AppDomains (la clase AppDomain)


Principales elementos de interfaz: Sucesos:
AssemblyLoad  AssemblyResolve  TypeResolve  DomainUnload  UnhandledException


FIN Preguntas?

También podría gustarte