Tema 1 - Introducción a Microsoft.net
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
...