Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires –...
-
Upload
frascuelo-solares -
Category
Documents
-
view
224 -
download
0
Transcript of Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires –...
Arquitectura del Common Language
Runtime
Daniel A. SearaDirector Regional MSDNBuenos Aires – ARGENTINA
NDSoft
Protocolos abiertos Protocolos abiertos SOAP, SCL, DISCOSOAP, SCL, DISCO
HTTP, SMTP, XML, WAP, XSDHTTP, SMTP, XML, WAP, XSD
.NETSu Aplicación ySu Aplicación y
Servicio WebServicio WebSu Aplicación ySu Aplicación y
Servicio WebServicio Web
.Net.NetFrameworkFramework
.Net.NetFrameworkFramework
Windows Windows CE, ME, CE, ME,
2000, .NET2000, .NET
Windows Windows CE, ME, CE, ME,
2000, .NET2000, .NETO
pera
cion
esO
pera
cion
esO
pera
cion
esO
pera
cion
esUsuariosUsuariosFinalesFinales
UsuariosUsuariosFinalesFinales
Otras Otras Aplicaciones Aplicaciones
usando usando su serviciosu servicio
Otras Otras Aplicaciones Aplicaciones
usando usando su serviciosu servicio
OrquestaciónOrquestaciónOrquestaciónOrquestación
Sus Servicios InternosSus Servicios InternosSus Servicios InternosSus Servicios Internos
.NET Enterprise .NET Enterprise ServersServers
.NET Enterprise .NET Enterprise ServersServers
ServiciosServicios“Building Block”“Building Block”
ServiciosServicios“Building Block”“Building Block”
Web Services PúblicosWeb Services PúblicosWeb Services PúblicosWeb Services Públicos
Visual Visual Studio.NETStudio.NET
Visual Visual Studio.NETStudio.NET
Windows (CE, ME, 2000, and .NET)
Orchestration
.NET Enterprise
Servers
BuildingBlock
Services
.NETFramework
Microsoft® .Net Framework
Base Classes
Data & XML
UserInterface
Common Language Runtime
WebServices
Common Language Runtime
Co
mm
on
Lan
gu
age
Ru
nti
me
Co
mm
on
Lan
gu
age
Ru
nti
me
FrameworksFrameworks
Class loader and layoutClass loader and layout
IL t
o
IL t
o
nat
ive
cod
e n
ativ
e co
de
com
pile
rsco
mp
ilers
GC, stack walk, code managerGC, stack walk, code manager
Sec
uri
tyS
ecu
rity
Exe
cuti
on
Exe
cuti
on
Su
pp
ort
Su
pp
ort
Base ClassesBase Classes
Desarrollos más fáciles• Escribir menos, re-usar más
Marco de trabajo amplio, consistente Clases al mismo tiempo que interfaces
• Desaparece la “plomería” Metadata Proxies transparentes Administración de la memoria
• Buen soporte a herramientas WYSIWYG Diseñadores y asistentes Depuradores Administradores de perfiles
Desarrollo Simple y Seguro• Sin Registración, instalaciones “cero
impacto” Instalación con XCOPY, descarga (download)
incremental
• Versiones lado a lado de componentes compartidos Captura de la versión en la compilación Políticas de administración en tiempo de
ejecución
• Política de seguridad basada en evidencia Tanto en código como en el usuario Origen del código (ubicación) Publicador (clave pública)
Escalabilidad• De dispositivos inteligentes a granjas
de servidores• Administración de memoria
automática Auto configurable Ajuste dinámico
• “Thread pool”• Mensajes asincrónicos
Objetos remotos Eventos
• Versión para dispositivos inteligentes Múltiples SOTRs Las mismas herramientas que para el escritorio
Clientes Web ricos, publicación en Web segura• Win Forms en el cliente• ASP.Net Web Forms en el servidor• Se asignan permisos al código
Las políticas de seguridad se manejan por evidencias
• Aplicaciones que pueden iniciar el motor de ejecución
Internet Explorer, IIS, SQL Server™, Shell
Proveen cierta evidencia Se controla el código que se carga Se relacionan las aplicaciones con procesos
Convergencia de Modelos de Programación
• COM, ASP, Data Todos los servicios están disponibles Muchos rediseñados
Fáciles de usar Escalables API consistente
• El marco consistente permite un mayor nivel de abstracción
• Transición gradual desde lo simple hasta el control completo
Múltiples Lenguajes• “Common type system”
Orientado a objetos Se soportan también lenguajes procedurales Es posible además la utilización de lenguajes
“por funciones”
• Guías de diseño del marco CLS Reglas para un alcance amplio Toda la funcionalidad del marco está
disponible
• Más de 15 lenguajes investigados La mayoría son consumidores Muchos pueden extender el marco
Resumen
• Código Multi-lenguaje, seguro, móvil• Escalable desde dispositivos móviles
hasta servidores• Versionamiento lado a lado• Auto descriptivo• Marcos poderosos• Modelo de programación simplificado• Fuerte integración de las
herramientas
Metadata• Clave para un modelo de
programación simple• Generada automáticamente
Se almacena con el código en el ejecutable (.dll o .exe)
Usa formato COFF existente Por un mecanismo de extensión
Almacenado en formato binario
• Convertible de/a “Schema XML” • Convertible de/a librerías de tipos
COM
¿Qué hay en la Metadata?• Descripción de la unidad de
instalación (assembly) Identidad: nombre, versión, cultura[, clave pública] Que tipos se exportan De que otros Assemblies depende Permisos de seguridad necesarios para la ejecución
• Descripción de tipos Nombre, visibilidad, clase base, interfaces
implementadas Miembros (métodos, campos, propiedades, eventos,
tipos heredados)
• Atributos personalizados Del usuario Del compilador Del marco
Metadata: Creación y Uso
MetadataMetadata(y código)(y código)
DebuggerDebugger
Schema Schema GeneratorGenerator
ProfilerProfiler
OtherOtherCompilerCompiler
Proxy GeneratorProxy Generator
Type BrowserType Browser
CompilerCompiler
SourceSourceCodeCode
XML encodingXML encoding(SDL o SUDS)(SDL o SUDS)
SerializationSerialization(e.g. SOAP)(e.g. SOAP)
DesignersDesigners
ReflectionReflection
Los compiladores usan la Metadata
• Par importar datos entre lenguajes• Se emite la metadata junto con el
código compilado Describe los tipos definidos y los que utiliza Registra los assemblies externos referenciados Registra la información de versión
• Atributos personalizados Obsoletos Compatibilidad CLS Compilado para depuración Marcadores específicos del lenguaje
Otras herramientas usan Metadata
• Comportamiento del diseñador Controlado por atributos del usuario
Categoría Descripción
• Extensibilidad del diseñador Atributos de usuario que especifican código a
utilizar Convertidores de tipo Editores
• Los métodos como Servicios Web se marcan por atributos personalizados
• Visor de tipos
Assemblies• Unidad de instalación
Uno o más archivos, independiente del empaquetado
Auto descriptivos a través de metadata (“manifiesto”)
• Versionamiento Capturado por el compilador Políticas por aplicación y por máquina
• Límites de seguridad Los Assemblies garantizan permisos Los métodos pueden reclamar prueba que toda
la cadena de llamadas tiene permisos adecuados
• Importación y exportación mediada por tipos Los tipos se nombran relativos a los assemblies
Aplicaciones• Las aplicaciones son unidades
configurables Uno o más assemblies Archivos o datos específicos por aplicación
• Los Assemblies se buscan basados en… Su nombre lógico La aplicación que lo carga
• Las aplicaciones pueden tener versiones privadas de los Assemblies La versión privada se prefiere respecto de la
compartida La política de versiones puede ser por aplicación
Modelo de ejecuciónVBVB VCVC ...... ScriptScript
ILILNativeNativeCodeCode
““Econo”JITEcono”JITCompilerCompiler
Standard JITStandard JITCompilerCompiler
NativeNativeCodeCode
Install timeInstall timeCode GenCode Gen
Common Language RuntimeCommon Language Runtime
El modelo de proceso
ProcesoProceso
Datos Compartidos de Datos Compartidos de la clase y código nativola clase y código nativo
App.App.DomainDomain((Datos Compartidos de Datos Compartidos de la clase y código nativola clase y código nativo))
App.App.DomainDomain
HiloHilo
Código Administrado• Provee...
Metadata que describe Ubicación de referencias a los objetosTabla de controladores de excepciones
• El motor de ejecución provee…Manejo de excepcionesSeguridadManejo automático de la “vida” de los
objetosDepuración y perfiles
Control de flujo del Motor
ClassClassLoaderLoader
IL to nativeIL to nativecode compilercode compiler
CPUCPUSecuritySecuritySystemSystem
CodeCodeManagersManagers
ManagedManagedNativeNativeCodeCode
AssemblyAssembly
Primer Primer llamada a un llamada a un métodométodo
Primer Primer referencia al referencia al tipotipo
ExecutionExecutionSupportSupport
Compilando IL a Cód. Nativo• “Econo” JIT
Genera código nativo “no optimizado” El código puede descartarse y
regenerarse
• “Standard” JIT Genera código optimizado Incluye verificación del código IL
• Generación del código en la instalación Reduce el tiempo de inicio El código nativo tiene control de versión
y puede revertir al JIT si hay diferencias
Datos Manejados• Disposición provista por el Motor
Usualmente automática La Metadata puede especificar
Orden Empaquetado Disposición explícita
• El tiempo de vida es manejado por el Motor (GC) Se compacta el área de trabajo Los datos se “mueven” Se actualizan las referencias a los
objetos Menos intrusivo que un “fallo de
página”
Llamando código “no manejado”
NativeNativeCodeCode
““Econo”-JITEcono”-JITCompilerCompiler
Standard JITStandard JITCompilerCompiler
NativeNativeCodeCode
Common Language RuntimeCommon Language Runtime
UnmanagedUnmanaged
ManagedManaged
Cruzando los Límites• Modo de transición para el manejador de
código Las convenciones de llamadas difieren en x86 Rápido, aunque raramente mejor que la
búsqueda en la Registry
• “Marshalling” de datos Las representaciones pueden no coincidir Pueden requerirse punteros, copias o cambios
de formato Soporta “marshalling” personalizado
• El compilador IL a nativo ayuda Transición en línea de código y “marshalling”
simple El costo por llamada es muy bajo
Más un pequeño costo en la entrada a un procedimiento que puede hacer llamadas fuera de los límites
Resumen• Simple…
Desarrollo, instalación, administración
• Código multilenguaje, móvil, seguro
• Todo el código se compila antes de ser ejecutado ¡No es una “máquina virtual”
tradicional!
• Interoperabilidad completa con código no administrado COM, servicios COM+ 1.0, win32®, DLLs
• Escalable: de dispositivos móviles hasta granjas de servidores