Arquitectura del Common Language Runtime Daniel A Seara



























- Slides: 27
Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft
Visual Studio. N ET . NET Su Aplicación y Servicio Web O tr a s Ap l i caci o n es u san d o su servi ci o Usu ari o s F i n al es Operacion es O r q u e s ta c i ó n. Net F ramew o r k Windows C E , ME , 2 0 0 0 , . NE T Sus Servicios Internos . NET Enterprise Servers Servicios “Building Block” Protocolos abiertos Web Services SOAP, SCL, DISCO HTTP, SMTP, XML, WAP, XSD Públicos
Microsoft®. Net Framework Web Services User Interface Data & XML Base Classes Orchestration Common Language Runtime . NET Building. NET Enterprise Block Framework Servers Services Windows (CE, ME, 2000, and. NET)
Common Language Runtime Security Execution Support IL to Common Language Runtime native code compilers Frameworks Base Classes GC, stack walk, code manager Class loader and layout
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 noitcelfe. R Source Code srengise. D Other Compiler Type Browser Schema Generator noitazilaire. S )PAOS. g. e( Compiler Debugger Metadata (y código) Profiler Proxy Generator gnidocne LMX )SDUS o LDS(
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ón VB Native Code VC Install time Code Gen . . . Script IL Common Language Runtime “Econo”JIT Compiler Standard JIT Compiler Native Code
El modelo de proceso Hilo Datos Compartidos de la clase y código nativo Proceso App. Domain (Datos Compartidos de la clase y código nativo) App. Domain
Código Administrado • Provee. . . ü Metadata que describe ü Ubicación de referencias a los objetos ü Tabla de controladores de excepciones • El motor de ejecución provee… ü Manejo de excepciones ü Seguridad ü Manejo automático de la “vida” de los objetos ü Depuración y perfiles
Control de flujo del Motor Assembly Execution Support Code Managers Security System Class Loader IL to native code compiler Managed Native Code CPU Primer referencia al tipo Primer llamada a un método
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”
Unmanaged Llamando código “no manejado” Native Code Common Language Runtime “Econo”-JIT Compiler Standard JIT Compiler Managed Native Code
Cruzando los Límites • Modo de transición para el manejador de código ü Las convenciones de llamadas difieren en x 86 ü 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
• Simple… Resumen ü 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, win 32®, DLLs • Escalable: de dispositivos móviles hasta granjas de servidores