Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires –...

27
Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft

Transcript of Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires –...

Page 1: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Arquitectura del Common Language

Runtime

Daniel A. SearaDirector Regional MSDNBuenos Aires – ARGENTINA

NDSoft

Page 2: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos 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

Page 3: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 4: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 5: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 6: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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)

Page 7: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 8: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 9: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 10: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 11: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 12: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 13: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

¿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

Page 14: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 15: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 16: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 17: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 18: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 19: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Modelo de ejecuciónVBVB VCVC ...... ScriptScript

ILILNativeNativeCodeCode

““Econo”JITEcono”JITCompilerCompiler

Standard JITStandard JITCompilerCompiler

NativeNativeCodeCode

Install timeInstall timeCode GenCode Gen

Common Language RuntimeCommon Language Runtime

Page 20: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 21: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 22: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 23: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 24: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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”

Page 25: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

Llamando código “no manejado”

NativeNativeCodeCode

““Econo”-JITEcono”-JITCompilerCompiler

Standard JITStandard JITCompilerCompiler

NativeNativeCodeCode

Common Language RuntimeCommon Language Runtime

UnmanagedUnmanaged

ManagedManaged

Page 26: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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

Page 27: Arquitectura del Common Language Runtime Daniel A. Seara Director Regional MSDN Buenos Aires – ARGENTINA NDSoft.

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