Tema 1 - Introducción a Microsoft.net

20

Transcript of Tema 1 - Introducción a Microsoft.net

Contenido

1. Microsoft.NET

2. Common Language Runtime (CLR)

3. Metadatos

4. Ensamblados

5. Base Class Library (BCL)

6. Common Type System (CTS)

7. Common Language Specification (CLS)

8. Lenguajes gestionados

Microsoft.NET

¿Qué es Microsoft.NET?

Nueva estrategia de Microsoft. Suma de:

Nueva plataforma

.NET Framework SDK

Aplicaciones .NET

Servicios Web (XML)

Microsoft.NET (II)

ServidoresServidores

Experiencias Experiencias y solucionesy soluciones

ClientesClientes

ServiciosServicios

HerramientasHerramientas

Common Language Runtime

¿Qué es el CLR?Motor de ejecución de código gestionado, al que ofrece numerosos servicios:

Modelo consistente (sólo OO)Modelo sencillo (sin GUIDs, HRESULT, IUnknown, etc.)Fin “Infierno DLL”MultiplataformaMultilenguaje

Common Language RuntimeCommon Language Runtime (II) (II)

Recolector de basuraSeguridad de tiposAislamiento de procesosTratamiento errores homogéneo: excepciones interlenguajeSeguridad avanzadaSoporte multihilo Distribución transparenteInteroperabilidad con código no gestionado

Microsoft Intermediate LanguageMicrosoft Intermediate Language

MSIL:

Alto nivel

Compilado JIT

Fuente

Compilador

EXE/DLL (MSIL)

Jitter

Ejecución

Pre-jitted

Jitters:

Normal

Económico

Prejitter

Microsoft Intermediate LanguageMicrosoft Intermediate Language

Cabecera CLR:Versión CLR

Firma digital

Punto de entrada...

Metadatos:Descripción tipos

Estructura tabular

Archivo PE

MSIL

METADATOS

CABECERA CLR

MetadatosMetadatos (II) (II)

Tabla Describe...ModuleDef Módulo: nombre fichero, GUID,...

TypeDef Tipos: nombre, padre, modificadores referencias miembros,...

MethodDef Métodos: signatura (ParamDef), modificadores , inicio MSIL

ParamDef Parámetros: nombre, modificadores

FieldDef Campos: nombre, tipo, modificadores

PropertyDef Propiedades: nombre, tipo, modificadores, set/get (MethodDef), ...

EventDef Eventos: nombre, tipo, modificadores, add/remove(MethodDef), ...

MetadatosMetadatos (II) (II)

Accesibles con System.Reflection

Extensibles con atributos

Mejoran IDL y incrustados en módulo adjuntos

Tabla Describe...AssemblyRef Ensamblados externos: versión, idioma,

nombre (sin extensión), marca clave pública

ModuleRef Módulos externos: nombre de fichero

TypeRef Tipos externos: nombre, entrada en ModuleRef o AssemblyRef

MemberRef Miembros externos: signatura, TypeRef

EnsambladosEnsamblados

Util.dll Logo.jpg

manifiesto

Ayuda.html Lib.dll

manifiesto

Ensamblado multiarchivoEnsamblado

de un archivo

EnsambladosEnsamblados (II) (II)

Tabla Describe...

AssemblyDef Ensamblado: versión, idioma, alg. hash de FileDef, nombre (sin extensión)

FileDef Archivos: nombre, valor hash.

ManifestResourceDef Recursos: nombre, modificadores, ubicación (FileDef u offset)

ExportedTypeDef Tipos: nombre, FileDef, TypeDef

AssemblyProccesorDef CPU necesaria: no se suele usar

AssemblyOSDef SO necesario: no se suele usar

EnsambladosEnsamblados (II) (II)

Ensamblados privados: En directorio aplicación

Ensamblados compartivos: En GAC

Archivo manifiesto firmado con RSA+SHA-1

Otros firmados con RSA + (SHA-1 ó MD-5)

Marca clave pública en AssemblyRef (64 bits)

Identificados por: clave, nombre, versión e idioma Nombre fuerte

¡Resuelto infierno de las DLLs! (configurable)

Base Class LibraryBase Class Library

BCL: Biblioteca de clases base (común)

Espacios de nombres:

System

Collections Data IO

Net Reflection Runtime.Remoting

Security Threading Web.UI.Webcontrols

Winforms XML

Common Type SystemCommon Type System

CTS: Sistema de tipos aceptado por CLR

Ejemplos reglas:

Herencia simple

Clase base System.Object

Miembros: Campos, métodos, eventos, propiedades

Tablas multidimensionales y/o dentadas

Modificadores: public, private, family, assembly, family and assembly, family or assembly

Common Language SpecificationCommon Language Specification

CLS: Reglas para compartir miembros públicos entre lenguajes gestionados

Ejemplos de reglas:No puede haber tablas dentadasÍndices de tablas desde 0 y dimensionas fijasInsensible a capitalización mismo ámbitoTipos básicos: bool, char, byte, short, int, long, float, decimal, string, object

Lenguajes gestionadosLenguajes gestionados (VIII) (VIII)

Otros lenguajes:

APL Delphi

Cobol Eiffel

Haskell Java

Pascal Perl

Python Smalltalk

PowerBuilder

...

SIF

II

FS